@blotoutio/providers-blotout-popup-sdk 1.72.0 → 1.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs.js +2094 -135
- package/index.js +2094 -135
- package/index.mjs +2094 -135
- package/package.json +1 -1
- package/stores/shopify/index.cjs.js +51 -3
- package/stores/shopify/index.js +51 -3
- package/stores/shopify/index.mjs +51 -3
package/index.cjs.js
CHANGED
|
@@ -86,6 +86,35 @@ const evaluateCondition$1 = (condition, signals, onUnknownOperator) => {
|
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
+
/**
|
|
90
|
+
* ISO 3166-1 alpha-2 to E.164 country calling code, kept as one delimited
|
|
91
|
+
* string rather than a 250-line object so the SDK bundle carries the table
|
|
92
|
+
* rather than the punctuation around it — the same shape `phone_meta.ts` uses
|
|
93
|
+
* for its area codes.
|
|
94
|
+
*
|
|
95
|
+
* Shared by the SDK's phone field and the builder's country picker, so both
|
|
96
|
+
* offer the same list and a stored country resolves to the same dial code in
|
|
97
|
+
* preview and on the storefront.
|
|
98
|
+
*/
|
|
99
|
+
const DIAL_CODES = 'AC:247,AD:376,AE:971,AF:93,AG:1,AI:1,AL:355,AM:374,AO:244,AR:54,AS:1,AT:43,AU:61,AW:297,AX:358,AZ:994,BA:387,BB:1,BD:880,BE:32,BF:226,BG:359,BH:973,BI:257,BJ:229,BL:590,BM:1,BN:673,BO:591,BQ:599,BR:55,BS:1,BT:975,BW:267,BY:375,BZ:501,CA:1,CD:243,CF:236,CG:242,CH:41,CI:225,CK:682,CL:56,CM:237,CN:86,CO:57,CR:506,CU:53,CV:238,CW:599,CY:357,CZ:420,DE:49,DJ:253,DK:45,DM:1,DO:1,DZ:213,EC:593,EE:372,EG:20,EH:212,ER:291,ES:34,ET:251,FI:358,FJ:679,FK:500,FM:691,FO:298,FR:33,GA:241,GB:44,GD:1,GE:995,GF:594,GG:44,GH:233,GI:350,GL:299,GM:220,GN:224,GP:590,GQ:240,GR:30,GT:502,GU:1,GW:245,GY:592,HK:852,HN:504,HR:385,HT:509,HU:36,ID:62,IE:353,IL:972,IM:44,IN:91,IO:246,IQ:964,IR:98,IS:354,IT:39,JE:44,JM:1,JO:962,JP:81,KE:254,KG:996,KH:855,KI:686,KM:269,KN:1,KP:850,KR:82,KW:965,KY:1,KZ:7,LA:856,LB:961,LC:1,LI:423,LK:94,LR:231,LS:266,LT:370,LU:352,LV:371,LY:218,MA:212,MC:377,MD:373,ME:382,MF:590,MG:261,MH:692,MK:389,ML:223,MM:95,MN:976,MO:853,MP:1,MQ:596,MR:222,MS:1,MT:356,MU:230,MV:960,MW:265,MX:52,MY:60,MZ:258,NA:264,NC:687,NE:227,NF:672,NG:234,NI:505,NL:31,NO:47,NP:977,NR:674,NU:683,NZ:64,OM:968,PA:507,PE:51,PF:689,PG:675,PH:63,PK:92,PL:48,PM:508,PR:1,PS:970,PT:351,PW:680,PY:595,QA:974,RE:262,RO:40,RS:381,RU:7,RW:250,SA:966,SB:677,SC:248,SD:249,SE:46,SG:65,SH:290,SI:386,SJ:47,SK:421,SL:232,SM:378,SN:221,SO:252,SR:597,SS:211,ST:239,SV:503,SX:1,SY:963,SZ:268,TC:1,TD:235,TG:228,TH:66,TJ:992,TK:690,TL:670,TM:993,TN:216,TO:676,TR:90,TT:1,TV:688,TW:886,TZ:255,UA:380,UG:256,US:1,UY:598,UZ:998,VA:39,VC:1,VE:58,VG:1,VI:1,VN:84,VU:678,WF:681,WS:685,XK:383,YE:967,YT:262,ZA:27,ZM:260,ZW:263';
|
|
100
|
+
const COUNTRY_DIAL_CODES = Object.fromEntries(DIAL_CODES.split(',').map((entry) => entry.split(':')));
|
|
101
|
+
const DEFAULT_PHONE_COUNTRY = 'US';
|
|
102
|
+
/**
|
|
103
|
+
* First candidate we hold a dial code for, so geo, the merchant's configured
|
|
104
|
+
* country and the fallback can be offered in priority order. Tolerates the
|
|
105
|
+
* lowercase and padded values the old free-text `defaultCountry` box allowed.
|
|
106
|
+
*/
|
|
107
|
+
const resolveCountry = (...candidates) => {
|
|
108
|
+
for (const candidate of candidates) {
|
|
109
|
+
const iso = candidate === null || candidate === void 0 ? void 0 : candidate.trim().toUpperCase();
|
|
110
|
+
if (iso && COUNTRY_DIAL_CODES[iso]) {
|
|
111
|
+
return iso;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return DEFAULT_PHONE_COUNTRY;
|
|
115
|
+
};
|
|
116
|
+
const dialCode = (iso) => { var _a; return (_a = COUNTRY_DIAL_CODES[iso]) !== null && _a !== void 0 ? _a : COUNTRY_DIAL_CODES[DEFAULT_PHONE_COUNTRY]; };
|
|
117
|
+
|
|
89
118
|
const BLOTOUT_POPUP_RULES_KEY = 'blotoutPopup:rules';
|
|
90
119
|
const emptyRulesState = () => ({
|
|
91
120
|
v: 1,
|
|
@@ -232,6 +261,7 @@ const STEP_TRANSITIONS = ['next', 'submit', 'close'];
|
|
|
232
261
|
|
|
233
262
|
const BOOLEAN_SIGNAL_IDS = [
|
|
234
263
|
'visitor.isNew',
|
|
264
|
+
'customer.isSignedIn',
|
|
235
265
|
'behavior.exitIntent',
|
|
236
266
|
'cart.hasItems',
|
|
237
267
|
// Momentary, unlike every other cart signal: true only for the evaluation
|
|
@@ -260,6 +290,23 @@ const CART_SIGNAL_IDS = [
|
|
|
260
290
|
'cart.itemAdded',
|
|
261
291
|
'cart.itemRemoved',
|
|
262
292
|
];
|
|
293
|
+
/**
|
|
294
|
+
* Signals the store's customer adapter owns. Deferred like cart signals: the
|
|
295
|
+
* platform writes its customer global as the page renders, so reading it in the
|
|
296
|
+
* static gate can catch the moment before it exists.
|
|
297
|
+
*
|
|
298
|
+
* Restricted to `equals` by `validateCondition`, and that restriction is the
|
|
299
|
+
* whole safety property rather than a nicety. `notEquals` matches an absent
|
|
300
|
+
* signal — deliberately, see `evaluateCondition` — so `isSignedIn notEquals
|
|
301
|
+
* true` is satisfied by a read that has not resolved yet, and the popup written
|
|
302
|
+
* for strangers opens on a signed-in customer. `equals false` says the same
|
|
303
|
+
* thing for a resolved signal and stays inert for an unresolved one, so nothing
|
|
304
|
+
* is lost by withholding the negative form. It also holds on a tag pinned to an
|
|
305
|
+
* older SDK, which never learns this id at all and sees the signal as absent.
|
|
306
|
+
*/
|
|
307
|
+
const SIGN_IN_SIGNAL_IDS = [
|
|
308
|
+
'customer.isSignedIn',
|
|
309
|
+
];
|
|
263
310
|
// Signals the trigger engine evaluates lazily (deferred past the static gate).
|
|
264
311
|
// Declared explicitly so a future non-behavior number signal isn't auto-deferred.
|
|
265
312
|
const BEHAVIOR_SIGNAL_IDS = [
|
|
@@ -317,6 +364,394 @@ const IDENTITY_SIGNAL_IDS = [
|
|
|
317
364
|
'customer.firstName',
|
|
318
365
|
];
|
|
319
366
|
|
|
367
|
+
/** Where a token resolves: SDK at render, worker, or an async product fetch. */
|
|
368
|
+
/** Record keys popup copy may read. `email`/`phone` deliberately excluded. */
|
|
369
|
+
/** Sub-fields a product token exposes as `{{token.field}}`. */
|
|
370
|
+
const PRODUCT_FIELDS = [
|
|
371
|
+
'title',
|
|
372
|
+
'price',
|
|
373
|
+
'compareAtPrice',
|
|
374
|
+
'vendor',
|
|
375
|
+
'type',
|
|
376
|
+
];
|
|
377
|
+
// Per field: the token's own fallback names the product, not the field, so
|
|
378
|
+
// `{{lastViewedProduct.price}}` cannot borrow "what you were viewing".
|
|
379
|
+
// `title` is the exception — there the product name IS the answer.
|
|
380
|
+
const PRODUCT_FIELD_FALLBACKS = {
|
|
381
|
+
title: null,
|
|
382
|
+
price: 'the current price',
|
|
383
|
+
compareAtPrice: 'the full price',
|
|
384
|
+
vendor: 'the brand',
|
|
385
|
+
type: 'this range',
|
|
386
|
+
};
|
|
387
|
+
const TOKENS = [
|
|
388
|
+
{
|
|
389
|
+
id: 'city',
|
|
390
|
+
tier: 'signal',
|
|
391
|
+
label: 'City (from this request)',
|
|
392
|
+
signalId: 'location.city',
|
|
393
|
+
defaultFallback: 'your area',
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
id: 'region',
|
|
397
|
+
tier: 'signal',
|
|
398
|
+
label: 'Region (from this request)',
|
|
399
|
+
signalId: 'location.region',
|
|
400
|
+
defaultFallback: 'your region',
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
id: 'country',
|
|
404
|
+
tier: 'signal',
|
|
405
|
+
label: 'Country (from this request)',
|
|
406
|
+
signalId: 'location.country',
|
|
407
|
+
defaultFallback: 'your country',
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
id: 'utmSource',
|
|
411
|
+
tier: 'signal',
|
|
412
|
+
label: 'UTM source',
|
|
413
|
+
signalId: 'source.utmSource',
|
|
414
|
+
defaultFallback: 'the web',
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
id: 'utmMedium',
|
|
418
|
+
tier: 'signal',
|
|
419
|
+
label: 'UTM medium',
|
|
420
|
+
signalId: 'source.utmMedium',
|
|
421
|
+
defaultFallback: 'online',
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
id: 'utmCampaign',
|
|
425
|
+
tier: 'signal',
|
|
426
|
+
label: 'UTM campaign',
|
|
427
|
+
signalId: 'source.utmCampaign',
|
|
428
|
+
defaultFallback: 'our latest offer',
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
id: 'utmTerm',
|
|
432
|
+
tier: 'signal',
|
|
433
|
+
label: 'UTM term',
|
|
434
|
+
signalId: 'source.utmTerm',
|
|
435
|
+
defaultFallback: 'your search',
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
id: 'utmContent',
|
|
439
|
+
tier: 'signal',
|
|
440
|
+
label: 'UTM content',
|
|
441
|
+
signalId: 'source.utmContent',
|
|
442
|
+
defaultFallback: 'our offer',
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
id: 'cartItemCount',
|
|
446
|
+
tier: 'signal',
|
|
447
|
+
label: 'Cart item count',
|
|
448
|
+
signalId: 'cart.itemCount',
|
|
449
|
+
defaultFallback: 'a few',
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
id: 'cartTotalValue',
|
|
453
|
+
tier: 'signal',
|
|
454
|
+
label: 'Cart total value',
|
|
455
|
+
signalId: 'cart.totalValue',
|
|
456
|
+
defaultFallback: 'your total',
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
id: 'firstName',
|
|
460
|
+
tier: 'identity',
|
|
461
|
+
userKey: 'firstName',
|
|
462
|
+
label: 'First name',
|
|
463
|
+
defaultFallback: 'there',
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
id: 'lastName',
|
|
467
|
+
tier: 'identity',
|
|
468
|
+
userKey: 'lastName',
|
|
469
|
+
label: 'Last name',
|
|
470
|
+
defaultFallback: 'friend',
|
|
471
|
+
},
|
|
472
|
+
// Not `city`: that answers from the request, this from the stored record.
|
|
473
|
+
{
|
|
474
|
+
id: 'customerCity',
|
|
475
|
+
tier: 'identity',
|
|
476
|
+
userKey: 'city',
|
|
477
|
+
label: 'City (from the customer record)',
|
|
478
|
+
defaultFallback: 'your city',
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
id: 'customerState',
|
|
482
|
+
tier: 'identity',
|
|
483
|
+
userKey: 'state',
|
|
484
|
+
label: 'State (from the customer record)',
|
|
485
|
+
defaultFallback: 'your state',
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
id: 'customerCountry',
|
|
489
|
+
tier: 'identity',
|
|
490
|
+
userKey: 'country',
|
|
491
|
+
label: 'Country (from the customer record)',
|
|
492
|
+
defaultFallback: 'your country',
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
id: 'productName',
|
|
496
|
+
tier: 'product',
|
|
497
|
+
label: 'Product on this page',
|
|
498
|
+
defaultFallback: 'this item',
|
|
499
|
+
fields: PRODUCT_FIELDS,
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
id: 'lastViewedProduct',
|
|
503
|
+
tier: 'product',
|
|
504
|
+
label: 'Last viewed product',
|
|
505
|
+
defaultFallback: 'what you were viewing',
|
|
506
|
+
fields: PRODUCT_FIELDS,
|
|
507
|
+
},
|
|
508
|
+
];
|
|
509
|
+
const TOKEN_BY_ID = new Map(TOKENS.map((token) => [token.id, token]));
|
|
510
|
+
/** Shopper-visible props. URLs, codes and handles are deliberately excluded. */
|
|
511
|
+
const TOKEN_TEXT_PROPS = [
|
|
512
|
+
'text',
|
|
513
|
+
'label',
|
|
514
|
+
'placeholder',
|
|
515
|
+
'expiredText',
|
|
516
|
+
'reviewText',
|
|
517
|
+
'customerName',
|
|
518
|
+
'alt',
|
|
519
|
+
];
|
|
520
|
+
// Module scope; never `.test()` — `lastIndex` is stateful on a /g regex.
|
|
521
|
+
// One optional dotted segment: `{{lastViewedProduct.price}}`.
|
|
522
|
+
const TOKEN_PATTERN = /\{\{(\w+(?:\.\w+)?)\}\}/g;
|
|
523
|
+
const parseTokenId = (id) => {
|
|
524
|
+
const dot = id.indexOf('.');
|
|
525
|
+
if (dot < 0) {
|
|
526
|
+
return { base: id };
|
|
527
|
+
}
|
|
528
|
+
return { base: id.slice(0, dot), field: id.slice(dot + 1) };
|
|
529
|
+
};
|
|
530
|
+
/** `lastViewedProduct.price` → `lastViewedProduct`. */
|
|
531
|
+
const tokenBaseId = (id) => parseTokenId(id).base;
|
|
532
|
+
/** The definition behind an id, dotted or not. */
|
|
533
|
+
const getToken = (id) => TOKEN_BY_ID.get(parseTokenId(id).base);
|
|
534
|
+
const isKnownToken = (id) => {
|
|
535
|
+
var _a, _b;
|
|
536
|
+
const { base, field } = parseTokenId(id);
|
|
537
|
+
const def = TOKEN_BY_ID.get(base);
|
|
538
|
+
if (!def) {
|
|
539
|
+
return false;
|
|
540
|
+
}
|
|
541
|
+
if (field === undefined) {
|
|
542
|
+
return true;
|
|
543
|
+
}
|
|
544
|
+
return (_b = (_a = def.fields) === null || _a === void 0 ? void 0 : _a.includes(field)) !== null && _b !== void 0 ? _b : false;
|
|
545
|
+
};
|
|
546
|
+
/** Registry fallback for an id. Never empty for a known token. */
|
|
547
|
+
const tokenDefaultFallback = (id) => {
|
|
548
|
+
const { base, field } = parseTokenId(id);
|
|
549
|
+
const def = TOKEN_BY_ID.get(base);
|
|
550
|
+
if (!def) {
|
|
551
|
+
return '';
|
|
552
|
+
}
|
|
553
|
+
return (field && PRODUCT_FIELD_FALLBACKS[field]) || def.defaultFallback;
|
|
554
|
+
};
|
|
555
|
+
/** Known token ids used in a string, in first-seen order, deduped. */
|
|
556
|
+
const collectTokens = (text) => {
|
|
557
|
+
if (typeof text !== 'string' || !text.includes('{{')) {
|
|
558
|
+
return [];
|
|
559
|
+
}
|
|
560
|
+
const found = [];
|
|
561
|
+
for (const match of text.matchAll(TOKEN_PATTERN)) {
|
|
562
|
+
const id = match[1];
|
|
563
|
+
if (isKnownToken(id) && !found.includes(id)) {
|
|
564
|
+
found.push(id);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
return found;
|
|
568
|
+
};
|
|
569
|
+
/** Value, else merchant fallback, else default. Unknown tokens resolve to ''. */
|
|
570
|
+
const resolveTokens = (text, values, fallbacks) => {
|
|
571
|
+
if (typeof text !== 'string' || !text.includes('{{')) {
|
|
572
|
+
return text;
|
|
573
|
+
}
|
|
574
|
+
return text.replace(TOKEN_PATTERN, (_raw, id) => resolveToken(id, values, fallbacks));
|
|
575
|
+
};
|
|
576
|
+
/**
|
|
577
|
+
* One token's value: stored value, else merchant fallback, else the registry
|
|
578
|
+
* default. An unknown token is '' — never braces at a shopper. Save rejects
|
|
579
|
+
* unknown tokens; a rule stored before a registry change can still reach here.
|
|
580
|
+
*/
|
|
581
|
+
const resolveToken = (id, values, fallbacks) => {
|
|
582
|
+
if (!isKnownToken(id)) {
|
|
583
|
+
return '';
|
|
584
|
+
}
|
|
585
|
+
const value = values[id];
|
|
586
|
+
if (typeof value === 'string' && value !== '') {
|
|
587
|
+
return value;
|
|
588
|
+
}
|
|
589
|
+
const fallback = fallbacks === null || fallbacks === void 0 ? void 0 : fallbacks[id];
|
|
590
|
+
if (typeof fallback === 'string' && fallback !== '') {
|
|
591
|
+
return fallback;
|
|
592
|
+
}
|
|
593
|
+
return tokenDefaultFallback(id);
|
|
594
|
+
};
|
|
595
|
+
/**
|
|
596
|
+
* `resolveTokens`, plus the offset each token's value landed at. The SDK marks
|
|
597
|
+
* those ranges so a later swap edits only the token, never the copy around it.
|
|
598
|
+
*/
|
|
599
|
+
const resolveTokenSpans = (text, values, fallbacks) => {
|
|
600
|
+
var _a;
|
|
601
|
+
if (typeof text !== 'string' || !text.includes('{{')) {
|
|
602
|
+
return { text, spans: [] };
|
|
603
|
+
}
|
|
604
|
+
const spans = [];
|
|
605
|
+
let out = '';
|
|
606
|
+
let last = 0;
|
|
607
|
+
for (const match of text.matchAll(TOKEN_PATTERN)) {
|
|
608
|
+
const id = match[1];
|
|
609
|
+
const at = (_a = match.index) !== null && _a !== void 0 ? _a : 0;
|
|
610
|
+
out += text.slice(last, at);
|
|
611
|
+
last = at + match[0].length;
|
|
612
|
+
const value = resolveToken(id, values, fallbacks);
|
|
613
|
+
if (isKnownToken(id)) {
|
|
614
|
+
spans.push({ id, start: out.length, end: out.length + value.length });
|
|
615
|
+
}
|
|
616
|
+
out += value;
|
|
617
|
+
}
|
|
618
|
+
out += text.slice(last);
|
|
619
|
+
return { text: out, spans };
|
|
620
|
+
};
|
|
621
|
+
const resolveOptionLabels = (raw, values, fallbacks) => {
|
|
622
|
+
if (!Array.isArray(raw)) {
|
|
623
|
+
return null;
|
|
624
|
+
}
|
|
625
|
+
let changed = false;
|
|
626
|
+
const next = raw.map((option) => {
|
|
627
|
+
if (!option || typeof option !== 'object') {
|
|
628
|
+
return option;
|
|
629
|
+
}
|
|
630
|
+
const label = option.label;
|
|
631
|
+
if (typeof label !== 'string') {
|
|
632
|
+
return option;
|
|
633
|
+
}
|
|
634
|
+
const resolved = resolveTokens(label, values, fallbacks);
|
|
635
|
+
if (resolved === label) {
|
|
636
|
+
return option;
|
|
637
|
+
}
|
|
638
|
+
changed = true;
|
|
639
|
+
return { ...option, label: resolved };
|
|
640
|
+
});
|
|
641
|
+
return changed ? next : null;
|
|
642
|
+
};
|
|
643
|
+
/**
|
|
644
|
+
* Text props with merge fields substituted; null when nothing changed.
|
|
645
|
+
* Shared by the SDK dispatcher and the builder preview — a second copy of this
|
|
646
|
+
* is the bug this feature fixes.
|
|
647
|
+
*/
|
|
648
|
+
const resolveProps = (props, values) => {
|
|
649
|
+
if (!props) {
|
|
650
|
+
return null;
|
|
651
|
+
}
|
|
652
|
+
const fallbacks = props['tokenFallbacks'];
|
|
653
|
+
let next = null;
|
|
654
|
+
for (const field of TOKEN_TEXT_PROPS) {
|
|
655
|
+
const value = props[field];
|
|
656
|
+
if (typeof value !== 'string') {
|
|
657
|
+
continue;
|
|
658
|
+
}
|
|
659
|
+
const resolved = resolveTokens(value, values, fallbacks);
|
|
660
|
+
if (resolved === value) {
|
|
661
|
+
continue;
|
|
662
|
+
}
|
|
663
|
+
next !== null && next !== void 0 ? next : (next = { ...props });
|
|
664
|
+
next[field] = resolved;
|
|
665
|
+
}
|
|
666
|
+
const options = resolveOptionLabels(props['options'], values, fallbacks);
|
|
667
|
+
if (options) {
|
|
668
|
+
next !== null && next !== void 0 ? next : (next = { ...props });
|
|
669
|
+
next['options'] = options;
|
|
670
|
+
}
|
|
671
|
+
return next;
|
|
672
|
+
};
|
|
673
|
+
/** `resolveProps` for a whole block; returns the original when unchanged. */
|
|
674
|
+
const resolveBlockProps = (block, values) => {
|
|
675
|
+
const next = resolveProps(block.props, values);
|
|
676
|
+
return next ? { ...block, props: next } : block;
|
|
677
|
+
};
|
|
678
|
+
/** Every shopper-visible string on a props bag. */
|
|
679
|
+
const tokenTextsOf = (props) => {
|
|
680
|
+
if (!props) {
|
|
681
|
+
return [];
|
|
682
|
+
}
|
|
683
|
+
const texts = [];
|
|
684
|
+
for (const field of TOKEN_TEXT_PROPS) {
|
|
685
|
+
const value = props[field];
|
|
686
|
+
if (typeof value === 'string') {
|
|
687
|
+
texts.push(value);
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
const options = props['options'];
|
|
691
|
+
if (Array.isArray(options)) {
|
|
692
|
+
for (const option of options) {
|
|
693
|
+
if (option && typeof option === 'object') {
|
|
694
|
+
const label = option.label;
|
|
695
|
+
if (typeof label === 'string') {
|
|
696
|
+
texts.push(label);
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
return texts;
|
|
702
|
+
};
|
|
703
|
+
const blockTexts = (blocks, into) => {
|
|
704
|
+
for (const block of blocks) {
|
|
705
|
+
into.push(...tokenTextsOf(block.props));
|
|
706
|
+
if (block.type === 'container' && block.children) {
|
|
707
|
+
blockTexts(block.children, into);
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
};
|
|
711
|
+
/** Every shopper-visible string in a rule. */
|
|
712
|
+
const ruleTexts = (rule) => {
|
|
713
|
+
var _a, _b, _c, _d;
|
|
714
|
+
const texts = [];
|
|
715
|
+
const contents = [
|
|
716
|
+
rule.content,
|
|
717
|
+
...((_a = rule.variants) !== null && _a !== void 0 ? _a : []).map((v) => v.contentOverride),
|
|
718
|
+
];
|
|
719
|
+
for (const content of contents) {
|
|
720
|
+
for (const step of (_b = content === null || content === void 0 ? void 0 : content.steps) !== null && _b !== void 0 ? _b : []) {
|
|
721
|
+
blockTexts((_c = step.blocks) !== null && _c !== void 0 ? _c : [], texts);
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
if ((_d = rule.teaser) === null || _d === void 0 ? void 0 : _d.text) {
|
|
725
|
+
texts.push(rule.teaser.text);
|
|
726
|
+
}
|
|
727
|
+
return texts;
|
|
728
|
+
};
|
|
729
|
+
/** Known tokens a rule references, across steps, variants and teaser. */
|
|
730
|
+
const collectRuleTokens = (rule) => {
|
|
731
|
+
const found = new Set();
|
|
732
|
+
for (const text of ruleTexts(rule)) {
|
|
733
|
+
for (const id of collectTokens(text)) {
|
|
734
|
+
found.add(id);
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
return [...found];
|
|
738
|
+
};
|
|
739
|
+
const tokensInTier = (ids, tier) => ids.filter((id) => { var _a; return ((_a = getToken(id)) === null || _a === void 0 ? void 0 : _a.tier) === tier; });
|
|
740
|
+
/** Signal-tier values. Absent signals are omitted so the token falls back. */
|
|
741
|
+
const signalTokenValues = (signals) => {
|
|
742
|
+
const values = {};
|
|
743
|
+
for (const token of TOKENS) {
|
|
744
|
+
if (token.tier !== 'signal' || !token.signalId) {
|
|
745
|
+
continue;
|
|
746
|
+
}
|
|
747
|
+
const value = signals[token.signalId];
|
|
748
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
749
|
+
values[token.id] = String(value);
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
return values;
|
|
753
|
+
};
|
|
754
|
+
|
|
320
755
|
const DEFAULT_THEME = {
|
|
321
756
|
brand: { primary: '#0f172a', secondary: '#475569', accent: '#3b82f6' },
|
|
322
757
|
font: { family: 'system-ui, sans-serif', baseSize: '16px' },
|
|
@@ -442,6 +877,7 @@ const DISPLAY_FORMATS = [
|
|
|
442
877
|
'bar',
|
|
443
878
|
'floatingBox',
|
|
444
879
|
'fullscreenTakeover',
|
|
880
|
+
'inline',
|
|
445
881
|
];
|
|
446
882
|
const MODAL_POSITIONS = [
|
|
447
883
|
'center',
|
|
@@ -482,6 +918,17 @@ const TRIGGER_TYPES = ['click'];
|
|
|
482
918
|
* the SDK opened it on page load.
|
|
483
919
|
*/
|
|
484
920
|
const isTriggerDriven = (rule) => rule.trigger !== undefined;
|
|
921
|
+
/**
|
|
922
|
+
* The matching answer to "is this rule a section of the merchant's page rather
|
|
923
|
+
* than something shown over it?", and it lives here for the same reason: the
|
|
924
|
+
* edge and the browser have to agree.
|
|
925
|
+
*
|
|
926
|
+
* An inline rule is placed in the theme, so nothing that decides *whether* to
|
|
927
|
+
* show a popup applies to it. The edge must not prune it by path, and the SDK
|
|
928
|
+
* must keep it out of the static gate, the trigger engine and the public open
|
|
929
|
+
* API. Asking the question separately in each place is how the two drift.
|
|
930
|
+
*/
|
|
931
|
+
const isInlineRule = (rule) => rule.display.format === 'inline';
|
|
485
932
|
const RULE_OPERATORS = ['AND', 'OR'];
|
|
486
933
|
|
|
487
934
|
const uiActions = new Set([
|
|
@@ -571,6 +1018,7 @@ new Set(ENUM_OPERATORS);
|
|
|
571
1018
|
new Set(NUMBER_SIGNAL_IDS);
|
|
572
1019
|
new Set(NUMBER_OPERATORS);
|
|
573
1020
|
new Set(IDENTITY_SIGNAL_IDS);
|
|
1021
|
+
new Set(SIGN_IN_SIGNAL_IDS);
|
|
574
1022
|
new Set(PAGE_TYPES);
|
|
575
1023
|
new Set(DEVICE_TYPES);
|
|
576
1024
|
new Set(TEASER_POSITIONS);
|
|
@@ -638,7 +1086,7 @@ const expand = (str) => str.split(',').flatMap((entry) => {
|
|
|
638
1086
|
* .map(cell => cell.textContent.trim()).join(',')
|
|
639
1087
|
* ```
|
|
640
1088
|
*/
|
|
641
|
-
new Set([
|
|
1089
|
+
const invalidNANPAreaCodes = new Set([
|
|
642
1090
|
...expand('200,211,221,222,230,232,233,235,237-238,241,243,244,245,247,255,257,258-259,261,265,266,271,273,274,275,277,278,280,282,283,285-287,288,290-299'),
|
|
643
1091
|
...expand('300,311,322,324,327,328,333,335,338,342,344,348-349,353,355,356,357-359,362,366,369,370-379,381,382,383-384,387,388,389,390-399'),
|
|
644
1092
|
...expand('400,411,420,421-422,426-427,428,429,433,439,444,446,449,451-454,455,456,457,459,460,461-462,465,466,467,471,476,477,481-483,485-486,487,488,489,490-499'),
|
|
@@ -648,6 +1096,89 @@ new Set([
|
|
|
648
1096
|
...expand('811,821,822,823-824,827,834,836,841-842,846,851,852-853,871,874-875,879,880-887,889,890-899'),
|
|
649
1097
|
...expand('911,921,922,923,924,926,927,932,933,935,942,944,946,950,953,955,957-958,960-969,974,975,976,977,981-982,987,988,990-999'),
|
|
650
1098
|
]);
|
|
1099
|
+
const isValidZone1AreaCode = (num) => {
|
|
1100
|
+
if (!/^[2-9]\d{2}$/.test(num)) {
|
|
1101
|
+
return false;
|
|
1102
|
+
}
|
|
1103
|
+
return !invalidNANPAreaCodes.has(num);
|
|
1104
|
+
};
|
|
1105
|
+
|
|
1106
|
+
// North America; assume local numbers as NANP
|
|
1107
|
+
const ZONE_1 = /^[+]1([2-9][0-8][0-9])[2-9][0-9]{6}$/;
|
|
1108
|
+
// Africa
|
|
1109
|
+
const ZONE_2 = /^[+]2([07][0-9]{4,13}|(1[12368]|[234][0-9]|5[0-8]|6[0-9]|9[01789])[0-9]{4,12})$/;
|
|
1110
|
+
// Europe
|
|
1111
|
+
const EU_TWO_DIGIT = `(3[0-469]|4[013-9])[0-9]{4,15}`;
|
|
1112
|
+
const EU_THREE_DIGIT = `((3[578]|42)[0-9])[0-9]{4,12}`;
|
|
1113
|
+
const ZONE_3_4 = new RegExp(`^[+](${EU_TWO_DIGIT}|${EU_THREE_DIGIT})$`);
|
|
1114
|
+
// South America
|
|
1115
|
+
const ZONE_5 = /^[+]5([1-8][0-9]{4,13}|[09][0-9][0-9]{4,12})$/;
|
|
1116
|
+
// Southeast Asia & Oceania
|
|
1117
|
+
const ZONE_6 = /^[+]6([0-6][0-9]{4,13}|(7[02-9]|8[0-35-9]|9[0-2])[0-9]{4,12})$/;
|
|
1118
|
+
// Russia & Kazakhstan
|
|
1119
|
+
const ZONE_7 = /^[+]7([1-9])[0-9]{4,13}$/;
|
|
1120
|
+
// East & South Asia
|
|
1121
|
+
const ZONE_8 = /^[+]8([1246][0-9]{4,13}|(0[08]|5[02356]|70|8[0-36])[0-9]{4,12})$/;
|
|
1122
|
+
// Middle East, West & Central Asia, South Asia, Eastern Europe
|
|
1123
|
+
const ZONE_9 = /^[+]9([0123458][0-9]{4,13}|(6[0-8]|7[0-79]|9[2-8])[0-9]{4,12})$/;
|
|
1124
|
+
const checkers = [
|
|
1125
|
+
(num) => {
|
|
1126
|
+
const match = num.match(ZONE_1);
|
|
1127
|
+
if (!match) {
|
|
1128
|
+
return false;
|
|
1129
|
+
}
|
|
1130
|
+
return isValidZone1AreaCode(match[1]);
|
|
1131
|
+
},
|
|
1132
|
+
(num) => ZONE_2.test(num),
|
|
1133
|
+
(num) => ZONE_3_4.test(num),
|
|
1134
|
+
(num) => ZONE_5.test(num),
|
|
1135
|
+
(num) => ZONE_6.test(num),
|
|
1136
|
+
(num) => ZONE_7.test(num),
|
|
1137
|
+
(num) => ZONE_8.test(num),
|
|
1138
|
+
(num) => ZONE_9.test(num),
|
|
1139
|
+
];
|
|
1140
|
+
/**
|
|
1141
|
+
* Returns a boolean indicating whether or not a phone number conforms to a
|
|
1142
|
+
* plausible E.164 phone number. It does not guarantee validity as each national
|
|
1143
|
+
* operator may have various phone number lengths per area code or national
|
|
1144
|
+
* scheme. It only validates currently active country codes and length
|
|
1145
|
+
* restrictions.
|
|
1146
|
+
*
|
|
1147
|
+
* > *NOTE:* `E.164` format requires a leading plus sign, so you must set
|
|
1148
|
+
* > `keepPlus` to `true` when normalising numbers:
|
|
1149
|
+
*
|
|
1150
|
+
* @example
|
|
1151
|
+
* ```ts
|
|
1152
|
+
* const number = isPlausibleE164Number(normalizePhoneNumber(str, true))
|
|
1153
|
+
* ```
|
|
1154
|
+
*/
|
|
1155
|
+
const isPlausibleE164Number = (str) => str.startsWith('+') && checkers.some((check) => check(str));
|
|
1156
|
+
const INTL_PREFIX = /^00|[+]+/;
|
|
1157
|
+
/**
|
|
1158
|
+
* Attempts to convert a given phone number string into an E.164 formatted
|
|
1159
|
+
* number. In order to check whether the number is plausibly a real number, it
|
|
1160
|
+
* must be checked with `isPlausibleE164Number` after normalising.
|
|
1161
|
+
*/
|
|
1162
|
+
const normalizePhoneNumber = (str, keepPlus = false) => {
|
|
1163
|
+
if (!str) {
|
|
1164
|
+
return '';
|
|
1165
|
+
}
|
|
1166
|
+
let normalized = str;
|
|
1167
|
+
// assume non-international numbers are US numbers
|
|
1168
|
+
if (!INTL_PREFIX.test(normalized)) {
|
|
1169
|
+
normalized = `+1${normalized}`;
|
|
1170
|
+
}
|
|
1171
|
+
normalized = normalized.replace(/[^+0-9]/g, '').replace(INTL_PREFIX, '+');
|
|
1172
|
+
return keepPlus ? normalized : normalized.slice(1);
|
|
1173
|
+
};
|
|
1174
|
+
|
|
1175
|
+
const EMAIL_RE = /^[\w!#$%&'*+/=?^`{|}~-]+(:?\.[\w!#$%&'*+/=?^`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
|
|
1176
|
+
const isValidEmail = (email) => {
|
|
1177
|
+
if (!email) {
|
|
1178
|
+
return false;
|
|
1179
|
+
}
|
|
1180
|
+
return EMAIL_RE.test(email);
|
|
1181
|
+
};
|
|
651
1182
|
|
|
652
1183
|
/**
|
|
653
1184
|
* ISO-3166 2-leter country codes and their names
|
|
@@ -1470,8 +2001,9 @@ const isInSchedule = (schedule) => {
|
|
|
1470
2001
|
};
|
|
1471
2002
|
|
|
1472
2003
|
// eslint-disable-next-line @nx/enforce-module-boundaries
|
|
1473
|
-
// Signals not decidable before the server read: identity (resolved
|
|
1474
|
-
// behavior (collected after init)
|
|
2004
|
+
// Signals not decidable before the server read: identity (resolved
|
|
2005
|
+
// server-side), behavior (collected after init), cart (read after init) and
|
|
2006
|
+
// sign-in (the store global behind it may not be written yet). Conditions on
|
|
1475
2007
|
// these are skipped here.
|
|
1476
2008
|
//
|
|
1477
2009
|
// Spread from the config tuples rather than listed by hand. `cart.hasItems` is
|
|
@@ -1484,6 +2016,7 @@ const NON_LOCAL_SIGNALS = new Set([
|
|
|
1484
2016
|
...NUMBER_SIGNAL_IDS,
|
|
1485
2017
|
...BEHAVIOR_SIGNAL_IDS,
|
|
1486
2018
|
...CART_SIGNAL_IDS,
|
|
2019
|
+
...SIGN_IN_SIGNAL_IDS,
|
|
1487
2020
|
]);
|
|
1488
2021
|
// False only when a rule provably cannot fire without server data: out of
|
|
1489
2022
|
// schedule, or an AND rule with a locally-decidable condition that is false.
|
|
@@ -1818,20 +2351,292 @@ const createPopupPacing = (now = Date.now) => {
|
|
|
1818
2351
|
};
|
|
1819
2352
|
};
|
|
1820
2353
|
|
|
2354
|
+
const INTERNAL_EVENTS = new Set(['dismiss', 'gotostep']);
|
|
2355
|
+
const triggerDismiss = (popupRoot, source = 'closeButton') => {
|
|
2356
|
+
try {
|
|
2357
|
+
popupRoot.dispatchEvent(new CustomEvent('blotoutPopup:dismiss', { detail: { source } }));
|
|
2358
|
+
}
|
|
2359
|
+
finally {
|
|
2360
|
+
// An inline form is a section of the merchant's page, not a dismissible
|
|
2361
|
+
// surface, so removing it would tear a hole where that section was. Guarded
|
|
2362
|
+
// here rather than at each caller because every dismissal path ends up in
|
|
2363
|
+
// this one `remove()`: the `closePopup` action, a close-button block a
|
|
2364
|
+
// merchant dragged onto the canvas before switching the rule to inline, and
|
|
2365
|
+
// the post-submit auto-close.
|
|
2366
|
+
if (popupRoot.getAttribute('data-format') !== 'inline') {
|
|
2367
|
+
popupRoot.remove();
|
|
2368
|
+
}
|
|
2369
|
+
}
|
|
2370
|
+
};
|
|
2371
|
+
const dispatchPopupEvent = (popupRoot, type, detail) => {
|
|
2372
|
+
const isInternal = INTERNAL_EVENTS.has(type);
|
|
2373
|
+
popupRoot.dispatchEvent(new CustomEvent(`blotoutPopup:${type}`, {
|
|
2374
|
+
detail,
|
|
2375
|
+
bubbles: !isInternal,
|
|
2376
|
+
composed: !isInternal,
|
|
2377
|
+
}));
|
|
2378
|
+
};
|
|
2379
|
+
|
|
2380
|
+
/**
|
|
2381
|
+
* The merchant's selection as a `ProvidersConfig`, or `null` for "send nothing".
|
|
2382
|
+
*
|
|
2383
|
+
* Off is the default and it has three spellings, all of which land here as
|
|
2384
|
+
* `null`: no `eventChannels` at all, `enabled: false`, or the toggle on with
|
|
2385
|
+
* nothing picked yet.
|
|
2386
|
+
*/
|
|
2387
|
+
const toProvidersConfig = (targeting) => {
|
|
2388
|
+
var _a;
|
|
2389
|
+
if (!(targeting === null || targeting === void 0 ? void 0 : targeting.enabled)) {
|
|
2390
|
+
return null;
|
|
2391
|
+
}
|
|
2392
|
+
if (targeting.allChannels) {
|
|
2393
|
+
// Not blotoutPopup: the popup's own Analytics Engine write counts
|
|
2394
|
+
// storedUiActions and the two commerce actions, and an outbound Lead is
|
|
2395
|
+
// neither. Letting it through would double-count conversions on our side.
|
|
2396
|
+
return { all: true, blotoutPopup: false };
|
|
2397
|
+
}
|
|
2398
|
+
const config = {};
|
|
2399
|
+
for (const [provider, selection] of Object.entries((_a = targeting.providers) !== null && _a !== void 0 ? _a : {})) {
|
|
2400
|
+
// Same reason as the allChannels branch above: the popup tag stores an
|
|
2401
|
+
// inbound blotoutPopupImpression, so picking it double-counts impressions.
|
|
2402
|
+
if (provider === 'blotoutPopup') {
|
|
2403
|
+
continue;
|
|
2404
|
+
}
|
|
2405
|
+
if (selection === 'all') {
|
|
2406
|
+
config[provider] = { all: true };
|
|
2407
|
+
continue;
|
|
2408
|
+
}
|
|
2409
|
+
if (!Array.isArray(selection) || selection.length === 0) {
|
|
2410
|
+
continue;
|
|
2411
|
+
}
|
|
2412
|
+
// Keyed by name, not scriptId: the edge matches a selection against
|
|
2413
|
+
// `variable.tagName`. The scriptId rides along in the stored pick so the
|
|
2414
|
+
// selection stays traceable to the channel it was made from.
|
|
2415
|
+
config[provider] = Object.fromEntries(selection.map((pick) => [pick.name, true]));
|
|
2416
|
+
}
|
|
2417
|
+
return Object.keys(config).length > 0 ? config : null;
|
|
2418
|
+
};
|
|
2419
|
+
/**
|
|
2420
|
+
* Sends the popup event a second time, to the merchant's channels.
|
|
2421
|
+
*
|
|
2422
|
+
* Deliberately `window.edgetag('tag', …)` rather than the provider `sendTag`
|
|
2423
|
+
* every provider is handed. That `sendTag` posts straight to the edge and never
|
|
2424
|
+
* runs `processTag`, so it fires no browser pixel — which would leave Meta with
|
|
2425
|
+
* a CAPI-only event and nothing to deduplicate against.
|
|
2426
|
+
*/
|
|
2427
|
+
const emitToChannels = (rule, baseUrl, eventName, data) => {
|
|
2428
|
+
const providers = toProvidersConfig(rule.eventChannels);
|
|
2429
|
+
if (!providers) {
|
|
2430
|
+
return;
|
|
2431
|
+
}
|
|
2432
|
+
try {
|
|
2433
|
+
if (typeof window.edgetag !== 'function') {
|
|
2434
|
+
return;
|
|
2435
|
+
}
|
|
2436
|
+
// No eventId here on purpose. processTag generates one and gives the same
|
|
2437
|
+
// value to the browser tag and to the edge payload, which is what makes
|
|
2438
|
+
// Meta's pixel/CAPI deduplication work.
|
|
2439
|
+
//
|
|
2440
|
+
// `destination` is the tag the popup was loaded from, so the event goes to
|
|
2441
|
+
// that tag and no other. Without it `handleTag` fans out to every
|
|
2442
|
+
// initialised destination, which is the same thing on a one-tag page and
|
|
2443
|
+
// the wrong thing on a page carrying two.
|
|
2444
|
+
if (baseUrl) {
|
|
2445
|
+
window.edgetag('tag', eventName, data, providers, {
|
|
2446
|
+
destination: baseUrl,
|
|
2447
|
+
});
|
|
2448
|
+
return;
|
|
2449
|
+
}
|
|
2450
|
+
window.edgetag('tag', eventName, data, providers);
|
|
2451
|
+
}
|
|
2452
|
+
catch {
|
|
2453
|
+
// analytics must never break the popup
|
|
2454
|
+
}
|
|
2455
|
+
};
|
|
2456
|
+
|
|
1821
2457
|
// eslint-disable-next-line @nx/enforce-module-boundaries
|
|
2458
|
+
// Emits the impression analytics event, stamped with the deterministically
|
|
2459
|
+
// selected variant. Separate from the recording below because an inline form is
|
|
2460
|
+
// analytics-visible but never fatigue-gated: it has no impression cap to spend
|
|
2461
|
+
// and no engagement state to accumulate, so recording one would report an
|
|
2462
|
+
// always-on section as a popup working through its allowance.
|
|
2463
|
+
const emitImpression = (rule, userId, sendTag, baseUrl, popupRoot) => {
|
|
2464
|
+
const { variantId } = selectVariant(rule, userId !== null && userId !== void 0 ? userId : '');
|
|
2465
|
+
const detail = {
|
|
2466
|
+
ruleId: rule.id,
|
|
2467
|
+
variantId,
|
|
2468
|
+
displayFormat: rule.display.format,
|
|
2469
|
+
};
|
|
2470
|
+
// Blotout's own copy. Always sent, and the popup dashboard counts it.
|
|
2471
|
+
sendPopupEvent(sendTag, 'blotoutPopupImpression', detail);
|
|
2472
|
+
// The merchant's channels, only when they have turned this on and picked some.
|
|
2473
|
+
emitToChannels(rule, baseUrl, 'blotoutPopupImpression', detail);
|
|
2474
|
+
if (popupRoot) {
|
|
2475
|
+
dispatchPopupEvent(popupRoot, 'impression', detail);
|
|
2476
|
+
}
|
|
2477
|
+
};
|
|
1822
2478
|
// Records the local fatigue impression, persists the server-side impression,
|
|
1823
2479
|
// and emits the analytics event stamped with the deterministically selected
|
|
1824
2480
|
// variant. Kept out of render.ts so it stays free of the lit/DOM import chain
|
|
1825
2481
|
// and is unit-testable in jsdom.
|
|
1826
|
-
const recordAndEmitImpression = (rule, userId, sendTag, getEdgeData, sendEdgeData) => {
|
|
1827
|
-
const { variantId } = selectVariant(rule, userId !== null && userId !== void 0 ? userId : '');
|
|
2482
|
+
const recordAndEmitImpression = (rule, userId, popupRoot, baseUrl, sendTag, getEdgeData, sendEdgeData) => {
|
|
1828
2483
|
recordImpression(rule);
|
|
1829
2484
|
persistRuleEvent(rule, 'impression', getEdgeData, sendEdgeData);
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
2485
|
+
emitImpression(rule, userId, sendTag, baseUrl, popupRoot);
|
|
2486
|
+
};
|
|
2487
|
+
|
|
2488
|
+
/**
|
|
2489
|
+
* Placing and mounting the inline format.
|
|
2490
|
+
*
|
|
2491
|
+
* Every other format is mounted by `fireRule`, which owns the gates that only
|
|
2492
|
+
* make sense for something that floats over the page: the pacing floor, the
|
|
2493
|
+
* one-popup-at-a-time refusal, fatigue and the impression cap. An inline form
|
|
2494
|
+
* is a permanent part of the merchant's layout, so it takes none of them — it
|
|
2495
|
+
* renders wherever the merchant put its anchor, on every page that has one.
|
|
2496
|
+
*
|
|
2497
|
+
* Kept out of `init.ts` so that file stays the orchestrator it is, and so the
|
|
2498
|
+
* anchor contract has one owner. A Shopify theme app block would emit the same
|
|
2499
|
+
* marker, making it a placement source rather than a change to this module.
|
|
2500
|
+
*/
|
|
2501
|
+
/**
|
|
2502
|
+
* The marker a merchant places in their theme. Its value is the rule id, so one
|
|
2503
|
+
* anchor addresses exactly one rule and a page can host several.
|
|
2504
|
+
*/
|
|
2505
|
+
const INLINE_ANCHOR_ATTR = 'data-blotout-popup-inline';
|
|
2506
|
+
const anchorsOnPage = () => Array.from(document.querySelectorAll(`[${INLINE_ANCHOR_ATTR}]`));
|
|
2507
|
+
/**
|
|
2508
|
+
* Rule ids whose anchor currently holds a mounted form.
|
|
2509
|
+
*
|
|
2510
|
+
* Read from the DOM rather than tracked, for the same reason `fillAnchors`
|
|
2511
|
+
* asks the anchor whether it is filled: a theme that re-renders its footer
|
|
2512
|
+
* takes the form with it without telling us.
|
|
2513
|
+
*/
|
|
2514
|
+
const mountedInlineRuleIds = () => anchorsOnPage()
|
|
2515
|
+
.filter((anchor) => anchor.querySelector(POPUP_TAG))
|
|
2516
|
+
.map((anchor) => anchor.getAttribute(INLINE_ANCHOR_ATTR))
|
|
2517
|
+
.filter((id) => !!id);
|
|
2518
|
+
const fillAnchors = (params) => {
|
|
2519
|
+
// One form per rule per page. Two anchors for the same rule would each render
|
|
2520
|
+
// an independently submittable form, so the shopper could send the same lead
|
|
2521
|
+
// twice — while the impression is counted once, quietly skewing the ratio.
|
|
2522
|
+
// Seeded from what is already mounted so a re-render refills its own anchor.
|
|
2523
|
+
const placed = new Set(mountedInlineRuleIds());
|
|
2524
|
+
for (const anchor of anchorsOnPage()) {
|
|
2525
|
+
// Already filled. Asked of the anchor rather than tracked in a set, because
|
|
2526
|
+
// a theme that re-renders its footer hands back a fresh, empty anchor that
|
|
2527
|
+
// a set would consider done.
|
|
2528
|
+
if (anchor.querySelector(POPUP_TAG)) {
|
|
2529
|
+
continue;
|
|
2530
|
+
}
|
|
2531
|
+
const ruleId = anchor.getAttribute(INLINE_ANCHOR_ATTR);
|
|
2532
|
+
const rule = params.rules.find((r) => r.id === ruleId);
|
|
2533
|
+
if (!rule) {
|
|
2534
|
+
logger.info(`BlotoutPopup SDK: no inline rule '${ruleId}' for the anchor on this page`);
|
|
2535
|
+
continue;
|
|
2536
|
+
}
|
|
2537
|
+
if (placed.has(rule.id)) {
|
|
2538
|
+
logger.info(`BlotoutPopup SDK: inline rule '${rule.id}' is already placed on this page; extra anchor left empty`);
|
|
2539
|
+
continue;
|
|
2540
|
+
}
|
|
2541
|
+
const host = params.render(rule);
|
|
2542
|
+
if (!host) {
|
|
2543
|
+
continue;
|
|
2544
|
+
}
|
|
2545
|
+
anchor.replaceChildren(host);
|
|
2546
|
+
placed.add(rule.id);
|
|
2547
|
+
params.onMount(rule, host);
|
|
2548
|
+
}
|
|
2549
|
+
};
|
|
2550
|
+
const holdsAnchor = (nodes) =>
|
|
2551
|
+
// `Array.from` rather than a spread: NodeList is ArrayLike here but not
|
|
2552
|
+
// iterable, the same reason `fillAnchors` wraps its querySelectorAll.
|
|
2553
|
+
Array.from(nodes).some((node) => node instanceof Element &&
|
|
2554
|
+
(node.hasAttribute(INLINE_ANCHOR_ATTR) ||
|
|
2555
|
+
node.querySelector(`[${INLINE_ANCHOR_ATTR}]`) !== null));
|
|
2556
|
+
/** True when a mutation could have left an anchor on this page unfilled. */
|
|
2557
|
+
const touchesAnchor = (record) => {
|
|
2558
|
+
// A whole section carrying an anchor was swapped in or out — the Shopify
|
|
2559
|
+
// section rendering case, where the replacement arrives empty.
|
|
2560
|
+
if (holdsAnchor(record.addedNodes) || holdsAnchor(record.removedNodes)) {
|
|
2561
|
+
return true;
|
|
2562
|
+
}
|
|
2563
|
+
// Or a theme emptied an anchor that stayed where it was, taking the mounted
|
|
2564
|
+
// form with it. Removals only: a fill that lands in an empty anchor is pure
|
|
2565
|
+
// addition and must not re-arm the scan it just satisfied.
|
|
2566
|
+
return (record.removedNodes.length > 0 &&
|
|
2567
|
+
record.target instanceof Element &&
|
|
2568
|
+
record.target.closest(`[${INLINE_ANCHOR_ATTR}]`) !== null);
|
|
2569
|
+
};
|
|
2570
|
+
/**
|
|
2571
|
+
* Fills every anchor on the page and keeps filling them.
|
|
2572
|
+
*
|
|
2573
|
+
* Returns a rescan so the caller can also drive it from a page-view boundary,
|
|
2574
|
+
* and a stop so the observer does not outlive its caller — the same handle
|
|
2575
|
+
* shape `startClickTriggers` and `startDeferredRules` hand back.
|
|
2576
|
+
*/
|
|
2577
|
+
const startInlineForms = (params) => {
|
|
2578
|
+
const rescan = () => fillAnchors(params);
|
|
2579
|
+
let observer;
|
|
2580
|
+
let stopped = false;
|
|
2581
|
+
const start = () => {
|
|
2582
|
+
if (stopped) {
|
|
2583
|
+
return;
|
|
2584
|
+
}
|
|
2585
|
+
rescan();
|
|
2586
|
+
// A one-shot scan is not enough: themes render footers and drawers after
|
|
2587
|
+
// the tag runs, and Shopify's section rendering API swaps a whole section
|
|
2588
|
+
// for a fresh copy, taking the mounted form with it and leaving an empty
|
|
2589
|
+
// anchor.
|
|
2590
|
+
let queued = false;
|
|
2591
|
+
observer = new MutationObserver((records) => {
|
|
2592
|
+
// Coalesced to one scan per frame. The observer sees the page's own churn
|
|
2593
|
+
// plus the mutation each fill makes, so scanning per record would walk the
|
|
2594
|
+
// document far more often than anything changed for us.
|
|
2595
|
+
if (queued) {
|
|
2596
|
+
return;
|
|
2597
|
+
}
|
|
2598
|
+
// Most of what this observer sees on a real storefront is someone else's
|
|
2599
|
+
// churn — a chat widget, a carousel, a sticky header — and walking the
|
|
2600
|
+
// whole document for it is pure cost. A batch only matters if it moved an
|
|
2601
|
+
// anchor, so the document scan is spent on the batch that changed
|
|
2602
|
+
// something for us rather than on every batch for the whole visit.
|
|
2603
|
+
//
|
|
2604
|
+
// Cheaper than a rescan even when it matches, because it walks only the
|
|
2605
|
+
// nodes that actually moved. A fill into an empty anchor is pure addition
|
|
2606
|
+
// and does not match; one that replaced merchant placeholder content
|
|
2607
|
+
// matches once and finds the anchor already filled.
|
|
2608
|
+
if (!records.some(touchesAnchor)) {
|
|
2609
|
+
return;
|
|
2610
|
+
}
|
|
2611
|
+
queued = true;
|
|
2612
|
+
requestAnimationFrame(() => {
|
|
2613
|
+
queued = false;
|
|
2614
|
+
rescan();
|
|
2615
|
+
});
|
|
2616
|
+
});
|
|
2617
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
2618
|
+
};
|
|
2619
|
+
// The tag can be loaded from `<head>`, where there is no `document.body` to
|
|
2620
|
+
// observe yet and `observe` would throw. That throw reaches init's catch and
|
|
2621
|
+
// takes every remaining popup down with it, not just the inline forms — and
|
|
2622
|
+
// there is nothing to scan before the body exists anyway. A missing body
|
|
2623
|
+
// means the parser is still running, so DOMContentLoaded is still to come.
|
|
2624
|
+
if (document.body) {
|
|
2625
|
+
start();
|
|
2626
|
+
}
|
|
2627
|
+
else {
|
|
2628
|
+
document.addEventListener('DOMContentLoaded', start, { once: true });
|
|
2629
|
+
}
|
|
2630
|
+
return {
|
|
2631
|
+
rescan,
|
|
2632
|
+
stop: () => {
|
|
2633
|
+
// Latched, because `start` may still be pending on DOMContentLoaded and
|
|
2634
|
+
// would otherwise attach an observer nothing holds a reference to.
|
|
2635
|
+
stopped = true;
|
|
2636
|
+
observer === null || observer === void 0 ? void 0 : observer.disconnect();
|
|
2637
|
+
observer = undefined;
|
|
2638
|
+
},
|
|
2639
|
+
};
|
|
1835
2640
|
};
|
|
1836
2641
|
|
|
1837
2642
|
const installPublicApi = (params) => {
|
|
@@ -1968,11 +2773,158 @@ const renderBodyBlock = (block) => {
|
|
|
1968
2773
|
return wrapWithLink(el, (_a = block.props.textStyle) === null || _a === void 0 ? void 0 : _a.link);
|
|
1969
2774
|
};
|
|
1970
2775
|
|
|
2776
|
+
// Dispatched by the submit action so every managed field reveals its message at
|
|
2777
|
+
// once. Without it the browser surfaces only the first failure, in a bubble.
|
|
2778
|
+
const REVEAL_ERRORS_EVENT = 'blotoutPopup:revealerrors';
|
|
2779
|
+
const INTERNATIONAL_PREFIX = /^(\+|00)/;
|
|
2780
|
+
/**
|
|
2781
|
+
* The trunk prefix a shopper dials inside their own country, which E.164 drops.
|
|
2782
|
+
* Most countries use a single `0`. Italy and the Vatican share +39 and San
|
|
2783
|
+
* Marino has +378; all keep the zero, so they have no prefix to strip. The
|
|
2784
|
+
* others are the known non-`0` prefixes: `8` in Russia and Kazakhstan, `8 0` in
|
|
2785
|
+
* Belarus and `06` in Hungary. The `8` is only a prefix on a number one digit
|
|
2786
|
+
* longer than a national one, because Russian area codes start with 8 too.
|
|
2787
|
+
*/
|
|
2788
|
+
const TRUNK_PREFIXES = {
|
|
2789
|
+
'7': /^8(?=\d{10}$)/,
|
|
2790
|
+
'36': /^06?/,
|
|
2791
|
+
'39': null,
|
|
2792
|
+
'375': /^8?0(?=\d{9}$)/,
|
|
2793
|
+
'378': null,
|
|
2794
|
+
};
|
|
2795
|
+
const DEFAULT_TRUNK_PREFIX = /^0/;
|
|
2796
|
+
// `+44 (0)7911 123456` marks the trunk zero a caller from abroad must skip. It
|
|
2797
|
+
// is not part of the number, except where the zero is kept.
|
|
2798
|
+
const OPTIONAL_TRUNK_ZERO = /\(0\)/g;
|
|
2799
|
+
const KEEPS_ZERO = /^(\+|00)\s*(39|378)/;
|
|
2800
|
+
let errorSeq = 0;
|
|
2801
|
+
/**
|
|
2802
|
+
* Joins the picked dial code to what the shopper typed, unless they typed a
|
|
2803
|
+
* country code themselves — an explicit `+44` or `0044` always wins over the
|
|
2804
|
+
* selector, so a shopper who pastes a full international number is not given a
|
|
2805
|
+
* second country code.
|
|
2806
|
+
*
|
|
2807
|
+
* Never call `normalizePhoneNumber` on a bare local number without doing this
|
|
2808
|
+
* first: it assumes NANP and prefixes `+1`, which turns a Mexico City number
|
|
2809
|
+
* into a valid New Jersey one.
|
|
2810
|
+
*/
|
|
2811
|
+
const toE164 = (raw, dial) => {
|
|
2812
|
+
const typed = raw.trim();
|
|
2813
|
+
if (!typed) {
|
|
2814
|
+
return '';
|
|
2815
|
+
}
|
|
2816
|
+
if (INTERNATIONAL_PREFIX.test(typed)) {
|
|
2817
|
+
return normalizePhoneNumber(KEEPS_ZERO.test(typed) ? typed : typed.replace(OPTIONAL_TRUNK_ZERO, ''), true);
|
|
2818
|
+
}
|
|
2819
|
+
// With no country to read it against, a bare number cannot be made E.164.
|
|
2820
|
+
if (!dial) {
|
|
2821
|
+
return '';
|
|
2822
|
+
}
|
|
2823
|
+
// `07911 123456` is how a London shopper writes their own number, and the
|
|
2824
|
+
// trunk prefix has to go before the country code goes on — `+4407911123456`
|
|
2825
|
+
// is not their number, and it is long enough to pass a plausibility check,
|
|
2826
|
+
// so it would be wrong rather than rejected.
|
|
2827
|
+
const trunk = dial in TRUNK_PREFIXES ? TRUNK_PREFIXES[dial] : DEFAULT_TRUNK_PREFIX;
|
|
2828
|
+
const digits = typed.replace(/\D/g, '');
|
|
2829
|
+
const national = trunk ? digits.replace(trunk, '') : digits;
|
|
2830
|
+
return normalizePhoneNumber(`+${dial}${national}`, true);
|
|
2831
|
+
};
|
|
2832
|
+
const isValidPhone = (raw, dial) => isPlausibleE164Number(toE164(raw, dial));
|
|
2833
|
+
const emailCheck = (message) => (value) => {
|
|
2834
|
+
const email = value.trim();
|
|
2835
|
+
if (!email || isValidEmail(email)) {
|
|
2836
|
+
return null;
|
|
2837
|
+
}
|
|
2838
|
+
return message || 'Enter a valid email address';
|
|
2839
|
+
};
|
|
2840
|
+
const phoneCheck = (getDial, message, required = false) => (value) => {
|
|
2841
|
+
// The browser does not trim a `type=tel` value, so native `required`
|
|
2842
|
+
// accepts a field holding nothing but spaces and the lead goes through
|
|
2843
|
+
// with no phone. A genuinely empty field is still the browser's job.
|
|
2844
|
+
const acceptable = value.trim()
|
|
2845
|
+
? isValidPhone(value, getDial())
|
|
2846
|
+
: !(required && value);
|
|
2847
|
+
return acceptable ? null : message || 'Enter a valid phone number';
|
|
2848
|
+
};
|
|
2849
|
+
/**
|
|
2850
|
+
* Wires one input to a format check.
|
|
2851
|
+
*
|
|
2852
|
+
* `setCustomValidity` is what does the blocking: the submit action already
|
|
2853
|
+
* calls `checkValidity()` on every input, so a field that reports itself
|
|
2854
|
+
* invalid stops the form without the action layer knowing this exists.
|
|
2855
|
+
*
|
|
2856
|
+
* The message is computed on every keystroke but only shown once the shopper
|
|
2857
|
+
* has left the field or tried to submit — telling someone their address is
|
|
2858
|
+
* invalid while they are still typing the first letter of it is noise. Once
|
|
2859
|
+
* shown it updates live, so it clears the moment the value is fixed.
|
|
2860
|
+
*/
|
|
2861
|
+
const attachFieldValidation = (options) => {
|
|
2862
|
+
const { input, wrapper, root, check, onValue } = options;
|
|
2863
|
+
let revealed = false;
|
|
2864
|
+
let error;
|
|
2865
|
+
const showError = (message) => {
|
|
2866
|
+
if (!error) {
|
|
2867
|
+
error = document.createElement('p');
|
|
2868
|
+
error.id = `bop-field-error-${++errorSeq}`;
|
|
2869
|
+
error.setAttribute('role', 'alert');
|
|
2870
|
+
applyStyles(error, {
|
|
2871
|
+
margin: '0.2em 0 0',
|
|
2872
|
+
'font-size': '0.75em',
|
|
2873
|
+
'line-height': '1.3',
|
|
2874
|
+
color: '#b3252b',
|
|
2875
|
+
});
|
|
2876
|
+
wrapper.appendChild(error);
|
|
2877
|
+
}
|
|
2878
|
+
error.textContent = message;
|
|
2879
|
+
error.hidden = false;
|
|
2880
|
+
};
|
|
2881
|
+
const run = () => {
|
|
2882
|
+
const message = check(input.value);
|
|
2883
|
+
input.setCustomValidity(message !== null && message !== void 0 ? message : '');
|
|
2884
|
+
onValue === null || onValue === void 0 ? void 0 : onValue(input.value);
|
|
2885
|
+
if (message && revealed) {
|
|
2886
|
+
input.setAttribute('aria-invalid', 'true');
|
|
2887
|
+
showError(message);
|
|
2888
|
+
if (error) {
|
|
2889
|
+
input.setAttribute('aria-describedby', error.id);
|
|
2890
|
+
}
|
|
2891
|
+
return;
|
|
2892
|
+
}
|
|
2893
|
+
input.removeAttribute('aria-invalid');
|
|
2894
|
+
input.removeAttribute('aria-describedby');
|
|
2895
|
+
if (error) {
|
|
2896
|
+
error.hidden = true;
|
|
2897
|
+
}
|
|
2898
|
+
};
|
|
2899
|
+
input.addEventListener('input', run);
|
|
2900
|
+
input.addEventListener('blur', () => {
|
|
2901
|
+
revealed = true;
|
|
2902
|
+
run();
|
|
2903
|
+
});
|
|
2904
|
+
// The popup root outlives a step change, which replaces the block DOM, so a
|
|
2905
|
+
// multi-step popup leaves handlers behind holding detached inputs. Each one
|
|
2906
|
+
// drops itself the first time it sees its own input is gone, so a later
|
|
2907
|
+
// submit neither acts on a field nobody can see nor walks a growing list.
|
|
2908
|
+
const onReveal = () => {
|
|
2909
|
+
if (!input.isConnected) {
|
|
2910
|
+
root.removeEventListener(REVEAL_ERRORS_EVENT, onReveal);
|
|
2911
|
+
return;
|
|
2912
|
+
}
|
|
2913
|
+
revealed = true;
|
|
2914
|
+
run();
|
|
2915
|
+
};
|
|
2916
|
+
root.addEventListener(REVEAL_ERRORS_EVENT, onReveal);
|
|
2917
|
+
run();
|
|
2918
|
+
};
|
|
2919
|
+
|
|
1971
2920
|
const buildLeadBody = (input) => {
|
|
1972
2921
|
const { formData, ruleId, stepId, variantId, pageUrl, referrer, eventId, submittedAt, } = input;
|
|
1973
2922
|
const fields = {};
|
|
1974
2923
|
for (const [key, value] of Object.entries(formData)) {
|
|
1975
|
-
if (key === 'email' ||
|
|
2924
|
+
if (key === 'email' ||
|
|
2925
|
+
key === 'phone' ||
|
|
2926
|
+
key === 'consentGiven' ||
|
|
2927
|
+
key === 'smsConsentGiven') {
|
|
1976
2928
|
continue;
|
|
1977
2929
|
}
|
|
1978
2930
|
if (typeof value === 'string' || typeof value === 'boolean') {
|
|
@@ -1984,6 +2936,9 @@ const buildLeadBody = (input) => {
|
|
|
1984
2936
|
const consentGiven = typeof formData['consentGiven'] === 'boolean'
|
|
1985
2937
|
? formData['consentGiven']
|
|
1986
2938
|
: null;
|
|
2939
|
+
const smsConsentGiven = typeof formData['smsConsentGiven'] === 'boolean'
|
|
2940
|
+
? formData['smsConsentGiven']
|
|
2941
|
+
: null;
|
|
1987
2942
|
return {
|
|
1988
2943
|
eventId,
|
|
1989
2944
|
ruleId,
|
|
@@ -1993,12 +2948,45 @@ const buildLeadBody = (input) => {
|
|
|
1993
2948
|
phone,
|
|
1994
2949
|
fields,
|
|
1995
2950
|
consentGiven,
|
|
2951
|
+
smsConsentGiven,
|
|
1996
2952
|
pageUrl,
|
|
1997
2953
|
referrer,
|
|
1998
2954
|
submittedAt,
|
|
1999
2955
|
};
|
|
2000
2956
|
};
|
|
2001
2957
|
|
|
2958
|
+
/**
|
|
2959
|
+
* The dedupe key for one submit, or `null` when there is nothing to send.
|
|
2960
|
+
*
|
|
2961
|
+
* Excludes eventId/submittedAt so a double-click or an identical resubmit lands
|
|
2962
|
+
* on the same key. Exported because the identity push and the outbound `Lead`
|
|
2963
|
+
* share this guard: `run-action` computes the key once for all three sends.
|
|
2964
|
+
*
|
|
2965
|
+
* The placeholders below are exactly the fields the key ignores, so building a
|
|
2966
|
+
* throwaway body is how the key stays in step with `buildLeadBody`.
|
|
2967
|
+
*/
|
|
2968
|
+
const leadSendKey = (stepId, formData) => {
|
|
2969
|
+
const body = buildLeadBody({
|
|
2970
|
+
formData,
|
|
2971
|
+
ruleId: '',
|
|
2972
|
+
stepId,
|
|
2973
|
+
pageUrl: '',
|
|
2974
|
+
referrer: '',
|
|
2975
|
+
eventId: '',
|
|
2976
|
+
submittedAt: 0,
|
|
2977
|
+
});
|
|
2978
|
+
if (!body.email && !body.phone) {
|
|
2979
|
+
return null;
|
|
2980
|
+
}
|
|
2981
|
+
return JSON.stringify([
|
|
2982
|
+
stepId,
|
|
2983
|
+
body.email,
|
|
2984
|
+
body.phone,
|
|
2985
|
+
body.consentGiven,
|
|
2986
|
+
body.smsConsentGiven,
|
|
2987
|
+
body.fields,
|
|
2988
|
+
]);
|
|
2989
|
+
};
|
|
2002
2990
|
// Fire-and-forget forward of the captured lead to the blotout-popup CDN, which
|
|
2003
2991
|
// enriches and posts it to the leads backend. Never throws into the popup flow.
|
|
2004
2992
|
const sendLead = (input) => {
|
|
@@ -2007,6 +2995,13 @@ const sendLead = (input) => {
|
|
|
2007
2995
|
if (!baseUrl) {
|
|
2008
2996
|
return;
|
|
2009
2997
|
}
|
|
2998
|
+
const sendKey = leadSendKey(stepId, formData);
|
|
2999
|
+
if (!sendKey) {
|
|
3000
|
+
return;
|
|
3001
|
+
}
|
|
3002
|
+
if (state && state.lastSentKey === sendKey) {
|
|
3003
|
+
return;
|
|
3004
|
+
}
|
|
2010
3005
|
const body = buildLeadBody({
|
|
2011
3006
|
formData,
|
|
2012
3007
|
ruleId,
|
|
@@ -2017,20 +3012,6 @@ const sendLead = (input) => {
|
|
|
2017
3012
|
eventId: crypto.randomUUID(),
|
|
2018
3013
|
submittedAt: Date.now(),
|
|
2019
3014
|
});
|
|
2020
|
-
if (!body.email && !body.phone) {
|
|
2021
|
-
return;
|
|
2022
|
-
}
|
|
2023
|
-
// Key excludes eventId/submittedAt so double-clicks and identical resubmits dedupe.
|
|
2024
|
-
const sendKey = JSON.stringify([
|
|
2025
|
-
stepId,
|
|
2026
|
-
body.email,
|
|
2027
|
-
body.phone,
|
|
2028
|
-
body.consentGiven,
|
|
2029
|
-
body.fields,
|
|
2030
|
-
]);
|
|
2031
|
-
if (state && state.lastSentKey === sendKey) {
|
|
2032
|
-
return;
|
|
2033
|
-
}
|
|
2034
3015
|
// EdgeTagUserId + credentials carry the visitor identity so the CDN stamps
|
|
2035
3016
|
// the real visitorId/sessionId instead of minting a new user (shop-gpt parity).
|
|
2036
3017
|
const headers = new Headers({ 'Content-Type': 'application/json' });
|
|
@@ -2054,6 +3035,53 @@ const sendLead = (input) => {
|
|
|
2054
3035
|
}
|
|
2055
3036
|
};
|
|
2056
3037
|
|
|
3038
|
+
// Identity fields the popup can plausibly capture, named to match `UserData`
|
|
3039
|
+
// on the edge (`libs/cdn/types/src/api.ts:148`). Anything else the form
|
|
3040
|
+
// collects stays a lead field and is not part of the visitor's identity.
|
|
3041
|
+
const IDENTITY_FIELDS = ['email', 'phone', 'firstName', 'lastName'];
|
|
3042
|
+
/**
|
|
3043
|
+
* Stores the submitted identity on the visitor's EdgeTag profile.
|
|
3044
|
+
*
|
|
3045
|
+
* Without this the email never reaches the edge's user store, and every channel
|
|
3046
|
+
* that identifies a person before it will accept an event bails out: Klaviyo
|
|
3047
|
+
* logs "User needs email or phone number first." and drops the event, and
|
|
3048
|
+
* Listrak and Omnisend do the same. The lead itself still lands in Blotout's
|
|
3049
|
+
* leads backend, so the popup looks like it worked.
|
|
3050
|
+
*
|
|
3051
|
+
* Called before the outbound `Lead`, the same order the Shopify custom pixel
|
|
3052
|
+
* uses (`apps/edgetag/app-api/src/app/api/shopify/templates/custom-pixel.ts:535`):
|
|
3053
|
+
* `edgetag('data', …)` first, then the event.
|
|
3054
|
+
*/
|
|
3055
|
+
const sendUserData = (formData, baseUrl) => {
|
|
3056
|
+
try {
|
|
3057
|
+
if (typeof window.edgetag !== 'function') {
|
|
3058
|
+
return;
|
|
3059
|
+
}
|
|
3060
|
+
const userData = {};
|
|
3061
|
+
for (const field of IDENTITY_FIELDS) {
|
|
3062
|
+
const value = formData[field];
|
|
3063
|
+
if (typeof value === 'string' && value.trim().length > 0) {
|
|
3064
|
+
userData[field] = value.trim();
|
|
3065
|
+
}
|
|
3066
|
+
}
|
|
3067
|
+
// A name on its own identifies nobody, and the providers this exists for
|
|
3068
|
+
// key on email or phone.
|
|
3069
|
+
if (!userData['email'] && !userData['phone']) {
|
|
3070
|
+
return;
|
|
3071
|
+
}
|
|
3072
|
+
// Same destination as the event that follows, so the identity lands on the
|
|
3073
|
+
// tag the popup belongs to rather than on every tag on the page.
|
|
3074
|
+
if (baseUrl) {
|
|
3075
|
+
window.edgetag('data', userData, undefined, { destination: baseUrl });
|
|
3076
|
+
return;
|
|
3077
|
+
}
|
|
3078
|
+
window.edgetag('data', userData);
|
|
3079
|
+
}
|
|
3080
|
+
catch {
|
|
3081
|
+
// identity must never break the popup
|
|
3082
|
+
}
|
|
3083
|
+
};
|
|
3084
|
+
|
|
2057
3085
|
const collectFormData = (popupRoot) => {
|
|
2058
3086
|
var _a;
|
|
2059
3087
|
const fields = {};
|
|
@@ -2080,27 +3108,10 @@ const collectFormData = (popupRoot) => {
|
|
|
2080
3108
|
return fields;
|
|
2081
3109
|
};
|
|
2082
3110
|
|
|
2083
|
-
|
|
2084
|
-
const triggerDismiss = (popupRoot, source = 'closeButton') => {
|
|
2085
|
-
try {
|
|
2086
|
-
popupRoot.dispatchEvent(new CustomEvent('blotoutPopup:dismiss', { detail: { source } }));
|
|
2087
|
-
}
|
|
2088
|
-
finally {
|
|
2089
|
-
popupRoot.remove();
|
|
2090
|
-
}
|
|
2091
|
-
};
|
|
2092
|
-
const dispatchPopupEvent = (popupRoot, type, detail) => {
|
|
2093
|
-
const isInternal = INTERNAL_EVENTS.has(type);
|
|
2094
|
-
popupRoot.dispatchEvent(new CustomEvent(`blotoutPopup:${type}`, {
|
|
2095
|
-
detail,
|
|
2096
|
-
bubbles: !isInternal,
|
|
2097
|
-
composed: !isInternal,
|
|
2098
|
-
}));
|
|
2099
|
-
};
|
|
2100
|
-
|
|
3111
|
+
// eslint-disable-next-line @nx/enforce-module-boundaries
|
|
2101
3112
|
const SHOP_GPT_REGISTRY_KEY = Symbol.for('shop-gpt');
|
|
2102
3113
|
const runAction = (action, ctx) => {
|
|
2103
|
-
var _a, _b, _c, _d;
|
|
3114
|
+
var _a, _b, _c, _d, _e;
|
|
2104
3115
|
sendPopupEvent(ctx.sendTag, 'blotoutPopupCtaClick', {
|
|
2105
3116
|
ruleId: ctx.rule.id,
|
|
2106
3117
|
variantId: ctx.variantId,
|
|
@@ -2131,10 +3142,28 @@ const runAction = (action, ctx) => {
|
|
|
2131
3142
|
return;
|
|
2132
3143
|
}
|
|
2133
3144
|
case 'submitForm': {
|
|
3145
|
+
// An inline form has no close: when its last step has no `next` to a
|
|
3146
|
+
// confirmation, submitting leaves the filled form sitting in the page.
|
|
3147
|
+
// Without this the shopper clicks again, sends a second lead and fires a
|
|
3148
|
+
// second convert. Only inline, because every other format is either gone
|
|
3149
|
+
// or dismissible by the time this could happen.
|
|
3150
|
+
if (isInlineRule(ctx.rule) && isConverted(ctx.rule.id)) {
|
|
3151
|
+
return;
|
|
3152
|
+
}
|
|
2134
3153
|
const inputs = Array.from((_c = (_b = ctx.popupRoot.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('input, select')) !== null && _c !== void 0 ? _c : []);
|
|
3154
|
+
// Ask every managed field to show its own message first, so a form with
|
|
3155
|
+
// two bad fields surfaces both instead of the browser bubbling only the
|
|
3156
|
+
// first one it finds.
|
|
3157
|
+
ctx.popupRoot.dispatchEvent(new CustomEvent(REVEAL_ERRORS_EVENT));
|
|
2135
3158
|
const invalid = inputs.find((input) => !input.checkValidity());
|
|
2136
3159
|
if (invalid) {
|
|
2137
|
-
invalid.
|
|
3160
|
+
invalid.focus();
|
|
3161
|
+
// A field with an inline message has already said its piece; anything
|
|
3162
|
+
// else — a required checkbox, a merchant's own input — still needs the
|
|
3163
|
+
// native bubble.
|
|
3164
|
+
if (invalid.getAttribute('aria-invalid') !== 'true') {
|
|
3165
|
+
invalid.reportValidity();
|
|
3166
|
+
}
|
|
2138
3167
|
return;
|
|
2139
3168
|
}
|
|
2140
3169
|
const formData = collectFormData(ctx.popupRoot);
|
|
@@ -2148,15 +3177,28 @@ const runAction = (action, ctx) => {
|
|
|
2148
3177
|
const leadData = ctx.leadState
|
|
2149
3178
|
? Object.assign(ctx.leadState.data, formData)
|
|
2150
3179
|
: formData;
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
3180
|
+
// One guard for all three sends. A step whose `transition` is undefined
|
|
3181
|
+
// or 'submit' leaves the popup mounted with a live click listener, so a
|
|
3182
|
+
// second click re-enters this branch. `sendLead` deduped on its own key;
|
|
3183
|
+
// the identity push and the outbound `Lead` did not, and `emitToChannels`
|
|
3184
|
+
// mints a fresh eventId per call, so Meta had nothing to dedupe on.
|
|
3185
|
+
const sendKey = leadSendKey(ctx.currentStep.id, leadData);
|
|
3186
|
+
const isResend = sendKey !== null && ((_d = ctx.leadState) === null || _d === void 0 ? void 0 : _d.lastSentKey) === sendKey;
|
|
3187
|
+
// Identity first, then the lead and the outbound event: the edge has to
|
|
3188
|
+
// already hold the email when the `Lead` arrives, or Klaviyo and friends
|
|
3189
|
+
// drop it for want of an identifier.
|
|
3190
|
+
if (!isResend) {
|
|
3191
|
+
sendUserData(leadData, ctx.baseUrl);
|
|
3192
|
+
sendLead({
|
|
3193
|
+
baseUrl: ctx.baseUrl,
|
|
3194
|
+
userId: ctx.userId,
|
|
3195
|
+
ruleId: ctx.rule.id,
|
|
3196
|
+
stepId: ctx.currentStep.id,
|
|
3197
|
+
variantId: ctx.variantId,
|
|
3198
|
+
formData: leadData,
|
|
3199
|
+
state: ctx.leadState,
|
|
3200
|
+
});
|
|
3201
|
+
}
|
|
2160
3202
|
const transition = ctx.currentStep.transition;
|
|
2161
3203
|
const nextStep = transition === 'next' && currentIdx >= 0
|
|
2162
3204
|
? steps[currentIdx + 1]
|
|
@@ -2168,26 +3210,50 @@ const runAction = (action, ctx) => {
|
|
|
2168
3210
|
? ['cta', 'convert']
|
|
2169
3211
|
: ['convert'];
|
|
2170
3212
|
persistRuleEvent(ctx.rule, events, ctx.getEdgeData, ctx.sendEdgeData);
|
|
2171
|
-
|
|
3213
|
+
const convertDetail = {
|
|
2172
3214
|
ruleId: ctx.rule.id,
|
|
2173
3215
|
variantId: ctx.variantId,
|
|
2174
3216
|
displayFormat: ctx.rule.display.format,
|
|
2175
3217
|
contentVersion: ctx.rule.contentVersion,
|
|
2176
3218
|
stepId: ctx.currentStep.id,
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
3219
|
+
};
|
|
3220
|
+
sendPopupEvent(ctx.sendTag, 'blotoutPopupConvert', {
|
|
3221
|
+
...convertDetail,
|
|
3222
|
+
// Any consent the shopper gave, not the email box specifically —
|
|
3223
|
+
// an SMS-only popup has no `consentGiven` field at all, and before
|
|
3224
|
+
// consent carried a channel its single box was always this one. The
|
|
3225
|
+
// per-channel record lives on the lead; this stays "did they agree
|
|
3226
|
+
// to something" so the existing metric keeps its meaning.
|
|
3227
|
+
consentGiven: [
|
|
3228
|
+
formData['consentGiven'],
|
|
3229
|
+
formData['smsConsentGiven'],
|
|
3230
|
+
].some((value) => value === true),
|
|
2180
3231
|
});
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
3232
|
+
// Sent as `Lead`: a Meta standard event, and GA4 maps it to
|
|
3233
|
+
// `generate_lead`, so the merchant can optimise on it without either
|
|
3234
|
+
// provider needing to know what a popup is. `consentGiven` is the
|
|
3235
|
+
// merchant's marketing checkbox, not a routing signal, so it stays out.
|
|
3236
|
+
if (!isResend) {
|
|
3237
|
+
emitToChannels(ctx.rule, ctx.baseUrl, 'Lead', convertDetail);
|
|
3238
|
+
}
|
|
3239
|
+
dispatchPopupEvent(ctx.popupRoot, 'convert', convertDetail);
|
|
2185
3240
|
}
|
|
2186
3241
|
if (nextStep) {
|
|
2187
3242
|
dispatchPopupEvent(ctx.popupRoot, 'gotostep', {
|
|
2188
3243
|
ruleId: ctx.rule.id,
|
|
2189
3244
|
stepId: nextStep.id,
|
|
2190
3245
|
});
|
|
3246
|
+
return;
|
|
3247
|
+
}
|
|
3248
|
+
// A submit with nowhere left to go ends the flow, so close. Only a step
|
|
3249
|
+
// that hands off to another one stays open: `transition` is unset on the
|
|
3250
|
+
// last step of every template, and a popup still sitting there after a
|
|
3251
|
+
// successful submit reads to the shopper as a submit that failed.
|
|
3252
|
+
// Closing an inline form would tear a hole in the merchant's page where
|
|
3253
|
+
// a permanent section used to be, so its last step stays on screen as the
|
|
3254
|
+
// confirmation. The lead and the conversion above are already recorded.
|
|
3255
|
+
if (!isInlineRule(ctx.rule)) {
|
|
3256
|
+
triggerDismiss(ctx.popupRoot, 'auto');
|
|
2191
3257
|
}
|
|
2192
3258
|
return;
|
|
2193
3259
|
}
|
|
@@ -2202,7 +3268,7 @@ const runAction = (action, ctx) => {
|
|
|
2202
3268
|
? ctx.codes.get(action.couponBlockId)
|
|
2203
3269
|
: [...ctx.codes.values()][0];
|
|
2204
3270
|
if (code) {
|
|
2205
|
-
(
|
|
3271
|
+
(_e = navigator.clipboard) === null || _e === void 0 ? void 0 : _e.writeText(code);
|
|
2206
3272
|
dispatchPopupEvent(ctx.popupRoot, 'couponcopied', {
|
|
2207
3273
|
ruleId: ctx.rule.id,
|
|
2208
3274
|
code,
|
|
@@ -2312,7 +3378,11 @@ const renderConsentBlock = (block) => {
|
|
|
2312
3378
|
});
|
|
2313
3379
|
const checkbox = document.createElement('input');
|
|
2314
3380
|
checkbox.type = 'checkbox';
|
|
2315
|
-
|
|
3381
|
+
// An SMS block submits under its own name so agreeing to email is never read
|
|
3382
|
+
// as agreeing to texts. No channel means email, which is what every rule
|
|
3383
|
+
// saved before this existed carries.
|
|
3384
|
+
checkbox.name =
|
|
3385
|
+
block.props.channel === 'sms' ? 'smsConsentGiven' : 'consentGiven';
|
|
2316
3386
|
checkbox.required = block.props.required;
|
|
2317
3387
|
applyStyles(checkbox, { 'margin-top': '0.2em' });
|
|
2318
3388
|
const text = document.createElement('span');
|
|
@@ -2695,6 +3765,12 @@ const renderEmailInputBlock = (block, ctx) => {
|
|
|
2695
3765
|
...getInputStyles(ctx.theme),
|
|
2696
3766
|
});
|
|
2697
3767
|
wrapper.appendChild(input);
|
|
3768
|
+
attachFieldValidation({
|
|
3769
|
+
input,
|
|
3770
|
+
wrapper,
|
|
3771
|
+
root: ctx.popupRoot,
|
|
3772
|
+
check: emailCheck(),
|
|
3773
|
+
});
|
|
2698
3774
|
return wrapper;
|
|
2699
3775
|
};
|
|
2700
3776
|
|
|
@@ -2703,10 +3779,23 @@ const renderFloatingImageBlock = (block) => {
|
|
|
2703
3779
|
if (!block.props.url || !isSafeImageUrl(block.props.url)) {
|
|
2704
3780
|
return null;
|
|
2705
3781
|
}
|
|
3782
|
+
// Out of flow for the same reason as the image block, and because floating
|
|
3783
|
+
// is the point: it overlaps its neighbours rather than growing the rows and
|
|
3784
|
+
// pushing them down. The wrapper is the grid item, so it carries the z-index.
|
|
3785
|
+
const wrapper = document.createElement('div');
|
|
3786
|
+
applyStyles(wrapper, {
|
|
3787
|
+
position: 'relative',
|
|
3788
|
+
width: '100%',
|
|
3789
|
+
height: '100%',
|
|
3790
|
+
'z-index': block.props.zIndex != null ? String(block.props.zIndex) : undefined,
|
|
3791
|
+
});
|
|
2706
3792
|
const img = document.createElement('img');
|
|
2707
3793
|
img.src = block.props.url;
|
|
2708
3794
|
img.alt = (_a = block.props.alt) !== null && _a !== void 0 ? _a : '';
|
|
2709
3795
|
applyStyles(img, {
|
|
3796
|
+
position: 'absolute',
|
|
3797
|
+
top: '0',
|
|
3798
|
+
left: '0',
|
|
2710
3799
|
width: (_b = block.props.width) !== null && _b !== void 0 ? _b : '100%',
|
|
2711
3800
|
height: (_c = block.props.height) !== null && _c !== void 0 ? _c : 'auto',
|
|
2712
3801
|
display: 'block',
|
|
@@ -2715,12 +3804,13 @@ const renderFloatingImageBlock = (block) => {
|
|
|
2715
3804
|
transform: block.props.rotation != null
|
|
2716
3805
|
? `rotate(${block.props.rotation}deg)`
|
|
2717
3806
|
: undefined,
|
|
2718
|
-
'z-index': block.props.zIndex != null ? String(block.props.zIndex) : undefined,
|
|
2719
3807
|
'box-shadow': block.props.shadow,
|
|
2720
3808
|
});
|
|
2721
|
-
|
|
3809
|
+
wrapper.appendChild(img);
|
|
3810
|
+
return wrapper;
|
|
2722
3811
|
};
|
|
2723
3812
|
|
|
3813
|
+
// eslint-disable-next-line @nx/enforce-module-boundaries
|
|
2724
3814
|
const TYPE_MAP = {
|
|
2725
3815
|
text: 'text',
|
|
2726
3816
|
email: 'email',
|
|
@@ -2728,8 +3818,8 @@ const TYPE_MAP = {
|
|
|
2728
3818
|
number: 'number',
|
|
2729
3819
|
date: 'date',
|
|
2730
3820
|
};
|
|
2731
|
-
const renderFormInputBlock = (block) => {
|
|
2732
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
3821
|
+
const renderFormInputBlock = (block, ctx) => {
|
|
3822
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
2733
3823
|
const wrapper = document.createElement('div');
|
|
2734
3824
|
applyStyles(wrapper, { margin: (_a = block.props.margin) !== null && _a !== void 0 ? _a : '0 0 0.5em' });
|
|
2735
3825
|
if (block.props.label) {
|
|
@@ -2770,6 +3860,46 @@ const renderFormInputBlock = (block) => {
|
|
|
2770
3860
|
'font-size': '0.875em',
|
|
2771
3861
|
});
|
|
2772
3862
|
wrapper.appendChild(input);
|
|
3863
|
+
// The generic block is a second route to an email or phone field, so it gets
|
|
3864
|
+
// the same checks. It has no country picker of its own, so the shopper's own
|
|
3865
|
+
// country is what a bare number is read as. With no geo there is none, and
|
|
3866
|
+
// falling back to US would store a plausible wrong number, so only an
|
|
3867
|
+
// explicit international number is accepted.
|
|
3868
|
+
if (block.props.fieldType === 'email') {
|
|
3869
|
+
attachFieldValidation({
|
|
3870
|
+
input,
|
|
3871
|
+
wrapper,
|
|
3872
|
+
root: ctx.popupRoot,
|
|
3873
|
+
check: emailCheck(),
|
|
3874
|
+
});
|
|
3875
|
+
}
|
|
3876
|
+
else if (block.props.fieldType === 'phone') {
|
|
3877
|
+
const geo = resolveCountry(ctx.geoCountry);
|
|
3878
|
+
const dial = geo === ((_j = ctx.geoCountry) === null || _j === void 0 ? void 0 : _j.trim().toUpperCase()) ? dialCode(geo) : '';
|
|
3879
|
+
// Submitted from a hidden field like the dedicated phone block, so this
|
|
3880
|
+
// route cannot send a bare local number the lead route would refuse. The
|
|
3881
|
+
// visible input gives up its name to the hidden one to make that the only
|
|
3882
|
+
// value collected.
|
|
3883
|
+
let canonical;
|
|
3884
|
+
if (block.props.name) {
|
|
3885
|
+
canonical = document.createElement('input');
|
|
3886
|
+
canonical.type = 'hidden';
|
|
3887
|
+
canonical.name = block.props.name;
|
|
3888
|
+
input.removeAttribute('name');
|
|
3889
|
+
wrapper.appendChild(canonical);
|
|
3890
|
+
}
|
|
3891
|
+
attachFieldValidation({
|
|
3892
|
+
input,
|
|
3893
|
+
wrapper,
|
|
3894
|
+
root: ctx.popupRoot,
|
|
3895
|
+
check: phoneCheck(() => dial, dial ? undefined : 'Include your country code, e.g. +44', block.props.required),
|
|
3896
|
+
onValue: (value) => {
|
|
3897
|
+
if (canonical) {
|
|
3898
|
+
canonical.value = toE164(value, dial);
|
|
3899
|
+
}
|
|
3900
|
+
},
|
|
3901
|
+
});
|
|
3902
|
+
}
|
|
2773
3903
|
return wrapper;
|
|
2774
3904
|
};
|
|
2775
3905
|
|
|
@@ -2794,7 +3924,7 @@ const renderHeadingBlock = (block) => {
|
|
|
2794
3924
|
return wrapWithLink(el, (_a = block.props.textStyle) === null || _a === void 0 ? void 0 : _a.link);
|
|
2795
3925
|
};
|
|
2796
3926
|
|
|
2797
|
-
var css_248z = "/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-200: oklch(88.5% 0.062 18.334);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-red-800: oklch(44.4% 0.177 26.899);\n --color-red-900: oklch(39.6% 0.141 25.723);\n --color-red-950: oklch(25.8% 0.092 26.042);\n --color-orange-50: #f25c2b;\n --color-orange-100: #520c03;\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-300: oklch(83.7% 0.128 66.29);\n --color-orange-400: oklch(75% 0.183 55.934);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-orange-600: oklch(64.6% 0.222 41.116);\n --color-orange-700: oklch(55.3% 0.195 38.402);\n --color-orange-800: oklch(47% 0.157 37.304);\n --color-orange-950: oklch(26.6% 0.079 36.259);\n --color-amber-50: oklch(98.7% 0.022 95.277);\n --color-amber-100: oklch(96.2% 0.059 95.617);\n --color-amber-200: oklch(92.4% 0.12 95.746);\n --color-amber-300: oklch(87.9% 0.169 91.605);\n --color-amber-400: oklch(82.8% 0.189 84.429);\n --color-amber-500: oklch(76.9% 0.188 70.08);\n --color-amber-600: oklch(66.6% 0.179 58.318);\n --color-amber-700: oklch(55.5% 0.163 48.998);\n --color-amber-800: oklch(47.3% 0.137 46.201);\n --color-amber-900: oklch(41.4% 0.112 45.904);\n --color-amber-950: oklch(27.9% 0.077 45.635);\n --color-yellow-50: oklch(98.7% 0.026 102.212);\n --color-yellow-100: oklch(97.3% 0.071 103.193);\n --color-yellow-200: oklch(94.5% 0.129 101.54);\n --color-yellow-300: oklch(90.5% 0.182 98.111);\n --color-yellow-400: oklch(85.2% 0.199 91.936);\n --color-yellow-500: oklch(79.5% 0.184 86.047);\n --color-yellow-600: oklch(68.1% 0.162 75.834);\n --color-yellow-700: oklch(55.4% 0.135 66.442);\n --color-yellow-800: oklch(47.6% 0.114 61.907);\n --color-yellow-900: oklch(42.1% 0.095 57.708);\n --color-green-50: oklch(98.2% 0.018 155.826);\n --color-green-100: oklch(96.2% 0.044 156.743);\n --color-green-200: oklch(92.5% 0.084 155.995);\n --color-green-300: oklch(87.1% 0.15 154.449);\n --color-green-400: oklch(79.2% 0.209 151.711);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-green-600: oklch(62.7% 0.194 149.214);\n --color-green-700: oklch(52.7% 0.154 150.069);\n --color-green-800: oklch(44.8% 0.119 151.328);\n --color-green-900: oklch(39.3% 0.095 152.535);\n --color-green-950: oklch(26.6% 0.065 152.934);\n --color-emerald-50: oklch(97.9% 0.021 166.113);\n --color-emerald-200: oklch(90.5% 0.093 164.15);\n --color-emerald-300: oklch(84.5% 0.143 164.978);\n --color-emerald-500: oklch(69.6% 0.17 162.48);\n --color-emerald-600: oklch(59.6% 0.145 163.225);\n --color-emerald-700: oklch(50.8% 0.118 165.612);\n --color-emerald-900: oklch(37.8% 0.077 168.94);\n --color-emerald-950: oklch(26.2% 0.051 172.552);\n --color-teal-50: oklch(98.4% 0.014 180.72);\n --color-teal-100: oklch(95.3% 0.051 180.801);\n --color-teal-400: oklch(77.7% 0.152 181.912);\n --color-teal-500: oklch(70.4% 0.14 182.503);\n --color-teal-600: oklch(60% 0.118 184.704);\n --color-teal-700: oklch(51.1% 0.096 186.391);\n --color-teal-900: oklch(38.6% 0.063 188.416);\n --color-teal-950: oklch(27.7% 0.046 192.524);\n --color-cyan-500: oklch(71.5% 0.143 215.221);\n --color-cyan-950: oklch(30.2% 0.056 229.695);\n --color-sky-500: oklch(68.5% 0.169 237.323);\n --color-sky-600: oklch(58.8% 0.158 241.966);\n --color-sky-700: oklch(50% 0.134 242.749);\n --color-blue-50: #3b82f6;\n --color-blue-100: #172554;\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-300: oklch(80.9% 0.105 251.813);\n --color-blue-400: oklch(70.7% 0.165 254.624);\n --color-blue-500: oklch(62.3% 0.214 259.815);\n --color-blue-600: oklch(54.6% 0.245 262.881);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-blue-800: oklch(42.4% 0.199 265.638);\n --color-blue-900: oklch(37.9% 0.146 265.522);\n --color-blue-950: oklch(28.2% 0.091 267.935);\n --color-indigo-50: oklch(96.2% 0.018 272.314);\n --color-indigo-100: oklch(93% 0.034 272.788);\n --color-indigo-200: oklch(87% 0.065 274.039);\n --color-indigo-300: oklch(78.5% 0.115 274.713);\n --color-indigo-400: oklch(67.3% 0.182 276.935);\n --color-indigo-500: oklch(58.5% 0.233 277.117);\n --color-indigo-600: oklch(51.1% 0.262 276.966);\n --color-indigo-700: oklch(45.7% 0.24 277.023);\n --color-violet-50: oklch(96.9% 0.016 293.756);\n --color-violet-100: oklch(94.3% 0.029 294.588);\n --color-violet-200: oklch(89.4% 0.057 293.283);\n --color-violet-300: oklch(81.1% 0.111 293.571);\n --color-violet-500: oklch(60.6% 0.25 292.717);\n --color-violet-600: oklch(54.1% 0.281 293.009);\n --color-violet-700: oklch(49.1% 0.27 292.581);\n --color-violet-800: oklch(43.2% 0.232 292.759);\n --color-purple-50: oklch(97.7% 0.014 308.299);\n --color-purple-100: oklch(94.6% 0.033 307.174);\n --color-purple-200: oklch(90.2% 0.063 306.703);\n --color-purple-300: oklch(82.7% 0.119 306.383);\n --color-purple-400: oklch(71.4% 0.203 305.504);\n --color-purple-500: oklch(62.7% 0.265 303.9);\n --color-purple-600: oklch(55.8% 0.288 302.321);\n --color-purple-700: oklch(49.6% 0.265 301.924);\n --color-purple-800: oklch(43.8% 0.218 303.724);\n --color-purple-900: oklch(38.1% 0.176 304.987);\n --color-purple-950: oklch(29.1% 0.149 302.717);\n --color-fuchsia-500: oklch(66.7% 0.295 322.15);\n --color-pink-600: oklch(59.2% 0.249 0.584);\n --color-rose-50: oklch(96.9% 0.015 12.422);\n --color-rose-200: oklch(89.2% 0.058 10.001);\n --color-rose-500: oklch(64.5% 0.246 16.439);\n --color-rose-600: oklch(58.6% 0.253 17.585);\n --color-rose-700: oklch(51.4% 0.222 16.935);\n --color-slate-50: oklch(98.4% 0.003 247.858);\n --color-slate-100: oklch(96.8% 0.007 247.896);\n --color-slate-200: oklch(92.9% 0.013 255.508);\n --color-slate-300: oklch(86.9% 0.022 252.894);\n --color-slate-400: oklch(70.4% 0.04 256.788);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-slate-600: oklch(44.6% 0.043 257.281);\n --color-slate-700: oklch(37.2% 0.044 257.287);\n --color-slate-800: oklch(27.9% 0.041 260.031);\n --color-slate-900: oklch(20.8% 0.042 265.755);\n --color-slate-950: oklch(12.9% 0.042 264.695);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-300: oklch(87.2% 0.01 258.338);\n --color-gray-400: oklch(70.7% 0.022 261.325);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-gray-600: oklch(44.6% 0.03 256.802);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-gray-900: oklch(21% 0.034 264.665);\n --color-zinc-100: oklch(96.7% 0.001 286.375);\n --color-zinc-200: oklch(92% 0.004 286.32);\n --color-zinc-300: oklch(87.1% 0.006 286.286);\n --color-zinc-500: oklch(55.2% 0.016 285.938);\n --color-zinc-600: oklch(44.2% 0.017 285.786);\n --color-zinc-800: oklch(27.4% 0.006 286.033);\n --color-zinc-900: oklch(21% 0.006 285.885);\n --color-neutral-50: #8799af;\n --color-neutral-100: #172a41;\n --color-neutral-200: oklch(92.2% 0 0);\n --color-neutral-300: oklch(87% 0 0);\n --color-neutral-400: oklch(70.8% 0 0);\n --color-neutral-500: oklch(55.6% 0 0);\n --color-neutral-600: oklch(43.9% 0 0);\n --color-neutral-700: oklch(37.1% 0 0);\n --color-neutral-800: oklch(26.9% 0 0);\n --color-neutral-900: oklch(20.5% 0 0);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-xs: 20rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-xl: 36rem;\n --container-2xl: 42rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n --container-5xl: 64rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --text-7xl: 4.5rem;\n --text-7xl--line-height: 1;\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-extrabold: 800;\n --font-weight-black: 900;\n --tracking-tight: -0.025em;\n --tracking-normal: 0em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --radius-xs: 0.125rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --animate-bounce: bounce 1s infinite;\n --blur-sm: 8px;\n --blur-xl: 24px;\n --blur-2xl: 40px;\n --blur-3xl: 64px;\n --aspect-video: 16 / 9;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-primary: #18181b;\n --color-primary-foreground: #fafafa;\n --color-secondary: #f4f4f5;\n --color-secondary-foreground: #18181b;\n --color-destructive: #dc2626;\n --color-destructive-foreground: #fef2f2;\n --color-background: #ffffff;\n --color-input: #e4e4e7;\n --color-accent: #f4f4f5;\n --color-accent-foreground: #18181b;\n --color-card: #ffffff;\n --color-card-foreground: #09090b;\n --color-border: #e4e4e7;\n --color-sidebar-ring: #a1a1aa;\n --color-muted: #f7f7f6;\n --color-muted-foreground: #74716e;\n --color-orange-10: #fff3e6;\n --color-orange-20: #ffdfbf;\n --color-orange-30: #ffb47f;\n --color-orange-40: #ff8446;\n --color-orange-60: #cd4b27;\n --color-orange-70: #b03719;\n --color-orange-80: #892c0f;\n --color-orange-90: #61170d;\n --color-neutral-10: #f1f4f8;\n --color-neutral-20: #dbe2eb;\n --color-neutral-30: #bfccda;\n --color-neutral-40: #a3b2c6;\n --color-neutral-60: #677c95;\n --color-neutral-70: #4e647f;\n --color-neutral-80: #394d66;\n --color-neutral-90: #293b51;\n --color-blue-10: #dbeafe;\n --color-blue-20: #bfdbfe;\n --color-blue-30: #93c5fd;\n --color-blue-40: #60a5fa;\n --color-blue-60: #2563eb;\n --color-blue-70: #1d4ed8;\n --color-blue-80: #1e40af;\n --color-blue-90: #1e3a8a;\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .\\@container\\/card-header {\n container-type: inline-size;\n container-name: card-header;\n }\n .\\@container\\/strip {\n container-type: inline-size;\n container-name: strip;\n }\n .\\@container {\n container-type: inline-size;\n }\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .collapse {\n visibility: collapse;\n }\n .invisible {\n visibility: hidden;\n }\n .visible {\n visibility: visible;\n }\n .visible\\! {\n visibility: visible !important;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .sticky {\n position: sticky;\n }\n .-inset-6 {\n inset: calc(var(--spacing) * -6);\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .inset-x-0 {\n inset-inline: calc(var(--spacing) * 0);\n }\n .inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n .\\!top-0 {\n top: calc(var(--spacing) * 0) !important;\n }\n .-top-0\\.5 {\n top: calc(var(--spacing) * -0.5);\n }\n .-top-1\\.5 {\n top: calc(var(--spacing) * -1.5);\n }\n .-top-2 {\n top: calc(var(--spacing) * -2);\n }\n .-top-2\\.5 {\n top: calc(var(--spacing) * -2.5);\n }\n .-top-4 {\n top: calc(var(--spacing) * -4);\n }\n .-top-5 {\n top: calc(var(--spacing) * -5);\n }\n .-top-\\[3px\\] {\n top: calc(3px * -1);\n }\n .-top-\\[7px\\] {\n top: calc(7px * -1);\n }\n .-top-\\[100px\\] {\n top: calc(100px * -1);\n }\n .-top-\\[200px\\] {\n top: calc(200px * -1);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1 {\n top: calc(var(--spacing) * 1);\n }\n .top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-3 {\n top: calc(var(--spacing) * 3);\n }\n .top-3\\.5 {\n top: calc(var(--spacing) * 3.5);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-5 {\n top: calc(var(--spacing) * 5);\n }\n .top-6 {\n top: calc(var(--spacing) * 6);\n }\n .top-8 {\n top: calc(var(--spacing) * 8);\n }\n .top-9 {\n top: calc(var(--spacing) * 9);\n }\n .top-10 {\n top: calc(var(--spacing) * 10);\n }\n .top-20 {\n top: calc(var(--spacing) * 20);\n }\n .top-24 {\n top: calc(var(--spacing) * 24);\n }\n .top-50 {\n top: calc(var(--spacing) * 50);\n }\n .top-200 {\n top: calc(var(--spacing) * 200);\n }\n .top-\\[-2px\\] {\n top: -2px;\n }\n .top-\\[2px\\] {\n top: 2px;\n }\n .top-\\[5px\\] {\n top: 5px;\n }\n .top-\\[6px\\] {\n top: 6px;\n }\n .top-\\[7px\\] {\n top: 7px;\n }\n .top-\\[10px\\] {\n top: 10px;\n }\n .top-\\[15px\\] {\n top: 15px;\n }\n .top-\\[16px\\] {\n top: 16px;\n }\n .top-\\[50\\%\\] {\n top: 50%;\n }\n .top-\\[50px\\] {\n top: 50px;\n }\n .top-\\[96px\\] {\n top: 96px;\n }\n .top-\\[176px\\] {\n top: 176px;\n }\n .top-\\[340px\\] {\n top: 340px;\n }\n .top-full {\n top: 100%;\n }\n .-right-0\\.5 {\n right: calc(var(--spacing) * -0.5);\n }\n .-right-4 {\n right: calc(var(--spacing) * -4);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-1 {\n right: calc(var(--spacing) * 1);\n }\n .right-1\\.5 {\n right: calc(var(--spacing) * 1.5);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-2\\.5 {\n right: calc(var(--spacing) * 2.5);\n }\n .right-3 {\n right: calc(var(--spacing) * 3);\n }\n .right-3\\.5 {\n right: calc(var(--spacing) * 3.5);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .right-5 {\n right: calc(var(--spacing) * 5);\n }\n .right-6 {\n right: calc(var(--spacing) * 6);\n }\n .right-12 {\n right: calc(var(--spacing) * 12);\n }\n .right-16 {\n right: calc(var(--spacing) * 16);\n }\n .right-30 {\n right: calc(var(--spacing) * 30);\n }\n .right-\\[-100px\\] {\n right: -100px;\n }\n .right-\\[-390px\\] {\n right: -390px;\n }\n .right-\\[8px\\] {\n right: 8px;\n }\n .right-\\[10px\\] {\n right: 10px;\n }\n .right-\\[12px\\] {\n right: 12px;\n }\n .right-\\[14px\\] {\n right: 14px;\n }\n .right-\\[40px\\] {\n right: 40px;\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-2 {\n bottom: calc(var(--spacing) * 2);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .bottom-\\[-2px\\] {\n bottom: -2px;\n }\n .bottom-\\[-32px\\] {\n bottom: -32px;\n }\n .bottom-\\[5px\\] {\n bottom: 5px;\n }\n .bottom-\\[7px\\] {\n bottom: 7px;\n }\n .bottom-\\[10px\\] {\n bottom: 10px;\n }\n .bottom-\\[12px\\] {\n bottom: 12px;\n }\n .bottom-full {\n bottom: 100%;\n }\n .\\!left-0 {\n left: calc(var(--spacing) * 0) !important;\n }\n .-left-\\[7px\\] {\n left: calc(7px * -1);\n }\n .-left-\\[9px\\] {\n left: calc(9px * -1);\n }\n .-left-\\[26px\\] {\n left: calc(26px * -1);\n }\n .-left-\\[200px\\] {\n left: calc(200px * -1);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-1 {\n left: calc(var(--spacing) * 1);\n }\n .left-1\\.5 {\n left: calc(var(--spacing) * 1.5);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-2 {\n left: calc(var(--spacing) * 2);\n }\n .left-2\\.5 {\n left: calc(var(--spacing) * 2.5);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .left-\\[2px\\] {\n left: 2px;\n }\n .left-\\[4\\.5px\\] {\n left: 4.5px;\n }\n .left-\\[9px\\] {\n left: 9px;\n }\n .left-\\[11px\\] {\n left: 11px;\n }\n .left-\\[12px\\] {\n left: 12px;\n }\n .left-\\[14px\\] {\n left: 14px;\n }\n .left-\\[18px\\] {\n left: 18px;\n }\n .left-\\[30\\%\\] {\n left: 30%;\n }\n .left-\\[50\\%\\] {\n left: 50%;\n }\n .left-\\[80px\\] {\n left: 80px;\n }\n .left-\\[680px\\] {\n left: 680px;\n }\n .left-full {\n left: 100%;\n }\n .isolate {\n isolation: isolate;\n }\n .z-0 {\n z-index: 0;\n }\n .z-1 {\n z-index: 1;\n }\n .z-5 {\n z-index: 5;\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-30 {\n z-index: 30;\n }\n .z-40 {\n z-index: 40;\n }\n .z-50 {\n z-index: 50;\n }\n .z-55 {\n z-index: 55;\n }\n .z-\\[1\\] {\n z-index: 1;\n }\n .z-\\[3\\] {\n z-index: 3;\n }\n .z-\\[5\\] {\n z-index: 5;\n }\n .z-\\[50\\] {\n z-index: 50;\n }\n .z-\\[55\\] {\n z-index: 55;\n }\n .z-\\[60\\] {\n z-index: 60;\n }\n .z-\\[70\\] {\n z-index: 70;\n }\n .z-\\[200\\] {\n z-index: 200;\n }\n .z-\\[1000\\] {\n z-index: 1000;\n }\n .z-\\[9200\\] {\n z-index: 9200;\n }\n .z-\\[9999\\] {\n z-index: 9999;\n }\n .order-1 {\n order: 1;\n }\n .order-2 {\n order: 2;\n }\n .order-9 {\n order: 9;\n }\n .order-10 {\n order: 10;\n }\n .order-42 {\n order: 42;\n }\n .order-77 {\n order: 77;\n }\n .order-123 {\n order: 123;\n }\n .order-456 {\n order: 456;\n }\n .order-9749 {\n order: 9749;\n }\n .order-12345 {\n order: 12345;\n }\n .col-span-1 {\n grid-column: span 1 / span 1;\n }\n .col-span-2 {\n grid-column: span 2 / span 2;\n }\n .col-span-6 {\n grid-column: span 6 / span 6;\n }\n .col-span-full {\n grid-column: 1 / -1;\n }\n .col-start-1 {\n grid-column-start: 1;\n }\n .col-start-2 {\n grid-column-start: 2;\n }\n .col-end-1 {\n grid-column-end: 1;\n }\n .col-end-2 {\n grid-column-end: 2;\n }\n .row-auto {\n grid-row: auto;\n }\n .row-span-2 {\n grid-row: span 2 / span 2;\n }\n .row-span-full {\n grid-row: 1 / -1;\n }\n .row-start-1 {\n grid-row-start: 1;\n }\n .float-left {\n float: left;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .-m-2\\.5 {\n margin: calc(var(--spacing) * -2.5);\n }\n .m-0 {\n margin: calc(var(--spacing) * 0);\n }\n .m-1 {\n margin: calc(var(--spacing) * 1);\n }\n .m-2 {\n margin: calc(var(--spacing) * 2);\n }\n .m-4 {\n margin: calc(var(--spacing) * 4);\n }\n .m-8 {\n margin: calc(var(--spacing) * 8);\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n .-mx-1\\.5 {\n margin-inline: calc(var(--spacing) * -1.5);\n }\n .-mx-2 {\n margin-inline: calc(var(--spacing) * -2);\n }\n .-mx-4 {\n margin-inline: calc(var(--spacing) * -4);\n }\n .-mx-6 {\n margin-inline: calc(var(--spacing) * -6);\n }\n .-mx-\\[2px\\] {\n margin-inline: calc(2px * -1);\n }\n .-mx-\\[16px\\] {\n margin-inline: calc(16px * -1);\n }\n .-mx-\\[17px\\] {\n margin-inline: calc(17px * -1);\n }\n .mx-0 {\n margin-inline: calc(var(--spacing) * 0);\n }\n .mx-0\\.5 {\n margin-inline: calc(var(--spacing) * 0.5);\n }\n .mx-1 {\n margin-inline: calc(var(--spacing) * 1);\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-3 {\n margin-inline: calc(var(--spacing) * 3);\n }\n .mx-3\\.5 {\n margin-inline: calc(var(--spacing) * 3.5);\n }\n .mx-4 {\n margin-inline: calc(var(--spacing) * 4);\n }\n .mx-5 {\n margin-inline: calc(var(--spacing) * 5);\n }\n .mx-\\[2px\\] {\n margin-inline: 2px;\n }\n .mx-\\[6px\\] {\n margin-inline: 6px;\n }\n .mx-\\[20px\\] {\n margin-inline: 20px;\n }\n .mx-\\[22px\\] {\n margin-inline: 22px;\n }\n .mx-auto {\n margin-inline: auto;\n }\n .-my-1\\.5 {\n margin-block: calc(var(--spacing) * -1.5);\n }\n .-my-2 {\n margin-block: calc(var(--spacing) * -2);\n }\n .-my-3 {\n margin-block: calc(var(--spacing) * -3);\n }\n .-my-5 {\n margin-block: calc(var(--spacing) * -5);\n }\n .my-0 {\n margin-block: calc(var(--spacing) * 0);\n }\n .my-0\\.5 {\n margin-block: calc(var(--spacing) * 0.5);\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .my-2 {\n margin-block: calc(var(--spacing) * 2);\n }\n .my-3 {\n margin-block: calc(var(--spacing) * 3);\n }\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n .my-5 {\n margin-block: calc(var(--spacing) * 5);\n }\n .my-6 {\n margin-block: calc(var(--spacing) * 6);\n }\n .my-10 {\n margin-block: calc(var(--spacing) * 10);\n }\n .my-\\[1px\\] {\n margin-block: 1px;\n }\n .my-\\[10px\\] {\n margin-block: 10px;\n }\n .-mt-0\\.5 {\n margin-top: calc(var(--spacing) * -0.5);\n }\n .-mt-1 {\n margin-top: calc(var(--spacing) * -1);\n }\n .-mt-2 {\n margin-top: calc(var(--spacing) * -2);\n }\n .-mt-4 {\n margin-top: calc(var(--spacing) * -4);\n }\n .-mt-6 {\n margin-top: calc(var(--spacing) * -6);\n }\n .-mt-\\[6px\\] {\n margin-top: calc(6px * -1);\n }\n .mt-0 {\n margin-top: calc(var(--spacing) * 0);\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-2\\.5 {\n margin-top: calc(var(--spacing) * 2.5);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mt-3\\.5 {\n margin-top: calc(var(--spacing) * 3.5);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-5 {\n margin-top: calc(var(--spacing) * 5);\n }\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n .mt-7 {\n margin-top: calc(var(--spacing) * 7);\n }\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n .mt-9 {\n margin-top: calc(var(--spacing) * 9);\n }\n .mt-10 {\n margin-top: calc(var(--spacing) * 10);\n }\n .mt-11 {\n margin-top: calc(var(--spacing) * 11);\n }\n .mt-12 {\n margin-top: calc(var(--spacing) * 12);\n }\n .mt-14 {\n margin-top: calc(var(--spacing) * 14);\n }\n .mt-\\[-2px\\] {\n margin-top: -2px;\n }\n .mt-\\[1px\\] {\n margin-top: 1px;\n }\n .mt-\\[2px\\] {\n margin-top: 2px;\n }\n .mt-\\[3px\\] {\n margin-top: 3px;\n }\n .mt-\\[4px\\] {\n margin-top: 4px;\n }\n .mt-\\[5px\\] {\n margin-top: 5px;\n }\n .mt-\\[6px\\] {\n margin-top: 6px;\n }\n .mt-\\[7px\\] {\n margin-top: 7px;\n }\n .mt-\\[8px\\] {\n margin-top: 8px;\n }\n .mt-\\[10px\\] {\n margin-top: 10px;\n }\n .mt-\\[11px\\] {\n margin-top: 11px;\n }\n .mt-\\[12px\\] {\n margin-top: 12px;\n }\n .mt-\\[14px\\] {\n margin-top: 14px;\n }\n .mt-\\[16px\\] {\n margin-top: 16px;\n }\n .mt-\\[18px\\] {\n margin-top: 18px;\n }\n .mt-\\[20px\\] {\n margin-top: 20px;\n }\n .mt-\\[22px\\] {\n margin-top: 22px;\n }\n .mt-auto {\n margin-top: auto;\n }\n .mt-px {\n margin-top: 1px;\n }\n .-mr-4 {\n margin-right: calc(var(--spacing) * -4);\n }\n .-mr-px {\n margin-right: -1px;\n }\n .mr-0 {\n margin-right: calc(var(--spacing) * 0);\n }\n .mr-0\\.5 {\n margin-right: calc(var(--spacing) * 0.5);\n }\n .mr-1 {\n margin-right: calc(var(--spacing) * 1);\n }\n .mr-1\\.5 {\n margin-right: calc(var(--spacing) * 1.5);\n }\n .mr-2 {\n margin-right: calc(var(--spacing) * 2);\n }\n .mr-2\\.5 {\n margin-right: calc(var(--spacing) * 2.5);\n }\n .mr-3 {\n margin-right: calc(var(--spacing) * 3);\n }\n .mr-4 {\n margin-right: calc(var(--spacing) * 4);\n }\n .mr-16 {\n margin-right: calc(var(--spacing) * 16);\n }\n .mr-\\[4px\\] {\n margin-right: 4px;\n }\n .mr-\\[6px\\] {\n margin-right: 6px;\n }\n .mr-\\[7px\\] {\n margin-right: 7px;\n }\n .mr-\\[24px\\] {\n margin-right: 24px;\n }\n .mr-auto {\n margin-right: auto;\n }\n .-mb-\\[1\\.5px\\] {\n margin-bottom: calc(1.5px * -1);\n }\n .-mb-\\[16px\\] {\n margin-bottom: calc(16px * -1);\n }\n .-mb-px {\n margin-bottom: -1px;\n }\n .mb-0 {\n margin-bottom: calc(var(--spacing) * 0);\n }\n .mb-0\\.5 {\n margin-bottom: calc(var(--spacing) * 0.5);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-2\\.5 {\n margin-bottom: calc(var(--spacing) * 2.5);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-3\\.5 {\n margin-bottom: calc(var(--spacing) * 3.5);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-5 {\n margin-bottom: calc(var(--spacing) * 5);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .mb-7 {\n margin-bottom: calc(var(--spacing) * 7);\n }\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n .mb-10 {\n margin-bottom: calc(var(--spacing) * 10);\n }\n .mb-\\[1px\\] {\n margin-bottom: 1px;\n }\n .mb-\\[2px\\] {\n margin-bottom: 2px;\n }\n .mb-\\[3px\\] {\n margin-bottom: 3px;\n }\n .mb-\\[4px\\] {\n margin-bottom: 4px;\n }\n .mb-\\[5px\\] {\n margin-bottom: 5px;\n }\n .mb-\\[6px\\] {\n margin-bottom: 6px;\n }\n .mb-\\[7px\\] {\n margin-bottom: 7px;\n }\n .mb-\\[8px\\] {\n margin-bottom: 8px;\n }\n .mb-\\[9px\\] {\n margin-bottom: 9px;\n }\n .mb-\\[10px\\] {\n margin-bottom: 10px;\n }\n .mb-\\[11px\\] {\n margin-bottom: 11px;\n }\n .mb-\\[12px\\] {\n margin-bottom: 12px;\n }\n .mb-\\[14px\\] {\n margin-bottom: 14px;\n }\n .mb-\\[16px\\] {\n margin-bottom: 16px;\n }\n .mb-\\[18px\\] {\n margin-bottom: 18px;\n }\n .mb-\\[20px\\] {\n margin-bottom: 20px;\n }\n .mb-\\[24px\\] {\n margin-bottom: 24px;\n }\n .mb-\\[32px\\] {\n margin-bottom: 32px;\n }\n .-ml-0\\.5 {\n margin-left: calc(var(--spacing) * -0.5);\n }\n .-ml-1 {\n margin-left: calc(var(--spacing) * -1);\n }\n .-ml-2 {\n margin-left: calc(var(--spacing) * -2);\n }\n .-ml-\\[3px\\] {\n margin-left: calc(3px * -1);\n }\n .ml-0 {\n margin-left: calc(var(--spacing) * 0);\n }\n .ml-0\\.5 {\n margin-left: calc(var(--spacing) * 0.5);\n }\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n .ml-1\\.5 {\n margin-left: calc(var(--spacing) * 1.5);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .ml-3 {\n margin-left: calc(var(--spacing) * 3);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .ml-5 {\n margin-left: calc(var(--spacing) * 5);\n }\n .ml-6 {\n margin-left: calc(var(--spacing) * 6);\n }\n .ml-7 {\n margin-left: calc(var(--spacing) * 7);\n }\n .ml-10 {\n margin-left: calc(var(--spacing) * 10);\n }\n .ml-28 {\n margin-left: calc(var(--spacing) * 28);\n }\n .ml-43 {\n margin-left: calc(var(--spacing) * 43);\n }\n .ml-\\[2px\\] {\n margin-left: 2px;\n }\n .ml-\\[4px\\] {\n margin-left: 4px;\n }\n .ml-\\[5px\\] {\n margin-left: 5px;\n }\n .ml-\\[6px\\] {\n margin-left: 6px;\n }\n .ml-\\[7px\\] {\n margin-left: 7px;\n }\n .ml-\\[8px\\] {\n margin-left: 8px;\n }\n .ml-\\[18px\\] {\n margin-left: 18px;\n }\n .ml-\\[28px\\] {\n margin-left: 28px;\n }\n .ml-\\[40px\\] {\n margin-left: 40px;\n }\n .ml-auto {\n margin-left: auto;\n }\n .box-border {\n box-sizing: border-box;\n }\n .line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n .line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n .line-clamp-3 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .contents\\! {\n display: contents !important;\n }\n .flex {\n display: flex;\n }\n .flow-root {\n display: flow-root;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline {\n display: inline;\n }\n .inline-block {\n display: inline-block;\n }\n .inline-flex {\n display: inline-flex;\n }\n .list-item {\n display: list-item;\n }\n .table {\n display: table;\n }\n .table-caption {\n display: table-caption;\n }\n .table-cell {\n display: table-cell;\n }\n .table-row {\n display: table-row;\n }\n .field-sizing-content {\n field-sizing: content;\n }\n .aspect-\\[4\\/5\\] {\n aspect-ratio: 4/5;\n }\n .aspect-\\[5\\/2\\] {\n aspect-ratio: 5/2;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .aspect-video {\n aspect-ratio: var(--aspect-video);\n }\n .size-1\\.5 {\n width: calc(var(--spacing) * 1.5);\n height: calc(var(--spacing) * 1.5);\n }\n .size-2 {\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n }\n .size-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n height: calc(var(--spacing) * 2.5);\n }\n .size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n .size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n .size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n .size-5 {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n .size-6 {\n width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6);\n }\n .size-7 {\n width: calc(var(--spacing) * 7);\n height: calc(var(--spacing) * 7);\n }\n .size-8 {\n width: calc(var(--spacing) * 8);\n height: calc(var(--spacing) * 8);\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .size-10 {\n width: calc(var(--spacing) * 10);\n height: calc(var(--spacing) * 10);\n }\n .size-12 {\n width: calc(var(--spacing) * 12);\n height: calc(var(--spacing) * 12);\n }\n .size-14 {\n width: calc(var(--spacing) * 14);\n height: calc(var(--spacing) * 14);\n }\n .size-\\[6px\\] {\n width: 6px;\n height: 6px;\n }\n .size-\\[7px\\] {\n width: 7px;\n height: 7px;\n }\n .size-\\[8px\\] {\n width: 8px;\n height: 8px;\n }\n .size-\\[9px\\] {\n width: 9px;\n height: 9px;\n }\n .size-\\[10px\\] {\n width: 10px;\n height: 10px;\n }\n .size-\\[11px\\] {\n width: 11px;\n height: 11px;\n }\n .size-\\[12px\\] {\n width: 12px;\n height: 12px;\n }\n .size-\\[13px\\] {\n width: 13px;\n height: 13px;\n }\n .size-\\[14px\\] {\n width: 14px;\n height: 14px;\n }\n .size-\\[15px\\] {\n width: 15px;\n height: 15px;\n }\n .size-\\[18px\\] {\n width: 18px;\n height: 18px;\n }\n .size-\\[20px\\] {\n width: 20px;\n height: 20px;\n }\n .size-\\[22px\\] {\n width: 22px;\n height: 22px;\n }\n .size-\\[30px\\] {\n width: 30px;\n height: 30px;\n }\n .size-\\[40px\\] {\n width: 40px;\n height: 40px;\n }\n .size-\\[44px\\] {\n width: 44px;\n height: 44px;\n }\n .size-\\[60px\\] {\n width: 60px;\n height: 60px;\n }\n .size-full {\n width: 100%;\n height: 100%;\n }\n .\\!h-screen {\n height: 100vh !important;\n }\n .h-0 {\n height: calc(var(--spacing) * 0);\n }\n .h-0\\.5 {\n height: calc(var(--spacing) * 0.5);\n }\n .h-1 {\n height: calc(var(--spacing) * 1);\n }\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-2\\.5 {\n height: calc(var(--spacing) * 2.5);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-4\\.5 {\n height: calc(var(--spacing) * 4.5);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-7 {\n height: calc(var(--spacing) * 7);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-11 {\n height: calc(var(--spacing) * 11);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n .h-24 {\n height: calc(var(--spacing) * 24);\n }\n .h-28 {\n height: calc(var(--spacing) * 28);\n }\n .h-32 {\n height: calc(var(--spacing) * 32);\n }\n .h-40 {\n height: calc(var(--spacing) * 40);\n }\n .h-44 {\n height: calc(var(--spacing) * 44);\n }\n .h-48 {\n height: calc(var(--spacing) * 48);\n }\n .h-64 {\n height: calc(var(--spacing) * 64);\n }\n .h-72 {\n height: calc(var(--spacing) * 72);\n }\n .h-80 {\n height: calc(var(--spacing) * 80);\n }\n .h-96 {\n height: calc(var(--spacing) * 96);\n }\n .h-\\[2\\.5px\\] {\n height: 2.5px;\n }\n .h-\\[2px\\] {\n height: 2px;\n }\n .h-\\[3px\\] {\n height: 3px;\n }\n .h-\\[4px\\] {\n height: 4px;\n }\n .h-\\[5px\\] {\n height: 5px;\n }\n .h-\\[6px\\] {\n height: 6px;\n }\n .h-\\[7px\\] {\n height: 7px;\n }\n .h-\\[8px\\] {\n height: 8px;\n }\n .h-\\[9px\\] {\n height: 9px;\n }\n .h-\\[10px\\] {\n height: 10px;\n }\n .h-\\[11px\\] {\n height: 11px;\n }\n .h-\\[12px\\] {\n height: 12px;\n }\n .h-\\[13px\\] {\n height: 13px;\n }\n .h-\\[14px\\] {\n height: 14px;\n }\n .h-\\[15\\.33px\\] {\n height: 15.33px;\n }\n .h-\\[15px\\] {\n height: 15px;\n }\n .h-\\[16px\\] {\n height: 16px;\n }\n .h-\\[17px\\] {\n height: 17px;\n }\n .h-\\[18px\\] {\n height: 18px;\n }\n .h-\\[20px\\] {\n height: 20px;\n }\n .h-\\[22px\\] {\n height: 22px;\n }\n .h-\\[24px\\] {\n height: 24px;\n }\n .h-\\[25px\\] {\n height: 25px;\n }\n .h-\\[26px\\] {\n height: 26px;\n }\n .h-\\[28px\\] {\n height: 28px;\n }\n .h-\\[29px\\] {\n height: 29px;\n }\n .h-\\[30px\\] {\n height: 30px;\n }\n .h-\\[32px\\] {\n height: 32px;\n }\n .h-\\[34px\\] {\n height: 34px;\n }\n .h-\\[35px\\] {\n height: 35px;\n }\n .h-\\[36px\\] {\n height: 36px;\n }\n .h-\\[38px\\] {\n height: 38px;\n }\n .h-\\[40px\\] {\n height: 40px;\n }\n .h-\\[41px\\] {\n height: 41px;\n }\n .h-\\[42px\\] {\n height: 42px;\n }\n .h-\\[48px\\] {\n height: 48px;\n }\n .h-\\[50px\\] {\n height: 50px;\n }\n .h-\\[52px\\] {\n height: 52px;\n }\n .h-\\[53px\\] {\n height: 53px;\n }\n .h-\\[54px\\] {\n height: 54px;\n }\n .h-\\[60px\\] {\n height: 60px;\n }\n .h-\\[60vh\\] {\n height: 60vh;\n }\n .h-\\[64px\\] {\n height: 64px;\n }\n .h-\\[68px\\] {\n height: 68px;\n }\n .h-\\[70px\\] {\n height: 70px;\n }\n .h-\\[70vh\\] {\n height: 70vh;\n }\n .h-\\[74px\\] {\n height: 74px;\n }\n .h-\\[85vh\\] {\n height: 85vh;\n }\n .h-\\[90px\\] {\n height: 90px;\n }\n .h-\\[92vh\\] {\n height: 92vh;\n }\n .h-\\[100vh\\] {\n height: 100vh;\n }\n .h-\\[108px\\] {\n height: 108px;\n }\n .h-\\[110px\\] {\n height: 110px;\n }\n .h-\\[150px\\] {\n height: 150px;\n }\n .h-\\[162px\\] {\n height: 162px;\n }\n .h-\\[180px\\] {\n height: 180px;\n }\n .h-\\[190px\\] {\n height: 190px;\n }\n .h-\\[200px\\] {\n height: 200px;\n }\n .h-\\[225px\\] {\n height: 225px;\n }\n .h-\\[250px\\] {\n height: 250px;\n }\n .h-\\[260px\\] {\n height: 260px;\n }\n .h-\\[262px\\] {\n height: 262px;\n }\n .h-\\[280px\\] {\n height: 280px;\n }\n .h-\\[300px\\] {\n height: 300px;\n }\n .h-\\[320px\\] {\n height: 320px;\n }\n .h-\\[340px\\] {\n height: 340px;\n }\n .h-\\[390px\\] {\n height: 390px;\n }\n .h-\\[400px\\] {\n height: 400px;\n }\n .h-\\[500px\\] {\n height: 500px;\n }\n .h-\\[600px\\] {\n height: 600px;\n }\n .h-\\[640px\\] {\n height: 640px;\n }\n .h-\\[720px\\] {\n height: 720px;\n }\n .h-\\[800px\\] {\n height: 800px;\n }\n .h-\\[calc-size\\(max-content\\,size\\)\\] {\n height: calc-size(max-content,size);\n }\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n .h-auto {\n height: auto;\n }\n .h-fit {\n height: fit-content;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .h-screen {\n height: 100vh;\n }\n .h-svh {\n height: 100svh;\n }\n .max-h-0 {\n max-height: calc(var(--spacing) * 0);\n }\n .max-h-4 {\n max-height: calc(var(--spacing) * 4);\n }\n .max-h-40 {\n max-height: calc(var(--spacing) * 40);\n }\n .max-h-48 {\n max-height: calc(var(--spacing) * 48);\n }\n .max-h-56 {\n max-height: calc(var(--spacing) * 56);\n }\n .max-h-60 {\n max-height: calc(var(--spacing) * 60);\n }\n .max-h-64 {\n max-height: calc(var(--spacing) * 64);\n }\n .max-h-72 {\n max-height: calc(var(--spacing) * 72);\n }\n .max-h-80 {\n max-height: calc(var(--spacing) * 80);\n }\n .max-h-96 {\n max-height: calc(var(--spacing) * 96);\n }\n .max-h-\\[--radix-select-content-available-height\\] {\n max-height: --radix-select-content-available-height;\n }\n .max-h-\\[20\\.5rem\\] {\n max-height: 20.5rem;\n }\n .max-h-\\[28px\\] {\n max-height: 28px;\n }\n .max-h-\\[40em\\] {\n max-height: 40em;\n }\n .max-h-\\[40vh\\] {\n max-height: 40vh;\n }\n .max-h-\\[45vh\\] {\n max-height: 45vh;\n }\n .max-h-\\[56vh\\] {\n max-height: 56vh;\n }\n .max-h-\\[60vh\\] {\n max-height: 60vh;\n }\n .max-h-\\[75vh\\] {\n max-height: 75vh;\n }\n .max-h-\\[80vh\\] {\n max-height: 80vh;\n }\n .max-h-\\[85vh\\] {\n max-height: 85vh;\n }\n .max-h-\\[86vh\\] {\n max-height: 86vh;\n }\n .max-h-\\[90vh\\] {\n max-height: 90vh;\n }\n .max-h-\\[92vh\\] {\n max-height: 92vh;\n }\n .max-h-\\[95vh\\] {\n max-height: 95vh;\n }\n .max-h-\\[180px\\] {\n max-height: 180px;\n }\n .max-h-\\[190px\\] {\n max-height: 190px;\n }\n .max-h-\\[200px\\] {\n max-height: 200px;\n }\n .max-h-\\[206px\\] {\n max-height: 206px;\n }\n .max-h-\\[248px\\] {\n max-height: 248px;\n }\n .max-h-\\[260px\\] {\n max-height: 260px;\n }\n .max-h-\\[280px\\] {\n max-height: 280px;\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .max-h-\\[420px\\] {\n max-height: 420px;\n }\n .max-h-\\[460px\\] {\n max-height: 460px;\n }\n .max-h-\\[611px\\] {\n max-height: 611px;\n }\n .max-h-\\[612px\\] {\n max-height: 612px;\n }\n .max-h-\\[700px\\] {\n max-height: 700px;\n }\n .max-h-\\[calc\\(100vh-320px\\)\\] {\n max-height: calc(100vh - 320px);\n }\n .max-h-\\[var\\(--radix-dropdown-menu-content-available-height\\)\\] {\n max-height: var(--radix-dropdown-menu-content-available-height);\n }\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n .min-h-6 {\n min-height: calc(var(--spacing) * 6);\n }\n .min-h-8 {\n min-height: calc(var(--spacing) * 8);\n }\n .min-h-9 {\n min-height: calc(var(--spacing) * 9);\n }\n .min-h-10 {\n min-height: calc(var(--spacing) * 10);\n }\n .min-h-16 {\n min-height: calc(var(--spacing) * 16);\n }\n .min-h-48 {\n min-height: calc(var(--spacing) * 48);\n }\n .min-h-\\[1rem\\] {\n min-height: 1rem;\n }\n .min-h-\\[2\\.25rem\\] {\n min-height: 2.25rem;\n }\n .min-h-\\[7rem\\] {\n min-height: 7rem;\n }\n .min-h-\\[24px\\] {\n min-height: 24px;\n }\n .min-h-\\[28px\\] {\n min-height: 28px;\n }\n .min-h-\\[32px\\] {\n min-height: 32px;\n }\n .min-h-\\[48px\\] {\n min-height: 48px;\n }\n .min-h-\\[50vh\\] {\n min-height: 50vh;\n }\n .min-h-\\[60px\\] {\n min-height: 60px;\n }\n .min-h-\\[60vh\\] {\n min-height: 60vh;\n }\n .min-h-\\[120px\\] {\n min-height: 120px;\n }\n .min-h-\\[180px\\] {\n min-height: 180px;\n }\n .min-h-\\[190px\\] {\n min-height: 190px;\n }\n .min-h-\\[220px\\] {\n min-height: 220px;\n }\n .min-h-\\[300px\\] {\n min-height: 300px;\n }\n .min-h-\\[360px\\] {\n min-height: 360px;\n }\n .min-h-\\[400px\\] {\n min-height: 400px;\n }\n .min-h-\\[420px\\] {\n min-height: 420px;\n }\n .min-h-\\[600px\\] {\n min-height: 600px;\n }\n .min-h-\\[calc\\(100svh-20px\\)\\] {\n min-height: calc(100svh - 20px);\n }\n .min-h-\\[calc\\(100vh-56px\\)\\] {\n min-height: calc(100vh - 56px);\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .min-h-svh {\n min-height: 100svh;\n }\n .\\!w-screen {\n width: 100vw !important;\n }\n .w-\\(--radix-dropdown-menu-trigger-width\\) {\n width: var(--radix-dropdown-menu-trigger-width);\n }\n .w-\\(--sidebar-width\\) {\n width: var(--sidebar-width);\n }\n .w-1 {\n width: calc(var(--spacing) * 1);\n }\n .w-1\\.5 {\n width: calc(var(--spacing) * 1.5);\n }\n .w-1\\/2 {\n width: calc(1/2 * 100%);\n }\n .w-1\\/4 {\n width: calc(1/4 * 100%);\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n }\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n .w-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n }\n .w-3\\/4 {\n width: calc(3/4 * 100%);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-4\\.5 {\n width: calc(var(--spacing) * 4.5);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-7 {\n width: calc(var(--spacing) * 7);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-9 {\n width: calc(var(--spacing) * 9);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-11 {\n width: calc(var(--spacing) * 11);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-13 {\n width: calc(var(--spacing) * 13);\n }\n .w-14 {\n width: calc(var(--spacing) * 14);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-28 {\n width: calc(var(--spacing) * 28);\n }\n .w-30 {\n width: calc(var(--spacing) * 30);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-36 {\n width: calc(var(--spacing) * 36);\n }\n .w-40 {\n width: calc(var(--spacing) * 40);\n }\n .w-44 {\n width: calc(var(--spacing) * 44);\n }\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n .w-55 {\n width: calc(var(--spacing) * 55);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-60 {\n width: calc(var(--spacing) * 60);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-80 {\n width: calc(var(--spacing) * 80);\n }\n .w-96 {\n width: calc(var(--spacing) * 96);\n }\n .w-240 {\n width: calc(var(--spacing) * 240);\n }\n .w-\\[--radix-popover-trigger-width\\] {\n width: --radix-popover-trigger-width;\n }\n .w-\\[1\\%\\] {\n width: 1%;\n }\n .w-\\[1\\.5px\\] {\n width: 1.5px;\n }\n .w-\\[1px\\] {\n width: 1px;\n }\n .w-\\[2\\.5px\\] {\n width: 2.5px;\n }\n .w-\\[2px\\] {\n width: 2px;\n }\n .w-\\[3px\\] {\n width: 3px;\n }\n .w-\\[5px\\] {\n width: 5px;\n }\n .w-\\[7px\\] {\n width: 7px;\n }\n .w-\\[8px\\] {\n width: 8px;\n }\n .w-\\[9px\\] {\n width: 9px;\n }\n .w-\\[10px\\] {\n width: 10px;\n }\n .w-\\[11px\\] {\n width: 11px;\n }\n .w-\\[12px\\] {\n width: 12px;\n }\n .w-\\[13px\\] {\n width: 13px;\n }\n .w-\\[14\\.8\\%\\] {\n width: 14.8%;\n }\n .w-\\[14px\\] {\n width: 14px;\n }\n .w-\\[15\\.33px\\] {\n width: 15.33px;\n }\n .w-\\[15px\\] {\n width: 15px;\n }\n .w-\\[16px\\] {\n width: 16px;\n }\n .w-\\[18px\\] {\n width: 18px;\n }\n .w-\\[20px\\] {\n width: 20px;\n }\n .w-\\[22px\\] {\n width: 22px;\n }\n .w-\\[24px\\] {\n width: 24px;\n }\n .w-\\[26\\%\\] {\n width: 26%;\n }\n .w-\\[26px\\] {\n width: 26px;\n }\n .w-\\[28px\\] {\n width: 28px;\n }\n .w-\\[30\\%\\] {\n width: 30%;\n }\n .w-\\[30px\\] {\n width: 30px;\n }\n .w-\\[35px\\] {\n width: 35px;\n }\n .w-\\[38\\%\\] {\n width: 38%;\n }\n .w-\\[38px\\] {\n width: 38px;\n }\n .w-\\[40px\\] {\n width: 40px;\n }\n .w-\\[42px\\] {\n width: 42px;\n }\n .w-\\[44px\\] {\n width: 44px;\n }\n .w-\\[45\\%\\] {\n width: 45%;\n }\n .w-\\[46px\\] {\n width: 46px;\n }\n .w-\\[48px\\] {\n width: 48px;\n }\n .w-\\[50px\\] {\n width: 50px;\n }\n .w-\\[52px\\] {\n width: 52px;\n }\n .w-\\[54px\\] {\n width: 54px;\n }\n .w-\\[60px\\] {\n width: 60px;\n }\n .w-\\[62px\\] {\n width: 62px;\n }\n .w-\\[64px\\] {\n width: 64px;\n }\n .w-\\[66px\\] {\n width: 66px;\n }\n .w-\\[70\\%\\] {\n width: 70%;\n }\n .w-\\[70px\\] {\n width: 70px;\n }\n .w-\\[72px\\] {\n width: 72px;\n }\n .w-\\[74px\\] {\n width: 74px;\n }\n .w-\\[75px\\] {\n width: 75px;\n }\n .w-\\[80px\\] {\n width: 80px;\n }\n .w-\\[84px\\] {\n width: 84px;\n }\n .w-\\[86px\\] {\n width: 86px;\n }\n .w-\\[88px\\] {\n width: 88px;\n }\n .w-\\[90px\\] {\n width: 90px;\n }\n .w-\\[95vw\\] {\n width: 95vw;\n }\n .w-\\[96px\\] {\n width: 96px;\n }\n .w-\\[100px\\] {\n width: 100px;\n }\n .w-\\[100vw\\] {\n width: 100vw;\n }\n .w-\\[110px\\] {\n width: 110px;\n }\n .w-\\[112px\\] {\n width: 112px;\n }\n .w-\\[120px\\] {\n width: 120px;\n }\n .w-\\[124px\\] {\n width: 124px;\n }\n .w-\\[126px\\] {\n width: 126px;\n }\n .w-\\[128px\\] {\n width: 128px;\n }\n .w-\\[130px\\] {\n width: 130px;\n }\n .w-\\[132px\\] {\n width: 132px;\n }\n .w-\\[140px\\] {\n width: 140px;\n }\n .w-\\[145px\\] {\n width: 145px;\n }\n .w-\\[148px\\] {\n width: 148px;\n }\n .w-\\[150px\\] {\n width: 150px;\n }\n .w-\\[158px\\] {\n width: 158px;\n }\n .w-\\[160px\\] {\n width: 160px;\n }\n .w-\\[165px\\] {\n width: 165px;\n }\n .w-\\[168px\\] {\n width: 168px;\n }\n .w-\\[170px\\] {\n width: 170px;\n }\n .w-\\[178px\\] {\n width: 178px;\n }\n .w-\\[180px\\] {\n width: 180px;\n }\n .w-\\[190px\\] {\n width: 190px;\n }\n .w-\\[200px\\] {\n width: 200px;\n }\n .w-\\[210px\\] {\n width: 210px;\n }\n .w-\\[220px\\] {\n width: 220px;\n }\n .w-\\[230px\\] {\n width: 230px;\n }\n .w-\\[240px\\] {\n width: 240px;\n }\n .w-\\[250px\\] {\n width: 250px;\n }\n .w-\\[260px\\] {\n width: 260px;\n }\n .w-\\[268px\\] {\n width: 268px;\n }\n .w-\\[280px\\] {\n width: 280px;\n }\n .w-\\[300px\\] {\n width: 300px;\n }\n .w-\\[301px\\] {\n width: 301px;\n }\n .w-\\[320px\\] {\n width: 320px;\n }\n .w-\\[333px\\] {\n width: 333px;\n }\n .w-\\[336px\\] {\n width: 336px;\n }\n .w-\\[340px\\] {\n width: 340px;\n }\n .w-\\[370px\\] {\n width: 370px;\n }\n .w-\\[380px\\] {\n width: 380px;\n }\n .w-\\[400px\\] {\n width: 400px;\n }\n .w-\\[420px\\] {\n width: 420px;\n }\n .w-\\[440px\\] {\n width: 440px;\n }\n .w-\\[480px\\] {\n width: 480px;\n }\n .w-\\[492px\\] {\n width: 492px;\n }\n .w-\\[500px\\] {\n width: 500px;\n }\n .w-\\[520px\\] {\n width: 520px;\n }\n .w-\\[540px\\] {\n width: 540px;\n }\n .w-\\[544px\\] {\n width: 544px;\n }\n .w-\\[573px\\] {\n width: 573px;\n }\n .w-\\[600px\\] {\n width: 600px;\n }\n .w-\\[688px\\] {\n width: 688px;\n }\n .w-\\[880px\\] {\n width: 880px;\n }\n .w-\\[1080px\\] {\n width: 1080px;\n }\n .w-\\[calc\\(100\\%\\+0\\.5rem\\)\\] {\n width: calc(100% + 0.5rem);\n }\n .w-auto {\n width: auto;\n }\n .w-auto\\! {\n width: auto !important;\n }\n .w-fit {\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .w-max {\n width: max-content;\n }\n .w-min {\n width: min-content;\n }\n .w-px {\n width: 1px;\n }\n .w-screen {\n width: 100vw;\n }\n .\\!max-w-\\[860px\\] {\n max-width: 860px !important;\n }\n .\\!max-w-none {\n max-width: none !important;\n }\n .max-w-\\(--skeleton-width\\) {\n max-width: var(--skeleton-width);\n }\n .max-w-0 {\n max-width: calc(var(--spacing) * 0);\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-3xl {\n max-width: var(--container-3xl);\n }\n .max-w-4 {\n max-width: calc(var(--spacing) * 4);\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\n }\n .max-w-5xl {\n max-width: var(--container-5xl);\n }\n .max-w-5xl\\! {\n max-width: var(--container-5xl) !important;\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-7xl {\n max-width: var(--container-7xl);\n }\n .max-w-12 {\n max-width: calc(var(--spacing) * 12);\n }\n .max-w-80 {\n max-width: calc(var(--spacing) * 80);\n }\n .max-w-\\[10rem\\] {\n max-width: 10rem;\n }\n .max-w-\\[12rem\\] {\n max-width: 12rem;\n }\n .max-w-\\[30px\\] {\n max-width: 30px;\n }\n .max-w-\\[40px\\] {\n max-width: 40px;\n }\n .max-w-\\[50\\%\\] {\n max-width: 50%;\n }\n .max-w-\\[60\\%\\] {\n max-width: 60%;\n }\n .max-w-\\[62\\%\\] {\n max-width: 62%;\n }\n .max-w-\\[65ch\\] {\n max-width: 65ch;\n }\n .max-w-\\[78\\%\\] {\n max-width: 78%;\n }\n .max-w-\\[80\\%\\] {\n max-width: 80%;\n }\n .max-w-\\[92\\%\\] {\n max-width: 92%;\n }\n .max-w-\\[92vw\\] {\n max-width: 92vw;\n }\n .max-w-\\[95vw\\] {\n max-width: 95vw;\n }\n .max-w-\\[100\\%\\] {\n max-width: 100%;\n }\n .max-w-\\[130px\\] {\n max-width: 130px;\n }\n .max-w-\\[140px\\] {\n max-width: 140px;\n }\n .max-w-\\[150px\\] {\n max-width: 150px;\n }\n .max-w-\\[160px\\] {\n max-width: 160px;\n }\n .max-w-\\[170px\\] {\n max-width: 170px;\n }\n .max-w-\\[177px\\] {\n max-width: 177px;\n }\n .max-w-\\[180px\\] {\n max-width: 180px;\n }\n .max-w-\\[190px\\] {\n max-width: 190px;\n }\n .max-w-\\[200px\\] {\n max-width: 200px;\n }\n .max-w-\\[220px\\] {\n max-width: 220px;\n }\n .max-w-\\[240px\\] {\n max-width: 240px;\n }\n .max-w-\\[250px\\] {\n max-width: 250px;\n }\n .max-w-\\[260px\\] {\n max-width: 260px;\n }\n .max-w-\\[280px\\] {\n max-width: 280px;\n }\n .max-w-\\[320px\\] {\n max-width: 320px;\n }\n .max-w-\\[354px\\] {\n max-width: 354px;\n }\n .max-w-\\[380px\\] {\n max-width: 380px;\n }\n .max-w-\\[384px\\] {\n max-width: 384px;\n }\n .max-w-\\[400px\\] {\n max-width: 400px;\n }\n .max-w-\\[420px\\] {\n max-width: 420px;\n }\n .max-w-\\[440px\\] {\n max-width: 440px;\n }\n .max-w-\\[450px\\] {\n max-width: 450px;\n }\n .max-w-\\[460px\\] {\n max-width: 460px;\n }\n .max-w-\\[480px\\] {\n max-width: 480px;\n }\n .max-w-\\[500px\\] {\n max-width: 500px;\n }\n .max-w-\\[512px\\] {\n max-width: 512px;\n }\n .max-w-\\[520px\\] {\n max-width: 520px;\n }\n .max-w-\\[540px\\] {\n max-width: 540px;\n }\n .max-w-\\[544px\\] {\n max-width: 544px;\n }\n .max-w-\\[560px\\] {\n max-width: 560px;\n }\n .max-w-\\[580px\\] {\n max-width: 580px;\n }\n .max-w-\\[600px\\] {\n max-width: 600px;\n }\n .max-w-\\[640px\\] {\n max-width: 640px;\n }\n .max-w-\\[660px\\] {\n max-width: 660px;\n }\n .max-w-\\[680px\\] {\n max-width: 680px;\n }\n .max-w-\\[700px\\] {\n max-width: 700px;\n }\n .max-w-\\[720px\\] {\n max-width: 720px;\n }\n .max-w-\\[760px\\] {\n max-width: 760px;\n }\n .max-w-\\[791px\\] {\n max-width: 791px;\n }\n .max-w-\\[800px\\] {\n max-width: 800px;\n }\n .max-w-\\[960px\\] {\n max-width: 960px;\n }\n .max-w-\\[1080px\\] {\n max-width: 1080px;\n }\n .max-w-\\[1180px\\] {\n max-width: 1180px;\n }\n .max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n }\n .max-w-\\[min\\(100\\%\\,11rem\\)\\] {\n max-width: min(100%, 11rem);\n }\n .max-w-full {\n max-width: 100%;\n }\n .max-w-lg {\n max-width: var(--container-lg);\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .max-w-none {\n max-width: none;\n }\n .max-w-sm {\n max-width: var(--container-sm);\n }\n .max-w-xl {\n max-width: var(--container-xl);\n }\n .max-w-xs {\n max-width: var(--container-xs);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .min-w-5 {\n min-width: calc(var(--spacing) * 5);\n }\n .min-w-7 {\n min-width: calc(var(--spacing) * 7);\n }\n .min-w-8 {\n min-width: calc(var(--spacing) * 8);\n }\n .min-w-9 {\n min-width: calc(var(--spacing) * 9);\n }\n .min-w-24 {\n min-width: calc(var(--spacing) * 24);\n }\n .min-w-56 {\n min-width: calc(var(--spacing) * 56);\n }\n .min-w-60 {\n min-width: calc(var(--spacing) * 60);\n }\n .min-w-\\[3px\\] {\n min-width: 3px;\n }\n .min-w-\\[4px\\] {\n min-width: 4px;\n }\n .min-w-\\[8rem\\] {\n min-width: 8rem;\n }\n .min-w-\\[20px\\] {\n min-width: 20px;\n }\n .min-w-\\[22px\\] {\n min-width: 22px;\n }\n .min-w-\\[34px\\] {\n min-width: 34px;\n }\n .min-w-\\[44px\\] {\n min-width: 44px;\n }\n .min-w-\\[48px\\] {\n min-width: 48px;\n }\n .min-w-\\[60px\\] {\n min-width: 60px;\n }\n .min-w-\\[85px\\] {\n min-width: 85px;\n }\n .min-w-\\[86px\\] {\n min-width: 86px;\n }\n .min-w-\\[88px\\] {\n min-width: 88px;\n }\n .min-w-\\[96px\\] {\n min-width: 96px;\n }\n .min-w-\\[104px\\] {\n min-width: 104px;\n }\n .min-w-\\[120px\\] {\n min-width: 120px;\n }\n .min-w-\\[140px\\] {\n min-width: 140px;\n }\n .min-w-\\[150px\\] {\n min-width: 150px;\n }\n .min-w-\\[160px\\] {\n min-width: 160px;\n }\n .min-w-\\[168px\\] {\n min-width: 168px;\n }\n .min-w-\\[170px\\] {\n min-width: 170px;\n }\n .min-w-\\[180px\\] {\n min-width: 180px;\n }\n .min-w-\\[200px\\] {\n min-width: 200px;\n }\n .min-w-\\[220px\\] {\n min-width: 220px;\n }\n .min-w-\\[240px\\] {\n min-width: 240px;\n }\n .min-w-\\[270px\\] {\n min-width: 270px;\n }\n .min-w-\\[320px\\] {\n min-width: 320px;\n }\n .min-w-\\[600px\\] {\n min-width: 600px;\n }\n .min-w-\\[700px\\] {\n min-width: 700px;\n }\n .min-w-\\[860px\\] {\n min-width: 860px;\n }\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n .min-w-fit {\n min-width: fit-content;\n }\n .min-w-full {\n min-width: 100%;\n }\n .min-w-max {\n min-width: max-content;\n }\n .min-w-xs {\n min-width: var(--container-xs);\n }\n .flex-0 {\n flex: 0;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-2 {\n flex: 2;\n }\n .flex-\\[0\\] {\n flex: 0;\n }\n .flex-none {\n flex: none;\n }\n .\\!shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink {\n flex-shrink: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .\\!grow-0 {\n flex-grow: 0 !important;\n }\n .flex-grow {\n flex-grow: 1;\n }\n .grow {\n flex-grow: 1;\n }\n .\\!basis-auto {\n flex-basis: auto !important;\n }\n .table-auto {\n table-layout: auto;\n }\n .table-fixed {\n table-layout: fixed;\n }\n .caption-bottom {\n caption-side: bottom;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .border-separate {\n border-collapse: separate;\n }\n .border-spacing-0 {\n --tw-border-spacing-x: calc(var(--spacing) * 0);\n --tw-border-spacing-y: calc(var(--spacing) * 0);\n border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);\n }\n .border-spacing-\\[2px\\] {\n --tw-border-spacing-x: 2px;\n --tw-border-spacing-y: 2px;\n border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);\n }\n .origin-\\(--radix-tooltip-content-transform-origin\\) {\n transform-origin: var(--radix-tooltip-content-transform-origin);\n }\n .origin-\\[--radix-dropdown-menu-content-transform-origin\\] {\n transform-origin: --radix-dropdown-menu-content-transform-origin;\n }\n .origin-\\[--radix-popover-content-transform-origin\\] {\n transform-origin: --radix-popover-content-transform-origin;\n }\n .origin-\\[--radix-select-content-transform-origin\\] {\n transform-origin: --radix-select-content-transform-origin;\n }\n .origin-bottom-right {\n transform-origin: 100% 100%;\n }\n .\\!translate-x-0 {\n --tw-translate-x: calc(var(--spacing) * 0) !important;\n translate: var(--tw-translate-x) var(--tw-translate-y) !important;\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-2 {\n --tw-translate-x: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-full {\n --tw-translate-x: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-px {\n --tw-translate-x: -1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-0 {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-1\\/2 {\n --tw-translate-x: calc(1/2 * 100%);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-6 {\n --tw-translate-x: calc(var(--spacing) * 6);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-full {\n --tw-translate-x: 100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-px {\n --tw-translate-x: 1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .\\!translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0) !important;\n translate: var(--tw-translate-x) var(--tw-translate-y) !important;\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-2\\/3 {\n --tw-translate-y: calc(calc(2/3 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0\\.5 {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-2 {\n --tw-translate-y: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[6px\\] {\n --tw-translate-y: 6px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[calc\\(-50\\%_-_2px\\)\\] {\n --tw-translate-y: calc(-50% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .scale-75 {\n --tw-scale-x: 75%;\n --tw-scale-y: 75%;\n --tw-scale-z: 75%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-95 {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-100 {\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .-rotate-90 {\n rotate: calc(90deg * -1);\n }\n .rotate-0 {\n rotate: 0deg;\n }\n .rotate-45 {\n rotate: 45deg;\n }\n .rotate-90 {\n rotate: 90deg;\n }\n .rotate-180 {\n rotate: 180deg;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-\\[slide-in-from-left_0\\.22s_ease-out\\] {\n animation: slide-in-from-left 0.22s ease-out;\n }\n .animate-\\[slide-in-from-right_0\\.22s_ease-out\\] {\n animation: slide-in-from-right 0.22s ease-out;\n }\n .animate-bounce {\n animation: var(--animate-bounce);\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-col-resize {\n cursor: col-resize;\n }\n .cursor-crosshair {\n cursor: crosshair;\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-grab {\n cursor: grab;\n }\n .cursor-help {\n cursor: help;\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .cursor-zoom-in {\n cursor: zoom-in;\n }\n .touch-none {\n touch-action: none;\n }\n .resize {\n resize: both;\n }\n .resize-none {\n resize: none;\n }\n .resize-y {\n resize: vertical;\n }\n .snap-x {\n scroll-snap-type: x var(--tw-scroll-snap-strictness);\n }\n .snap-mandatory {\n --tw-scroll-snap-strictness: mandatory;\n }\n .list-inside {\n list-style-position: inside;\n }\n .list-decimal {\n list-style-type: decimal;\n }\n .list-disc {\n list-style-type: disc;\n }\n .list-none {\n list-style-type: none;\n }\n .appearance-none {\n appearance: none;\n }\n .grid-flow-row {\n grid-auto-flow: row;\n }\n .auto-rows-min {\n grid-auto-rows: min-content;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .grid-cols-\\[0\\.75rem_minmax\\(7rem\\,9rem\\)_minmax\\(8rem\\,12rem\\)_1fr\\] {\n grid-template-columns: 0.75rem minmax(7rem,9rem) minmax(8rem,12rem) 1fr;\n }\n .grid-cols-\\[1fr_2fr\\] {\n grid-template-columns: 1fr 2fr;\n }\n .grid-cols-\\[1fr_auto\\] {\n grid-template-columns: 1fr auto;\n }\n .grid-cols-\\[1fr_auto_auto\\] {\n grid-template-columns: 1fr auto auto;\n }\n .grid-cols-\\[1fr_auto_auto_auto\\] {\n grid-template-columns: 1fr auto auto auto;\n }\n .grid-cols-\\[12rem_1fr\\] {\n grid-template-columns: 12rem 1fr;\n }\n .grid-cols-\\[16px_1fr\\] {\n grid-template-columns: 16px 1fr;\n }\n .grid-cols-\\[96px_1fr_auto\\] {\n grid-template-columns: 96px 1fr auto;\n }\n .grid-cols-\\[132px_1fr_48px\\] {\n grid-template-columns: 132px 1fr 48px;\n }\n .grid-cols-\\[auto_1fr_auto\\] {\n grid-template-columns: auto 1fr auto;\n }\n .grid-cols-\\[auto_1fr_auto_auto\\] {\n grid-template-columns: auto 1fr auto auto;\n }\n .grid-cols-subgrid {\n grid-template-columns: subgrid;\n }\n .grid-rows-\\[0fr\\] {\n grid-template-rows: 0fr;\n }\n .grid-rows-\\[1fr\\] {\n grid-template-rows: 1fr;\n }\n .grid-rows-\\[auto_auto\\] {\n grid-template-rows: auto auto;\n }\n .grid-rows-\\[repeat\\(6\\,auto\\)\\] {\n grid-template-rows: repeat(6,auto);\n }\n .grid-rows-subgrid {\n grid-template-rows: subgrid;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-nowrap {\n flex-wrap: nowrap;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .place-items-center {\n place-items: center;\n }\n .\\!items-start {\n align-items: flex-start !important;\n }\n .items-baseline {\n align-items: baseline;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .items-stretch {\n align-items: stretch;\n }\n .\\!justify-start {\n justify-content: flex-start !important;\n }\n .justify-around {\n justify-content: space-around;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .justify-stretch {\n justify-content: stretch;\n }\n .\\!gap-0 {\n gap: calc(var(--spacing) * 0) !important;\n }\n .gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-3\\.5 {\n gap: calc(var(--spacing) * 3.5);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-4\\.5 {\n gap: calc(var(--spacing) * 4.5);\n }\n .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n .gap-10 {\n gap: calc(var(--spacing) * 10);\n }\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n .gap-14 {\n gap: calc(var(--spacing) * 14);\n }\n .gap-20 {\n gap: calc(var(--spacing) * 20);\n }\n .gap-\\[--spacing\\(var\\(--gap\\)\\)\\] {\n gap: calc(var(--spacing) * var(--gap));\n }\n .gap-\\[1px\\] {\n gap: 1px;\n }\n .gap-\\[2px\\] {\n gap: 2px;\n }\n .gap-\\[3px\\] {\n gap: 3px;\n }\n .gap-\\[4px\\] {\n gap: 4px;\n }\n .gap-\\[5px\\] {\n gap: 5px;\n }\n .gap-\\[6px\\] {\n gap: 6px;\n }\n .gap-\\[7px\\] {\n gap: 7px;\n }\n .gap-\\[8px\\] {\n gap: 8px;\n }\n .gap-\\[9px\\] {\n gap: 9px;\n }\n .gap-\\[10px\\] {\n gap: 10px;\n }\n .gap-\\[11px\\] {\n gap: 11px;\n }\n .gap-\\[12px\\] {\n gap: 12px;\n }\n .gap-\\[14px\\] {\n gap: 14px;\n }\n .gap-\\[15px\\] {\n gap: 15px;\n }\n .gap-\\[16px\\] {\n gap: 16px;\n }\n .gap-\\[18px\\] {\n gap: 18px;\n }\n .gap-\\[20px\\] {\n gap: 20px;\n }\n .gap-\\[24px\\] {\n gap: 24px;\n }\n .gap-\\[40px\\] {\n gap: 40px;\n }\n .gap-px {\n gap: 1px;\n }\n .space-y-0 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-0\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 0.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 0.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-1\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-8 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-\\[6px\\] {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(6px * var(--tw-space-y-reverse));\n margin-block-end: calc(6px * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-\\[7px\\] {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(7px * var(--tw-space-y-reverse));\n margin-block-end: calc(7px * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-\\[12px\\] {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(12px * var(--tw-space-y-reverse));\n margin-block-end: calc(12px * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-\\[14px\\] {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(14px * var(--tw-space-y-reverse));\n margin-block-end: calc(14px * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .gap-x-1\\.5 {\n column-gap: calc(var(--spacing) * 1.5);\n }\n .gap-x-2 {\n column-gap: calc(var(--spacing) * 2);\n }\n .gap-x-2\\.5 {\n column-gap: calc(var(--spacing) * 2.5);\n }\n .gap-x-3 {\n column-gap: calc(var(--spacing) * 3);\n }\n .gap-x-4 {\n column-gap: calc(var(--spacing) * 4);\n }\n .gap-x-5 {\n column-gap: calc(var(--spacing) * 5);\n }\n .gap-x-6 {\n column-gap: calc(var(--spacing) * 6);\n }\n .gap-x-12 {\n column-gap: calc(var(--spacing) * 12);\n }\n .gap-x-\\[12px\\] {\n column-gap: 12px;\n }\n .gap-x-\\[14px\\] {\n column-gap: 14px;\n }\n .gap-x-\\[18px\\] {\n column-gap: 18px;\n }\n .-space-x-4 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * -4) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * -4) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .-space-x-px {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(-1px * var(--tw-space-x-reverse));\n margin-inline-end: calc(-1px * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-3 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-4 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-5 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 5) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-6 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 6) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .gap-y-1 {\n row-gap: calc(var(--spacing) * 1);\n }\n .gap-y-1\\.5 {\n row-gap: calc(var(--spacing) * 1.5);\n }\n .gap-y-2 {\n row-gap: calc(var(--spacing) * 2);\n }\n .gap-y-3 {\n row-gap: calc(var(--spacing) * 3);\n }\n .gap-y-4 {\n row-gap: calc(var(--spacing) * 4);\n }\n .gap-y-5 {\n row-gap: calc(var(--spacing) * 5);\n }\n .gap-y-6 {\n row-gap: calc(var(--spacing) * 6);\n }\n .gap-y-7 {\n row-gap: calc(var(--spacing) * 7);\n }\n .gap-y-8 {\n row-gap: calc(var(--spacing) * 8);\n }\n .gap-y-\\[2px\\] {\n row-gap: 2px;\n }\n .gap-y-\\[4px\\] {\n row-gap: 4px;\n }\n .gap-y-\\[6px\\] {\n row-gap: 6px;\n }\n .gap-y-\\[10px\\] {\n row-gap: 10px;\n }\n .divide-y {\n :where(& > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n }\n .divide-border {\n :where(& > :not(:last-child)) {\n border-color: var(--color-border);\n }\n }\n .divide-gray-100 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-gray-100);\n }\n }\n .divide-gray-200 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-gray-200);\n }\n }\n .divide-gray-300 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-gray-300);\n }\n }\n .self-center {\n align-self: center;\n }\n .self-end {\n align-self: flex-end;\n }\n .self-start {\n align-self: flex-start;\n }\n .self-stretch {\n align-self: stretch;\n }\n .justify-self-end {\n justify-self: flex-end;\n }\n .justify-self-start {\n justify-self: flex-start;\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-visible {\n overflow: visible;\n }\n .overflow-x-auto {\n overflow-x: auto;\n }\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .overflow-y-scroll {\n overflow-y: scroll;\n }\n .overscroll-contain {\n overscroll-behavior: contain;\n }\n .\\!rounded-none {\n border-radius: 0 !important;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n .rounded-3xl {\n border-radius: var(--radius-3xl);\n }\n .rounded-\\[2px\\] {\n border-radius: 2px;\n }\n .rounded-\\[3px\\] {\n border-radius: 3px;\n }\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n .rounded-\\[5px\\] {\n border-radius: 5px;\n }\n .rounded-\\[6px\\] {\n border-radius: 6px;\n }\n .rounded-\\[7px\\] {\n border-radius: 7px;\n }\n .rounded-\\[8px\\] {\n border-radius: 8px;\n }\n .rounded-\\[9px\\] {\n border-radius: 9px;\n }\n .rounded-\\[10px\\] {\n border-radius: 10px;\n }\n .rounded-\\[11px\\] {\n border-radius: 11px;\n }\n .rounded-\\[12px\\] {\n border-radius: 12px;\n }\n .rounded-\\[13px_13px_4px_13px\\] {\n border-radius: 13px 13px 4px 13px;\n }\n .rounded-\\[13px_13px_13px_4px\\] {\n border-radius: 13px 13px 13px 4px;\n }\n .rounded-\\[14px\\] {\n border-radius: 14px;\n }\n .rounded-\\[16px\\] {\n border-radius: 16px;\n }\n .rounded-\\[18px\\] {\n border-radius: 18px;\n }\n .rounded-\\[18px_18px_4px_18px\\] {\n border-radius: 18px 18px 4px 18px;\n }\n .rounded-\\[50px\\] {\n border-radius: 50px;\n }\n .rounded-\\[100\\%\\] {\n border-radius: 100%;\n }\n .rounded-\\[min\\(var\\(--radius-md\\)\\,12px\\)\\] {\n border-radius: min(var(--radius-md), 12px);\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-none {\n border-radius: 0;\n }\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n .rounded-xs {\n border-radius: var(--radius-xs);\n }\n .rounded-t {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .rounded-t-2xl {\n border-top-left-radius: var(--radius-2xl);\n border-top-right-radius: var(--radius-2xl);\n }\n .rounded-t-\\[3px\\] {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n }\n .rounded-t-lg {\n border-top-left-radius: var(--radius-lg);\n border-top-right-radius: var(--radius-lg);\n }\n .rounded-t-md {\n border-top-left-radius: var(--radius-md);\n border-top-right-radius: var(--radius-md);\n }\n .rounded-t-sm {\n border-top-left-radius: var(--radius-sm);\n border-top-right-radius: var(--radius-sm);\n }\n .rounded-l-full {\n border-top-left-radius: calc(infinity * 1px);\n border-bottom-left-radius: calc(infinity * 1px);\n }\n .rounded-l-md {\n border-top-left-radius: var(--radius-md);\n border-bottom-left-radius: var(--radius-md);\n }\n .rounded-l-none {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .rounded-tl-xl {\n border-top-left-radius: var(--radius-xl);\n }\n .rounded-r-\\[2px\\] {\n border-top-right-radius: 2px;\n border-bottom-right-radius: 2px;\n }\n .rounded-r-\\[3px\\] {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n }\n .rounded-r-\\[10px\\] {\n border-top-right-radius: 10px;\n border-bottom-right-radius: 10px;\n }\n .rounded-r-full {\n border-top-right-radius: calc(infinity * 1px);\n border-bottom-right-radius: calc(infinity * 1px);\n }\n .rounded-r-md {\n border-top-right-radius: var(--radius-md);\n border-bottom-right-radius: var(--radius-md);\n }\n .rounded-r-none {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .rounded-b-\\[14px\\] {\n border-bottom-right-radius: 14px;\n border-bottom-left-radius: 14px;\n }\n .rounded-b-lg {\n border-bottom-right-radius: var(--radius-lg);\n border-bottom-left-radius: var(--radius-lg);\n }\n .rounded-bl-xl {\n border-bottom-left-radius: var(--radius-xl);\n }\n .\\!border-0 {\n border-style: var(--tw-border-style) !important;\n border-width: 0px !important;\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-1 {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-3 {\n border-style: var(--tw-border-style);\n border-width: 3px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-\\[0\\.2px\\] {\n border-style: var(--tw-border-style);\n border-width: 0.2px;\n }\n .border-\\[0\\.5\\] {\n border-style: var(--tw-border-style);\n border-width: 0.5;\n }\n .border-\\[0\\.5px\\] {\n border-style: var(--tw-border-style);\n border-width: 0.5px;\n }\n .border-\\[0px\\] {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-\\[1\\.5px\\] {\n border-style: var(--tw-border-style);\n border-width: 1.5px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-t-1 {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-t-2 {\n border-top-style: var(--tw-border-style);\n border-top-width: 2px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-r-0 {\n border-right-style: var(--tw-border-style);\n border-right-width: 0px;\n }\n .border-r-1 {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-0 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n .border-b-1 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-b-3 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 3px;\n }\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .border-l-0 {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n .border-l-2 {\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n }\n .border-l-\\[3px\\] {\n border-left-style: var(--tw-border-style);\n border-left-width: 3px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .border-\\[\\#0d1f35\\] {\n border-color: #0d1f35;\n }\n .border-\\[\\#1e3556\\] {\n border-color: #1e3556;\n }\n .border-\\[\\#22c55e\\]\\/35 {\n border-color: color-mix(in oklab, #22c55e 35%, transparent);\n }\n .border-\\[\\#86efac\\] {\n border-color: #86efac;\n }\n .border-\\[\\#1877F2\\] {\n border-color: #1877F2;\n }\n .border-\\[\\#2563eb\\] {\n border-color: #2563eb;\n }\n .border-\\[\\#18181b\\] {\n border-color: #18181b;\n }\n .border-\\[\\#707070\\] {\n border-color: #707070;\n }\n .border-\\[\\#747775\\] {\n border-color: #747775;\n }\n .border-\\[\\#DBE2EB\\] {\n border-color: #DBE2EB;\n }\n .border-\\[\\#E4E4E7\\] {\n border-color: #E4E4E7;\n }\n .border-\\[\\#E88B00\\] {\n border-color: #E88B00;\n }\n .border-\\[\\#bbf7d0\\] {\n border-color: #bbf7d0;\n }\n .border-\\[\\#cbd5e1\\] {\n border-color: #cbd5e1;\n }\n .border-\\[\\#d1d5db\\] {\n border-color: #d1d5db;\n }\n .border-\\[\\#d6e3ff\\] {\n border-color: #d6e3ff;\n }\n .border-\\[\\#dbe4f3\\] {\n border-color: #dbe4f3;\n }\n .border-\\[\\#e2e4e9\\] {\n border-color: #e2e4e9;\n }\n .border-\\[\\#e2e6ea\\] {\n border-color: #e2e6ea;\n }\n .border-\\[\\#e4e4e7\\] {\n border-color: #e4e4e7;\n }\n .border-\\[\\#eef2f7\\] {\n border-color: #eef2f7;\n }\n .border-\\[\\#f0f0f0\\] {\n border-color: #f0f0f0;\n }\n .border-\\[\\#f4f6f8\\] {\n border-color: #f4f6f8;\n }\n .border-\\[\\#f8f9fa\\] {\n border-color: #f8f9fa;\n }\n .border-\\[\\#fcd34d\\] {\n border-color: #fcd34d;\n }\n .border-\\[color\\:var\\(--ob-bd\\)\\] {\n border-color: var(--ob-bd);\n }\n .border-\\[var\\(--bc-text-color\\,\\#18181B\\)\\] {\n border-color: var(--bc-text-color,#18181B);\n }\n .border-accent {\n border-color: var(--color-accent);\n }\n .border-accent\\/30 {\n border-color: color-mix(in srgb, #f4f4f5 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-accent) 30%, transparent);\n }\n }\n .border-accent\\/40 {\n border-color: color-mix(in srgb, #f4f4f5 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n .border-amber-200 {\n border-color: var(--color-amber-200);\n }\n .border-amber-300 {\n border-color: var(--color-amber-300);\n }\n .border-amber-300\\/60 {\n border-color: color-mix(in srgb, oklch(87.9% 0.169 91.605) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-amber-300) 60%, transparent);\n }\n }\n .border-amber-400 {\n border-color: var(--color-amber-400);\n }\n .border-amber-500\\/40 {\n border-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-amber-500) 40%, transparent);\n }\n }\n .border-amber-500\\/50 {\n border-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-amber-500) 50%, transparent);\n }\n }\n .border-black {\n border-color: var(--color-black);\n }\n .border-black\\/12 {\n border-color: color-mix(in srgb, #000 12%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-black) 12%, transparent);\n }\n }\n .border-blue-100 {\n border-color: var(--color-blue-100);\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-blue-300 {\n border-color: var(--color-blue-300);\n }\n .border-blue-500 {\n border-color: var(--color-blue-500);\n }\n .border-blue-600 {\n border-color: var(--color-blue-600);\n }\n .border-border {\n border-color: var(--color-border);\n }\n .border-border\\/30 {\n border-color: color-mix(in srgb, #e4e4e7 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-border) 30%, transparent);\n }\n }\n .border-border\\/60 {\n border-color: color-mix(in srgb, #e4e4e7 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-border) 60%, transparent);\n }\n }\n .border-border\\/80 {\n border-color: color-mix(in srgb, #e4e4e7 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-border) 80%, transparent);\n }\n }\n .border-current {\n border-color: currentcolor;\n }\n .border-current\\/30 {\n border-color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, currentcolor 30%, transparent);\n }\n }\n .border-destructive {\n border-color: var(--color-destructive);\n }\n .border-destructive\\/30 {\n border-color: color-mix(in srgb, #dc2626 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-destructive) 30%, transparent);\n }\n }\n .border-destructive\\/50 {\n border-color: color-mix(in srgb, #dc2626 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-destructive) 50%, transparent);\n }\n }\n .border-emerald-200 {\n border-color: var(--color-emerald-200);\n }\n .border-emerald-300 {\n border-color: var(--color-emerald-300);\n }\n .border-emerald-500 {\n border-color: var(--color-emerald-500);\n }\n .border-gray-100 {\n border-color: var(--color-gray-100);\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-gray-300 {\n border-color: var(--color-gray-300);\n }\n .border-gray-400 {\n border-color: var(--color-gray-400);\n }\n .border-gray-900\\/5 {\n border-color: color-mix(in srgb, oklch(21% 0.034 264.665) 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent);\n }\n }\n .border-gray-900\\/25 {\n border-color: color-mix(in srgb, oklch(21% 0.034 264.665) 25%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-gray-900) 25%, transparent);\n }\n }\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n .border-green-300 {\n border-color: var(--color-green-300);\n }\n .border-green-400 {\n border-color: var(--color-green-400);\n }\n .border-green-500 {\n border-color: var(--color-green-500);\n }\n .border-indigo-200 {\n border-color: var(--color-indigo-200);\n }\n .border-indigo-300 {\n border-color: var(--color-indigo-300);\n }\n .border-input {\n border-color: var(--color-input);\n }\n .border-muted-foreground\\/40 {\n border-color: color-mix(in srgb, #74716e 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-muted-foreground) 40%, transparent);\n }\n }\n .border-neutral-10 {\n border-color: var(--color-neutral-10);\n }\n .border-neutral-20 {\n border-color: var(--color-neutral-20);\n }\n .border-neutral-40 {\n border-color: var(--color-neutral-40);\n }\n .border-neutral-200 {\n border-color: var(--color-neutral-200);\n }\n .border-orange-100 {\n border-color: var(--color-orange-100);\n }\n .border-orange-200 {\n border-color: var(--color-orange-200);\n }\n .border-orange-300 {\n border-color: var(--color-orange-300);\n }\n .border-orange-400 {\n border-color: var(--color-orange-400);\n }\n .border-primary {\n border-color: var(--color-primary);\n }\n .border-primary\\/30 {\n border-color: color-mix(in srgb, #18181b 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 30%, transparent);\n }\n }\n .border-primary\\/50 {\n border-color: color-mix(in srgb, #18181b 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 50%, transparent);\n }\n }\n .border-purple-100 {\n border-color: var(--color-purple-100);\n }\n .border-purple-200 {\n border-color: var(--color-purple-200);\n }\n .border-purple-300 {\n border-color: var(--color-purple-300);\n }\n .border-purple-500 {\n border-color: var(--color-purple-500);\n }\n .border-red-200 {\n border-color: var(--color-red-200);\n }\n .border-red-300 {\n border-color: var(--color-red-300);\n }\n .border-red-400 {\n border-color: var(--color-red-400);\n }\n .border-red-500 {\n border-color: var(--color-red-500);\n }\n .border-red-600 {\n border-color: var(--color-red-600);\n }\n .border-rose-200 {\n border-color: var(--color-rose-200);\n }\n .border-sidebar-ring {\n border-color: var(--color-sidebar-ring);\n }\n .border-slate-100 {\n border-color: var(--color-slate-100);\n }\n .border-slate-200 {\n border-color: var(--color-slate-200);\n }\n .border-slate-300 {\n border-color: var(--color-slate-300);\n }\n .border-slate-400 {\n border-color: var(--color-slate-400);\n }\n .border-slate-500 {\n border-color: var(--color-slate-500);\n }\n .border-slate-900 {\n border-color: var(--color-slate-900);\n }\n .border-teal-600\\/30 {\n border-color: color-mix(in srgb, oklch(60% 0.118 184.704) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-teal-600) 30%, transparent);\n }\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-violet-100 {\n border-color: var(--color-violet-100);\n }\n .border-violet-300 {\n border-color: var(--color-violet-300);\n }\n .border-violet-600 {\n border-color: var(--color-violet-600);\n }\n .border-white {\n border-color: var(--color-white);\n }\n .border-white\\/10 {\n border-color: color-mix(in srgb, #fff 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-white) 10%, transparent);\n }\n }\n .border-white\\/20 {\n border-color: color-mix(in srgb, #fff 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-white) 20%, transparent);\n }\n }\n .border-white\\/30 {\n border-color: color-mix(in srgb, #fff 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-white) 30%, transparent);\n }\n }\n .border-yellow-200 {\n border-color: var(--color-yellow-200);\n }\n .border-zinc-200 {\n border-color: var(--color-zinc-200);\n }\n .border-zinc-900 {\n border-color: var(--color-zinc-900);\n }\n .border-t-accent {\n border-top-color: var(--color-accent);\n }\n .border-t-gray-900 {\n border-top-color: var(--color-gray-900);\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .border-t-white {\n border-top-color: var(--color-white);\n }\n .border-b-\\[\\#e2e4e9\\] {\n border-bottom-color: #e2e4e9;\n }\n .border-b-blue-20 {\n border-bottom-color: var(--color-blue-20);\n }\n .border-b-neutral-20 {\n border-bottom-color: var(--color-neutral-20);\n }\n .border-b-transparent {\n border-bottom-color: transparent;\n }\n .border-b-zinc-300 {\n border-bottom-color: var(--color-zinc-300);\n }\n .border-l-blue-500\\/40 {\n border-left-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-left-color: color-mix(in oklab, var(--color-blue-500) 40%, transparent);\n }\n }\n .border-l-primary {\n border-left-color: var(--color-primary);\n }\n .\\!bg-\\[\\#1877F2\\] {\n background-color: #1877F2 !important;\n }\n .\\!bg-\\[\\#ff7a59\\] {\n background-color: #ff7a59 !important;\n }\n .\\!bg-\\[var\\(--b-tooltip-bg\\)\\] {\n background-color: var(--b-tooltip-bg) !important;\n }\n .bg-\\[\\#\\.\\.\\.\\] {\n background-color: #...;\n }\n .bg-\\[\\#0d1b2a\\] {\n background-color: #0d1b2a;\n }\n .bg-\\[\\#0001\\] {\n background-color: #0001;\n }\n .bg-\\[\\#2A9D90\\] {\n background-color: #2A9D90;\n }\n .bg-\\[\\#16a34a\\] {\n background-color: #16a34a;\n }\n .bg-\\[\\#22c55e\\] {\n background-color: #22c55e;\n }\n .bg-\\[\\#22c55e\\]\\/15 {\n background-color: color-mix(in oklab, #22c55e 15%, transparent);\n }\n .bg-\\[\\#1877F2\\] {\n background-color: #1877F2;\n }\n .bg-\\[\\#2563eb\\] {\n background-color: #2563eb;\n }\n .bg-\\[\\#18181b\\] {\n background-color: #18181b;\n }\n .bg-\\[\\#222831\\] {\n background-color: #222831;\n }\n .bg-\\[\\#DBE2EB\\] {\n background-color: #DBE2EB;\n }\n .bg-\\[\\#E0E6EE\\] {\n background-color: #E0E6EE;\n }\n .bg-\\[\\#F1F4F8\\] {\n background-color: #F1F4F8;\n }\n .bg-\\[\\#FF9900\\] {\n background-color: #FF9900;\n }\n .bg-\\[\\#dbeafe\\] {\n background-color: #dbeafe;\n }\n .bg-\\[\\#e2e6ea\\] {\n background-color: #e2e6ea;\n }\n .bg-\\[\\#e76d4e\\] {\n background-color: #e76d4e;\n }\n .bg-\\[\\#eaf1ff\\] {\n background-color: #eaf1ff;\n }\n .bg-\\[\\#eff6ff\\] {\n background-color: #eff6ff;\n }\n .bg-\\[\\#f0fdf4\\] {\n background-color: #f0fdf4;\n }\n .bg-\\[\\#f1f4f8\\] {\n background-color: #f1f4f8;\n }\n .bg-\\[\\#f1f5f9\\] {\n background-color: #f1f5f9;\n }\n .bg-\\[\\#f3e8ff\\] {\n background-color: #f3e8ff;\n }\n .bg-\\[\\#f4f4f5\\] {\n background-color: #f4f4f5;\n }\n .bg-\\[\\#f4f4f5\\]\\/60 {\n background-color: color-mix(in oklab, #f4f4f5 60%, transparent);\n }\n .bg-\\[\\#f5f6f8\\] {\n background-color: #f5f6f8;\n }\n .bg-\\[\\#f8f9fa\\] {\n background-color: #f8f9fa;\n }\n .bg-\\[\\#f8fafb\\] {\n background-color: #f8fafb;\n }\n .bg-\\[\\#f9fafb\\] {\n background-color: #f9fafb;\n }\n .bg-\\[\\#f59e0b\\] {\n background-color: #f59e0b;\n }\n .bg-\\[\\#fafafa\\] {\n background-color: #fafafa;\n }\n .bg-\\[\\#fef3c7\\] {\n background-color: #fef3c7;\n }\n .bg-\\[\\#fffa\\] {\n background-color: #fffa;\n }\n .bg-\\[\\#fffbeb\\] {\n background-color: #fffbeb;\n }\n .bg-\\[\\#ffffff\\] {\n background-color: #ffffff;\n }\n .bg-\\[color\\:var\\(--ob-bg\\)\\] {\n background-color: var(--ob-bg);\n }\n .bg-\\[rgb\\(243_244_246\\)\\]\\/90 {\n background-color: color-mix(in oklab, rgb(243 244 246) 90%, transparent);\n }\n .bg-\\[rgba\\(28\\,25\\,23\\,0\\.08\\)\\] {\n background-color: rgba(28,25,23,0.08);\n }\n .bg-\\[var\\(--b-tooltip-bg\\)\\] {\n background-color: var(--b-tooltip-bg);\n }\n .bg-\\[var\\(--bc-primary-button-background-color\\)\\] {\n background-color: var(--bc-primary-button-background-color);\n }\n .bg-\\[var\\(--bc-secondary-button-background-color\\)\\] {\n background-color: var(--bc-secondary-button-background-color);\n }\n .bg-accent {\n background-color: var(--color-accent);\n }\n .bg-accent\\/5 {\n background-color: color-mix(in srgb, #f4f4f5 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 5%, transparent);\n }\n }\n .bg-accent\\/10 {\n background-color: color-mix(in srgb, #f4f4f5 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 10%, transparent);\n }\n }\n .bg-accent\\/40 {\n background-color: color-mix(in srgb, #f4f4f5 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n .bg-accent\\/80 {\n background-color: color-mix(in srgb, #f4f4f5 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 80%, transparent);\n }\n }\n .bg-amber-50 {\n background-color: var(--color-amber-50);\n }\n .bg-amber-100 {\n background-color: var(--color-amber-100);\n }\n .bg-amber-500 {\n background-color: var(--color-amber-500);\n }\n .bg-amber-500\\/5 {\n background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-amber-500) 5%, transparent);\n }\n }\n .bg-amber-600 {\n background-color: var(--color-amber-600);\n }\n .bg-background {\n background-color: var(--color-background);\n }\n .bg-background\\/70 {\n background-color: color-mix(in srgb, #ffffff 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-background) 70%, transparent);\n }\n }\n .bg-background\\/95 {\n background-color: color-mix(in srgb, #ffffff 95%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-background) 95%, transparent);\n }\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-black\\/0 {\n background-color: color-mix(in srgb, #000 0%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 0%, transparent);\n }\n }\n .bg-black\\/10 {\n background-color: color-mix(in srgb, #000 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 10%, transparent);\n }\n }\n .bg-black\\/30 {\n background-color: color-mix(in srgb, #000 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 30%, transparent);\n }\n }\n .bg-black\\/40 {\n background-color: color-mix(in srgb, #000 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 40%, transparent);\n }\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-black\\/60 {\n background-color: color-mix(in srgb, #000 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 60%, transparent);\n }\n }\n .bg-black\\/70 {\n background-color: color-mix(in srgb, #000 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 70%, transparent);\n }\n }\n .bg-blue-10 {\n background-color: var(--color-blue-10);\n }\n .bg-blue-20 {\n background-color: var(--color-blue-20);\n }\n .bg-blue-30 {\n background-color: var(--color-blue-30);\n }\n .bg-blue-40 {\n background-color: var(--color-blue-40);\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-blue-50\\/30 {\n background-color: color-mix(in srgb, #3b82f6 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-50) 30%, transparent);\n }\n }\n .bg-blue-60 {\n background-color: var(--color-blue-60);\n }\n .bg-blue-70 {\n background-color: var(--color-blue-70);\n }\n .bg-blue-80 {\n background-color: var(--color-blue-80);\n }\n .bg-blue-90 {\n background-color: var(--color-blue-90);\n }\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n .bg-blue-200 {\n background-color: var(--color-blue-200);\n }\n .bg-blue-500 {\n background-color: var(--color-blue-500);\n }\n .bg-blue-600 {\n background-color: var(--color-blue-600);\n }\n .bg-border {\n background-color: var(--color-border);\n }\n .bg-card {\n background-color: var(--color-card);\n }\n .bg-card\\/70 {\n background-color: color-mix(in srgb, #ffffff 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-card) 70%, transparent);\n }\n }\n .bg-card\\/95 {\n background-color: color-mix(in srgb, #ffffff 95%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-card) 95%, transparent);\n }\n }\n .bg-current {\n background-color: currentcolor;\n }\n .bg-destructive {\n background-color: var(--color-destructive);\n }\n .bg-destructive\\/5 {\n background-color: color-mix(in srgb, #dc2626 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 5%, transparent);\n }\n }\n .bg-destructive\\/10 {\n background-color: color-mix(in srgb, #dc2626 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 10%, transparent);\n }\n }\n .bg-destructive\\/15 {\n background-color: color-mix(in srgb, #dc2626 15%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 15%, transparent);\n }\n }\n .bg-emerald-50 {\n background-color: var(--color-emerald-50);\n }\n .bg-emerald-500 {\n background-color: var(--color-emerald-500);\n }\n .bg-emerald-600 {\n background-color: var(--color-emerald-600);\n }\n .bg-fuchsia-500 {\n background-color: var(--color-fuchsia-500);\n }\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-gray-200 {\n background-color: var(--color-gray-200);\n }\n .bg-gray-300 {\n background-color: var(--color-gray-300);\n }\n .bg-gray-400 {\n background-color: var(--color-gray-400);\n }\n .bg-gray-500 {\n background-color: var(--color-gray-500);\n }\n .bg-gray-800 {\n background-color: var(--color-gray-800);\n }\n .bg-gray-900 {\n background-color: var(--color-gray-900);\n }\n .bg-gray-900\\/40 {\n background-color: color-mix(in srgb, oklch(21% 0.034 264.665) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-gray-900) 40%, transparent);\n }\n }\n .bg-gray-900\\/80 {\n background-color: color-mix(in srgb, oklch(21% 0.034 264.665) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-gray-900) 80%, transparent);\n }\n }\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n .bg-green-500 {\n background-color: var(--color-green-500);\n }\n .bg-green-600 {\n background-color: var(--color-green-600);\n }\n .bg-indigo-50 {\n background-color: var(--color-indigo-50);\n }\n .bg-indigo-50\\/70 {\n background-color: color-mix(in srgb, oklch(96.2% 0.018 272.314) 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-50) 70%, transparent);\n }\n }\n .bg-indigo-100 {\n background-color: var(--color-indigo-100);\n }\n .bg-indigo-500 {\n background-color: var(--color-indigo-500);\n }\n .bg-muted {\n background-color: var(--color-muted);\n }\n .bg-muted-foreground {\n background-color: var(--color-muted-foreground);\n }\n .bg-muted\\/20 {\n background-color: color-mix(in srgb, #f7f7f6 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 20%, transparent);\n }\n }\n .bg-muted\\/30 {\n background-color: color-mix(in srgb, #f7f7f6 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 30%, transparent);\n }\n }\n .bg-muted\\/40 {\n background-color: color-mix(in srgb, #f7f7f6 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 40%, transparent);\n }\n }\n .bg-muted\\/50 {\n background-color: color-mix(in srgb, #f7f7f6 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n .bg-muted\\/70 {\n background-color: color-mix(in srgb, #f7f7f6 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 70%, transparent);\n }\n }\n .bg-neutral-10 {\n background-color: var(--color-neutral-10);\n }\n .bg-neutral-20 {\n background-color: var(--color-neutral-20);\n }\n .bg-neutral-30 {\n background-color: var(--color-neutral-30);\n }\n .bg-neutral-40 {\n background-color: var(--color-neutral-40);\n }\n .bg-neutral-50 {\n background-color: var(--color-neutral-50);\n }\n .bg-neutral-60 {\n background-color: var(--color-neutral-60);\n }\n .bg-neutral-70 {\n background-color: var(--color-neutral-70);\n }\n .bg-neutral-80 {\n background-color: var(--color-neutral-80);\n }\n .bg-neutral-90 {\n background-color: var(--color-neutral-90);\n }\n .bg-neutral-100 {\n background-color: var(--color-neutral-100);\n }\n .bg-neutral-200 {\n background-color: var(--color-neutral-200);\n }\n .bg-neutral-800 {\n background-color: var(--color-neutral-800);\n }\n .bg-orange-10 {\n background-color: var(--color-orange-10);\n }\n .bg-orange-20 {\n background-color: var(--color-orange-20);\n }\n .bg-orange-30 {\n background-color: var(--color-orange-30);\n }\n .bg-orange-40 {\n background-color: var(--color-orange-40);\n }\n .bg-orange-50 {\n background-color: var(--color-orange-50);\n }\n .bg-orange-60 {\n background-color: var(--color-orange-60);\n }\n .bg-orange-70 {\n background-color: var(--color-orange-70);\n }\n .bg-orange-80 {\n background-color: var(--color-orange-80);\n }\n .bg-orange-90 {\n background-color: var(--color-orange-90);\n }\n .bg-orange-100 {\n background-color: var(--color-orange-100);\n }\n .bg-orange-400 {\n background-color: var(--color-orange-400);\n }\n .bg-orange-500 {\n background-color: var(--color-orange-500);\n }\n .bg-orange-600 {\n background-color: var(--color-orange-600);\n }\n .bg-pink-600 {\n background-color: var(--color-pink-600);\n }\n .bg-primary {\n background-color: var(--color-primary);\n }\n .bg-primary\\/5 {\n background-color: color-mix(in srgb, #18181b 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 5%, transparent);\n }\n }\n .bg-primary\\/10 {\n background-color: color-mix(in srgb, #18181b 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n .bg-purple-50 {\n background-color: var(--color-purple-50);\n }\n .bg-purple-100 {\n background-color: var(--color-purple-100);\n }\n .bg-purple-500 {\n background-color: var(--color-purple-500);\n }\n .bg-purple-600 {\n background-color: var(--color-purple-600);\n }\n .bg-red-50 {\n background-color: var(--color-red-50);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-red-500 {\n background-color: var(--color-red-500);\n }\n .bg-red-600 {\n background-color: var(--color-red-600);\n }\n .bg-rose-50 {\n background-color: var(--color-rose-50);\n }\n .bg-rose-500 {\n background-color: var(--color-rose-500);\n }\n .bg-secondary {\n background-color: var(--color-secondary);\n }\n .bg-sky-500 {\n background-color: var(--color-sky-500);\n }\n .bg-sky-600 {\n background-color: var(--color-sky-600);\n }\n .bg-slate-50 {\n background-color: var(--color-slate-50);\n }\n .bg-slate-50\\/60 {\n background-color: color-mix(in srgb, oklch(98.4% 0.003 247.858) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-slate-50) 60%, transparent);\n }\n }\n .bg-slate-50\\/70 {\n background-color: color-mix(in srgb, oklch(98.4% 0.003 247.858) 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-slate-50) 70%, transparent);\n }\n }\n .bg-slate-100 {\n background-color: var(--color-slate-100);\n }\n .bg-slate-200 {\n background-color: var(--color-slate-200);\n }\n .bg-slate-700 {\n background-color: var(--color-slate-700);\n }\n .bg-slate-900 {\n background-color: var(--color-slate-900);\n }\n .bg-slate-900\\/20 {\n background-color: color-mix(in srgb, oklch(20.8% 0.042 265.755) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-slate-900) 20%, transparent);\n }\n }\n .bg-teal-50 {\n background-color: var(--color-teal-50);\n }\n .bg-teal-500 {\n background-color: var(--color-teal-500);\n }\n .bg-teal-600 {\n background-color: var(--color-teal-600);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-violet-50 {\n background-color: var(--color-violet-50);\n }\n .bg-violet-100 {\n background-color: var(--color-violet-100);\n }\n .bg-violet-200 {\n background-color: var(--color-violet-200);\n }\n .bg-violet-500 {\n background-color: var(--color-violet-500);\n }\n .bg-violet-600 {\n background-color: var(--color-violet-600);\n }\n .bg-violet-700 {\n background-color: var(--color-violet-700);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-white\\/5 {\n background-color: color-mix(in srgb, #fff 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 5%, transparent);\n }\n }\n .bg-white\\/10 {\n background-color: color-mix(in srgb, #fff 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 10%, transparent);\n }\n }\n .bg-white\\/20 {\n background-color: color-mix(in srgb, #fff 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 20%, transparent);\n }\n }\n .bg-white\\/90 {\n background-color: color-mix(in srgb, #fff 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 90%, transparent);\n }\n }\n .bg-yellow-50 {\n background-color: var(--color-yellow-50);\n }\n .bg-yellow-100 {\n background-color: var(--color-yellow-100);\n }\n .bg-yellow-200 {\n background-color: var(--color-yellow-200);\n }\n .bg-yellow-500 {\n background-color: var(--color-yellow-500);\n }\n .bg-yellow-600 {\n background-color: var(--color-yellow-600);\n }\n .bg-zinc-200 {\n background-color: var(--color-zinc-200);\n }\n .bg-zinc-300 {\n background-color: var(--color-zinc-300);\n }\n .bg-zinc-900 {\n background-color: var(--color-zinc-900);\n }\n .bg-linear-to-r {\n --tw-gradient-position: to right;\n @supports (background-image: linear-gradient(in lab, red, red)) {\n --tw-gradient-position: to right in oklab;\n }\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-b {\n --tw-gradient-position: to bottom in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-br {\n --tw-gradient-position: to bottom right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-l {\n --tw-gradient-position: to left in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-r {\n --tw-gradient-position: to right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-t {\n --tw-gradient-position: to top in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-\\[linear-gradient\\(90deg\\,\\#FF0000\\,\\#FFFF00\\,\\#00FF00\\,\\#00FFFF\\,\\#0000FF\\,\\#FF00FF\\,\\#FF0000\\)\\] {\n background-image: linear-gradient(90deg,#FF0000,#FFFF00,#00FF00,#00FFFF,#0000FF,#FF00FF,#FF0000);\n }\n .bg-\\[linear-gradient\\(135deg\\,\\#0d1b2a\\,\\#1a3050\\)\\] {\n background-image: linear-gradient(135deg,#0d1b2a,#1a3050);\n }\n .bg-\\[linear-gradient\\(135deg\\,\\#0d1b2a_0\\%\\,\\#1a2e4a_100\\%\\)\\] {\n background-image: linear-gradient(135deg,#0d1b2a 0%,#1a2e4a 100%);\n }\n .bg-\\[linear-gradient\\(160deg\\,\\#07111f_0\\%\\,\\#0c1e3a_55\\%\\,\\#060e1a_100\\%\\)\\] {\n background-image: linear-gradient(160deg,#07111f 0%,#0c1e3a 55%,#060e1a 100%);\n }\n .bg-\\[linear-gradient\\(160deg\\,\\#07111f_0\\%\\,\\#0d2040_60\\%\\,\\#060e1a_100\\%\\)\\] {\n background-image: linear-gradient(160deg,#07111f 0%,#0d2040 60%,#060e1a 100%);\n }\n .bg-\\[radial-gradient\\(circle\\,\\#cbd5e1_1px\\,transparent_1px\\)\\] {\n background-image: radial-gradient(circle,#cbd5e1 1px,transparent 1px);\n }\n .bg-\\[repeating-linear-gradient\\(-45deg\\,var\\(--card\\)\\,var\\(--card\\)_5px\\,var\\(--card2\\)_5px\\,var\\(--card2\\)_10px\\)\\] {\n background-image: repeating-linear-gradient(-45deg,var(--card),var(--card) 5px,var(--card2) 5px,var(--card2) 10px);\n }\n .bg-none {\n background-image: none;\n }\n .from-\\[\\#2B5876\\] {\n --tw-gradient-from: #2B5876;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-\\[\\#a78bfa\\] {\n --tw-gradient-from: #a78bfa;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-\\[\\#c084fc\\] {\n --tw-gradient-from: #c084fc;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-\\[\\#e76d4e\\] {\n --tw-gradient-from: #e76d4e;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-\\[\\#f5fdf9\\] {\n --tw-gradient-from: #f5fdf9;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-\\[\\#fdba74\\] {\n --tw-gradient-from: #fdba74;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-blue-50 {\n --tw-gradient-from: var(--color-blue-50);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-cyan-500 {\n --tw-gradient-from: var(--color-cyan-500);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-emerald-50 {\n --tw-gradient-from: var(--color-emerald-50);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-slate-950 {\n --tw-gradient-from: var(--color-slate-950);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-teal-400 {\n --tw-gradient-from: var(--color-teal-400);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-transparent {\n --tw-gradient-from: transparent;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-white {\n --tw-gradient-from: var(--color-white);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-white\\/40 {\n --tw-gradient-from: color-mix(in srgb, #fff 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--color-white) 40%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .via-cyan-950 {\n --tw-gradient-via: var(--color-cyan-950);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-white {\n --tw-gradient-via: var(--color-white);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .to-\\[\\#4E4376\\] {\n --tw-gradient-to: #4E4376;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-\\[\\#818cf8\\] {\n --tw-gradient-to: #818cf8;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-\\[\\#6366f1\\] {\n --tw-gradient-to: #6366f1;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-\\[\\#f6c344\\] {\n --tw-gradient-to: #f6c344;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-\\[\\#f472b6\\] {\n --tw-gradient-to: #f472b6;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-black\\/50 {\n --tw-gradient-to: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-blue-500 {\n --tw-gradient-to: var(--color-blue-500);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-50 {\n --tw-gradient-to: var(--color-indigo-50);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-50\\/40 {\n --tw-gradient-to: color-mix(in srgb, oklch(96.2% 0.018 272.314) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--color-indigo-50) 40%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-slate-950 {\n --tw-gradient-to: var(--color-slate-950);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-transparent {\n --tw-gradient-to: transparent;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-white {\n --tw-gradient-to: var(--color-white);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-yellow-500\\/40 {\n --tw-gradient-to: color-mix(in srgb, oklch(79.5% 0.184 86.047) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--color-yellow-500) 40%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .bg-\\[length\\:24px_24px\\] {\n background-size: 24px 24px;\n }\n .bg-cover {\n background-size: cover;\n }\n .bg-clip-text {\n background-clip: text;\n }\n .bg-center {\n background-position: center;\n }\n .bg-no-repeat {\n background-repeat: no-repeat;\n }\n .fill-\\[var\\(--b-tooltip-bg\\)\\] {\n fill: var(--b-tooltip-bg);\n }\n .fill-amber-400 {\n fill: var(--color-amber-400);\n }\n .fill-blue-500 {\n fill: var(--color-blue-500);\n }\n .fill-card {\n fill: var(--color-card);\n }\n .fill-current {\n fill: currentcolor;\n }\n .fill-green-500 {\n fill: var(--color-green-500);\n }\n .fill-primary {\n fill: var(--color-primary);\n }\n .fill-red-500 {\n fill: var(--color-red-500);\n }\n .fill-slate-500 {\n fill: var(--color-slate-500);\n }\n .fill-slate-900 {\n fill: var(--color-slate-900);\n }\n .stroke-card {\n stroke: var(--color-card);\n }\n .stroke-slate-500 {\n stroke: var(--color-slate-500);\n }\n .object-contain {\n object-fit: contain;\n }\n .object-cover {\n object-fit: cover;\n }\n .object-center {\n object-position: center;\n }\n .\\!p-0 {\n padding: calc(var(--spacing) * 0) !important;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-0\\.5 {\n padding: calc(var(--spacing) * 0.5);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-3\\.5 {\n padding: calc(var(--spacing) * 3.5);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-7 {\n padding: calc(var(--spacing) * 7);\n }\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n .p-9 {\n padding: calc(var(--spacing) * 9);\n }\n .p-10 {\n padding: calc(var(--spacing) * 10);\n }\n .p-12 {\n padding: calc(var(--spacing) * 12);\n }\n .p-16 {\n padding: calc(var(--spacing) * 16);\n }\n .p-1234 {\n padding: calc(var(--spacing) * 1234);\n }\n .p-4321 {\n padding: calc(var(--spacing) * 4321);\n }\n .p-9999 {\n padding: calc(var(--spacing) * 9999);\n }\n .p-\\[2px\\] {\n padding: 2px;\n }\n .p-\\[3px\\] {\n padding: 3px;\n }\n .p-\\[4px\\] {\n padding: 4px;\n }\n .p-\\[6px\\] {\n padding: 6px;\n }\n .p-\\[8px\\] {\n padding: 8px;\n }\n .p-\\[8px_10px\\] {\n padding: 8px 10px;\n }\n .p-\\[9\\.7px\\] {\n padding: 9.7px;\n }\n .p-\\[9px\\] {\n padding: 9px;\n }\n .p-\\[9px_10px\\] {\n padding: 9px 10px;\n }\n .p-\\[10px\\] {\n padding: 10px;\n }\n .p-\\[12px\\] {\n padding: 12px;\n }\n .p-\\[14px\\] {\n padding: 14px;\n }\n .p-\\[16px\\] {\n padding: 16px;\n }\n .p-\\[17px\\] {\n padding: 17px;\n }\n .p-\\[18px\\] {\n padding: 18px;\n }\n .p-\\[20px\\] {\n padding: 20px;\n }\n .p-\\[22px\\] {\n padding: 22px;\n }\n .p-\\[24px\\] {\n padding: 24px;\n }\n .p-\\[26px\\] {\n padding: 26px;\n }\n .px-0 {\n padding-inline: calc(var(--spacing) * 0);\n }\n .px-0\\.5 {\n padding-inline: calc(var(--spacing) * 0.5);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-3\\.5 {\n padding-inline: calc(var(--spacing) * 3.5);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-5 {\n padding-inline: calc(var(--spacing) * 5);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .px-7 {\n padding-inline: calc(var(--spacing) * 7);\n }\n .px-8 {\n padding-inline: calc(var(--spacing) * 8);\n }\n .px-9 {\n padding-inline: calc(var(--spacing) * 9);\n }\n .px-10 {\n padding-inline: calc(var(--spacing) * 10);\n }\n .px-11 {\n padding-inline: calc(var(--spacing) * 11);\n }\n .px-123 {\n padding-inline: calc(var(--spacing) * 123);\n }\n .px-\\[2px\\] {\n padding-inline: 2px;\n }\n .px-\\[4px\\] {\n padding-inline: 4px;\n }\n .px-\\[5px\\] {\n padding-inline: 5px;\n }\n .px-\\[6px\\] {\n padding-inline: 6px;\n }\n .px-\\[7px\\] {\n padding-inline: 7px;\n }\n .px-\\[8px\\] {\n padding-inline: 8px;\n }\n .px-\\[9px\\] {\n padding-inline: 9px;\n }\n .px-\\[10px\\] {\n padding-inline: 10px;\n }\n .px-\\[11px\\] {\n padding-inline: 11px;\n }\n .px-\\[12px\\] {\n padding-inline: 12px;\n }\n .px-\\[13px\\] {\n padding-inline: 13px;\n }\n .px-\\[14px\\] {\n padding-inline: 14px;\n }\n .px-\\[15px\\] {\n padding-inline: 15px;\n }\n .px-\\[16px\\] {\n padding-inline: 16px;\n }\n .px-\\[17px\\] {\n padding-inline: 17px;\n }\n .px-\\[18px\\] {\n padding-inline: 18px;\n }\n .px-\\[20px\\] {\n padding-inline: 20px;\n }\n .px-\\[22px\\] {\n padding-inline: 22px;\n }\n .px-\\[26px\\] {\n padding-inline: 26px;\n }\n .px-\\[30px\\] {\n padding-inline: 30px;\n }\n .px-\\[40px\\] {\n padding-inline: 40px;\n }\n .py-0 {\n padding-block: calc(var(--spacing) * 0);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-3\\.5 {\n padding-block: calc(var(--spacing) * 3.5);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-5 {\n padding-block: calc(var(--spacing) * 5);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-9 {\n padding-block: calc(var(--spacing) * 9);\n }\n .py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .py-14 {\n padding-block: calc(var(--spacing) * 14);\n }\n .py-16 {\n padding-block: calc(var(--spacing) * 16);\n }\n .py-20 {\n padding-block: calc(var(--spacing) * 20);\n }\n .py-24 {\n padding-block: calc(var(--spacing) * 24);\n }\n .py-\\[1\\.5px\\] {\n padding-block: 1.5px;\n }\n .py-\\[1px\\] {\n padding-block: 1px;\n }\n .py-\\[2\\.5px\\] {\n padding-block: 2.5px;\n }\n .py-\\[2px\\] {\n padding-block: 2px;\n }\n .py-\\[3px\\] {\n padding-block: 3px;\n }\n .py-\\[4\\.5px\\] {\n padding-block: 4.5px;\n }\n .py-\\[4px\\] {\n padding-block: 4px;\n }\n .py-\\[5px\\] {\n padding-block: 5px;\n }\n .py-\\[6\\.5px\\] {\n padding-block: 6.5px;\n }\n .py-\\[6px\\] {\n padding-block: 6px;\n }\n .py-\\[7px\\] {\n padding-block: 7px;\n }\n .py-\\[8px\\] {\n padding-block: 8px;\n }\n .py-\\[9px\\] {\n padding-block: 9px;\n }\n .py-\\[10\\.5px\\] {\n padding-block: 10.5px;\n }\n .py-\\[10px\\] {\n padding-block: 10px;\n }\n .py-\\[11px\\] {\n padding-block: 11px;\n }\n .py-\\[12px\\] {\n padding-block: 12px;\n }\n .py-\\[13px\\] {\n padding-block: 13px;\n }\n .py-\\[14px\\] {\n padding-block: 14px;\n }\n .py-\\[15px\\] {\n padding-block: 15px;\n }\n .py-\\[16px\\] {\n padding-block: 16px;\n }\n .py-\\[18px\\] {\n padding-block: 18px;\n }\n .py-\\[20px\\] {\n padding-block: 20px;\n }\n .py-\\[24px\\] {\n padding-block: 24px;\n }\n .py-\\[28px\\] {\n padding-block: 28px;\n }\n .py-\\[30px\\] {\n padding-block: 30px;\n }\n .py-\\[32px\\] {\n padding-block: 32px;\n }\n .py-\\[40px\\] {\n padding-block: 40px;\n }\n .py-\\[46px\\] {\n padding-block: 46px;\n }\n .py-\\[48px\\] {\n padding-block: 48px;\n }\n .py-\\[64px\\] {\n padding-block: 64px;\n }\n .py-\\[80px\\] {\n padding-block: 80px;\n }\n .py-px {\n padding-block: 1px;\n }\n .ps-0 {\n padding-inline-start: calc(var(--spacing) * 0);\n }\n .pt-0 {\n padding-top: calc(var(--spacing) * 0);\n }\n .pt-0\\.5 {\n padding-top: calc(var(--spacing) * 0.5);\n }\n .pt-1 {\n padding-top: calc(var(--spacing) * 1);\n }\n .pt-1\\.5 {\n padding-top: calc(var(--spacing) * 1.5);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-2\\.5 {\n padding-top: calc(var(--spacing) * 2.5);\n }\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n .pt-3\\.5 {\n padding-top: calc(var(--spacing) * 3.5);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-5 {\n padding-top: calc(var(--spacing) * 5);\n }\n .pt-6 {\n padding-top: calc(var(--spacing) * 6);\n }\n .pt-7 {\n padding-top: calc(var(--spacing) * 7);\n }\n .pt-8 {\n padding-top: calc(var(--spacing) * 8);\n }\n .pt-10 {\n padding-top: calc(var(--spacing) * 10);\n }\n .pt-11 {\n padding-top: calc(var(--spacing) * 11);\n }\n .pt-12 {\n padding-top: calc(var(--spacing) * 12);\n }\n .pt-14 {\n padding-top: calc(var(--spacing) * 14);\n }\n .pt-16 {\n padding-top: calc(var(--spacing) * 16);\n }\n .pt-24 {\n padding-top: calc(var(--spacing) * 24);\n }\n .pt-\\[2px\\] {\n padding-top: 2px;\n }\n .pt-\\[3px\\] {\n padding-top: 3px;\n }\n .pt-\\[4px\\] {\n padding-top: 4px;\n }\n .pt-\\[5px\\] {\n padding-top: 5px;\n }\n .pt-\\[6px\\] {\n padding-top: 6px;\n }\n .pt-\\[8px\\] {\n padding-top: 8px;\n }\n .pt-\\[10px\\] {\n padding-top: 10px;\n }\n .pt-\\[11px\\] {\n padding-top: 11px;\n }\n .pt-\\[14px\\] {\n padding-top: 14px;\n }\n .pt-\\[18px\\] {\n padding-top: 18px;\n }\n .pt-\\[22px\\] {\n padding-top: 22px;\n }\n .pt-\\[26px\\] {\n padding-top: 26px;\n }\n .pr-0 {\n padding-right: calc(var(--spacing) * 0);\n }\n .pr-1 {\n padding-right: calc(var(--spacing) * 1);\n }\n .pr-1\\.5 {\n padding-right: calc(var(--spacing) * 1.5);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-3 {\n padding-right: calc(var(--spacing) * 3);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-5 {\n padding-right: calc(var(--spacing) * 5);\n }\n .pr-6 {\n padding-right: calc(var(--spacing) * 6);\n }\n .pr-8 {\n padding-right: calc(var(--spacing) * 8);\n }\n .pr-9 {\n padding-right: calc(var(--spacing) * 9);\n }\n .pr-10 {\n padding-right: calc(var(--spacing) * 10);\n }\n .pr-\\[6px\\] {\n padding-right: 6px;\n }\n .pr-\\[8px\\] {\n padding-right: 8px;\n }\n .pr-\\[10px\\] {\n padding-right: 10px;\n }\n .pr-\\[12px\\] {\n padding-right: 12px;\n }\n .pr-\\[14px\\] {\n padding-right: 14px;\n }\n .pr-\\[16px\\] {\n padding-right: 16px;\n }\n .pr-\\[17px\\] {\n padding-right: 17px;\n }\n .pr-\\[40px\\] {\n padding-right: 40px;\n }\n .pb-0 {\n padding-bottom: calc(var(--spacing) * 0);\n }\n .pb-0\\.5 {\n padding-bottom: calc(var(--spacing) * 0.5);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-1\\.5 {\n padding-bottom: calc(var(--spacing) * 1.5);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-2\\.5 {\n padding-bottom: calc(var(--spacing) * 2.5);\n }\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n .pb-3\\.5 {\n padding-bottom: calc(var(--spacing) * 3.5);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-5 {\n padding-bottom: calc(var(--spacing) * 5);\n }\n .pb-6 {\n padding-bottom: calc(var(--spacing) * 6);\n }\n .pb-7 {\n padding-bottom: calc(var(--spacing) * 7);\n }\n .pb-8 {\n padding-bottom: calc(var(--spacing) * 8);\n }\n .pb-\\[3px\\] {\n padding-bottom: 3px;\n }\n .pb-\\[4px\\] {\n padding-bottom: 4px;\n }\n .pb-\\[6px\\] {\n padding-bottom: 6px;\n }\n .pb-\\[8px\\] {\n padding-bottom: 8px;\n }\n .pb-\\[10px\\] {\n padding-bottom: 10px;\n }\n .pb-\\[11px\\] {\n padding-bottom: 11px;\n }\n .pb-\\[12px\\] {\n padding-bottom: 12px;\n }\n .pb-\\[13px\\] {\n padding-bottom: 13px;\n }\n .pb-\\[14px\\] {\n padding-bottom: 14px;\n }\n .pb-\\[16px\\] {\n padding-bottom: 16px;\n }\n .pb-\\[18px\\] {\n padding-bottom: 18px;\n }\n .pb-\\[22px\\] {\n padding-bottom: 22px;\n }\n .pb-\\[24px\\] {\n padding-bottom: 24px;\n }\n .pb-\\[30px\\] {\n padding-bottom: 30px;\n }\n .pb-\\[40px\\] {\n padding-bottom: 40px;\n }\n .pl-0 {\n padding-left: calc(var(--spacing) * 0);\n }\n .pl-0\\.5 {\n padding-left: calc(var(--spacing) * 0.5);\n }\n .pl-1 {\n padding-left: calc(var(--spacing) * 1);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n .pl-7 {\n padding-left: calc(var(--spacing) * 7);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .pl-9 {\n padding-left: calc(var(--spacing) * 9);\n }\n .pl-10 {\n padding-left: calc(var(--spacing) * 10);\n }\n .pl-11 {\n padding-left: calc(var(--spacing) * 11);\n }\n .pl-14 {\n padding-left: calc(var(--spacing) * 14);\n }\n .pl-\\[2px\\] {\n padding-left: 2px;\n }\n .pl-\\[4px\\] {\n padding-left: 4px;\n }\n .pl-\\[6px\\] {\n padding-left: 6px;\n }\n .pl-\\[9px\\] {\n padding-left: 9px;\n }\n .pl-\\[10px\\] {\n padding-left: 10px;\n }\n .pl-\\[11px\\] {\n padding-left: 11px;\n }\n .pl-\\[16px\\] {\n padding-left: 16px;\n }\n .pl-\\[17px\\] {\n padding-left: 17px;\n }\n .pl-\\[20px\\] {\n padding-left: 20px;\n }\n .pl-\\[28px\\] {\n padding-left: 28px;\n }\n .pl-\\[32px\\] {\n padding-left: 32px;\n }\n .pl-\\[42px\\] {\n padding-left: 42px;\n }\n .pl-\\[84px\\] {\n padding-left: 84px;\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .text-start {\n text-align: start;\n }\n .align-baseline {\n vertical-align: baseline;\n }\n .align-middle {\n vertical-align: middle;\n }\n .align-top {\n vertical-align: top;\n }\n .font-\\[inherit\\] {\n font-family: inherit;\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .font-sans {\n font-family: var(--font-sans);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n .text-5xl {\n font-size: var(--text-5xl);\n line-height: var(--tw-leading, var(--text-5xl--line-height));\n }\n .text-6xl {\n font-size: var(--text-6xl);\n line-height: var(--tw-leading, var(--text-6xl--line-height));\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-sm\\/6 {\n font-size: var(--text-sm);\n line-height: calc(var(--spacing) * 6);\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xl\\/7 {\n font-size: var(--text-xl);\n line-height: calc(var(--spacing) * 7);\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-xs\\/5 {\n font-size: var(--text-xs);\n line-height: calc(var(--spacing) * 5);\n }\n .text-\\[0\\.7rem\\] {\n font-size: 0.7rem;\n }\n .text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n }\n .text-\\[0\\.56rem\\] {\n font-size: 0.56rem;\n }\n .text-\\[0\\.85em\\] {\n font-size: 0.85em;\n }\n .text-\\[8\\.5px\\] {\n font-size: 8.5px;\n }\n .text-\\[8px\\] {\n font-size: 8px;\n }\n .text-\\[9\\.5px\\] {\n font-size: 9.5px;\n }\n .text-\\[9px\\] {\n font-size: 9px;\n }\n .text-\\[10\\.5px\\] {\n font-size: 10.5px;\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .text-\\[11\\.5px\\] {\n font-size: 11.5px;\n }\n .text-\\[11px\\] {\n font-size: 11px;\n }\n .text-\\[12\\.5px\\] {\n font-size: 12.5px;\n }\n .text-\\[12px\\] {\n font-size: 12px;\n }\n .text-\\[13\\.5px\\] {\n font-size: 13.5px;\n }\n .text-\\[13px\\] {\n font-size: 13px;\n }\n .text-\\[14px\\] {\n font-size: 14px;\n }\n .text-\\[15px\\] {\n font-size: 15px;\n }\n .text-\\[16px\\] {\n font-size: 16px;\n }\n .text-\\[17px\\] {\n font-size: 17px;\n }\n .text-\\[18px\\] {\n font-size: 18px;\n }\n .text-\\[20px\\] {\n font-size: 20px;\n }\n .text-\\[21px\\] {\n font-size: 21px;\n }\n .text-\\[22px\\] {\n font-size: 22px;\n }\n .text-\\[23px\\] {\n font-size: 23px;\n }\n .text-\\[24px\\] {\n font-size: 24px;\n }\n .text-\\[26px\\] {\n font-size: 26px;\n }\n .text-\\[28px\\] {\n font-size: 28px;\n }\n .text-\\[30px\\] {\n font-size: 30px;\n }\n .text-\\[32px\\] {\n font-size: 32px;\n }\n .text-\\[48px\\] {\n font-size: 48px;\n }\n .leading-1 {\n --tw-leading: calc(var(--spacing) * 1);\n line-height: calc(var(--spacing) * 1);\n }\n .leading-4 {\n --tw-leading: calc(var(--spacing) * 4);\n line-height: calc(var(--spacing) * 4);\n }\n .leading-5 {\n --tw-leading: calc(var(--spacing) * 5);\n line-height: calc(var(--spacing) * 5);\n }\n .leading-6 {\n --tw-leading: calc(var(--spacing) * 6);\n line-height: calc(var(--spacing) * 6);\n }\n .leading-7 {\n --tw-leading: calc(var(--spacing) * 7);\n line-height: calc(var(--spacing) * 7);\n }\n .leading-8 {\n --tw-leading: calc(var(--spacing) * 8);\n line-height: calc(var(--spacing) * 8);\n }\n .leading-9 {\n --tw-leading: calc(var(--spacing) * 9);\n line-height: calc(var(--spacing) * 9);\n }\n .leading-\\[1\\.1\\] {\n --tw-leading: 1.1;\n line-height: 1.1;\n }\n .leading-\\[1\\.2\\] {\n --tw-leading: 1.2;\n line-height: 1.2;\n }\n .leading-\\[1\\.3\\] {\n --tw-leading: 1.3;\n line-height: 1.3;\n }\n .leading-\\[1\\.5\\] {\n --tw-leading: 1.5;\n line-height: 1.5;\n }\n .leading-\\[1\\.6\\] {\n --tw-leading: 1.6;\n line-height: 1.6;\n }\n .leading-\\[1\\.7\\] {\n --tw-leading: 1.7;\n line-height: 1.7;\n }\n .leading-\\[1\\.08\\] {\n --tw-leading: 1.08;\n line-height: 1.08;\n }\n .leading-\\[1\\.12\\] {\n --tw-leading: 1.12;\n line-height: 1.12;\n }\n .leading-\\[1\\.15\\] {\n --tw-leading: 1.15;\n line-height: 1.15;\n }\n .leading-\\[1\\.25\\] {\n --tw-leading: 1.25;\n line-height: 1.25;\n }\n .leading-\\[1\\.35\\] {\n --tw-leading: 1.35;\n line-height: 1.35;\n }\n .leading-\\[1\\.55\\] {\n --tw-leading: 1.55;\n line-height: 1.55;\n }\n .leading-\\[1\\.65\\] {\n --tw-leading: 1.65;\n line-height: 1.65;\n }\n .leading-\\[1\\.75\\] {\n --tw-leading: 1.75;\n line-height: 1.75;\n }\n .leading-\\[1\\.95\\] {\n --tw-leading: 1.95;\n line-height: 1.95;\n }\n .leading-\\[1\\] {\n --tw-leading: 1;\n line-height: 1;\n }\n .leading-\\[18px\\] {\n --tw-leading: 18px;\n line-height: 18px;\n }\n .leading-\\[21px\\] {\n --tw-leading: 21px;\n line-height: 21px;\n }\n .leading-\\[24px\\] {\n --tw-leading: 24px;\n line-height: 24px;\n }\n .leading-\\[32px\\] {\n --tw-leading: 32px;\n line-height: 32px;\n }\n .leading-\\[36px\\] {\n --tw-leading: 36px;\n line-height: 36px;\n }\n .leading-\\[40px\\] {\n --tw-leading: 40px;\n line-height: 40px;\n }\n .leading-\\[56px\\] {\n --tw-leading: 56px;\n line-height: 56px;\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .leading-normal {\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-snug {\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n .font-\\[400\\] {\n --tw-font-weight: 400;\n font-weight: 400;\n }\n .font-\\[450\\] {\n --tw-font-weight: 450;\n font-weight: 450;\n }\n .font-\\[500\\] {\n --tw-font-weight: 500;\n font-weight: 500;\n }\n .font-black {\n --tw-font-weight: var(--font-weight-black);\n font-weight: var(--font-weight-black);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-extrabold {\n --tw-font-weight: var(--font-weight-extrabold);\n font-weight: var(--font-weight-extrabold);\n }\n .font-light {\n --tw-font-weight: var(--font-weight-light);\n font-weight: var(--font-weight-light);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-\\[-0\\.01em\\] {\n --tw-tracking: -0.01em;\n letter-spacing: -0.01em;\n }\n .tracking-\\[-0\\.02em\\] {\n --tw-tracking: -0.02em;\n letter-spacing: -0.02em;\n }\n .tracking-\\[-0\\.2px\\] {\n --tw-tracking: -0.2px;\n letter-spacing: -0.2px;\n }\n .tracking-\\[-0\\.5px\\] {\n --tw-tracking: -0.5px;\n letter-spacing: -0.5px;\n }\n .tracking-\\[-0\\.6px\\] {\n --tw-tracking: -0.6px;\n letter-spacing: -0.6px;\n }\n .tracking-\\[-0\\.015em\\] {\n --tw-tracking: -0.015em;\n letter-spacing: -0.015em;\n }\n .tracking-\\[-0\\.028em\\] {\n --tw-tracking: -0.028em;\n letter-spacing: -0.028em;\n }\n .tracking-\\[0\\.01em\\] {\n --tw-tracking: 0.01em;\n letter-spacing: 0.01em;\n }\n .tracking-\\[0\\.1em\\] {\n --tw-tracking: 0.1em;\n letter-spacing: 0.1em;\n }\n .tracking-\\[0\\.02em\\] {\n --tw-tracking: 0.02em;\n letter-spacing: 0.02em;\n }\n .tracking-\\[0\\.03em\\] {\n --tw-tracking: 0.03em;\n letter-spacing: 0.03em;\n }\n .tracking-\\[0\\.04em\\] {\n --tw-tracking: 0.04em;\n letter-spacing: 0.04em;\n }\n .tracking-\\[0\\.4px\\] {\n --tw-tracking: 0.4px;\n letter-spacing: 0.4px;\n }\n .tracking-\\[0\\.05em\\] {\n --tw-tracking: 0.05em;\n letter-spacing: 0.05em;\n }\n .tracking-\\[0\\.06em\\] {\n --tw-tracking: 0.06em;\n letter-spacing: 0.06em;\n }\n .tracking-\\[0\\.6px\\] {\n --tw-tracking: 0.6px;\n letter-spacing: 0.6px;\n }\n .tracking-\\[0\\.07em\\] {\n --tw-tracking: 0.07em;\n letter-spacing: 0.07em;\n }\n .tracking-\\[0\\.08em\\] {\n --tw-tracking: 0.08em;\n letter-spacing: 0.08em;\n }\n .tracking-\\[0\\.09em\\] {\n --tw-tracking: 0.09em;\n letter-spacing: 0.09em;\n }\n .tracking-\\[0\\.10em\\] {\n --tw-tracking: 0.10em;\n letter-spacing: 0.10em;\n }\n .tracking-\\[0\\.11em\\] {\n --tw-tracking: 0.11em;\n letter-spacing: 0.11em;\n }\n .tracking-normal {\n --tw-tracking: var(--tracking-normal);\n letter-spacing: var(--tracking-normal);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .\\[text-wrap\\:wrap\\] {\n text-wrap: wrap;\n }\n .text-balance {\n text-wrap: balance;\n }\n .text-pretty {\n text-wrap: pretty;\n }\n .text-wrap {\n text-wrap: wrap;\n }\n .break-words {\n overflow-wrap: break-word;\n }\n .break-all {\n word-break: break-all;\n }\n .text-ellipsis {\n text-overflow: ellipsis;\n }\n .\\!whitespace-normal {\n white-space: normal !important;\n }\n .whitespace-normal {\n white-space: normal;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .whitespace-pre {\n white-space: pre;\n }\n .whitespace-pre-line {\n white-space: pre-line;\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .\\!text-white {\n color: var(--color-white) !important;\n }\n .text-\\[\\#0d1b2a\\] {\n color: #0d1b2a;\n }\n .text-\\[\\#0f766e\\] {\n color: #0f766e;\n }\n .text-\\[\\#1F1F1F\\] {\n color: #1F1F1F;\n }\n .text-\\[\\#1F9D55\\] {\n color: #1F9D55;\n }\n .text-\\[\\#1FAE9F\\] {\n color: #1FAE9F;\n }\n .text-\\[\\#1d4ed8\\] {\n color: #1d4ed8;\n }\n .text-\\[\\#3b82f6\\] {\n color: #3b82f6;\n }\n .text-\\[\\#4E647F\\] {\n color: #4E647F;\n }\n .text-\\[\\#4b5563\\] {\n color: #4b5563;\n }\n .text-\\[\\#6b7280\\] {\n color: #6b7280;\n }\n .text-\\[\\#7e22ce\\] {\n color: #7e22ce;\n }\n .text-\\[\\#9ca3af\\] {\n color: #9ca3af;\n }\n .text-\\[\\#16a34a\\] {\n color: #16a34a;\n }\n .text-\\[\\#22c55e\\] {\n color: #22c55e;\n }\n .text-\\[\\#94a3b8\\] {\n color: #94a3b8;\n }\n .text-\\[\\#666\\] {\n color: #666;\n }\n .text-\\[\\#2563eb\\] {\n color: #2563eb;\n }\n .text-\\[\\#3763f4\\] {\n color: #3763f4;\n }\n .text-\\[\\#8799AF\\] {\n color: #8799AF;\n }\n .text-\\[\\#09090b\\] {\n color: #09090b;\n }\n .text-\\[\\#18181b\\] {\n color: #18181b;\n }\n .text-\\[\\#64748b\\] {\n color: #64748b;\n }\n .text-\\[\\#71717A\\] {\n color: #71717A;\n }\n .text-\\[\\#71717a\\] {\n color: #71717a;\n }\n .text-\\[\\#92400e\\] {\n color: #92400e;\n }\n .text-\\[\\#111111\\] {\n color: #111111;\n }\n .text-\\[\\#166534\\] {\n color: #166534;\n }\n .text-\\[\\#222831\\] {\n color: #222831;\n }\n .text-\\[\\#334155\\] {\n color: #334155;\n }\n .text-\\[\\#374151\\] {\n color: #374151;\n }\n .text-\\[\\#475569\\] {\n color: #475569;\n }\n .text-\\[\\#979797\\] {\n color: #979797;\n }\n .text-\\[\\#B7791F\\] {\n color: #B7791F;\n }\n .text-\\[\\#D64545\\] {\n color: #D64545;\n }\n .text-\\[\\#d32f2f\\] {\n color: #d32f2f;\n }\n .text-\\[\\#e2e8f0\\] {\n color: #e2e8f0;\n }\n .text-\\[\\#ef4444\\] {\n color: #ef4444;\n }\n .text-\\[color\\:var\\(--dn-fg\\)\\] {\n color: var(--dn-fg);\n }\n .text-\\[color\\:var\\(--ob-fg\\)\\] {\n color: var(--ob-fg);\n }\n .text-\\[rgba\\(17\\,17\\,17\\,0\\.32\\)\\] {\n color: rgba(17,17,17,0.32);\n }\n .text-\\[var\\(--bc-error-color\\,\\#DC2626\\)\\] {\n color: var(--bc-error-color,#DC2626);\n }\n .text-\\[var\\(--bc-link-color\\)\\] {\n color: var(--bc-link-color);\n }\n .text-\\[var\\(--bc-link-color\\,\\#6D28D9\\)\\] {\n color: var(--bc-link-color,#6D28D9);\n }\n .text-\\[var\\(--bc-primary-button-text-color\\)\\] {\n color: var(--bc-primary-button-text-color);\n }\n .text-\\[var\\(--bc-secondary-button-text-color\\)\\] {\n color: var(--bc-secondary-button-text-color);\n }\n .text-\\[var\\(--bc-text-color\\)\\] {\n color: var(--bc-text-color);\n }\n .text-\\[var\\(--bc-text-color\\,\\#18181B\\)\\] {\n color: var(--bc-text-color,#18181B);\n }\n .text-\\[var\\(--ds-text-mid\\)\\] {\n color: var(--ds-text-mid);\n }\n .text-accent {\n color: var(--color-accent);\n }\n .text-accent-foreground {\n color: var(--color-accent-foreground);\n }\n .text-accent\\/80 {\n color: color-mix(in srgb, #f4f4f5 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-accent) 80%, transparent);\n }\n }\n .text-amber-300 {\n color: var(--color-amber-300);\n }\n .text-amber-400 {\n color: var(--color-amber-400);\n }\n .text-amber-500 {\n color: var(--color-amber-500);\n }\n .text-amber-600 {\n color: var(--color-amber-600);\n }\n .text-amber-700 {\n color: var(--color-amber-700);\n }\n .text-amber-800 {\n color: var(--color-amber-800);\n }\n .text-amber-900 {\n color: var(--color-amber-900);\n }\n .text-amber-900\\/90 {\n color: color-mix(in srgb, oklch(41.4% 0.112 45.904) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-amber-900) 90%, transparent);\n }\n }\n .text-background {\n color: var(--color-background);\n }\n .text-black {\n color: var(--color-black);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-blue-500 {\n color: var(--color-blue-500);\n }\n .text-blue-600 {\n color: var(--color-blue-600);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n .text-blue-900 {\n color: var(--color-blue-900);\n }\n .text-card-foreground {\n color: var(--color-card-foreground);\n }\n .text-current {\n color: currentcolor;\n }\n .text-destructive {\n color: var(--color-destructive);\n }\n .text-destructive-foreground {\n color: var(--color-destructive-foreground);\n }\n .text-destructive\\/70 {\n color: color-mix(in srgb, #dc2626 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-destructive) 70%, transparent);\n }\n }\n .text-destructive\\/80 {\n color: color-mix(in srgb, #dc2626 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-destructive) 80%, transparent);\n }\n }\n .text-emerald-300 {\n color: var(--color-emerald-300);\n }\n .text-emerald-500 {\n color: var(--color-emerald-500);\n }\n .text-emerald-600 {\n color: var(--color-emerald-600);\n }\n .text-emerald-700 {\n color: var(--color-emerald-700);\n }\n .text-gray-100 {\n color: var(--color-gray-100);\n }\n .text-gray-300 {\n color: var(--color-gray-300);\n }\n .text-gray-400 {\n color: var(--color-gray-400);\n }\n .text-gray-500 {\n color: var(--color-gray-500);\n }\n .text-gray-600 {\n color: var(--color-gray-600);\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .text-gray-800 {\n color: var(--color-gray-800);\n }\n .text-gray-900 {\n color: var(--color-gray-900);\n }\n .text-green-400 {\n color: var(--color-green-400);\n }\n .text-green-500 {\n color: var(--color-green-500);\n }\n .text-green-600 {\n color: var(--color-green-600);\n }\n .text-green-700 {\n color: var(--color-green-700);\n }\n .text-green-800 {\n color: var(--color-green-800);\n }\n .text-green-900 {\n color: var(--color-green-900);\n }\n .text-indigo-500 {\n color: var(--color-indigo-500);\n }\n .text-indigo-600 {\n color: var(--color-indigo-600);\n }\n .text-indigo-700 {\n color: var(--color-indigo-700);\n }\n .text-inherit {\n color: inherit;\n }\n .text-input {\n color: var(--color-input);\n }\n .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n .text-muted-foreground\\/60 {\n color: color-mix(in srgb, #74716e 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-muted-foreground) 60%, transparent);\n }\n }\n .text-muted-foreground\\/70 {\n color: color-mix(in srgb, #74716e 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-muted-foreground) 70%, transparent);\n }\n }\n .text-neutral-70 {\n color: var(--color-neutral-70);\n }\n .text-neutral-300 {\n color: var(--color-neutral-300);\n }\n .text-neutral-400 {\n color: var(--color-neutral-400);\n }\n .text-neutral-500 {\n color: var(--color-neutral-500);\n }\n .text-neutral-600 {\n color: var(--color-neutral-600);\n }\n .text-neutral-700 {\n color: var(--color-neutral-700);\n }\n .text-neutral-900 {\n color: var(--color-neutral-900);\n }\n .text-orange-500 {\n color: var(--color-orange-500);\n }\n .text-orange-600 {\n color: var(--color-orange-600);\n }\n .text-orange-700 {\n color: var(--color-orange-700);\n }\n .text-orange-800 {\n color: var(--color-orange-800);\n }\n .text-primary {\n color: var(--color-primary);\n }\n .text-primary-foreground {\n color: var(--color-primary-foreground);\n }\n .text-primary\\/10 {\n color: color-mix(in srgb, #18181b 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n .text-primary\\/40 {\n color: color-mix(in srgb, #18181b 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 40%, transparent);\n }\n }\n .text-primary\\/50 {\n color: color-mix(in srgb, #18181b 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 50%, transparent);\n }\n }\n .text-primary\\/60 {\n color: color-mix(in srgb, #18181b 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 60%, transparent);\n }\n }\n .text-primary\\/70 {\n color: color-mix(in srgb, #18181b 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 70%, transparent);\n }\n }\n .text-purple-500 {\n color: var(--color-purple-500);\n }\n .text-purple-600 {\n color: var(--color-purple-600);\n }\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n .text-purple-800 {\n color: var(--color-purple-800);\n }\n .text-purple-900 {\n color: var(--color-purple-900);\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-red-600 {\n color: var(--color-red-600);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-red-800 {\n color: var(--color-red-800);\n }\n .text-red-900 {\n color: var(--color-red-900);\n }\n .text-rose-500 {\n color: var(--color-rose-500);\n }\n .text-rose-600 {\n color: var(--color-rose-600);\n }\n .text-rose-700 {\n color: var(--color-rose-700);\n }\n .text-secondary-foreground {\n color: var(--color-secondary-foreground);\n }\n .text-sky-700 {\n color: var(--color-sky-700);\n }\n .text-slate-100 {\n color: var(--color-slate-100);\n }\n .text-slate-300 {\n color: var(--color-slate-300);\n }\n .text-slate-400 {\n color: var(--color-slate-400);\n }\n .text-slate-500 {\n color: var(--color-slate-500);\n }\n .text-slate-600 {\n color: var(--color-slate-600);\n }\n .text-slate-700 {\n color: var(--color-slate-700);\n }\n .text-slate-800 {\n color: var(--color-slate-800);\n }\n .text-slate-900 {\n color: var(--color-slate-900);\n }\n .text-slate-950 {\n color: var(--color-slate-950);\n }\n .text-teal-400 {\n color: var(--color-teal-400);\n }\n .text-teal-700 {\n color: var(--color-teal-700);\n }\n .text-teal-900 {\n color: var(--color-teal-900);\n }\n .text-teal-900\\/70 {\n color: color-mix(in srgb, oklch(38.6% 0.063 188.416) 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-900) 70%, transparent);\n }\n }\n .text-teal-900\\/80 {\n color: color-mix(in srgb, oklch(38.6% 0.063 188.416) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-900) 80%, transparent);\n }\n }\n .text-teal-900\\/90 {\n color: color-mix(in srgb, oklch(38.6% 0.063 188.416) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-900) 90%, transparent);\n }\n }\n .text-transparent {\n color: transparent;\n }\n .text-violet-600 {\n color: var(--color-violet-600);\n }\n .text-violet-700 {\n color: var(--color-violet-700);\n }\n .text-violet-800 {\n color: var(--color-violet-800);\n }\n .text-white {\n color: var(--color-white);\n }\n .text-white\\/35 {\n color: color-mix(in srgb, #fff 35%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-white) 35%, transparent);\n }\n }\n .text-white\\/40 {\n color: color-mix(in srgb, #fff 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-white) 40%, transparent);\n }\n }\n .text-white\\/70 {\n color: color-mix(in srgb, #fff 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-white) 70%, transparent);\n }\n }\n .text-yellow-300 {\n color: var(--color-yellow-300);\n }\n .text-yellow-400 {\n color: var(--color-yellow-400);\n }\n .text-yellow-500 {\n color: var(--color-yellow-500);\n }\n .text-yellow-600 {\n color: var(--color-yellow-600);\n }\n .text-yellow-700 {\n color: var(--color-yellow-700);\n }\n .text-yellow-800 {\n color: var(--color-yellow-800);\n }\n .text-yellow-900 {\n color: var(--color-yellow-900);\n }\n .text-zinc-500 {\n color: var(--color-zinc-500);\n }\n .text-zinc-600 {\n color: var(--color-zinc-600);\n }\n .text-zinc-900 {\n color: var(--color-zinc-900);\n }\n .capitalize {\n text-transform: capitalize;\n }\n .lowercase {\n text-transform: lowercase;\n }\n .normal-case {\n text-transform: none;\n }\n .uppercase {\n text-transform: uppercase;\n }\n .uppercase\\! {\n text-transform: uppercase !important;\n }\n .italic {\n font-style: italic;\n }\n .ordinal {\n --tw-ordinal: ordinal;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .line-through {\n text-decoration-line: line-through;\n }\n .no-underline {\n text-decoration-line: none;\n }\n .underline {\n text-decoration-line: underline;\n }\n .decoration-muted-foreground\\/50 {\n text-decoration-color: color-mix(in srgb, #74716e 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n text-decoration-color: color-mix(in oklab, var(--color-muted-foreground) 50%, transparent);\n }\n }\n .decoration-dotted {\n text-decoration-style: dotted;\n }\n .decoration-solid {\n text-decoration-style: solid;\n }\n .underline-offset-2 {\n text-underline-offset: 2px;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .underline-offset-\\[3px\\] {\n text-underline-offset: 3px;\n }\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .caret-red-600 {\n caret-color: var(--color-red-600);\n }\n .caret-slate-900 {\n caret-color: var(--color-slate-900);\n }\n .accent-\\[var\\(--brand\\)\\] {\n accent-color: var(--brand);\n }\n .accent-accent {\n accent-color: var(--color-accent);\n }\n .accent-black {\n accent-color: var(--color-black);\n }\n .accent-primary {\n accent-color: var(--color-primary);\n }\n .\\[color-scheme\\:light\\] {\n color-scheme: light;\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-10 {\n opacity: 10%;\n }\n .opacity-30 {\n opacity: 30%;\n }\n .opacity-40 {\n opacity: 40%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-55 {\n opacity: 55%;\n }\n .opacity-60 {\n opacity: 60%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-75 {\n opacity: 75%;\n }\n .opacity-80 {\n opacity: 80%;\n }\n .opacity-90 {\n opacity: 90%;\n }\n .opacity-95 {\n opacity: 95%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .opacity-\\[0\\.28\\] {\n opacity: 0.28;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow\\! {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)) !important;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow) !important;\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-border\\)\\)\\] {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_2px_8px_rgba\\(217\\,74\\,30\\,0\\.15\\)\\] {\n --tw-shadow: 0 2px 8px var(--tw-shadow-color, rgba(217,74,30,0.15));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_3px_10px_rgba\\(0\\,0\\,0\\,0\\.14\\)\\] {\n --tw-shadow: 0 3px 10px var(--tw-shadow-color, rgba(0,0,0,0.14));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_8px_32px_rgba\\(0\\,0\\,0\\,0\\.12\\)\\,0_2px_8px_rgba\\(0\\,0\\,0\\,0\\.06\\)\\] {\n --tw-shadow: 0 8px 32px var(--tw-shadow-color, rgba(0,0,0,0.12)), 0 2px 8px var(--tw-shadow-color, rgba(0,0,0,0.06));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0px_0px_4px_0px_\\#e4e4e7\\] {\n --tw-shadow: 0px 0px 4px 0px var(--tw-shadow-color, #e4e4e7);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0px_1px_2px_0px_rgba\\(0\\,0\\,0\\,0\\.05\\)\\] {\n --tw-shadow: 0px 1px 2px 0px var(--tw-shadow-color, rgba(0,0,0,0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0px_10px_15px_-3px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\,0px_4px_6px_-2px_rgba\\(0\\,0\\,0\\,0\\.05\\)\\] {\n --tw-shadow: 0px 10px 15px -3px var(--tw-shadow-color, rgba(0,0,0,0.1)), 0px 4px 6px -2px var(--tw-shadow-color, rgba(0,0,0,0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[2px_0_4px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\] {\n --tw-shadow: 2px 0 4px var(--tw-shadow-color, rgba(0,0,0,0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[inset_0_-1px_0_var\\(--border\\)\\] {\n --tw-shadow: inset 0 -1px 0 var(--tw-shadow-color, var(--border));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[inset_0_1px_0_rgba\\(255\\,255\\,255\\,\\.2\\)\\] {\n --tw-shadow: inset 0 1px 0 var(--tw-shadow-color, rgba(255,255,255,.2));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[inset_0_1px_0_rgba\\(255\\,255\\,255\\,\\.16\\)\\] {\n --tw-shadow: inset 0 1px 0 var(--tw-shadow-color, rgba(255,255,255,.16));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[var\\(--shadow\\)\\] {\n --tw-shadow: var(--shadow);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-inner {\n --tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-none {\n --tw-shadow: 0 0 #0000;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow\\/ring {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-0 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-\\[1\\.5px\\] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1.5px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-\\[3px\\] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .\\[box-shadow\\:none\\] {\n box-shadow: none;\n }\n .shadow-card {\n --tw-shadow-color: #ffffff;\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-card) var(--tw-shadow-alpha), transparent);\n }\n }\n .ring-\\[\\#10b981\\]\\/40 {\n --tw-ring-color: color-mix(in oklab, #10b981 40%, transparent);\n }\n .ring-black\\/5 {\n --tw-ring-color: color-mix(in srgb, #000 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-black) 5%, transparent);\n }\n }\n .ring-blue-300\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(80.9% 0.105 251.813) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-blue-300) 60%, transparent);\n }\n }\n .ring-blue-500 {\n --tw-ring-color: var(--color-blue-500);\n }\n .ring-border {\n --tw-ring-color: var(--color-border);\n }\n .ring-card {\n --tw-ring-color: var(--color-card);\n }\n .ring-gray-300 {\n --tw-ring-color: var(--color-gray-300);\n }\n .ring-gray-900\\/10 {\n --tw-ring-color: color-mix(in srgb, oklch(21% 0.034 264.665) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-gray-900) 10%, transparent);\n }\n }\n .ring-orange-400 {\n --tw-ring-color: var(--color-orange-400);\n }\n .ring-primary {\n --tw-ring-color: var(--color-primary);\n }\n .ring-sidebar-ring {\n --tw-ring-color: var(--color-sidebar-ring);\n }\n .ring-offset-4 {\n --tw-ring-offset-width: 4px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n .ring-offset-background {\n --tw-ring-offset-color: var(--color-background);\n }\n .ring-offset-gray-200 {\n --tw-ring-offset-color: var(--color-gray-200);\n }\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .outline-1 {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .-outline-offset-1 {\n outline-offset: calc(1px * -1);\n }\n .outline-gray-300 {\n outline-color: var(--color-gray-300);\n }\n .outline-red-300 {\n outline-color: var(--color-red-300);\n }\n .blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-2xl {\n --tw-blur: blur(var(--blur-2xl));\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-3xl {\n --tw-blur: blur(var(--blur-3xl));\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .drop-shadow-\\[0_3px_9px_rgba\\(124\\,92\\,255\\,0\\.4\\)\\] {\n --tw-drop-shadow-size: drop-shadow(0 3px 9px var(--tw-drop-shadow-color, rgba(124,92,255,0.4)));\n --tw-drop-shadow: var(--tw-drop-shadow-size);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .drop-shadow-md {\n --tw-drop-shadow-size: drop-shadow(0 3px 3px var(--tw-drop-shadow-color, rgb(0 0 0 / 0.12)));\n --tw-drop-shadow: drop-shadow(var(--drop-shadow-md));\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .invert {\n --tw-invert: invert(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .\\!filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,) !important;\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .filter\\! {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,) !important;\n }\n .backdrop-blur {\n --tw-backdrop-blur: blur(8px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-blur-\\[1px\\] {\n --tw-backdrop-blur: blur(1px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-blur-xl {\n --tw-backdrop-blur: blur(var(--blur-xl));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-filter {\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition\\! {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events !important;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)) !important;\n transition-duration: var(--tw-duration, var(--default-transition-duration)) !important;\n }\n .transition-\\[border-color\\,box-shadow\\,background-color\\] {\n transition-property: border-color,box-shadow,background-color;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[border-color\\,box-shadow\\] {\n transition-property: border-color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[filter\\] {\n transition-property: filter;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[grid-template-rows\\] {\n transition-property: grid-template-rows;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[left\\,right\\,width\\] {\n transition-property: left,right,width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[margin\\,opacity\\] {\n transition-property: margin,opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[margin-right\\] {\n transition-property: margin-right;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[opacity\\,transform\\] {\n transition-property: opacity,transform;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[right\\] {\n transition-property: right;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[transform\\,width\\,height\\,opacity\\] {\n transition-property: transform,width,height,opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\,height\\,padding\\] {\n transition-property: width,height,padding;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\,right\\,margin-right\\] {\n transition-property: width,right,margin-right;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\] {\n transition-property: width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-none {\n transition-property: none;\n }\n .duration-75 {\n --tw-duration: 75ms;\n transition-duration: 75ms;\n }\n .duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-150 {\n --tw-duration: 150ms;\n transition-duration: 150ms;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .duration-\\[100ms\\] {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-\\[120ms\\] {\n --tw-duration: 120ms;\n transition-duration: 120ms;\n }\n .duration-\\[130ms\\] {\n --tw-duration: 130ms;\n transition-duration: 130ms;\n }\n .duration-\\[140ms\\] {\n --tw-duration: 140ms;\n transition-duration: 140ms;\n }\n .duration-\\[160ms\\] {\n --tw-duration: 160ms;\n transition-duration: 160ms;\n }\n .duration-\\[180ms\\] {\n --tw-duration: 180ms;\n transition-duration: 180ms;\n }\n .duration-\\[220ms\\] {\n --tw-duration: 220ms;\n transition-duration: 220ms;\n }\n .duration-\\[250ms\\] {\n --tw-duration: 250ms;\n transition-duration: 250ms;\n }\n .duration-\\[280ms\\] {\n --tw-duration: 280ms;\n transition-duration: 280ms;\n }\n .duration-\\[380ms\\] {\n --tw-duration: 380ms;\n transition-duration: 380ms;\n }\n .duration-\\[500ms\\] {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n .duration-\\[600ms\\] {\n --tw-duration: 600ms;\n transition-duration: 600ms;\n }\n .ease-\\[cubic-bezier\\(0\\.2\\,0\\.8\\,0\\.2\\,1\\)\\] {\n --tw-ease: cubic-bezier(0.2,0.8,0.2,1);\n transition-timing-function: cubic-bezier(0.2,0.8,0.2,1);\n }\n .ease-\\[cubic-bezier\\(0\\.34\\,1\\.42\\,0\\.64\\,1\\)\\] {\n --tw-ease: cubic-bezier(0.34,1.42,0.64,1);\n transition-timing-function: cubic-bezier(0.34,1.42,0.64,1);\n }\n .ease-in {\n --tw-ease: var(--ease-in);\n transition-timing-function: var(--ease-in);\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .ease-linear {\n --tw-ease: linear;\n transition-timing-function: linear;\n }\n .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n .will-change-transform {\n will-change: transform;\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-all {\n -webkit-user-select: all;\n user-select: all;\n }\n .select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n .\\[-ms-overflow-style\\:none\\] {\n -ms-overflow-style: none;\n }\n .\\[-webkit-overflow-scrolling\\:touch\\] {\n -webkit-overflow-scrolling: touch;\n }\n .\\[cron\\:alarm-detection\\] {\n cron: alarm-detection;\n }\n .\\[cron\\:bulk-subscribe-failure-retention\\] {\n cron: bulk-subscribe-failure-retention;\n }\n .\\[cron\\:bulk-subscribe-watchdog\\] {\n cron: bulk-subscribe-watchdog;\n }\n .\\[cron\\:daily-summary\\] {\n cron: daily-summary;\n }\n .\\[cron\\:event-processor\\] {\n cron: event-processor;\n }\n .\\[cron\\:invitation-retention\\] {\n cron: invitation-retention;\n }\n .\\[cron\\:opt-out-token-retention\\] {\n cron: opt-out-token-retention;\n }\n .\\[cron\\:payout-calc\\] {\n cron: payout-calc;\n }\n .\\[cron\\:session-cleanup\\] {\n cron: session-cleanup;\n }\n .\\[cron\\:testing-expiry\\] {\n cron: testing-expiry;\n }\n .\\[daily-summary\\:backfill\\] {\n daily-summary: backfill;\n }\n .\\[daily-summary\\:diag\\] {\n daily-summary: diag;\n }\n .\\[event-processor\\:diag\\] {\n event-processor: diag;\n }\n .\\[event-processor\\:parsers\\] {\n event-processor: parsers;\n }\n .\\[lead-pipeline\\:diag\\] {\n lead-pipeline: diag;\n }\n .\\[min-inline-size\\:0\\] {\n min-inline-size: 0;\n }\n .\\[payout-calc\\:diag\\] {\n payout-calc: diag;\n }\n .\\[payout\\:trigger\\] {\n payout: trigger;\n }\n .\\[scrollbar-gutter\\:stable\\] {\n scrollbar-gutter: stable;\n }\n .\\[scrollbar-width\\:none\\] {\n scrollbar-width: none;\n }\n .\\[scrollbar-width\\:thin\\] {\n scrollbar-width: thin;\n }\n .\\[transition\\:max-height_200ms\\,opacity_150ms\\,padding_200ms\\] {\n transition: max-height 200ms,opacity 150ms,padding 200ms;\n }\n .\\[transition\\:opacity_120ms\\,margin_250ms_ease-in-out\\] {\n transition: opacity 120ms,margin 250ms ease-in-out;\n }\n .\\[transition\\:opacity_150ms\\,max-width_250ms_ease-in-out\\] {\n transition: opacity 150ms,max-width 250ms ease-in-out;\n }\n .\\[transition\\:opacity_150ms_ease\\,max-width_250ms_ease-in-out\\] {\n transition: opacity 150ms ease,max-width 250ms ease-in-out;\n }\n .ring-inset {\n --tw-ring-inset: inset;\n }\n .group-focus-within\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):focus-within *) {\n opacity: 100%;\n }\n }\n .group-hover\\:block {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n display: block;\n }\n }\n }\n .group-hover\\:border-gray-400 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n border-color: var(--color-gray-400);\n }\n }\n }\n .group-hover\\:bg-black\\/20 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #000 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 20%, transparent);\n }\n }\n }\n }\n .group-hover\\:bg-black\\/30 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #000 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 30%, transparent);\n }\n }\n }\n }\n .group-hover\\:text-blue-600 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .group-hover\\:opacity-60 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 60%;\n }\n }\n }\n .group-hover\\:opacity-80 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 80%;\n }\n }\n }\n .group-hover\\:opacity-100 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-hover\\:brightness-110 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-brightness: brightness(110%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n }\n }\n .group-hover\\:brightness-\\[1\\.18\\] {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-brightness: brightness(1.18);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n }\n }\n .group-hover\\/card\\:pointer-events-auto {\n &:is(:where(.group\\/card):hover *) {\n @media (hover: hover) {\n pointer-events: auto;\n }\n }\n }\n .group-hover\\/card\\:translate-y-0 {\n &:is(:where(.group\\/card):hover *) {\n @media (hover: hover) {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-hover\\/card\\:opacity-100 {\n &:is(:where(.group\\/card):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-hover\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-has-data-\\[sidebar\\=menu-action\\]\\/menu-item\\:pr-8 {\n &:is(:where(.group\\/menu-item):has(*[data-sidebar=\"menu-action\"]) *) {\n padding-right: calc(var(--spacing) * 8);\n }\n }\n .group-data-\\[checked\\]\\:translate-x-5 {\n &:is(:where(.group)[data-checked] *) {\n --tw-translate-x: calc(var(--spacing) * 5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[checked\\]\\:opacity-0 {\n &:is(:where(.group)[data-checked] *) {\n opacity: 0%;\n }\n }\n .group-data-\\[checked\\]\\:opacity-100 {\n &:is(:where(.group)[data-checked] *) {\n opacity: 100%;\n }\n }\n .group-data-\\[checked\\]\\:duration-100 {\n &:is(:where(.group)[data-checked] *) {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n }\n .group-data-\\[checked\\]\\:duration-200 {\n &:is(:where(.group)[data-checked] *) {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n }\n .group-data-\\[checked\\]\\:ease-in {\n &:is(:where(.group)[data-checked] *) {\n --tw-ease: var(--ease-in);\n transition-timing-function: var(--ease-in);\n }\n }\n .group-data-\\[checked\\]\\:ease-out {\n &:is(:where(.group)[data-checked] *) {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:-mt-8 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n margin-top: calc(var(--spacing) * -8);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n display: none;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:size-8\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--spacing) * 8) !important;\n height: calc(var(--spacing) * 8) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\(--sidebar-width-icon\\) {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: var(--sidebar-width-icon);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)));\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\+2px\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:overflow-hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n overflow: hidden;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-0\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 0) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-2\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 2) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:opacity-0 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n opacity: 0%;\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:right-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n right: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:left-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n left: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:w-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n width: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[side\\=left\\]\\:-right-4 {\n &:is(:where(.group)[data-side=\"left\"] *) {\n right: calc(var(--spacing) * -4);\n }\n }\n .group-data-\\[side\\=left\\]\\:border-r {\n &:is(:where(.group)[data-side=\"left\"] *) {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .group-data-\\[side\\=right\\]\\:left-0 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n left: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[side\\=right\\]\\:rotate-180 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[side\\=right\\]\\:border-l {\n &:is(:where(.group)[data-side=\"right\"] *) {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .group-data-\\[size\\=default\\]\\/switch\\:size-4 {\n &:is(:where(.group\\/switch)[data-size=\"default\"] *) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .group-data-\\[size\\=sm\\]\\/switch\\:size-3 {\n &:is(:where(.group\\/switch)[data-size=\"sm\"] *) {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .group-data-\\[spacing\\=0\\]\\/toggle-group\\:rounded-none {\n &:is(:where(.group\\/toggle-group)[data-spacing=\"0\"] *) {\n border-radius: 0;\n }\n }\n .group-data-\\[spacing\\=0\\]\\/toggle-group\\:px-2 {\n &:is(:where(.group\\/toggle-group)[data-spacing=\"0\"] *) {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .group-data-\\[state\\=checked\\]\\:opacity-100 {\n &:is(:where(.group)[data-state=\"checked\"] *) {\n opacity: 100%;\n }\n }\n .group-data-\\[state\\=open\\]\\/tagswitch\\:rotate-180 {\n &:is(:where(.group\\/tagswitch)[data-state=\"open\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[state\\=unchecked\\]\\:opacity-100 {\n &:is(:where(.group)[data-state=\"unchecked\"] *) {\n opacity: 100%;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:rounded-lg {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-radius: var(--radius-lg);\n }\n }\n .group-data-\\[variant\\=floating\\]\\:border {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:shadow-sm {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .peer-disabled\\:cursor-not-allowed {\n &:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n }\n .peer-disabled\\:opacity-70 {\n &:is(:where(.peer):disabled ~ *) {\n opacity: 70%;\n }\n }\n .peer-data-\\[size\\=default\\]\\/menu-button\\:top-1\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"default\"] ~ *) {\n top: calc(var(--spacing) * 1.5);\n }\n }\n .peer-data-\\[size\\=lg\\]\\/menu-button\\:top-2\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"lg\"] ~ *) {\n top: calc(var(--spacing) * 2.5);\n }\n }\n .peer-data-\\[size\\=sm\\]\\/menu-button\\:top-1 {\n &:is(:where(.peer\\/menu-button)[data-size=\"sm\"] ~ *) {\n top: calc(var(--spacing) * 1);\n }\n }\n .selection\\:bg-primary {\n & *::selection {\n background-color: var(--color-primary);\n }\n &::selection {\n background-color: var(--color-primary);\n }\n }\n .selection\\:text-primary-foreground {\n & *::selection {\n color: var(--color-primary-foreground);\n }\n &::selection {\n color: var(--color-primary-foreground);\n }\n }\n .file\\:inline-flex {\n &::file-selector-button {\n display: inline-flex;\n }\n }\n .file\\:h-7 {\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n }\n .file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n }\n .file\\:text-sm {\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .file\\:font-medium {\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .placeholder\\:text-gray-400 {\n &::placeholder {\n color: var(--color-gray-400);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n }\n .placeholder\\:text-red-300 {\n &::placeholder {\n color: var(--color-red-300);\n }\n }\n .placeholder\\:text-slate-400 {\n &::placeholder {\n color: var(--color-slate-400);\n }\n }\n .placeholder\\:opacity-85 {\n &::placeholder {\n opacity: 85%;\n }\n }\n .before\\:absolute {\n &::before {\n content: var(--tw-content);\n position: absolute;\n }\n }\n .before\\:top-0 {\n &::before {\n content: var(--tw-content);\n top: calc(var(--spacing) * 0);\n }\n }\n .before\\:bottom-0 {\n &::before {\n content: var(--tw-content);\n bottom: calc(var(--spacing) * 0);\n }\n }\n .before\\:left-0 {\n &::before {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n .before\\:w-px {\n &::before {\n content: var(--tw-content);\n width: 1px;\n }\n }\n .before\\:bg-border {\n &::before {\n content: var(--tw-content);\n background-color: var(--color-border);\n }\n }\n .after\\:absolute {\n &::after {\n content: var(--tw-content);\n position: absolute;\n }\n }\n .after\\:-inset-2 {\n &::after {\n content: var(--tw-content);\n inset: calc(var(--spacing) * -2);\n }\n }\n .after\\:-inset-x-3 {\n &::after {\n content: var(--tw-content);\n inset-inline: calc(var(--spacing) * -3);\n }\n }\n .after\\:-inset-y-2 {\n &::after {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * -2);\n }\n }\n .after\\:inset-y-0 {\n &::after {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .after\\:right-0 {\n &::after {\n content: var(--tw-content);\n right: calc(var(--spacing) * 0);\n }\n }\n .after\\:bottom-0 {\n &::after {\n content: var(--tw-content);\n bottom: calc(var(--spacing) * 0);\n }\n }\n .after\\:left-0 {\n &::after {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n .after\\:left-1\\/2 {\n &::after {\n content: var(--tw-content);\n left: calc(1/2 * 100%);\n }\n }\n .after\\:h-\\[2px\\] {\n &::after {\n content: var(--tw-content);\n height: 2px;\n }\n }\n .after\\:w-\\[2px\\] {\n &::after {\n content: var(--tw-content);\n width: 2px;\n }\n }\n .after\\:scale-x-0 {\n &::after {\n content: var(--tw-content);\n --tw-scale-x: 0%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n .after\\:bg-\\[var\\(--tab-indicator-color\\)\\] {\n &::after {\n content: var(--tw-content);\n background-color: var(--tab-indicator-color);\n }\n }\n .after\\:transition-transform {\n &::after {\n content: var(--tw-content);\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:after\\:left-full {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n &::after {\n content: var(--tw-content);\n left: 100%;\n }\n }\n }\n .first\\:border-l-0 {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n .last\\:mb-0 {\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0);\n }\n }\n .last\\:border-0 {\n &:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .last\\:border-r-0 {\n &:last-child {\n border-right-style: var(--tw-border-style);\n border-right-width: 0px;\n }\n }\n .last\\:border-b {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .last\\:border-b-0 {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .last\\:pb-0 {\n &:last-child {\n padding-bottom: calc(var(--spacing) * 0);\n }\n }\n .last\\:pb-\\[3px\\] {\n &:last-child {\n padding-bottom: 3px;\n }\n }\n .focus-within\\:pointer-events-auto {\n &:focus-within {\n pointer-events: auto;\n }\n }\n .focus-within\\:relative {\n &:focus-within {\n position: relative;\n }\n }\n .focus-within\\:translate-y-0 {\n &:focus-within {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .focus-within\\:opacity-100 {\n &:focus-within {\n opacity: 100%;\n }\n }\n .focus-within\\:ring-2 {\n &:focus-within {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-within\\:ring-\\[3px\\] {\n &:focus-within {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-within\\:ring-accent {\n &:focus-within {\n --tw-ring-color: var(--color-accent);\n }\n }\n .focus-within\\:ring-accent\\/40 {\n &:focus-within {\n --tw-ring-color: color-mix(in srgb, #f4f4f5 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n }\n .focus-within\\:ring-blue-600 {\n &:focus-within {\n --tw-ring-color: var(--color-blue-600);\n }\n }\n .focus-within\\:ring-offset-2 {\n &:focus-within {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus-within\\:outline-none {\n &:focus-within {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .hover\\:-translate-y-0\\.5 {\n &:hover {\n @media (hover: hover) {\n --tw-translate-y: calc(var(--spacing) * -0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .hover\\:-translate-y-px {\n &:hover {\n @media (hover: hover) {\n --tw-translate-y: -1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .hover\\:translate-y-0 {\n &:hover {\n @media (hover: hover) {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .hover\\:cursor-pointer {\n &:hover {\n @media (hover: hover) {\n cursor: pointer;\n }\n }\n }\n .hover\\:border-\\[\\#2563eb\\] {\n &:hover {\n @media (hover: hover) {\n border-color: #2563eb;\n }\n }\n }\n .hover\\:border-\\[color\\:var\\(--ob-bd-h\\)\\] {\n &:hover {\n @media (hover: hover) {\n border-color: var(--ob-bd-h);\n }\n }\n }\n .hover\\:border-accent\\/50 {\n &:hover {\n @media (hover: hover) {\n border-color: color-mix(in srgb, #f4f4f5 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n }\n }\n .hover\\:border-blue-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-400);\n }\n }\n }\n .hover\\:border-blue-600 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-600);\n }\n }\n }\n .hover\\:border-border {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-border);\n }\n }\n }\n .hover\\:border-gray-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-gray-300);\n }\n }\n }\n .hover\\:border-gray-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-gray-400);\n }\n }\n }\n .hover\\:border-gray-500 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-gray-500);\n }\n }\n }\n .hover\\:border-indigo-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-300);\n }\n }\n }\n .hover\\:border-muted-foreground {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-muted-foreground);\n }\n }\n }\n .hover\\:border-orange-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-orange-400);\n }\n }\n }\n .hover\\:border-primary {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-primary);\n }\n }\n }\n .hover\\:border-primary\\/40 {\n &:hover {\n @media (hover: hover) {\n border-color: color-mix(in srgb, #18181b 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 40%, transparent);\n }\n }\n }\n }\n .hover\\:border-primary\\/50 {\n &:hover {\n @media (hover: hover) {\n border-color: color-mix(in srgb, #18181b 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 50%, transparent);\n }\n }\n }\n }\n .hover\\:border-purple-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-purple-400);\n }\n }\n }\n .hover\\:border-red-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-red-200);\n }\n }\n }\n .hover\\:border-red-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-red-300);\n }\n }\n }\n .hover\\:border-red-600 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-red-600);\n }\n }\n }\n .hover\\:border-slate-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-400);\n }\n }\n }\n .hover\\:\\!bg-\\[\\#12478a\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #12478a !important;\n }\n }\n }\n .hover\\:\\!bg-\\[\\#af543d\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #af543d !important;\n }\n }\n }\n .hover\\:bg-\\[\\#1a2e4a\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #1a2e4a;\n }\n }\n }\n .hover\\:bg-\\[\\#1d4ed8\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #1d4ed8;\n }\n }\n }\n .hover\\:bg-\\[\\#2d3544\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #2d3544;\n }\n }\n }\n .hover\\:bg-\\[\\#16a34a\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #16a34a;\n }\n }\n }\n .hover\\:bg-\\[\\#166FE5\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #166FE5;\n }\n }\n }\n .hover\\:bg-\\[\\#18181b\\]\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in oklab, #18181b 90%, transparent);\n }\n }\n }\n .hover\\:bg-\\[\\#E88B00\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #E88B00;\n }\n }\n }\n .hover\\:bg-\\[\\#F1F4F8\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #F1F4F8;\n }\n }\n }\n .hover\\:bg-\\[\\#d0d8e4\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #d0d8e4;\n }\n }\n }\n .hover\\:bg-\\[\\#f2f2f2\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #f2f2f2;\n }\n }\n }\n .hover\\:bg-\\[\\#fafafa\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #fafafa;\n }\n }\n }\n .hover\\:bg-\\[color\\:var\\(--ob-bg-h\\)\\] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--ob-bg-h);\n }\n }\n }\n .hover\\:bg-\\[var\\(--bc-primary-button-background-color\\)\\] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--bc-primary-button-background-color);\n }\n }\n }\n .hover\\:bg-\\[var\\(--bc-secondary-button-background-color\\)\\] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--bc-secondary-button-background-color);\n }\n }\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n }\n .hover\\:bg-accent\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/30 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-amber-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-amber-100);\n }\n }\n }\n .hover\\:bg-black\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #000 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-blue-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-100);\n }\n }\n }\n .hover\\:bg-blue-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-200);\n }\n }\n }\n .hover\\:bg-blue-500 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-500);\n }\n }\n }\n .hover\\:bg-blue-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-700);\n }\n }\n }\n .hover\\:bg-border {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-border);\n }\n }\n }\n .hover\\:bg-border\\/60 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #e4e4e7 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-border) 60%, transparent);\n }\n }\n }\n }\n .hover\\:bg-card {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-card);\n }\n }\n }\n .hover\\:bg-destructive {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-destructive);\n }\n }\n }\n .hover\\:bg-destructive\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #dc2626 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-destructive\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #dc2626 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #dc2626 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-gray-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-50);\n }\n }\n }\n .hover\\:bg-gray-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-100);\n }\n }\n }\n .hover\\:bg-gray-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-200);\n }\n }\n }\n .hover\\:bg-gray-300 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-300);\n }\n }\n }\n .hover\\:bg-gray-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-800);\n }\n }\n }\n .hover\\:bg-green-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-green-700);\n }\n }\n }\n .hover\\:bg-indigo-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-50);\n }\n }\n }\n .hover\\:bg-indigo-50\\/60 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(96.2% 0.018 272.314) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-50) 60%, transparent);\n }\n }\n }\n }\n .hover\\:bg-indigo-500\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-500) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n }\n }\n }\n .hover\\:bg-muted\\/30 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f7f7f6 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/40 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f7f7f6 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 40%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f7f7f6 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/60 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f7f7f6 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 60%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/70 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f7f7f6 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 70%, transparent);\n }\n }\n }\n }\n .hover\\:bg-neutral-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-100);\n }\n }\n }\n .hover\\:bg-neutral-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-200);\n }\n }\n }\n .hover\\:bg-orange-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-orange-100);\n }\n }\n }\n .hover\\:bg-primary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #18181b 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #18181b 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-purple-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-purple-100);\n }\n }\n }\n .hover\\:bg-purple-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-purple-700);\n }\n }\n }\n .hover\\:bg-red-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-50);\n }\n }\n }\n .hover\\:bg-red-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-200);\n }\n }\n }\n .hover\\:bg-red-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-700);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-slate-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-50);\n }\n }\n }\n .hover\\:bg-slate-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-100);\n }\n }\n }\n .hover\\:bg-slate-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-800);\n }\n }\n }\n .hover\\:bg-teal-600 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-teal-600);\n }\n }\n }\n .hover\\:bg-teal-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-teal-700);\n }\n }\n }\n .hover\\:bg-transparent {\n &:hover {\n @media (hover: hover) {\n background-color: transparent;\n }\n }\n }\n .hover\\:bg-violet-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-violet-700);\n }\n }\n }\n .hover\\:bg-violet-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-violet-800);\n }\n }\n }\n .hover\\:bg-white {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-white);\n }\n }\n }\n .hover\\:bg-white\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #fff 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 20%, transparent);\n }\n }\n }\n }\n .hover\\:bg-white\\/\\[0\\.04\\] {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #fff 4%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 4%, transparent);\n }\n }\n }\n }\n .hover\\:bg-yellow-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-yellow-700);\n }\n }\n }\n .hover\\:bg-zinc-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-zinc-100);\n }\n }\n }\n .hover\\:bg-zinc-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-zinc-800);\n }\n }\n }\n .hover\\:text-\\[\\#1d4ed8\\] {\n &:hover {\n @media (hover: hover) {\n color: #1d4ed8;\n }\n }\n }\n .hover\\:text-\\[\\#6b7280\\] {\n &:hover {\n @media (hover: hover) {\n color: #6b7280;\n }\n }\n }\n .hover\\:text-\\[\\#18181b\\] {\n &:hover {\n @media (hover: hover) {\n color: #18181b;\n }\n }\n }\n .hover\\:text-\\[\\#64748b\\] {\n &:hover {\n @media (hover: hover) {\n color: #64748b;\n }\n }\n }\n .hover\\:text-\\[color\\:var\\(--dn-fg-hover\\)\\] {\n &:hover {\n @media (hover: hover) {\n color: var(--dn-fg-hover);\n }\n }\n }\n .hover\\:text-\\[color\\:var\\(--ob-fg-h\\)\\] {\n &:hover {\n @media (hover: hover) {\n color: var(--ob-fg-h);\n }\n }\n }\n .hover\\:text-\\[var\\(--bc-secondary-button-text-color\\)\\] {\n &:hover {\n @media (hover: hover) {\n color: var(--bc-secondary-button-text-color);\n }\n }\n }\n .hover\\:text-accent {\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent);\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n .hover\\:text-accent\\/80 {\n &:hover {\n @media (hover: hover) {\n color: color-mix(in srgb, #f4f4f5 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-accent) 80%, transparent);\n }\n }\n }\n }\n .hover\\:text-black {\n &:hover {\n @media (hover: hover) {\n color: var(--color-black);\n }\n }\n }\n .hover\\:text-blue-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-500);\n }\n }\n }\n .hover\\:text-blue-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .hover\\:text-blue-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-700);\n }\n }\n }\n .hover\\:text-blue-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-800);\n }\n }\n }\n .hover\\:text-blue-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-900);\n }\n }\n }\n .hover\\:text-destructive {\n &:hover {\n @media (hover: hover) {\n color: var(--color-destructive);\n }\n }\n }\n .hover\\:text-gray-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-gray-500);\n }\n }\n }\n .hover\\:text-gray-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-gray-600);\n }\n }\n }\n .hover\\:text-gray-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-gray-700);\n }\n }\n }\n .hover\\:text-gray-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-gray-800);\n }\n }\n }\n .hover\\:text-gray-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-gray-900);\n }\n }\n }\n .hover\\:text-green-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-green-900);\n }\n }\n }\n .hover\\:text-indigo-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-600);\n }\n }\n }\n .hover\\:text-muted-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--color-muted-foreground);\n }\n }\n }\n .hover\\:text-neutral-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-neutral-900);\n }\n }\n }\n .hover\\:text-orange-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-orange-500);\n }\n }\n }\n .hover\\:text-primary {\n &:hover {\n @media (hover: hover) {\n color: var(--color-primary);\n }\n }\n }\n .hover\\:text-primary\\/60 {\n &:hover {\n @media (hover: hover) {\n color: color-mix(in srgb, #18181b 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 60%, transparent);\n }\n }\n }\n }\n .hover\\:text-red-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-500);\n }\n }\n }\n .hover\\:text-red-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-600);\n }\n }\n }\n .hover\\:text-red-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-700);\n }\n }\n }\n .hover\\:text-red-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-800);\n }\n }\n }\n .hover\\:text-red-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-900);\n }\n }\n }\n .hover\\:text-slate-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-600);\n }\n }\n }\n .hover\\:text-slate-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-700);\n }\n }\n }\n .hover\\:text-slate-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-800);\n }\n }\n }\n .hover\\:text-teal-950 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-teal-950);\n }\n }\n }\n .hover\\:text-violet-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-violet-800);\n }\n }\n }\n .hover\\:text-white {\n &:hover {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n .hover\\:text-yellow-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-yellow-900);\n }\n }\n }\n .hover\\:no-underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: none;\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-70 {\n &:hover {\n @media (hover: hover) {\n opacity: 70%;\n }\n }\n }\n .hover\\:opacity-80 {\n &:hover {\n @media (hover: hover) {\n opacity: 80%;\n }\n }\n }\n .hover\\:opacity-90 {\n &:hover {\n @media (hover: hover) {\n opacity: 90%;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .hover\\:opacity-\\[0\\.88\\] {\n &:hover {\n @media (hover: hover) {\n opacity: 0.88;\n }\n }\n }\n .hover\\:shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-accent\\)\\)\\] {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-\\[0_4px_14px_rgba\\(37\\,99\\,235\\,0\\.1\\)\\] {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 14px var(--tw-shadow-color, rgba(37,99,235,0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-\\[0_8px_24px_rgba\\(0\\,0\\,0\\,0\\.08\\)\\] {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 8px 24px var(--tw-shadow-color, rgba(0,0,0,0.08));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-sm {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-card {\n &:hover {\n @media (hover: hover) {\n --tw-shadow-color: #ffffff;\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-card) var(--tw-shadow-alpha), transparent);\n }\n }\n }\n }\n .hover\\:brightness-110 {\n &:hover {\n @media (hover: hover) {\n --tw-brightness: brightness(110%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n }\n }\n .hover\\:brightness-\\[1\\.15\\] {\n &:hover {\n @media (hover: hover) {\n --tw-brightness: brightness(1.15);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n }\n }\n .focus\\:relative {\n &:focus {\n position: relative;\n }\n }\n .focus\\:z-10 {\n &:focus {\n z-index: 10;\n }\n }\n .focus\\:z-20 {\n &:focus {\n z-index: 20;\n }\n }\n .focus\\:border-accent {\n &:focus {\n border-color: var(--color-accent);\n }\n }\n .focus\\:border-destructive {\n &:focus {\n border-color: var(--color-destructive);\n }\n }\n .focus\\:border-gray-500 {\n &:focus {\n border-color: var(--color-gray-500);\n }\n }\n .focus\\:border-indigo-500 {\n &:focus {\n border-color: var(--color-indigo-500);\n }\n }\n .focus\\:border-primary {\n &:focus {\n border-color: var(--color-primary);\n }\n }\n .focus\\:border-red-500 {\n &:focus {\n border-color: var(--color-red-500);\n }\n }\n .focus\\:border-transparent {\n &:focus {\n border-color: transparent;\n }\n }\n .focus\\:bg-accent {\n &:focus {\n background-color: var(--color-accent);\n }\n }\n .focus\\:bg-card {\n &:focus {\n background-color: var(--color-card);\n }\n }\n .focus\\:text-accent-foreground {\n &:focus {\n color: var(--color-accent-foreground);\n }\n }\n .focus\\:text-destructive {\n &:focus {\n color: var(--color-destructive);\n }\n }\n .focus\\:opacity-100 {\n &:focus {\n opacity: 100%;\n }\n }\n .focus\\:ring-0 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-1 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:\\[box-shadow\\:none\\] {\n &:focus {\n box-shadow: none;\n }\n }\n .focus\\:ring-accent {\n &:focus {\n --tw-ring-color: var(--color-accent);\n }\n }\n .focus\\:ring-accent\\/30 {\n &:focus {\n --tw-ring-color: color-mix(in srgb, #f4f4f5 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-accent) 30%, transparent);\n }\n }\n }\n .focus\\:ring-accent\\/40 {\n &:focus {\n --tw-ring-color: color-mix(in srgb, #f4f4f5 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n }\n .focus\\:ring-black {\n &:focus {\n --tw-ring-color: var(--color-black);\n }\n }\n .focus\\:ring-blue-500 {\n &:focus {\n --tw-ring-color: var(--color-blue-500);\n }\n }\n .focus\\:ring-blue-600 {\n &:focus {\n --tw-ring-color: var(--color-blue-600);\n }\n }\n .focus\\:ring-destructive {\n &:focus {\n --tw-ring-color: var(--color-destructive);\n }\n }\n .focus\\:ring-gray-500 {\n &:focus {\n --tw-ring-color: var(--color-gray-500);\n }\n }\n .focus\\:ring-primary {\n &:focus {\n --tw-ring-color: var(--color-primary);\n }\n }\n .focus\\:ring-purple-500 {\n &:focus {\n --tw-ring-color: var(--color-purple-500);\n }\n }\n .focus\\:ring-white\\/50 {\n &:focus {\n --tw-ring-color: color-mix(in srgb, #fff 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-white) 50%, transparent);\n }\n }\n }\n .focus\\:ring-offset-0 {\n &:focus {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:ring-offset-2 {\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:outline-2 {\n &:focus {\n outline-style: var(--tw-outline-style);\n outline-width: 2px;\n }\n }\n .focus\\:-outline-offset-2 {\n &:focus {\n outline-offset: calc(2px * -1);\n }\n }\n .focus\\:outline-offset-0 {\n &:focus {\n outline-offset: 0px;\n }\n }\n .focus\\:outline-blue-600 {\n &:focus {\n outline-color: var(--color-blue-600);\n }\n }\n .focus\\:outline-red-600 {\n &:focus {\n outline-color: var(--color-red-600);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .focus-visible\\:z-10 {\n &:focus-visible {\n z-index: 10;\n }\n }\n .focus-visible\\:border-\\[\\#2563eb\\] {\n &:focus-visible {\n border-color: #2563eb;\n }\n }\n .focus-visible\\:border-blue-600 {\n &:focus-visible {\n border-color: var(--color-blue-600);\n }\n }\n .focus-visible\\:border-indigo-300 {\n &:focus-visible {\n border-color: var(--color-indigo-300);\n }\n }\n .focus-visible\\:border-indigo-500 {\n &:focus-visible {\n border-color: var(--color-indigo-500);\n }\n }\n .focus-visible\\:border-red-300 {\n &:focus-visible {\n border-color: var(--color-red-300);\n }\n }\n .focus-visible\\:bg-white {\n &:focus-visible {\n background-color: var(--color-white);\n }\n }\n .focus-visible\\:opacity-100 {\n &:focus-visible {\n opacity: 100%;\n }\n }\n .focus-visible\\:ring-0 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-1 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:\\[box-shadow\\:none\\] {\n &:focus-visible {\n box-shadow: none;\n }\n }\n .focus-visible\\:ring-accent\\/40 {\n &:focus-visible {\n --tw-ring-color: color-mix(in srgb, #f4f4f5 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n }\n .focus-visible\\:ring-border {\n &:focus-visible {\n --tw-ring-color: var(--color-border);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: color-mix(in srgb, #dc2626 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n }\n .focus-visible\\:ring-indigo-500\\/\\[0\\.06\\] {\n &:focus-visible {\n --tw-ring-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 6%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-indigo-500) 6%, transparent);\n }\n }\n }\n .focus-visible\\:ring-neutral-300 {\n &:focus-visible {\n --tw-ring-color: var(--color-neutral-300);\n }\n }\n .focus-visible\\:ring-red-300 {\n &:focus-visible {\n --tw-ring-color: var(--color-red-300);\n }\n }\n .focus-visible\\:ring-sidebar-ring {\n &:focus-visible {\n --tw-ring-color: var(--color-sidebar-ring);\n }\n }\n .focus-visible\\:ring-offset-0 {\n &:focus-visible {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus-visible\\:ring-offset-2 {\n &:focus-visible {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus-visible\\:outline {\n &:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n }\n .focus-visible\\:outline-2 {\n &:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 2px;\n }\n }\n .focus-visible\\:outline-offset-2 {\n &:focus-visible {\n outline-offset: 2px;\n }\n }\n .focus-visible\\:outline-blue-600 {\n &:focus-visible {\n outline-color: var(--color-blue-600);\n }\n }\n .focus-visible\\:outline-none {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .focus-visible\\:ring-inset {\n &:focus-visible {\n --tw-ring-inset: inset;\n }\n }\n .active\\:bg-accent\\/80 {\n &:active {\n background-color: color-mix(in srgb, #f4f4f5 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 80%, transparent);\n }\n }\n }\n .active\\:bg-gray-100 {\n &:active {\n background-color: var(--color-gray-100);\n }\n }\n .active\\:bg-gray-200 {\n &:active {\n background-color: var(--color-gray-200);\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:cursor-default {\n &:disabled {\n cursor: default;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:bg-gray-50 {\n &:disabled {\n background-color: var(--color-gray-50);\n }\n }\n .disabled\\:text-gray-500 {\n &:disabled {\n color: var(--color-gray-500);\n }\n }\n .disabled\\:opacity-30 {\n &:disabled {\n opacity: 30%;\n }\n }\n .disabled\\:opacity-40 {\n &:disabled {\n opacity: 40%;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .disabled\\:opacity-60 {\n &:disabled {\n opacity: 60%;\n }\n }\n .disabled\\:opacity-100 {\n &:disabled {\n opacity: 100%;\n }\n }\n .disabled\\:outline-gray-200 {\n &:disabled {\n outline-color: var(--color-gray-200);\n }\n }\n .in-data-\\[side\\=left\\]\\:cursor-w-resize {\n :where(*[data-side=\"left\"]) & {\n cursor: w-resize;\n }\n }\n .in-data-\\[side\\=right\\]\\:cursor-e-resize {\n :where(*[data-side=\"right\"]) & {\n cursor: e-resize;\n }\n }\n .has-data-\\[slot\\=card-action\\]\\:grid-cols-\\[1fr_auto\\] {\n &:has(*[data-slot=\"card-action\"]) {\n grid-template-columns: 1fr auto;\n }\n }\n .has-\\[\\[aria-checked\\=true\\]\\]\\:border-blue-600 {\n &:has(*:is([aria-checked=true])) {\n border-color: var(--color-blue-600);\n }\n }\n .has-\\[\\[aria-checked\\=true\\]\\]\\:bg-blue-50 {\n &:has(*:is([aria-checked=true])) {\n background-color: var(--color-blue-50);\n }\n }\n .has-\\[\\>svg\\]\\:px-0 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 0);\n }\n }\n .aria-disabled\\:pointer-events-none {\n &[aria-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .aria-disabled\\:opacity-50 {\n &[aria-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--color-destructive);\n }\n }\n .aria-invalid\\:ring-3 {\n &[aria-invalid=\"true\"] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .aria-invalid\\:ring-\\[3px\\] {\n &[aria-invalid=\"true\"] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: color-mix(in srgb, #dc2626 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n }\n .aria-pressed\\:bg-muted {\n &[aria-pressed=\"true\"] {\n background-color: var(--color-muted);\n }\n }\n .data-\\[active\\=true\\]\\:font-medium {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .data-\\[checked\\]\\:bg-blue-600 {\n &[data-checked] {\n background-color: var(--color-blue-600);\n }\n }\n .data-\\[closed\\]\\:-translate-x-full {\n &[data-closed] {\n --tw-translate-x: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[closed\\]\\:translate-y-4 {\n &[data-closed] {\n --tw-translate-y: calc(var(--spacing) * 4);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[closed\\]\\:scale-95 {\n &[data-closed] {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n .data-\\[closed\\]\\:opacity-0 {\n &[data-closed] {\n opacity: 0%;\n }\n }\n .data-\\[disabled\\]\\:pointer-events-none {\n &[data-disabled] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\]\\:opacity-50 {\n &[data-disabled] {\n opacity: 50%;\n }\n }\n .data-\\[disabled\\=true\\]\\:pointer-events-none {\n &[data-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\=true\\]\\:cursor-not-allowed {\n &[data-disabled=\"true\"] {\n cursor: not-allowed;\n }\n }\n .data-\\[disabled\\=true\\]\\:opacity-50 {\n &[data-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .data-\\[enter\\]\\:duration-300 {\n &[data-enter] {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n }\n .data-\\[enter\\]\\:ease-out {\n &[data-enter] {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n }\n .data-\\[error\\=true\\]\\:text-destructive {\n &[data-error=\"true\"] {\n color: var(--color-destructive);\n }\n }\n .data-\\[highlighted\\]\\:bg-accent {\n &[data-highlighted] {\n background-color: var(--color-accent);\n }\n }\n .data-\\[leave\\]\\:duration-200 {\n &[data-leave] {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n }\n .data-\\[leave\\]\\:ease-in {\n &[data-leave] {\n --tw-ease: var(--ease-in);\n transition-timing-function: var(--ease-in);\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-px {\n &[data-orientation=\"horizontal\"] {\n height: 1px;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:w-full {\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:h-full {\n &[data-orientation=\"vertical\"] {\n height: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-px {\n &[data-orientation=\"vertical\"] {\n width: 1px;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:flex-col {\n &[data-orientation=\"vertical\"] {\n flex-direction: column;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:items-stretch {\n &[data-orientation=\"vertical\"] {\n align-items: stretch;\n }\n }\n .data-\\[placeholder\\]\\:text-muted-foreground {\n &[data-placeholder] {\n color: var(--color-muted-foreground);\n }\n }\n .data-\\[selected\\=true\\]\\:bg-muted {\n &[data-selected=\"true\"] {\n background-color: var(--color-muted);\n }\n }\n .data-\\[side\\=bottom\\]\\:translate-y-1 {\n &[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=left\\]\\:-translate-x-1 {\n &[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=right\\]\\:translate-x-1 {\n &[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=top\\]\\:-translate-y-1 {\n &[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[size\\=default\\]\\:h-\\[18\\.4px\\] {\n &[data-size=\"default\"] {\n height: 18.4px;\n }\n }\n .data-\\[size\\=default\\]\\:w-\\[32px\\] {\n &[data-size=\"default\"] {\n width: 32px;\n }\n }\n .data-\\[size\\=sm\\]\\:h-\\[14px\\] {\n &[data-size=\"sm\"] {\n height: 14px;\n }\n }\n .data-\\[size\\=sm\\]\\:w-\\[24px\\] {\n &[data-size=\"sm\"] {\n width: 24px;\n }\n }\n .data-\\[size\\=sm\\]\\:rounded-\\[min\\(var\\(--radius-md\\)\\,10px\\)\\] {\n &[data-size=\"sm\"] {\n border-radius: min(var(--radius-md), 10px);\n }\n }\n .group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:first\\:rounded-l-lg {\n &:is(:where(.group\\/toggle-group)[data-horizontal] *) {\n &[data-spacing=\"0\"] {\n &:first-child {\n border-top-left-radius: var(--radius-lg);\n border-bottom-left-radius: var(--radius-lg);\n }\n }\n }\n }\n .group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:first\\:rounded-t-lg {\n &:is(:where(.group\\/toggle-group)[data-vertical] *) {\n &[data-spacing=\"0\"] {\n &:first-child {\n border-top-left-radius: var(--radius-lg);\n border-top-right-radius: var(--radius-lg);\n }\n }\n }\n }\n .group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:last\\:rounded-r-lg {\n &:is(:where(.group\\/toggle-group)[data-horizontal] *) {\n &[data-spacing=\"0\"] {\n &:last-child {\n border-top-right-radius: var(--radius-lg);\n border-bottom-right-radius: var(--radius-lg);\n }\n }\n }\n }\n .group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:last\\:rounded-b-lg {\n &:is(:where(.group\\/toggle-group)[data-vertical] *) {\n &[data-spacing=\"0\"] {\n &:last-child {\n border-bottom-right-radius: var(--radius-lg);\n border-bottom-left-radius: var(--radius-lg);\n }\n }\n }\n }\n .data-\\[state\\=active\\]\\:border-slate-900 {\n &[data-state=\"active\"] {\n border-color: var(--color-slate-900);\n }\n }\n .data-\\[state\\=active\\]\\:border-b-primary {\n &[data-state=\"active\"] {\n border-bottom-color: var(--color-primary);\n }\n }\n .data-\\[state\\=active\\]\\:bg-\\[\\#6366f1\\] {\n &[data-state=\"active\"] {\n background-color: #6366f1;\n }\n }\n .data-\\[state\\=active\\]\\:bg-\\[var\\(--base-accent\\,\\#F4F4F5\\)\\] {\n &[data-state=\"active\"] {\n background-color: var(--base-accent,#F4F4F5);\n }\n }\n .data-\\[state\\=active\\]\\:bg-background {\n &[data-state=\"active\"] {\n background-color: var(--color-background);\n }\n }\n .data-\\[state\\=active\\]\\:bg-slate-900 {\n &[data-state=\"active\"] {\n background-color: var(--color-slate-900);\n }\n }\n .data-\\[state\\=active\\]\\:text-\\[var\\(--tab-active-color\\)\\] {\n &[data-state=\"active\"] {\n color: var(--tab-active-color);\n }\n }\n .data-\\[state\\=active\\]\\:text-white {\n &[data-state=\"active\"] {\n color: var(--color-white);\n }\n }\n .data-\\[state\\=active\\]\\:shadow-none {\n &[data-state=\"active\"] {\n --tw-shadow: 0 0 #0000;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[state\\=active\\]\\:shadow-sm {\n &[data-state=\"active\"] {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[state\\=active\\]\\:after\\:scale-x-100 {\n &[data-state=\"active\"] {\n &::after {\n content: var(--tw-content);\n --tw-scale-x: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .data-\\[state\\=checked\\]\\:translate-x-\\[72px\\] {\n &[data-state=\"checked\"] {\n --tw-translate-x: 72px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=checked\\]\\:translate-x-\\[var\\(--sw-on\\)\\] {\n &[data-state=\"checked\"] {\n --tw-translate-x: var(--sw-on);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=checked\\]\\:border-black {\n &[data-state=\"checked\"] {\n border-color: var(--color-black);\n }\n }\n .data-\\[state\\=checked\\]\\:border-blue-600 {\n &[data-state=\"checked\"] {\n border-color: var(--color-blue-600);\n }\n }\n .data-\\[state\\=checked\\]\\:border-primary {\n &[data-state=\"checked\"] {\n border-color: var(--color-primary);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-black {\n &[data-state=\"checked\"] {\n background-color: var(--color-black);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-blue-600 {\n &[data-state=\"checked\"] {\n background-color: var(--color-blue-600);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-primary {\n &[data-state=\"checked\"] {\n background-color: var(--color-primary);\n }\n }\n .data-\\[state\\=checked\\]\\:text-primary-foreground {\n &[data-state=\"checked\"] {\n color: var(--color-primary-foreground);\n }\n }\n .data-\\[state\\=checked\\]\\:text-white {\n &[data-state=\"checked\"] {\n color: var(--color-white);\n }\n }\n .data-\\[state\\=checked\\]\\:\\[background\\:var\\(--switch-checked-bg\\)\\] {\n &[data-state=\"checked\"] {\n background: var(--switch-checked-bg);\n }\n }\n .group-data-\\[size\\=default\\]\\/switch\\:data-\\[state\\=checked\\]\\:translate-x-\\[calc\\(100\\%-2px\\)\\] {\n &:is(:where(.group\\/switch)[data-size=\"default\"] *) {\n &[data-state=\"checked\"] {\n --tw-translate-x: calc(100% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-data-\\[size\\=sm\\]\\/switch\\:data-\\[state\\=checked\\]\\:translate-x-\\[calc\\(100\\%-2px\\)\\] {\n &:is(:where(.group\\/switch)[data-size=\"sm\"] *) {\n &[data-state=\"checked\"] {\n --tw-translate-x: calc(100% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[state\\=closed\\]\\:duration-300 {\n &[data-state=\"closed\"] {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n }\n .data-\\[state\\=inactive\\]\\:hidden {\n &[data-state=\"inactive\"] {\n display: none;\n }\n }\n .data-\\[state\\=on\\]\\:bg-muted {\n &[data-state=\"on\"] {\n background-color: var(--color-muted);\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent {\n &[data-state=\"open\"] {\n background-color: var(--color-accent);\n }\n }\n .data-\\[state\\=open\\]\\:bg-secondary {\n &[data-state=\"open\"] {\n background-color: var(--color-secondary);\n }\n }\n .data-\\[state\\=open\\]\\:text-muted-foreground {\n &[data-state=\"open\"] {\n color: var(--color-muted-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:opacity-100 {\n &[data-state=\"open\"] {\n opacity: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:duration-500 {\n &[data-state=\"open\"] {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n }\n .data-\\[state\\=selected\\]\\:bg-muted {\n &[data-state=\"selected\"] {\n background-color: var(--color-muted);\n }\n }\n .data-\\[state\\=unchecked\\]\\:translate-x-\\[4px\\] {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: 4px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=unchecked\\]\\:translate-x-\\[var\\(--sw-off\\)\\] {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: var(--sw-off);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=unchecked\\]\\:bg-input {\n &[data-state=\"unchecked\"] {\n background-color: var(--color-input);\n }\n }\n .group-data-\\[size\\=default\\]\\/switch\\:data-\\[state\\=unchecked\\]\\:translate-x-0 {\n &:is(:where(.group\\/switch)[data-size=\"default\"] *) {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-data-\\[size\\=sm\\]\\/switch\\:data-\\[state\\=unchecked\\]\\:translate-x-0 {\n &:is(:where(.group\\/switch)[data-size=\"sm\"] *) {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:border-l-0 {\n &:is(:where(.group\\/toggle-group)[data-horizontal] *) {\n &[data-spacing=\"0\"] {\n &[data-variant=\"outline\"] {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n }\n }\n .group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:border-t-0 {\n &:is(:where(.group\\/toggle-group)[data-vertical] *) {\n &[data-spacing=\"0\"] {\n &[data-variant=\"outline\"] {\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n }\n }\n }\n .group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:first\\:border-l {\n &:is(:where(.group\\/toggle-group)[data-horizontal] *) {\n &[data-spacing=\"0\"] {\n &[data-variant=\"outline\"] {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n }\n }\n }\n .group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:first\\:border-t {\n &:is(:where(.group\\/toggle-group)[data-vertical] *) {\n &[data-spacing=\"0\"] {\n &[data-variant=\"outline\"] {\n &:first-child {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n }\n }\n }\n }\n .supports-\\[backdrop-filter\\]\\:bg-background\\/80 {\n @supports (backdrop-filter: var(--tw)) {\n background-color: color-mix(in srgb, #ffffff 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-background) 80%, transparent);\n }\n }\n }\n .motion-safe\\:transition-\\[width\\] {\n @media (prefers-reduced-motion: no-preference) {\n transition-property: width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n .motion-safe\\:duration-1000 {\n @media (prefers-reduced-motion: no-preference) {\n --tw-duration: 1000ms;\n transition-duration: 1000ms;\n }\n }\n .motion-safe\\:ease-linear {\n @media (prefers-reduced-motion: no-preference) {\n --tw-ease: linear;\n transition-timing-function: linear;\n }\n }\n .motion-reduce\\:transition-none {\n @media (prefers-reduced-motion: reduce) {\n transition-property: none;\n }\n }\n .max-\\[860px\\]\\:gap-\\[6px\\] {\n @media (width < 860px) {\n gap: 6px;\n }\n }\n .max-\\[860px\\]\\:p-\\[6px\\] {\n @media (width < 860px) {\n padding: 6px;\n }\n }\n .max-\\[800px\\]\\:flex-col {\n @media (width < 800px) {\n flex-direction: column;\n }\n }\n .max-\\[750px\\]\\:col-start-1 {\n @media (width < 750px) {\n grid-column-start: 1;\n }\n }\n .max-\\[750px\\]\\:col-end-1 {\n @media (width < 750px) {\n grid-column-end: 1;\n }\n }\n .max-\\[750px\\]\\:grid-cols-1 {\n @media (width < 750px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n .max-\\[750px\\]\\:flex-col {\n @media (width < 750px) {\n flex-direction: column;\n }\n }\n .max-\\[750px\\]\\:gap-0 {\n @media (width < 750px) {\n gap: calc(var(--spacing) * 0);\n }\n }\n .max-md\\:flex-wrap {\n @media (width < 48rem) {\n flex-wrap: wrap;\n }\n }\n .max-sm\\:mt-2 {\n @media (width < 40rem) {\n margin-top: calc(var(--spacing) * 2);\n }\n }\n .min-\\[861px\\]\\:col-span-2 {\n @media (width >= 861px) {\n grid-column: span 2 / span 2;\n }\n }\n .min-\\[861px\\]\\:mx-0 {\n @media (width >= 861px) {\n margin-inline: calc(var(--spacing) * 0);\n }\n }\n .min-\\[861px\\]\\:basis-\\[42\\%\\] {\n @media (width >= 861px) {\n flex-basis: 42%;\n }\n }\n .min-\\[861px\\]\\:grid-cols-2 {\n @media (width >= 861px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .min-\\[861px\\]\\:grid-cols-3 {\n @media (width >= 861px) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .min-\\[861px\\]\\:grid-cols-4 {\n @media (width >= 861px) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .min-\\[861px\\]\\:flex-row {\n @media (width >= 861px) {\n flex-direction: row;\n }\n }\n .min-\\[861px\\]\\:items-center {\n @media (width >= 861px) {\n align-items: center;\n }\n }\n .min-\\[1101px\\]\\:grid-cols-3 {\n @media (width >= 1101px) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .min-\\[1101px\\]\\:grid-cols-5 {\n @media (width >= 1101px) {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n }\n .min-\\[1101px\\]\\:grid-cols-6 {\n @media (width >= 1101px) {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n }\n .sm\\:col-span-2 {\n @media (width >= 40rem) {\n grid-column: span 2 / span 2;\n }\n }\n .sm\\:col-span-3 {\n @media (width >= 40rem) {\n grid-column: span 3 / span 3;\n }\n }\n .sm\\:-mx-6 {\n @media (width >= 40rem) {\n margin-inline: calc(var(--spacing) * -6);\n }\n }\n .sm\\:my-8 {\n @media (width >= 40rem) {\n margin-block: calc(var(--spacing) * 8);\n }\n }\n .sm\\:mt-0 {\n @media (width >= 40rem) {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .sm\\:mt-10 {\n @media (width >= 40rem) {\n margin-top: calc(var(--spacing) * 10);\n }\n }\n .sm\\:mb-1 {\n @media (width >= 40rem) {\n margin-bottom: calc(var(--spacing) * 1);\n }\n }\n .sm\\:ml-2 {\n @media (width >= 40rem) {\n margin-left: calc(var(--spacing) * 2);\n }\n }\n .sm\\:ml-4 {\n @media (width >= 40rem) {\n margin-left: calc(var(--spacing) * 4);\n }\n }\n .sm\\:block {\n @media (width >= 40rem) {\n display: block;\n }\n }\n .sm\\:flex {\n @media (width >= 40rem) {\n display: flex;\n }\n }\n .sm\\:grid {\n @media (width >= 40rem) {\n display: grid;\n }\n }\n .sm\\:hidden {\n @media (width >= 40rem) {\n display: none;\n }\n }\n .sm\\:size-4 {\n @media (width >= 40rem) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .sm\\:w-1\\/2 {\n @media (width >= 40rem) {\n width: calc(1/2 * 100%);\n }\n }\n .sm\\:w-auto {\n @media (width >= 40rem) {\n width: auto;\n }\n }\n .sm\\:w-full {\n @media (width >= 40rem) {\n width: 100%;\n }\n }\n .sm\\:max-w-1\\/2 {\n @media (width >= 40rem) {\n max-width: calc(1/2 * 100%);\n }\n }\n .sm\\:max-w-2xl {\n @media (width >= 40rem) {\n max-width: var(--container-2xl);\n }\n }\n .sm\\:max-w-3xl {\n @media (width >= 40rem) {\n max-width: var(--container-3xl);\n }\n }\n .sm\\:max-w-3xl\\! {\n @media (width >= 40rem) {\n max-width: var(--container-3xl) !important;\n }\n }\n .sm\\:max-w-6xl {\n @media (width >= 40rem) {\n max-width: var(--container-6xl);\n }\n }\n .sm\\:max-w-\\[420px\\] {\n @media (width >= 40rem) {\n max-width: 420px;\n }\n }\n .sm\\:max-w-\\[425px\\] {\n @media (width >= 40rem) {\n max-width: 425px;\n }\n }\n .sm\\:max-w-\\[440px\\] {\n @media (width >= 40rem) {\n max-width: 440px;\n }\n }\n .sm\\:max-w-\\[480px\\] {\n @media (width >= 40rem) {\n max-width: 480px;\n }\n }\n .sm\\:max-w-\\[520px\\] {\n @media (width >= 40rem) {\n max-width: 520px;\n }\n }\n .sm\\:max-w-\\[540px\\] {\n @media (width >= 40rem) {\n max-width: 540px;\n }\n }\n .sm\\:max-w-\\[560px\\] {\n @media (width >= 40rem) {\n max-width: 560px;\n }\n }\n .sm\\:max-w-\\[600px\\] {\n @media (width >= 40rem) {\n max-width: 600px;\n }\n }\n .sm\\:max-w-\\[860px\\] {\n @media (width >= 40rem) {\n max-width: 860px;\n }\n }\n .sm\\:max-w-\\[950px\\] {\n @media (width >= 40rem) {\n max-width: 950px;\n }\n }\n .sm\\:max-w-lg {\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n }\n .sm\\:max-w-md {\n @media (width >= 40rem) {\n max-width: var(--container-md);\n }\n }\n .sm\\:max-w-none {\n @media (width >= 40rem) {\n max-width: none;\n }\n }\n .sm\\:max-w-sm {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n .sm\\:max-w-xl {\n @media (width >= 40rem) {\n max-width: var(--container-xl);\n }\n }\n .sm\\:grid-cols-2 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .sm\\:grid-cols-3 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .sm\\:grid-cols-4 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .sm\\:grid-cols-5 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n }\n .sm\\:grid-cols-6 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:flex-row-reverse {\n @media (width >= 40rem) {\n flex-direction: row-reverse;\n }\n }\n .sm\\:items-center {\n @media (width >= 40rem) {\n align-items: center;\n }\n }\n .sm\\:\\!justify-start {\n @media (width >= 40rem) {\n justify-content: flex-start !important;\n }\n }\n .sm\\:justify-between {\n @media (width >= 40rem) {\n justify-content: space-between;\n }\n }\n .sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n .sm\\:justify-start {\n @media (width >= 40rem) {\n justify-content: flex-start;\n }\n }\n .sm\\:gap-2\\.5 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:gap-3 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 3);\n }\n }\n .sm\\:gap-4 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 4);\n }\n }\n .sm\\:gap-5 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 5);\n }\n }\n .sm\\:gap-6 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 6);\n }\n }\n .sm\\:truncate {\n @media (width >= 40rem) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n .sm\\:rounded-lg {\n @media (width >= 40rem) {\n border-radius: var(--radius-lg);\n }\n }\n .sm\\:border-t-0 {\n @media (width >= 40rem) {\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n }\n .sm\\:border-l {\n @media (width >= 40rem) {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .sm\\:p-0 {\n @media (width >= 40rem) {\n padding: calc(var(--spacing) * 0);\n }\n }\n .sm\\:p-4 {\n @media (width >= 40rem) {\n padding: calc(var(--spacing) * 4);\n }\n }\n .sm\\:p-6 {\n @media (width >= 40rem) {\n padding: calc(var(--spacing) * 6);\n }\n }\n .sm\\:p-8 {\n @media (width >= 40rem) {\n padding: calc(var(--spacing) * 8);\n }\n }\n .sm\\:px-0 {\n @media (width >= 40rem) {\n padding-inline: calc(var(--spacing) * 0);\n }\n }\n .sm\\:px-6 {\n @media (width >= 40rem) {\n padding-inline: calc(var(--spacing) * 6);\n }\n }\n .sm\\:px-8 {\n @media (width >= 40rem) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n .sm\\:py-4 {\n @media (width >= 40rem) {\n padding-block: calc(var(--spacing) * 4);\n }\n }\n .sm\\:py-5 {\n @media (width >= 40rem) {\n padding-block: calc(var(--spacing) * 5);\n }\n }\n .sm\\:py-32 {\n @media (width >= 40rem) {\n padding-block: calc(var(--spacing) * 32);\n }\n }\n .sm\\:pt-8 {\n @media (width >= 40rem) {\n padding-top: calc(var(--spacing) * 8);\n }\n }\n .sm\\:pr-0 {\n @media (width >= 40rem) {\n padding-right: calc(var(--spacing) * 0);\n }\n }\n .sm\\:pr-8 {\n @media (width >= 40rem) {\n padding-right: calc(var(--spacing) * 8);\n }\n }\n .sm\\:pl-0 {\n @media (width >= 40rem) {\n padding-left: calc(var(--spacing) * 0);\n }\n }\n .sm\\:text-left {\n @media (width >= 40rem) {\n text-align: left;\n }\n }\n .sm\\:text-2xl {\n @media (width >= 40rem) {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n }\n .sm\\:text-4xl {\n @media (width >= 40rem) {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n }\n .sm\\:text-5xl {\n @media (width >= 40rem) {\n font-size: var(--text-5xl);\n line-height: var(--tw-leading, var(--text-5xl--line-height));\n }\n }\n .sm\\:text-7xl {\n @media (width >= 40rem) {\n font-size: var(--text-7xl);\n line-height: var(--tw-leading, var(--text-7xl--line-height));\n }\n }\n .sm\\:text-sm\\/6 {\n @media (width >= 40rem) {\n font-size: var(--text-sm);\n line-height: calc(var(--spacing) * 6);\n }\n }\n .sm\\:text-xl {\n @media (width >= 40rem) {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n }\n .sm\\:text-xl\\/8 {\n @media (width >= 40rem) {\n font-size: var(--text-xl);\n line-height: calc(var(--spacing) * 8);\n }\n }\n .sm\\:tracking-tight {\n @media (width >= 40rem) {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n }\n .data-\\[closed\\]\\:sm\\:translate-y-0 {\n &[data-closed] {\n @media (width >= 40rem) {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[closed\\]\\:sm\\:scale-95 {\n &[data-closed] {\n @media (width >= 40rem) {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .md\\:static {\n @media (width >= 48rem) {\n position: static;\n }\n }\n .md\\:col-span-2 {\n @media (width >= 48rem) {\n grid-column: span 2 / span 2;\n }\n }\n .md\\:mt-0 {\n @media (width >= 48rem) {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .md\\:block {\n @media (width >= 48rem) {\n display: block;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:hidden {\n @media (width >= 48rem) {\n display: none;\n }\n }\n .md\\:w-\\[125px\\] {\n @media (width >= 48rem) {\n width: 125px;\n }\n }\n .md\\:w-auto {\n @media (width >= 48rem) {\n width: auto;\n }\n }\n .md\\:flex-1 {\n @media (width >= 48rem) {\n flex: 1;\n }\n }\n .md\\:flex-\\[1\\.15\\] {\n @media (width >= 48rem) {\n flex: 1.15;\n }\n }\n .md\\:translate-x-0 {\n @media (width >= 48rem) {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .md\\:grid-cols-1 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-4 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-\\[1fr_1\\.2fr\\] {\n @media (width >= 48rem) {\n grid-template-columns: 1fr 1.2fr;\n }\n }\n .md\\:grid-cols-\\[220px_1fr\\] {\n @media (width >= 48rem) {\n grid-template-columns: 220px 1fr;\n }\n }\n .md\\:grid-cols-\\[minmax\\(0\\,1fr\\)_280px\\] {\n @media (width >= 48rem) {\n grid-template-columns: minmax(0,1fr) 280px;\n }\n }\n .md\\:flex-row {\n @media (width >= 48rem) {\n flex-direction: row;\n }\n }\n .md\\:items-center {\n @media (width >= 48rem) {\n align-items: center;\n }\n }\n .md\\:justify-between {\n @media (width >= 48rem) {\n justify-content: space-between;\n }\n }\n .md\\:gap-2 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 2);\n }\n }\n .md\\:gap-4 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 4);\n }\n }\n .md\\:rounded-full {\n @media (width >= 48rem) {\n border-radius: calc(infinity * 1px);\n }\n }\n .md\\:border-r {\n @media (width >= 48rem) {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .md\\:border-b-0 {\n @media (width >= 48rem) {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .md\\:px-3 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .md\\:py-1 {\n @media (width >= 48rem) {\n padding-block: calc(var(--spacing) * 1);\n }\n }\n .md\\:py-16 {\n @media (width >= 48rem) {\n padding-block: calc(var(--spacing) * 16);\n }\n }\n .md\\:py-28 {\n @media (width >= 48rem) {\n padding-block: calc(var(--spacing) * 28);\n }\n }\n .md\\:pt-4 {\n @media (width >= 48rem) {\n padding-top: calc(var(--spacing) * 4);\n }\n }\n .md\\:text-6xl {\n @media (width >= 48rem) {\n font-size: var(--text-6xl);\n line-height: var(--tw-leading, var(--text-6xl--line-height));\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .md\\:leading-normal {\n @media (width >= 48rem) {\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n }\n }\n .md\\:opacity-0 {\n @media (width >= 48rem) {\n opacity: 0%;\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:m-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin: calc(var(--spacing) * 2);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:ml-0 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin-left: calc(var(--spacing) * 0);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:rounded-xl {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n border-radius: var(--radius-xl);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:shadow-sm {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:peer-data-\\[state\\=collapsed\\]\\:ml-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n &:is(:where(.peer)[data-state=\"collapsed\"] ~ *) {\n margin-left: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .md\\:after\\:hidden {\n @media (width >= 48rem) {\n &::after {\n content: var(--tw-content);\n display: none;\n }\n }\n }\n .lg\\:fixed {\n @media (width >= 64rem) {\n position: fixed;\n }\n }\n .lg\\:inset-y-0 {\n @media (width >= 64rem) {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .lg\\:z-50 {\n @media (width >= 64rem) {\n z-index: 50;\n }\n }\n .lg\\:col-span-1 {\n @media (width >= 64rem) {\n grid-column: span 1 / span 1;\n }\n }\n .lg\\:col-span-2 {\n @media (width >= 64rem) {\n grid-column: span 2 / span 2;\n }\n }\n .lg\\:-mx-8 {\n @media (width >= 64rem) {\n margin-inline: calc(var(--spacing) * -8);\n }\n }\n .lg\\:flex {\n @media (width >= 64rem) {\n display: flex;\n }\n }\n .lg\\:hidden {\n @media (width >= 64rem) {\n display: none;\n }\n }\n .lg\\:h-\\[75vh\\] {\n @media (width >= 64rem) {\n height: 75vh;\n }\n }\n .lg\\:w-72 {\n @media (width >= 64rem) {\n width: calc(var(--spacing) * 72);\n }\n }\n .lg\\:w-full {\n @media (width >= 64rem) {\n width: 100%;\n }\n }\n .lg\\:flex-\\[0_0_35\\%\\] {\n @media (width >= 64rem) {\n flex: 0 0 35%;\n }\n }\n .lg\\:flex-\\[0_0_65\\%\\] {\n @media (width >= 64rem) {\n flex: 0 0 65%;\n }\n }\n .lg\\:grid-cols-2 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-4 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-5 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-6 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-\\[2fr_1fr\\] {\n @media (width >= 64rem) {\n grid-template-columns: 2fr 1fr;\n }\n }\n .lg\\:flex-col {\n @media (width >= 64rem) {\n flex-direction: column;\n }\n }\n .lg\\:flex-row {\n @media (width >= 64rem) {\n flex-direction: row;\n }\n }\n .lg\\:items-stretch {\n @media (width >= 64rem) {\n align-items: stretch;\n }\n }\n .lg\\:justify-between {\n @media (width >= 64rem) {\n justify-content: space-between;\n }\n }\n .lg\\:justify-end {\n @media (width >= 64rem) {\n justify-content: flex-end;\n }\n }\n .lg\\:border-r {\n @media (width >= 64rem) {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .lg\\:p-8 {\n @media (width >= 64rem) {\n padding: calc(var(--spacing) * 8);\n }\n }\n .lg\\:px-6 {\n @media (width >= 64rem) {\n padding-inline: calc(var(--spacing) * 6);\n }\n }\n .lg\\:px-8 {\n @media (width >= 64rem) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n .lg\\:py-5 {\n @media (width >= 64rem) {\n padding-block: calc(var(--spacing) * 5);\n }\n }\n .lg\\:pt-8 {\n @media (width >= 64rem) {\n padding-top: calc(var(--spacing) * 8);\n }\n }\n .lg\\:pl-72 {\n @media (width >= 64rem) {\n padding-left: calc(var(--spacing) * 72);\n }\n }\n .xl\\:sticky {\n @media (width >= 80rem) {\n position: sticky;\n }\n }\n .xl\\:top-0 {\n @media (width >= 80rem) {\n top: calc(var(--spacing) * 0);\n }\n }\n .xl\\:grid-cols-4 {\n @media (width >= 80rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .xl\\:grid-cols-\\[250px_minmax\\(0\\,1fr\\)_236px\\] {\n @media (width >= 80rem) {\n grid-template-columns: 250px minmax(0,1fr) 236px;\n }\n }\n .xl\\:grid-cols-\\[760px_280px\\] {\n @media (width >= 80rem) {\n grid-template-columns: 760px 280px;\n }\n }\n .xl\\:gap-x-8 {\n @media (width >= 80rem) {\n column-gap: calc(var(--spacing) * 8);\n }\n }\n .\\32 xl\\:grid-cols-3 {\n @media (width >= 96rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .\\@max-md\\:hidden {\n @container (width < 28rem) {\n display: none;\n }\n }\n .\\@max-md\\:grid-cols-1 {\n @container (width < 28rem) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n .\\@min-\\[460px\\]\\/strip\\:grid-cols-2 {\n @container strip (width >= 460px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .\\@min-\\[640px\\]\\:px-8 {\n @container (width >= 640px) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n .\\@min-\\[640px\\]\\:pb-3 {\n @container (width >= 640px) {\n padding-bottom: calc(var(--spacing) * 3);\n }\n }\n .\\@min-\\[760px\\]\\/strip\\:grid-cols-3 {\n @container strip (width >= 760px) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .\\@min-\\[1200px\\]\\/strip\\:grid-cols-6 {\n @container strip (width >= 1200px) {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n }\n .dark\\:block {\n @media (prefers-color-scheme: dark) {\n display: block;\n }\n }\n .dark\\:hidden {\n @media (prefers-color-scheme: dark) {\n display: none;\n }\n }\n .dark\\:border-amber-800 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-amber-800);\n }\n }\n .dark\\:border-amber-900 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-amber-900);\n }\n }\n .dark\\:border-blue-900 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-blue-900);\n }\n }\n .dark\\:border-emerald-900 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-emerald-900);\n }\n }\n .dark\\:border-gray-500 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-gray-500);\n }\n }\n .dark\\:border-green-900 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-green-900);\n }\n }\n .dark\\:border-input {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-input);\n }\n }\n .dark\\:border-purple-900 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-purple-900);\n }\n }\n .dark\\:border-slate-700 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-slate-700);\n }\n }\n .dark\\:border-teal-400\\/25 {\n @media (prefers-color-scheme: dark) {\n border-color: color-mix(in srgb, oklch(77.7% 0.152 181.912) 25%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-teal-400) 25%, transparent);\n }\n }\n }\n .dark\\:bg-amber-950\\/40 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(27.9% 0.077 45.635) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-amber-950) 40%, transparent);\n }\n }\n }\n .dark\\:bg-amber-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(27.9% 0.077 45.635) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-amber-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-blue-950\\/20 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(28.2% 0.091 267.935) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-950) 20%, transparent);\n }\n }\n }\n .dark\\:bg-blue-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(28.2% 0.091 267.935) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-destructive\\/60 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, #dc2626 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 60%, transparent);\n }\n }\n }\n .dark\\:bg-emerald-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(26.2% 0.051 172.552) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-emerald-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-gray-100 {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-gray-100);\n }\n }\n .dark\\:bg-gray-500 {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-gray-500);\n }\n }\n .dark\\:bg-gray-600 {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-gray-600);\n }\n }\n .dark\\:bg-gray-700 {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-gray-700);\n }\n }\n .dark\\:bg-gray-900 {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-gray-900);\n }\n }\n .dark\\:bg-green-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(26.6% 0.065 152.934) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-green-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-input\\/30 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, #e4e4e7 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n }\n .dark\\:bg-orange-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(26.6% 0.079 36.259) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-orange-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-purple-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(29.1% 0.149 302.717) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-purple-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-slate-900\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(20.8% 0.042 265.755) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-slate-900) 50%, transparent);\n }\n }\n }\n .dark\\:bg-teal-950\\/30 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(27.7% 0.046 192.524) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-teal-950) 30%, transparent);\n }\n }\n }\n .dark\\:bg-white {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-white);\n }\n }\n .dark\\:p-\\[3px\\] {\n @media (prefers-color-scheme: dark) {\n padding: 3px;\n }\n }\n .dark\\:text-amber-200 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-amber-200);\n }\n }\n .dark\\:text-amber-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-amber-300);\n }\n }\n .dark\\:text-amber-400 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-amber-400);\n }\n }\n .dark\\:text-blue-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-blue-300);\n }\n }\n .dark\\:text-emerald-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-emerald-300);\n }\n }\n .dark\\:text-gray-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-gray-300);\n }\n }\n .dark\\:text-gray-600 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-gray-600);\n }\n }\n .dark\\:text-gray-900 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-gray-900);\n }\n }\n .dark\\:text-green-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-green-300);\n }\n }\n .dark\\:text-orange-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-orange-300);\n }\n }\n .dark\\:text-purple-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-purple-300);\n }\n }\n .dark\\:text-red-400 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-red-400);\n }\n }\n .dark\\:text-slate-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-slate-300);\n }\n }\n .dark\\:text-slate-400 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-slate-400);\n }\n }\n .dark\\:text-teal-100 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-teal-100);\n }\n }\n .dark\\:text-teal-100\\/60 {\n @media (prefers-color-scheme: dark) {\n color: color-mix(in srgb, oklch(95.3% 0.051 180.801) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-100) 60%, transparent);\n }\n }\n }\n .dark\\:text-teal-100\\/70 {\n @media (prefers-color-scheme: dark) {\n color: color-mix(in srgb, oklch(95.3% 0.051 180.801) 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-100) 70%, transparent);\n }\n }\n }\n .dark\\:text-teal-100\\/80 {\n @media (prefers-color-scheme: dark) {\n color: color-mix(in srgb, oklch(95.3% 0.051 180.801) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-100) 80%, transparent);\n }\n }\n }\n .dark\\:group-hover\\:border-gray-500 {\n @media (prefers-color-scheme: dark) {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n border-color: var(--color-gray-500);\n }\n }\n }\n }\n .dark\\:hover\\:border-gray-400 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-gray-400);\n }\n }\n }\n }\n .dark\\:hover\\:border-gray-500 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-gray-500);\n }\n }\n }\n }\n .dark\\:hover\\:border-red-900 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-red-900);\n }\n }\n }\n }\n .dark\\:hover\\:bg-accent\\/50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:bg-amber-900\\/50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(41.4% 0.112 45.904) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-amber-900) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:bg-gray-50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-50);\n }\n }\n }\n }\n .dark\\:hover\\:bg-gray-700 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-700);\n }\n }\n }\n }\n .dark\\:hover\\:bg-input\\/50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #e4e4e7 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:bg-red-950\\/50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(25.8% 0.092 26.042) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-red-950) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:text-red-400 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-400);\n }\n }\n }\n }\n .dark\\:hover\\:text-teal-50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n color: var(--color-teal-50);\n }\n }\n }\n }\n .dark\\:focus\\:border-gray-400 {\n @media (prefers-color-scheme: dark) {\n &:focus {\n border-color: var(--color-gray-400);\n }\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &:focus-visible {\n --tw-ring-color: color-mix(in srgb, #dc2626 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:disabled\\:bg-input\\/80 {\n @media (prefers-color-scheme: dark) {\n &:disabled {\n background-color: color-mix(in srgb, #e4e4e7 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 80%, transparent);\n }\n }\n }\n }\n .dark\\:has-\\[\\[aria-checked\\=true\\]\\]\\:border-blue-900 {\n @media (prefers-color-scheme: dark) {\n &:has(*:is([aria-checked=true])) {\n border-color: var(--color-blue-900);\n }\n }\n }\n .dark\\:has-\\[\\[aria-checked\\=true\\]\\]\\:bg-blue-950 {\n @media (prefers-color-scheme: dark) {\n &:has(*:is([aria-checked=true])) {\n background-color: var(--color-blue-950);\n }\n }\n }\n .dark\\:aria-invalid\\:border-destructive\\/50 {\n @media (prefers-color-scheme: dark) {\n &[aria-invalid=\"true\"] {\n border-color: color-mix(in srgb, #dc2626 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-destructive) 50%, transparent);\n }\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: color-mix(in srgb, #dc2626 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:border-slate-100 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"active\"] {\n border-color: var(--color-slate-100);\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:bg-slate-100 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"active\"] {\n background-color: var(--color-slate-100);\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:text-slate-900 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"active\"] {\n color: var(--color-slate-900);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:border-blue-700 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"checked\"] {\n border-color: var(--color-blue-700);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-blue-700 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"checked\"] {\n background-color: var(--color-blue-700);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"checked\"] {\n background-color: var(--color-primary);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary-foreground {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"checked\"] {\n background-color: var(--color-primary-foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=unchecked\\]\\:bg-input\\/80 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"unchecked\"] {\n background-color: color-mix(in srgb, #e4e4e7 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 80%, transparent);\n }\n }\n }\n }\n .print\\:fill-\\[\\#3730A3\\] {\n @media print {\n fill: #3730A3;\n }\n }\n .\\[\\&_\\.react-draggable\\]\\:cursor-grab {\n & .react-draggable {\n cursor: grab;\n }\n }\n .\\[\\&_\\.react-draggable-dragging\\]\\:\\!cursor-grabbing {\n & .react-draggable-dragging {\n cursor: grabbing !important;\n }\n }\n .\\[\\&_\\.react-grid-placeholder\\]\\:\\!bg-\\[\\#6366f1\\] {\n & .react-grid-placeholder {\n background-color: #6366f1 !important;\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:absolute {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n position: absolute;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:right-0 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n right: calc(var(--spacing) * 0);\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:bottom-0 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n bottom: calc(var(--spacing) * 0);\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:h-\\[10px\\] {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n height: 10px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:w-\\[10px\\] {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n width: 10px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-t-0 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-r-2 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n border-right-style: var(--tw-border-style);\n border-right-width: 2px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-b-2 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-l-0 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-solid {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n --tw-border-style: solid;\n border-style: solid;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-indigo-400 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n border-color: var(--color-indigo-400);\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:content-\\[\\\"\\\"\\] {\n & .react-resizable-handle-se {\n &::after {\n --tw-content: \"\";\n content: var(--tw-content);\n }\n }\n }\n .\\[\\&_\\.toggle\\.active\\]\\:bg-\\[\\#4E647F\\]\\! {\n & .toggle.active {\n background-color: #4E647F !important;\n }\n }\n .\\[\\&_\\:is\\(h1\\,h2\\,h3\\)\\]\\:m-0 {\n & :is(h1,h2,h3) {\n margin: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_a\\]\\:text-accent {\n & a {\n color: var(--color-accent);\n }\n }\n .\\[\\&_a\\]\\:text-blue-400 {\n & a {\n color: var(--color-blue-400);\n }\n }\n .\\[\\&_a\\]\\:text-blue-500 {\n & a {\n color: var(--color-blue-500);\n }\n }\n .\\[\\&_a\\]\\:text-white {\n & a {\n color: var(--color-white);\n }\n }\n .\\[\\&_a\\]\\:underline {\n & a {\n text-decoration-line: underline;\n }\n }\n .\\[\\&_a\\]\\:hover\\:text-blue-300 {\n & a {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-300);\n }\n }\n }\n }\n .\\[\\&_a\\]\\:hover\\:no-underline {\n & a {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: none;\n }\n }\n }\n }\n .\\[\\&_code\\]\\:rounded {\n & code {\n border-radius: 0.25rem;\n }\n }\n .\\[\\&_code\\]\\:rounded-\\[4px\\] {\n & code {\n border-radius: 4px;\n }\n }\n .\\[\\&_code\\]\\:bg-blue-100 {\n & code {\n background-color: var(--color-blue-100);\n }\n }\n .\\[\\&_code\\]\\:px-1 {\n & code {\n padding-inline: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_code\\]\\:px-\\[4px\\] {\n & code {\n padding-inline: 4px;\n }\n }\n .\\[\\&_code\\]\\:px-\\[5px\\] {\n & code {\n padding-inline: 5px;\n }\n }\n .\\[\\&_code\\]\\:py-0\\.5 {\n & code {\n padding-block: calc(var(--spacing) * 0.5);\n }\n }\n .\\[\\&_code\\]\\:py-\\[1px\\] {\n & code {\n padding-block: 1px;\n }\n }\n .\\[\\&_code\\]\\:font-mono {\n & code {\n font-family: var(--font-mono);\n }\n }\n .\\[\\&_code\\]\\:text-xs {\n & code {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&_code\\]\\:text-\\[11px\\] {\n & code {\n font-size: 11px;\n }\n }\n .\\[\\&_em\\]\\:italic {\n & em {\n font-style: italic;\n }\n }\n .\\[\\&_h1\\]\\:mt-2 {\n & h1 {\n margin-top: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_h1\\]\\:mb-1 {\n & h1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_h1\\]\\:text-lg {\n & h1 {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n }\n .\\[\\&_h1\\]\\:font-bold {\n & h1 {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n }\n .\\[\\&_h2\\]\\:mt-2 {\n & h2 {\n margin-top: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_h2\\]\\:mt-\\[1em\\] {\n & h2 {\n margin-top: 1em;\n }\n }\n .\\[\\&_h2\\]\\:mb-1 {\n & h2 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_h2\\]\\:text-base {\n & h2 {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n }\n .\\[\\&_h2\\]\\:text-lg {\n & h2 {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n }\n .\\[\\&_h2\\]\\:font-semibold {\n & h2 {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .\\[\\&_h2\\,\\&_h3\\]\\:mt-\\[1em\\] {\n & h2,& h3 {\n margin-top: 1em;\n }\n }\n .\\[\\&_h3\\]\\:mt-1 {\n & h3 {\n margin-top: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_h3\\]\\:mb-1 {\n & h3 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_h3\\]\\:text-sm {\n & h3 {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .\\[\\&_h3\\]\\:font-semibold {\n & h3 {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .\\[\\&_hr\\]\\:my-\\[1em\\] {\n & hr {\n margin-block: 1em;\n }\n }\n .\\[\\&_img\\]\\:my-2 {\n & img {\n margin-block: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_img\\]\\:max-w-full {\n & img {\n max-width: 100%;\n }\n }\n .\\[\\&_img\\]\\:rounded {\n & img {\n border-radius: 0.25rem;\n }\n }\n .\\[\\&_li\\]\\:my-0\\.5 {\n & li {\n margin-block: calc(var(--spacing) * 0.5);\n }\n }\n .\\[\\&_ol\\]\\:my-1 {\n & ol {\n margin-block: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_ol\\]\\:list-decimal {\n & ol {\n list-style-type: decimal;\n }\n }\n .\\[\\&_ol\\]\\:pl-4 {\n & ol {\n padding-left: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_ol\\]\\:pl-5 {\n & ol {\n padding-left: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_p\\]\\:my-1 {\n & p {\n margin-block: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_p\\+p\\]\\:mt-\\[1em\\] {\n & p+p {\n margin-top: 1em;\n }\n }\n .\\[\\&_pre\\]\\:my-2 {\n & pre {\n margin-block: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_pre\\]\\:max-w-full {\n & pre {\n max-width: 100%;\n }\n }\n .\\[\\&_pre\\]\\:overflow-x-auto {\n & pre {\n overflow-x: auto;\n }\n }\n .\\[\\&_pre\\]\\:rounded {\n & pre {\n border-radius: 0.25rem;\n }\n }\n .\\[\\&_pre\\]\\:bg-gray-800 {\n & pre {\n background-color: var(--color-gray-800);\n }\n }\n .\\[\\&_pre\\]\\:p-2 {\n & pre {\n padding: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_pre\\]\\:text-gray-100 {\n & pre {\n color: var(--color-gray-100);\n }\n }\n .\\[\\&_pre_code\\]\\:bg-transparent {\n & pre code {\n background-color: transparent;\n }\n }\n .\\[\\&_pre_code\\]\\:p-0 {\n & pre code {\n padding: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_pre_code\\]\\:break-words {\n & pre code {\n overflow-wrap: break-word;\n }\n }\n .\\[\\&_pre_code\\]\\:whitespace-pre-wrap {\n & pre code {\n white-space: pre-wrap;\n }\n }\n .\\[\\&_strong\\]\\:font-medium {\n & strong {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:size-4 {\n & svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_svg\\]\\:h-\\[12px\\] {\n & svg {\n height: 12px;\n }\n }\n .\\[\\&_svg\\]\\:h-\\[13px\\] {\n & svg {\n height: 13px;\n }\n }\n .\\[\\&_svg\\]\\:w-\\[12px\\] {\n & svg {\n width: 12px;\n }\n }\n .\\[\\&_svg\\]\\:w-\\[13px\\] {\n & svg {\n width: 13px;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_table\\]\\:min-w-full {\n & table {\n min-width: 100%;\n }\n }\n .\\[\\&_table\\]\\:table-fixed {\n & table {\n table-layout: fixed;\n }\n }\n .\\[\\&_tbody_td\\]\\:px-\\[17px\\] {\n & tbody td {\n padding-inline: 17px;\n }\n }\n .\\[\\&_tbody_td\\]\\:py-0 {\n & tbody td {\n padding-block: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_tbody_td\\]\\:text-\\[12px\\] {\n & tbody td {\n font-size: 12px;\n }\n }\n .\\[\\&_tbody_td\\]\\:tabular-nums {\n & tbody td {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n }\n .\\[\\&_tbody_tr\\]\\:h-\\[53px\\] {\n & tbody tr {\n height: 53px;\n }\n }\n .\\[\\&_tbody_tr\\]\\:transition-colors {\n & tbody tr {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n .\\[\\&_td\\]\\:border {\n & td {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .\\[\\&_td\\]\\:border-border {\n & td {\n border-color: var(--color-border);\n }\n }\n .\\[\\&_td\\]\\:border-neutral-10 {\n & td {\n border-color: var(--color-neutral-10);\n }\n }\n .\\[\\&_td\\]\\:border-neutral-200 {\n & td {\n border-color: var(--color-neutral-200);\n }\n }\n .\\[\\&_td\\]\\:p-1 {\n & td {\n padding: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_td\\]\\:p-2 {\n & td {\n padding: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_td\\]\\:px-3 {\n & td {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_td\\]\\:py-1\\.5 {\n & td {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_th\\]\\:sticky {\n & th {\n position: sticky;\n }\n }\n .\\[\\&_th\\]\\:top-0 {\n & th {\n top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_th\\]\\:z-\\[1\\] {\n & th {\n z-index: 1;\n }\n }\n .\\[\\&_th\\]\\:border {\n & th {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .\\[\\&_th\\]\\:border-border {\n & th {\n border-color: var(--color-border);\n }\n }\n .\\[\\&_th\\]\\:border-neutral-10 {\n & th {\n border-color: var(--color-neutral-10);\n }\n }\n .\\[\\&_th\\]\\:border-neutral-200 {\n & th {\n border-color: var(--color-neutral-200);\n }\n }\n .\\[\\&_th\\]\\:p-1 {\n & th {\n padding: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_th\\]\\:p-2 {\n & th {\n padding: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_th\\]\\:px-3 {\n & th {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_th\\]\\:py-1\\.5 {\n & th {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_th\\]\\:py-2 {\n & th {\n padding-block: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_th\\]\\:text-\\[14px\\] {\n & th {\n font-size: 14px;\n }\n }\n .\\[\\&_th\\]\\:font-medium {\n & th {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_th\\]\\:tracking-wide {\n & th {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n }\n .\\[\\&_th\\]\\:uppercase {\n & th {\n text-transform: uppercase;\n }\n }\n .\\[\\&_th\\]\\:shadow-\\[inset_0_-1px_0_var\\(--border\\)\\] {\n & th {\n --tw-shadow: inset 0 -1px 0 var(--tw-shadow-color, var(--border));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .\\[\\&_thead_th\\]\\:sticky {\n & thead th {\n position: sticky;\n }\n }\n .\\[\\&_thead_th\\]\\:h-\\[48px\\] {\n & thead th {\n height: 48px;\n }\n }\n .\\[\\&_thead_th\\]\\:px-\\[17px\\] {\n & thead th {\n padding-inline: 17px;\n }\n }\n .\\[\\&_thead_th\\]\\:font-mono {\n & thead th {\n font-family: var(--font-mono);\n }\n }\n .\\[\\&_thead_th\\]\\:text-\\[10px\\] {\n & thead th {\n font-size: 10px;\n }\n }\n .\\[\\&_thead_th\\]\\:font-medium {\n & thead th {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_thead_th\\]\\:tracking-\\[0\\.05em\\] {\n & thead th {\n --tw-tracking: 0.05em;\n letter-spacing: 0.05em;\n }\n }\n .\\[\\&_thead_th\\]\\:whitespace-nowrap {\n & thead th {\n white-space: nowrap;\n }\n }\n .\\[\\&_thead_th\\]\\:uppercase {\n & thead th {\n text-transform: uppercase;\n }\n }\n .\\[\\&_thead_th_div\\>button\\]\\:gap-\\[4px\\] {\n & thead th div>button {\n gap: 4px;\n }\n }\n .\\[\\&_thead_th_div\\>button\\]\\:\\!text-\\[10px\\] {\n & thead th div>button {\n font-size: 10px !important;\n }\n }\n .\\[\\&_thead_th_div\\>button\\]\\:hover\\:bg-transparent {\n & thead th div>button {\n &:hover {\n @media (hover: hover) {\n background-color: transparent;\n }\n }\n }\n }\n .\\[\\&_thead_th_div\\>button_svg\\]\\:h-\\[11px\\] {\n & thead th div>button svg {\n height: 11px;\n }\n }\n .\\[\\&_thead_th_div\\>button_svg\\]\\:w-\\[11px\\] {\n & thead th div>button svg {\n width: 11px;\n }\n }\n .\\[\\&_thead_tr\\]\\:bg-blue-50 {\n & thead tr {\n background-color: var(--color-blue-50);\n }\n }\n .\\[\\&_thead_tr\\]\\:bg-muted\\/50 {\n & thead tr {\n background-color: color-mix(in srgb, #f7f7f6 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n }\n .\\[\\&_thead_tr\\]\\:bg-neutral-50 {\n & thead tr {\n background-color: var(--color-neutral-50);\n }\n }\n .\\[\\&_tr\\]\\:border-b {\n & tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .\\[\\&_tr\\:last-child\\]\\:border-0 {\n & tr:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .\\[\\&_ul\\]\\:my-1 {\n & ul {\n margin-block: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_ul\\]\\:list-inside {\n & ul {\n list-style-position: inside;\n }\n }\n .\\[\\&_ul\\]\\:list-disc {\n & ul {\n list-style-type: disc;\n }\n }\n .\\[\\&_ul\\]\\:pl-4 {\n & ul {\n padding-left: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_ul\\]\\:pl-5 {\n & ul {\n padding-left: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar\\]\\:hidden {\n &::-webkit-scrollbar {\n display: none;\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar\\]\\:w-1\\.5 {\n &::-webkit-scrollbar {\n width: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar\\]\\:w-\\[6px\\] {\n &::-webkit-scrollbar {\n width: 6px;\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar-thumb\\]\\:rounded-full {\n &::-webkit-scrollbar-thumb {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar-thumb\\]\\:bg-slate-300 {\n &::-webkit-scrollbar-thumb {\n background-color: var(--color-slate-300);\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar-track\\]\\:bg-transparent {\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n }\n .\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0 {\n &:has([role=checkbox]) {\n padding-right: calc(var(--spacing) * 0);\n }\n }\n .\\[\\.border-b\\]\\:pb-6 {\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 6);\n }\n }\n .\\[\\.border-t\\]\\:pt-6 {\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 6);\n }\n }\n .\\[\\&\\:last-child\\>td\\]\\:border-b-0 {\n &:last-child>td {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .\\[\\&\\>\\*\\]\\:m-0 {\n &>* {\n margin: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&\\>\\*\\]\\:shrink-0 {\n &>* {\n flex-shrink: 0;\n }\n }\n .\\[\\&\\>button\\]\\:hidden {\n &>button {\n display: none;\n }\n }\n .\\[\\&\\>button\\]\\:w-auto {\n &>button {\n width: auto;\n }\n }\n .\\[\\&\\>button\\]\\:cursor-not-allowed {\n &>button {\n cursor: not-allowed;\n }\n }\n .\\[\\&\\>button\\]\\:rounded-none\\! {\n &>button {\n border-radius: 0 !important;\n }\n }\n .\\[\\&\\>button\\]\\:bg-neutral-900 {\n &>button {\n background-color: var(--color-neutral-900);\n }\n }\n .\\[\\&\\>button\\]\\:bg-transparent\\! {\n &>button {\n background-color: transparent !important;\n }\n }\n .\\[\\&\\>button\\]\\:font-semibold {\n &>button {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .\\[\\&\\>button\\]\\:text-neutral-300 {\n &>button {\n color: var(--color-neutral-300);\n }\n }\n .\\[\\&\\>button\\]\\:text-neutral-900\\! {\n &>button {\n color: var(--color-neutral-900) !important;\n }\n }\n .\\[\\&\\>button\\]\\:text-white {\n &>button {\n color: var(--color-white);\n }\n }\n .\\[\\&\\>button\\]\\:line-through {\n &>button {\n text-decoration-line: line-through;\n }\n }\n .\\[\\&\\>button\\]\\:underline {\n &>button {\n text-decoration-line: underline;\n }\n }\n .\\[\\&\\>button\\]\\:decoration-2 {\n &>button {\n text-decoration-thickness: 2px;\n }\n }\n .\\[\\&\\>button\\]\\:underline-offset-4 {\n &>button {\n text-underline-offset: 4px;\n }\n }\n .\\[\\&\\>button\\]\\:hover\\:bg-neutral-900 {\n &>button {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-900);\n }\n }\n }\n }\n .\\[\\&\\>button\\]\\:hover\\:bg-transparent\\! {\n &>button {\n &:hover {\n @media (hover: hover) {\n background-color: transparent !important;\n }\n }\n }\n }\n .\\[\\&\\>button\\]\\:hover\\:text-neutral-900\\! {\n &>button {\n &:hover {\n @media (hover: hover) {\n color: var(--color-neutral-900) !important;\n }\n }\n }\n }\n .\\[\\&\\>button\\]\\:hover\\:text-white {\n &>button {\n &:hover {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n }\n .\\[\\&\\>button\\:last-child\\]\\:mt-0 {\n &>button:last-child {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&\\>div\\]\\:min-w-\\[200px\\] {\n &>div {\n min-width: 200px;\n }\n }\n .\\[\\&\\>div\\]\\:flex-1 {\n &>div {\n flex: 1;\n }\n }\n .\\[\\&\\>div\\]\\:\\!rounded-none {\n &>div {\n border-radius: 0 !important;\n }\n }\n .\\[\\&\\>div\\]\\:\\!border-0 {\n &>div {\n border-style: var(--tw-border-style) !important;\n border-width: 0px !important;\n }\n }\n .\\[\\&\\>div\\]\\:\\!shadow-none {\n &>div {\n --tw-shadow: 0 0 #0000 !important;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow) !important;\n }\n }\n .\\[\\&\\>div_label\\]\\:mb-2 {\n &>div label {\n margin-bottom: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&\\>div_label\\]\\:block {\n &>div label {\n display: block;\n }\n }\n .\\[\\&\\>div_label\\]\\:text-sm {\n &>div label {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .\\[\\&\\>div_label\\]\\:font-medium {\n &>div label {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&\\>div_label\\]\\:text-gray-700 {\n &>div label {\n color: var(--color-gray-700);\n }\n }\n .\\[\\&\\>div\\:first-child\\]\\:min-w-\\[200px\\] {\n &>div:first-child {\n min-width: 200px;\n }\n }\n .\\[\\&\\>div\\:first-child\\]\\:flex-1 {\n &>div:first-child {\n flex: 1;\n }\n }\n .\\[\\&\\>div\\:nth-child\\(2\\)\\]\\:min-w-\\[200px\\] {\n &>div:nth-child(2) {\n min-width: 200px;\n }\n }\n .\\[\\&\\>div\\:nth-child\\(2\\)\\]\\:flex-1 {\n &>div:nth-child(2) {\n flex: 1;\n }\n }\n .\\[\\&\\>label\\]\\:mb-2 {\n &>label {\n margin-bottom: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&\\>label\\]\\:block {\n &>label {\n display: block;\n }\n }\n .\\[\\&\\>label\\]\\:text-sm {\n &>label {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .\\[\\&\\>label\\]\\:font-medium {\n &>label {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&\\>label\\]\\:text-gray-700 {\n &>label {\n color: var(--color-gray-700);\n }\n }\n .max-\\[800px\\]\\:\\[\\&\\>li\\]\\:pb-4 {\n @media (width < 800px) {\n &>li {\n padding-bottom: calc(var(--spacing) * 4);\n }\n }\n }\n .\\[\\&\\>span\\]\\:line-clamp-1 {\n &>span {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n .\\[\\&\\>span\\:last-child\\]\\:truncate {\n &>span:last-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n .\\[\\&\\>svg\\]\\:pointer-events-none {\n &>svg {\n pointer-events: none;\n }\n }\n .\\[\\&\\>svg\\]\\:size-3 {\n &>svg {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:size-4 {\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>svg\\]\\:h-3\\.5 {\n &>svg {\n height: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\]\\:h-\\[12px\\] {\n &>svg {\n height: 12px;\n }\n }\n .\\[\\&\\>svg\\]\\:w-3\\.5 {\n &>svg {\n width: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\]\\:w-\\[12px\\] {\n &>svg {\n width: 12px;\n }\n }\n .\\[\\&\\>svg\\]\\:shrink-0 {\n &>svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&\\>tbody\\>tr\\:last-child\\>td\\]\\:border-b-0 {\n &>tbody>tr:last-child>td {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .\\[\\&\\>td\\]\\:border-b-0 {\n &>td {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .\\[\\&\\>td\\]\\:p-2 {\n &>td {\n padding: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&\\>th\\]\\:sticky {\n &>th {\n position: sticky;\n }\n }\n .\\[\\&\\>th\\]\\:top-0 {\n &>th {\n top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&\\>th\\]\\:z-10 {\n &>th {\n z-index: 10;\n }\n }\n .\\[\\&\\>th\\]\\:bg-muted {\n &>th {\n background-color: var(--color-muted);\n }\n }\n .\\[\\&\\>th\\]\\:bg-muted\\/70 {\n &>th {\n background-color: color-mix(in srgb, #f7f7f6 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 70%, transparent);\n }\n }\n }\n .\\[\\&\\>th\\]\\:p-2 {\n &>th {\n padding: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&\\>th\\]\\:text-left {\n &>th {\n text-align: left;\n }\n }\n .\\[\\&\\>th\\]\\:font-semibold {\n &>th {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .\\[\\&\\>tr\\]\\:last\\:border-b-0 {\n &>tr {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n .\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180 {\n &[data-state=open]>svg {\n rotate: 180deg;\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-right-2 {\n [data-side=left][data-collapsible=offcanvas] & {\n right: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize {\n [data-side=left][data-state=collapsed] & {\n cursor: e-resize;\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-left-2 {\n [data-side=right][data-collapsible=offcanvas] & {\n left: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize {\n [data-side=right][data-state=collapsed] & {\n cursor: w-resize;\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-accent {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-destructive\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #dc2626 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-green-200 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-green-200);\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-primary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #18181b 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-secondary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:text-accent-foreground {\n a& {\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n }\n .\\[table\\[data-flush\\]_\\&\\:last-child\\>td\\:first-child\\]\\:rounded-bl-\\[13px\\] {\n table[data-flush] &:last-child>td:first-child {\n border-bottom-left-radius: 13px;\n }\n }\n .\\[table\\[data-flush\\]_\\&\\:last-child\\>td\\:last-child\\]\\:rounded-br-\\[13px\\] {\n table[data-flush] &:last-child>td:last-child {\n border-bottom-right-radius: 13px;\n }\n }\n}\n@layer base {\n :root,\n :host {\n font-family: 'Inter', sans-serif;\n }\n}\n@property --tw-border-spacing-x {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-spacing-y {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-scroll-snap-strictness {\n syntax: \"*\";\n inherits: false;\n initial-value: proximity;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: \"<color>\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: \"<color>\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: \"<color>\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: \"<length-percentage>\";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: \"<length-percentage>\";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: \"<length-percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ordinal {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-slashed-zero {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-figure {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-spacing {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-fraction {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-content {\n syntax: \"*\";\n initial-value: \"\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes bounce {\n 0%, 100% {\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n }\n 50% {\n transform: none;\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-scroll-snap-strictness: proximity;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-ordinal: initial;\n --tw-slashed-zero: initial;\n --tw-numeric-figure: initial;\n --tw-numeric-spacing: initial;\n --tw-numeric-fraction: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-content: \"\";\n }\n }\n}\n";
|
|
3927
|
+
var css_248z = "/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-200: oklch(88.5% 0.062 18.334);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-red-800: oklch(44.4% 0.177 26.899);\n --color-red-900: oklch(39.6% 0.141 25.723);\n --color-red-950: oklch(25.8% 0.092 26.042);\n --color-orange-50: #f25c2b;\n --color-orange-100: #520c03;\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-300: oklch(83.7% 0.128 66.29);\n --color-orange-400: oklch(75% 0.183 55.934);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-orange-600: oklch(64.6% 0.222 41.116);\n --color-orange-700: oklch(55.3% 0.195 38.402);\n --color-orange-800: oklch(47% 0.157 37.304);\n --color-orange-950: oklch(26.6% 0.079 36.259);\n --color-amber-50: oklch(98.7% 0.022 95.277);\n --color-amber-100: oklch(96.2% 0.059 95.617);\n --color-amber-200: oklch(92.4% 0.12 95.746);\n --color-amber-300: oklch(87.9% 0.169 91.605);\n --color-amber-400: oklch(82.8% 0.189 84.429);\n --color-amber-500: oklch(76.9% 0.188 70.08);\n --color-amber-600: oklch(66.6% 0.179 58.318);\n --color-amber-700: oklch(55.5% 0.163 48.998);\n --color-amber-800: oklch(47.3% 0.137 46.201);\n --color-amber-900: oklch(41.4% 0.112 45.904);\n --color-amber-950: oklch(27.9% 0.077 45.635);\n --color-yellow-50: oklch(98.7% 0.026 102.212);\n --color-yellow-100: oklch(97.3% 0.071 103.193);\n --color-yellow-200: oklch(94.5% 0.129 101.54);\n --color-yellow-300: oklch(90.5% 0.182 98.111);\n --color-yellow-400: oklch(85.2% 0.199 91.936);\n --color-yellow-500: oklch(79.5% 0.184 86.047);\n --color-yellow-600: oklch(68.1% 0.162 75.834);\n --color-yellow-700: oklch(55.4% 0.135 66.442);\n --color-yellow-800: oklch(47.6% 0.114 61.907);\n --color-yellow-900: oklch(42.1% 0.095 57.708);\n --color-green-50: oklch(98.2% 0.018 155.826);\n --color-green-100: oklch(96.2% 0.044 156.743);\n --color-green-200: oklch(92.5% 0.084 155.995);\n --color-green-300: oklch(87.1% 0.15 154.449);\n --color-green-400: oklch(79.2% 0.209 151.711);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-green-600: oklch(62.7% 0.194 149.214);\n --color-green-700: oklch(52.7% 0.154 150.069);\n --color-green-800: oklch(44.8% 0.119 151.328);\n --color-green-900: oklch(39.3% 0.095 152.535);\n --color-green-950: oklch(26.6% 0.065 152.934);\n --color-emerald-50: oklch(97.9% 0.021 166.113);\n --color-emerald-200: oklch(90.5% 0.093 164.15);\n --color-emerald-300: oklch(84.5% 0.143 164.978);\n --color-emerald-500: oklch(69.6% 0.17 162.48);\n --color-emerald-600: oklch(59.6% 0.145 163.225);\n --color-emerald-700: oklch(50.8% 0.118 165.612);\n --color-emerald-900: oklch(37.8% 0.077 168.94);\n --color-emerald-950: oklch(26.2% 0.051 172.552);\n --color-teal-50: oklch(98.4% 0.014 180.72);\n --color-teal-100: oklch(95.3% 0.051 180.801);\n --color-teal-400: oklch(77.7% 0.152 181.912);\n --color-teal-500: oklch(70.4% 0.14 182.503);\n --color-teal-600: oklch(60% 0.118 184.704);\n --color-teal-700: oklch(51.1% 0.096 186.391);\n --color-teal-900: oklch(38.6% 0.063 188.416);\n --color-teal-950: oklch(27.7% 0.046 192.524);\n --color-cyan-500: oklch(71.5% 0.143 215.221);\n --color-cyan-950: oklch(30.2% 0.056 229.695);\n --color-sky-500: oklch(68.5% 0.169 237.323);\n --color-sky-600: oklch(58.8% 0.158 241.966);\n --color-sky-700: oklch(50% 0.134 242.749);\n --color-blue-50: #3b82f6;\n --color-blue-100: #172554;\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-300: oklch(80.9% 0.105 251.813);\n --color-blue-400: oklch(70.7% 0.165 254.624);\n --color-blue-500: oklch(62.3% 0.214 259.815);\n --color-blue-600: oklch(54.6% 0.245 262.881);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-blue-800: oklch(42.4% 0.199 265.638);\n --color-blue-900: oklch(37.9% 0.146 265.522);\n --color-blue-950: oklch(28.2% 0.091 267.935);\n --color-indigo-50: oklch(96.2% 0.018 272.314);\n --color-indigo-100: oklch(93% 0.034 272.788);\n --color-indigo-200: oklch(87% 0.065 274.039);\n --color-indigo-300: oklch(78.5% 0.115 274.713);\n --color-indigo-400: oklch(67.3% 0.182 276.935);\n --color-indigo-500: oklch(58.5% 0.233 277.117);\n --color-indigo-600: oklch(51.1% 0.262 276.966);\n --color-indigo-700: oklch(45.7% 0.24 277.023);\n --color-violet-50: oklch(96.9% 0.016 293.756);\n --color-violet-100: oklch(94.3% 0.029 294.588);\n --color-violet-200: oklch(89.4% 0.057 293.283);\n --color-violet-300: oklch(81.1% 0.111 293.571);\n --color-violet-500: oklch(60.6% 0.25 292.717);\n --color-violet-600: oklch(54.1% 0.281 293.009);\n --color-violet-700: oklch(49.1% 0.27 292.581);\n --color-violet-800: oklch(43.2% 0.232 292.759);\n --color-purple-50: oklch(97.7% 0.014 308.299);\n --color-purple-100: oklch(94.6% 0.033 307.174);\n --color-purple-200: oklch(90.2% 0.063 306.703);\n --color-purple-300: oklch(82.7% 0.119 306.383);\n --color-purple-400: oklch(71.4% 0.203 305.504);\n --color-purple-500: oklch(62.7% 0.265 303.9);\n --color-purple-600: oklch(55.8% 0.288 302.321);\n --color-purple-700: oklch(49.6% 0.265 301.924);\n --color-purple-800: oklch(43.8% 0.218 303.724);\n --color-purple-900: oklch(38.1% 0.176 304.987);\n --color-purple-950: oklch(29.1% 0.149 302.717);\n --color-fuchsia-500: oklch(66.7% 0.295 322.15);\n --color-pink-600: oklch(59.2% 0.249 0.584);\n --color-rose-50: oklch(96.9% 0.015 12.422);\n --color-rose-200: oklch(89.2% 0.058 10.001);\n --color-rose-500: oklch(64.5% 0.246 16.439);\n --color-rose-600: oklch(58.6% 0.253 17.585);\n --color-rose-700: oklch(51.4% 0.222 16.935);\n --color-slate-50: oklch(98.4% 0.003 247.858);\n --color-slate-100: oklch(96.8% 0.007 247.896);\n --color-slate-200: oklch(92.9% 0.013 255.508);\n --color-slate-300: oklch(86.9% 0.022 252.894);\n --color-slate-400: oklch(70.4% 0.04 256.788);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-slate-600: oklch(44.6% 0.043 257.281);\n --color-slate-700: oklch(37.2% 0.044 257.287);\n --color-slate-800: oklch(27.9% 0.041 260.031);\n --color-slate-900: oklch(20.8% 0.042 265.755);\n --color-slate-950: oklch(12.9% 0.042 264.695);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-300: oklch(87.2% 0.01 258.338);\n --color-gray-400: oklch(70.7% 0.022 261.325);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-gray-600: oklch(44.6% 0.03 256.802);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-gray-900: oklch(21% 0.034 264.665);\n --color-zinc-100: oklch(96.7% 0.001 286.375);\n --color-zinc-200: oklch(92% 0.004 286.32);\n --color-zinc-300: oklch(87.1% 0.006 286.286);\n --color-zinc-500: oklch(55.2% 0.016 285.938);\n --color-zinc-600: oklch(44.2% 0.017 285.786);\n --color-zinc-800: oklch(27.4% 0.006 286.033);\n --color-zinc-900: oklch(21% 0.006 285.885);\n --color-neutral-50: #8799af;\n --color-neutral-100: #172a41;\n --color-neutral-200: oklch(92.2% 0 0);\n --color-neutral-300: oklch(87% 0 0);\n --color-neutral-400: oklch(70.8% 0 0);\n --color-neutral-500: oklch(55.6% 0 0);\n --color-neutral-600: oklch(43.9% 0 0);\n --color-neutral-700: oklch(37.1% 0 0);\n --color-neutral-800: oklch(26.9% 0 0);\n --color-neutral-900: oklch(20.5% 0 0);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-xs: 20rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-xl: 36rem;\n --container-2xl: 42rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n --container-5xl: 64rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --text-7xl: 4.5rem;\n --text-7xl--line-height: 1;\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-extrabold: 800;\n --font-weight-black: 900;\n --tracking-tight: -0.025em;\n --tracking-normal: 0em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --radius-xs: 0.125rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --animate-bounce: bounce 1s infinite;\n --blur-sm: 8px;\n --blur-xl: 24px;\n --blur-2xl: 40px;\n --blur-3xl: 64px;\n --aspect-video: 16 / 9;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-primary: #18181b;\n --color-primary-foreground: #fafafa;\n --color-secondary: #f4f4f5;\n --color-secondary-foreground: #18181b;\n --color-destructive: #dc2626;\n --color-destructive-foreground: #fef2f2;\n --color-background: #ffffff;\n --color-input: #e4e4e7;\n --color-accent: #f4f4f5;\n --color-accent-foreground: #18181b;\n --color-card: #ffffff;\n --color-card-foreground: #09090b;\n --color-border: #e4e4e7;\n --color-sidebar-ring: #a1a1aa;\n --color-muted: #f7f7f6;\n --color-muted-foreground: #74716e;\n --color-orange-10: #fff3e6;\n --color-orange-20: #ffdfbf;\n --color-orange-30: #ffb47f;\n --color-orange-40: #ff8446;\n --color-orange-60: #cd4b27;\n --color-orange-70: #b03719;\n --color-orange-80: #892c0f;\n --color-orange-90: #61170d;\n --color-neutral-10: #f1f4f8;\n --color-neutral-20: #dbe2eb;\n --color-neutral-30: #bfccda;\n --color-neutral-40: #a3b2c6;\n --color-neutral-60: #677c95;\n --color-neutral-70: #4e647f;\n --color-neutral-80: #394d66;\n --color-neutral-90: #293b51;\n --color-blue-10: #dbeafe;\n --color-blue-20: #bfdbfe;\n --color-blue-30: #93c5fd;\n --color-blue-40: #60a5fa;\n --color-blue-60: #2563eb;\n --color-blue-70: #1d4ed8;\n --color-blue-80: #1e40af;\n --color-blue-90: #1e3a8a;\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .\\@container\\/card-header {\n container-type: inline-size;\n container-name: card-header;\n }\n .\\@container\\/strip {\n container-type: inline-size;\n container-name: strip;\n }\n .\\@container {\n container-type: inline-size;\n }\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .collapse {\n visibility: collapse;\n }\n .invisible {\n visibility: hidden;\n }\n .visible {\n visibility: visible;\n }\n .visible\\! {\n visibility: visible !important;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .sticky {\n position: sticky;\n }\n .-inset-6 {\n inset: calc(var(--spacing) * -6);\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .inset-\\[8\\%\\] {\n inset: 8%;\n }\n .inset-x-0 {\n inset-inline: calc(var(--spacing) * 0);\n }\n .inset-x-\\[12\\%\\] {\n inset-inline: 12%;\n }\n .inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n .\\!top-0 {\n top: calc(var(--spacing) * 0) !important;\n }\n .-top-0\\.5 {\n top: calc(var(--spacing) * -0.5);\n }\n .-top-1\\.5 {\n top: calc(var(--spacing) * -1.5);\n }\n .-top-2 {\n top: calc(var(--spacing) * -2);\n }\n .-top-2\\.5 {\n top: calc(var(--spacing) * -2.5);\n }\n .-top-4 {\n top: calc(var(--spacing) * -4);\n }\n .-top-5 {\n top: calc(var(--spacing) * -5);\n }\n .-top-\\[3px\\] {\n top: calc(3px * -1);\n }\n .-top-\\[7px\\] {\n top: calc(7px * -1);\n }\n .-top-\\[100px\\] {\n top: calc(100px * -1);\n }\n .-top-\\[200px\\] {\n top: calc(200px * -1);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1 {\n top: calc(var(--spacing) * 1);\n }\n .top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-3 {\n top: calc(var(--spacing) * 3);\n }\n .top-3\\.5 {\n top: calc(var(--spacing) * 3.5);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-5 {\n top: calc(var(--spacing) * 5);\n }\n .top-6 {\n top: calc(var(--spacing) * 6);\n }\n .top-8 {\n top: calc(var(--spacing) * 8);\n }\n .top-9 {\n top: calc(var(--spacing) * 9);\n }\n .top-10 {\n top: calc(var(--spacing) * 10);\n }\n .top-20 {\n top: calc(var(--spacing) * 20);\n }\n .top-24 {\n top: calc(var(--spacing) * 24);\n }\n .top-50 {\n top: calc(var(--spacing) * 50);\n }\n .top-200 {\n top: calc(var(--spacing) * 200);\n }\n .top-\\[-2px\\] {\n top: -2px;\n }\n .top-\\[2px\\] {\n top: 2px;\n }\n .top-\\[5px\\] {\n top: 5px;\n }\n .top-\\[6px\\] {\n top: 6px;\n }\n .top-\\[7px\\] {\n top: 7px;\n }\n .top-\\[10px\\] {\n top: 10px;\n }\n .top-\\[15px\\] {\n top: 15px;\n }\n .top-\\[16px\\] {\n top: 16px;\n }\n .top-\\[24\\%\\] {\n top: 24%;\n }\n .top-\\[38\\%\\] {\n top: 38%;\n }\n .top-\\[50\\%\\] {\n top: 50%;\n }\n .top-\\[50px\\] {\n top: 50px;\n }\n .top-\\[96px\\] {\n top: 96px;\n }\n .top-\\[176px\\] {\n top: 176px;\n }\n .top-\\[340px\\] {\n top: 340px;\n }\n .top-full {\n top: 100%;\n }\n .-right-0\\.5 {\n right: calc(var(--spacing) * -0.5);\n }\n .-right-4 {\n right: calc(var(--spacing) * -4);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-1 {\n right: calc(var(--spacing) * 1);\n }\n .right-1\\.5 {\n right: calc(var(--spacing) * 1.5);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-2\\.5 {\n right: calc(var(--spacing) * 2.5);\n }\n .right-3 {\n right: calc(var(--spacing) * 3);\n }\n .right-3\\.5 {\n right: calc(var(--spacing) * 3.5);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .right-5 {\n right: calc(var(--spacing) * 5);\n }\n .right-6 {\n right: calc(var(--spacing) * 6);\n }\n .right-12 {\n right: calc(var(--spacing) * 12);\n }\n .right-16 {\n right: calc(var(--spacing) * 16);\n }\n .right-30 {\n right: calc(var(--spacing) * 30);\n }\n .right-\\[-100px\\] {\n right: -100px;\n }\n .right-\\[-390px\\] {\n right: -390px;\n }\n .right-\\[7\\%\\] {\n right: 7%;\n }\n .right-\\[8px\\] {\n right: 8px;\n }\n .right-\\[10px\\] {\n right: 10px;\n }\n .right-\\[12px\\] {\n right: 12px;\n }\n .right-\\[14px\\] {\n right: 14px;\n }\n .right-\\[40px\\] {\n right: 40px;\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-2 {\n bottom: calc(var(--spacing) * 2);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .bottom-\\[-2px\\] {\n bottom: -2px;\n }\n .bottom-\\[-32px\\] {\n bottom: -32px;\n }\n .bottom-\\[5px\\] {\n bottom: 5px;\n }\n .bottom-\\[7px\\] {\n bottom: 7px;\n }\n .bottom-\\[10\\%\\] {\n bottom: 10%;\n }\n .bottom-\\[10px\\] {\n bottom: 10px;\n }\n .bottom-\\[12px\\] {\n bottom: 12px;\n }\n .bottom-full {\n bottom: 100%;\n }\n .\\!left-0 {\n left: calc(var(--spacing) * 0) !important;\n }\n .-left-\\[7px\\] {\n left: calc(7px * -1);\n }\n .-left-\\[9px\\] {\n left: calc(9px * -1);\n }\n .-left-\\[26px\\] {\n left: calc(26px * -1);\n }\n .-left-\\[200px\\] {\n left: calc(200px * -1);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-1 {\n left: calc(var(--spacing) * 1);\n }\n .left-1\\.5 {\n left: calc(var(--spacing) * 1.5);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-2 {\n left: calc(var(--spacing) * 2);\n }\n .left-2\\.5 {\n left: calc(var(--spacing) * 2.5);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .left-\\[2px\\] {\n left: 2px;\n }\n .left-\\[4\\.5px\\] {\n left: 4.5px;\n }\n .left-\\[9px\\] {\n left: 9px;\n }\n .left-\\[11px\\] {\n left: 11px;\n }\n .left-\\[12px\\] {\n left: 12px;\n }\n .left-\\[14px\\] {\n left: 14px;\n }\n .left-\\[18px\\] {\n left: 18px;\n }\n .left-\\[22\\%\\] {\n left: 22%;\n }\n .left-\\[30\\%\\] {\n left: 30%;\n }\n .left-\\[50\\%\\] {\n left: 50%;\n }\n .left-\\[80px\\] {\n left: 80px;\n }\n .left-\\[680px\\] {\n left: 680px;\n }\n .left-full {\n left: 100%;\n }\n .isolate {\n isolation: isolate;\n }\n .z-0 {\n z-index: 0;\n }\n .z-1 {\n z-index: 1;\n }\n .z-5 {\n z-index: 5;\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-30 {\n z-index: 30;\n }\n .z-40 {\n z-index: 40;\n }\n .z-50 {\n z-index: 50;\n }\n .z-55 {\n z-index: 55;\n }\n .z-\\[1\\] {\n z-index: 1;\n }\n .z-\\[3\\] {\n z-index: 3;\n }\n .z-\\[5\\] {\n z-index: 5;\n }\n .z-\\[50\\] {\n z-index: 50;\n }\n .z-\\[55\\] {\n z-index: 55;\n }\n .z-\\[60\\] {\n z-index: 60;\n }\n .z-\\[70\\] {\n z-index: 70;\n }\n .z-\\[200\\] {\n z-index: 200;\n }\n .z-\\[1000\\] {\n z-index: 1000;\n }\n .z-\\[9200\\] {\n z-index: 9200;\n }\n .z-\\[9999\\] {\n z-index: 9999;\n }\n .order-1 {\n order: 1;\n }\n .order-2 {\n order: 2;\n }\n .order-9 {\n order: 9;\n }\n .order-10 {\n order: 10;\n }\n .order-42 {\n order: 42;\n }\n .order-77 {\n order: 77;\n }\n .order-123 {\n order: 123;\n }\n .order-456 {\n order: 456;\n }\n .order-9749 {\n order: 9749;\n }\n .order-12345 {\n order: 12345;\n }\n .col-span-1 {\n grid-column: span 1 / span 1;\n }\n .col-span-2 {\n grid-column: span 2 / span 2;\n }\n .col-span-6 {\n grid-column: span 6 / span 6;\n }\n .col-span-full {\n grid-column: 1 / -1;\n }\n .col-start-1 {\n grid-column-start: 1;\n }\n .col-start-2 {\n grid-column-start: 2;\n }\n .col-end-1 {\n grid-column-end: 1;\n }\n .col-end-2 {\n grid-column-end: 2;\n }\n .row-auto {\n grid-row: auto;\n }\n .row-span-2 {\n grid-row: span 2 / span 2;\n }\n .row-span-full {\n grid-row: 1 / -1;\n }\n .row-start-1 {\n grid-row-start: 1;\n }\n .float-left {\n float: left;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .-m-2\\.5 {\n margin: calc(var(--spacing) * -2.5);\n }\n .m-0 {\n margin: calc(var(--spacing) * 0);\n }\n .m-1 {\n margin: calc(var(--spacing) * 1);\n }\n .m-2 {\n margin: calc(var(--spacing) * 2);\n }\n .m-4 {\n margin: calc(var(--spacing) * 4);\n }\n .m-8 {\n margin: calc(var(--spacing) * 8);\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n .-mx-1\\.5 {\n margin-inline: calc(var(--spacing) * -1.5);\n }\n .-mx-2 {\n margin-inline: calc(var(--spacing) * -2);\n }\n .-mx-4 {\n margin-inline: calc(var(--spacing) * -4);\n }\n .-mx-6 {\n margin-inline: calc(var(--spacing) * -6);\n }\n .-mx-\\[2px\\] {\n margin-inline: calc(2px * -1);\n }\n .-mx-\\[16px\\] {\n margin-inline: calc(16px * -1);\n }\n .-mx-\\[17px\\] {\n margin-inline: calc(17px * -1);\n }\n .mx-0 {\n margin-inline: calc(var(--spacing) * 0);\n }\n .mx-0\\.5 {\n margin-inline: calc(var(--spacing) * 0.5);\n }\n .mx-1 {\n margin-inline: calc(var(--spacing) * 1);\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-3 {\n margin-inline: calc(var(--spacing) * 3);\n }\n .mx-3\\.5 {\n margin-inline: calc(var(--spacing) * 3.5);\n }\n .mx-4 {\n margin-inline: calc(var(--spacing) * 4);\n }\n .mx-5 {\n margin-inline: calc(var(--spacing) * 5);\n }\n .mx-\\[2px\\] {\n margin-inline: 2px;\n }\n .mx-\\[6px\\] {\n margin-inline: 6px;\n }\n .mx-\\[20px\\] {\n margin-inline: 20px;\n }\n .mx-\\[22px\\] {\n margin-inline: 22px;\n }\n .mx-auto {\n margin-inline: auto;\n }\n .-my-1\\.5 {\n margin-block: calc(var(--spacing) * -1.5);\n }\n .-my-2 {\n margin-block: calc(var(--spacing) * -2);\n }\n .-my-3 {\n margin-block: calc(var(--spacing) * -3);\n }\n .-my-5 {\n margin-block: calc(var(--spacing) * -5);\n }\n .my-0 {\n margin-block: calc(var(--spacing) * 0);\n }\n .my-0\\.5 {\n margin-block: calc(var(--spacing) * 0.5);\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .my-2 {\n margin-block: calc(var(--spacing) * 2);\n }\n .my-3 {\n margin-block: calc(var(--spacing) * 3);\n }\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n .my-5 {\n margin-block: calc(var(--spacing) * 5);\n }\n .my-6 {\n margin-block: calc(var(--spacing) * 6);\n }\n .my-10 {\n margin-block: calc(var(--spacing) * 10);\n }\n .my-\\[1px\\] {\n margin-block: 1px;\n }\n .my-\\[10px\\] {\n margin-block: 10px;\n }\n .-mt-0\\.5 {\n margin-top: calc(var(--spacing) * -0.5);\n }\n .-mt-1 {\n margin-top: calc(var(--spacing) * -1);\n }\n .-mt-2 {\n margin-top: calc(var(--spacing) * -2);\n }\n .-mt-4 {\n margin-top: calc(var(--spacing) * -4);\n }\n .-mt-6 {\n margin-top: calc(var(--spacing) * -6);\n }\n .-mt-\\[6px\\] {\n margin-top: calc(6px * -1);\n }\n .mt-0 {\n margin-top: calc(var(--spacing) * 0);\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-2\\.5 {\n margin-top: calc(var(--spacing) * 2.5);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mt-3\\.5 {\n margin-top: calc(var(--spacing) * 3.5);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-5 {\n margin-top: calc(var(--spacing) * 5);\n }\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n .mt-7 {\n margin-top: calc(var(--spacing) * 7);\n }\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n .mt-9 {\n margin-top: calc(var(--spacing) * 9);\n }\n .mt-10 {\n margin-top: calc(var(--spacing) * 10);\n }\n .mt-11 {\n margin-top: calc(var(--spacing) * 11);\n }\n .mt-12 {\n margin-top: calc(var(--spacing) * 12);\n }\n .mt-14 {\n margin-top: calc(var(--spacing) * 14);\n }\n .mt-\\[-2px\\] {\n margin-top: -2px;\n }\n .mt-\\[1px\\] {\n margin-top: 1px;\n }\n .mt-\\[2px\\] {\n margin-top: 2px;\n }\n .mt-\\[3px\\] {\n margin-top: 3px;\n }\n .mt-\\[4px\\] {\n margin-top: 4px;\n }\n .mt-\\[5px\\] {\n margin-top: 5px;\n }\n .mt-\\[6px\\] {\n margin-top: 6px;\n }\n .mt-\\[7px\\] {\n margin-top: 7px;\n }\n .mt-\\[8px\\] {\n margin-top: 8px;\n }\n .mt-\\[10px\\] {\n margin-top: 10px;\n }\n .mt-\\[11px\\] {\n margin-top: 11px;\n }\n .mt-\\[12px\\] {\n margin-top: 12px;\n }\n .mt-\\[14px\\] {\n margin-top: 14px;\n }\n .mt-\\[16px\\] {\n margin-top: 16px;\n }\n .mt-\\[18px\\] {\n margin-top: 18px;\n }\n .mt-\\[20px\\] {\n margin-top: 20px;\n }\n .mt-\\[22px\\] {\n margin-top: 22px;\n }\n .mt-auto {\n margin-top: auto;\n }\n .mt-px {\n margin-top: 1px;\n }\n .-mr-1 {\n margin-right: calc(var(--spacing) * -1);\n }\n .-mr-4 {\n margin-right: calc(var(--spacing) * -4);\n }\n .-mr-px {\n margin-right: -1px;\n }\n .mr-0 {\n margin-right: calc(var(--spacing) * 0);\n }\n .mr-0\\.5 {\n margin-right: calc(var(--spacing) * 0.5);\n }\n .mr-1 {\n margin-right: calc(var(--spacing) * 1);\n }\n .mr-1\\.5 {\n margin-right: calc(var(--spacing) * 1.5);\n }\n .mr-2 {\n margin-right: calc(var(--spacing) * 2);\n }\n .mr-2\\.5 {\n margin-right: calc(var(--spacing) * 2.5);\n }\n .mr-3 {\n margin-right: calc(var(--spacing) * 3);\n }\n .mr-4 {\n margin-right: calc(var(--spacing) * 4);\n }\n .mr-16 {\n margin-right: calc(var(--spacing) * 16);\n }\n .mr-\\[4px\\] {\n margin-right: 4px;\n }\n .mr-\\[6px\\] {\n margin-right: 6px;\n }\n .mr-\\[7px\\] {\n margin-right: 7px;\n }\n .mr-\\[24px\\] {\n margin-right: 24px;\n }\n .mr-auto {\n margin-right: auto;\n }\n .-mb-\\[1\\.5px\\] {\n margin-bottom: calc(1.5px * -1);\n }\n .-mb-\\[16px\\] {\n margin-bottom: calc(16px * -1);\n }\n .-mb-px {\n margin-bottom: -1px;\n }\n .mb-0 {\n margin-bottom: calc(var(--spacing) * 0);\n }\n .mb-0\\.5 {\n margin-bottom: calc(var(--spacing) * 0.5);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-2\\.5 {\n margin-bottom: calc(var(--spacing) * 2.5);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-3\\.5 {\n margin-bottom: calc(var(--spacing) * 3.5);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-5 {\n margin-bottom: calc(var(--spacing) * 5);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .mb-7 {\n margin-bottom: calc(var(--spacing) * 7);\n }\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n .mb-10 {\n margin-bottom: calc(var(--spacing) * 10);\n }\n .mb-\\[1px\\] {\n margin-bottom: 1px;\n }\n .mb-\\[2px\\] {\n margin-bottom: 2px;\n }\n .mb-\\[3px\\] {\n margin-bottom: 3px;\n }\n .mb-\\[4px\\] {\n margin-bottom: 4px;\n }\n .mb-\\[5px\\] {\n margin-bottom: 5px;\n }\n .mb-\\[6px\\] {\n margin-bottom: 6px;\n }\n .mb-\\[7px\\] {\n margin-bottom: 7px;\n }\n .mb-\\[8px\\] {\n margin-bottom: 8px;\n }\n .mb-\\[9px\\] {\n margin-bottom: 9px;\n }\n .mb-\\[10px\\] {\n margin-bottom: 10px;\n }\n .mb-\\[11px\\] {\n margin-bottom: 11px;\n }\n .mb-\\[12px\\] {\n margin-bottom: 12px;\n }\n .mb-\\[14px\\] {\n margin-bottom: 14px;\n }\n .mb-\\[16px\\] {\n margin-bottom: 16px;\n }\n .mb-\\[18px\\] {\n margin-bottom: 18px;\n }\n .mb-\\[20px\\] {\n margin-bottom: 20px;\n }\n .mb-\\[24px\\] {\n margin-bottom: 24px;\n }\n .mb-\\[32px\\] {\n margin-bottom: 32px;\n }\n .-ml-0\\.5 {\n margin-left: calc(var(--spacing) * -0.5);\n }\n .-ml-1 {\n margin-left: calc(var(--spacing) * -1);\n }\n .-ml-2 {\n margin-left: calc(var(--spacing) * -2);\n }\n .-ml-\\[3px\\] {\n margin-left: calc(3px * -1);\n }\n .ml-0 {\n margin-left: calc(var(--spacing) * 0);\n }\n .ml-0\\.5 {\n margin-left: calc(var(--spacing) * 0.5);\n }\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n .ml-1\\.5 {\n margin-left: calc(var(--spacing) * 1.5);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .ml-3 {\n margin-left: calc(var(--spacing) * 3);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .ml-5 {\n margin-left: calc(var(--spacing) * 5);\n }\n .ml-6 {\n margin-left: calc(var(--spacing) * 6);\n }\n .ml-7 {\n margin-left: calc(var(--spacing) * 7);\n }\n .ml-10 {\n margin-left: calc(var(--spacing) * 10);\n }\n .ml-28 {\n margin-left: calc(var(--spacing) * 28);\n }\n .ml-43 {\n margin-left: calc(var(--spacing) * 43);\n }\n .ml-\\[2px\\] {\n margin-left: 2px;\n }\n .ml-\\[4px\\] {\n margin-left: 4px;\n }\n .ml-\\[5px\\] {\n margin-left: 5px;\n }\n .ml-\\[6px\\] {\n margin-left: 6px;\n }\n .ml-\\[7px\\] {\n margin-left: 7px;\n }\n .ml-\\[8px\\] {\n margin-left: 8px;\n }\n .ml-\\[18px\\] {\n margin-left: 18px;\n }\n .ml-\\[28px\\] {\n margin-left: 28px;\n }\n .ml-\\[40px\\] {\n margin-left: 40px;\n }\n .ml-auto {\n margin-left: auto;\n }\n .box-border {\n box-sizing: border-box;\n }\n .line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n .line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n .line-clamp-3 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .contents\\! {\n display: contents !important;\n }\n .flex {\n display: flex;\n }\n .flow-root {\n display: flow-root;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline {\n display: inline;\n }\n .inline-block {\n display: inline-block;\n }\n .inline-flex {\n display: inline-flex;\n }\n .list-item {\n display: list-item;\n }\n .table {\n display: table;\n }\n .table-caption {\n display: table-caption;\n }\n .table-cell {\n display: table-cell;\n }\n .table-row {\n display: table-row;\n }\n .field-sizing-content {\n field-sizing: content;\n }\n .aspect-\\[4\\/5\\] {\n aspect-ratio: 4/5;\n }\n .aspect-\\[5\\/2\\] {\n aspect-ratio: 5/2;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .aspect-video {\n aspect-ratio: var(--aspect-video);\n }\n .size-1\\.5 {\n width: calc(var(--spacing) * 1.5);\n height: calc(var(--spacing) * 1.5);\n }\n .size-2 {\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n }\n .size-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n height: calc(var(--spacing) * 2.5);\n }\n .size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n .size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n .size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n .size-5 {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n .size-6 {\n width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6);\n }\n .size-7 {\n width: calc(var(--spacing) * 7);\n height: calc(var(--spacing) * 7);\n }\n .size-8 {\n width: calc(var(--spacing) * 8);\n height: calc(var(--spacing) * 8);\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .size-10 {\n width: calc(var(--spacing) * 10);\n height: calc(var(--spacing) * 10);\n }\n .size-12 {\n width: calc(var(--spacing) * 12);\n height: calc(var(--spacing) * 12);\n }\n .size-14 {\n width: calc(var(--spacing) * 14);\n height: calc(var(--spacing) * 14);\n }\n .size-\\[6px\\] {\n width: 6px;\n height: 6px;\n }\n .size-\\[7px\\] {\n width: 7px;\n height: 7px;\n }\n .size-\\[8px\\] {\n width: 8px;\n height: 8px;\n }\n .size-\\[9px\\] {\n width: 9px;\n height: 9px;\n }\n .size-\\[10px\\] {\n width: 10px;\n height: 10px;\n }\n .size-\\[11px\\] {\n width: 11px;\n height: 11px;\n }\n .size-\\[12px\\] {\n width: 12px;\n height: 12px;\n }\n .size-\\[13px\\] {\n width: 13px;\n height: 13px;\n }\n .size-\\[14px\\] {\n width: 14px;\n height: 14px;\n }\n .size-\\[15px\\] {\n width: 15px;\n height: 15px;\n }\n .size-\\[18px\\] {\n width: 18px;\n height: 18px;\n }\n .size-\\[20px\\] {\n width: 20px;\n height: 20px;\n }\n .size-\\[22px\\] {\n width: 22px;\n height: 22px;\n }\n .size-\\[30px\\] {\n width: 30px;\n height: 30px;\n }\n .size-\\[40px\\] {\n width: 40px;\n height: 40px;\n }\n .size-\\[44px\\] {\n width: 44px;\n height: 44px;\n }\n .size-\\[60px\\] {\n width: 60px;\n height: 60px;\n }\n .size-full {\n width: 100%;\n height: 100%;\n }\n .\\!h-screen {\n height: 100vh !important;\n }\n .h-0 {\n height: calc(var(--spacing) * 0);\n }\n .h-0\\.5 {\n height: calc(var(--spacing) * 0.5);\n }\n .h-1 {\n height: calc(var(--spacing) * 1);\n }\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-2\\.5 {\n height: calc(var(--spacing) * 2.5);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-4\\.5 {\n height: calc(var(--spacing) * 4.5);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-7 {\n height: calc(var(--spacing) * 7);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-11 {\n height: calc(var(--spacing) * 11);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n .h-24 {\n height: calc(var(--spacing) * 24);\n }\n .h-28 {\n height: calc(var(--spacing) * 28);\n }\n .h-32 {\n height: calc(var(--spacing) * 32);\n }\n .h-40 {\n height: calc(var(--spacing) * 40);\n }\n .h-44 {\n height: calc(var(--spacing) * 44);\n }\n .h-48 {\n height: calc(var(--spacing) * 48);\n }\n .h-64 {\n height: calc(var(--spacing) * 64);\n }\n .h-72 {\n height: calc(var(--spacing) * 72);\n }\n .h-80 {\n height: calc(var(--spacing) * 80);\n }\n .h-96 {\n height: calc(var(--spacing) * 96);\n }\n .h-\\[2\\.5px\\] {\n height: 2.5px;\n }\n .h-\\[2px\\] {\n height: 2px;\n }\n .h-\\[3px\\] {\n height: 3px;\n }\n .h-\\[4px\\] {\n height: 4px;\n }\n .h-\\[5px\\] {\n height: 5px;\n }\n .h-\\[6px\\] {\n height: 6px;\n }\n .h-\\[7px\\] {\n height: 7px;\n }\n .h-\\[8px\\] {\n height: 8px;\n }\n .h-\\[9px\\] {\n height: 9px;\n }\n .h-\\[10px\\] {\n height: 10px;\n }\n .h-\\[11px\\] {\n height: 11px;\n }\n .h-\\[12px\\] {\n height: 12px;\n }\n .h-\\[13px\\] {\n height: 13px;\n }\n .h-\\[14px\\] {\n height: 14px;\n }\n .h-\\[15\\.33px\\] {\n height: 15.33px;\n }\n .h-\\[15px\\] {\n height: 15px;\n }\n .h-\\[16px\\] {\n height: 16px;\n }\n .h-\\[17px\\] {\n height: 17px;\n }\n .h-\\[18px\\] {\n height: 18px;\n }\n .h-\\[20px\\] {\n height: 20px;\n }\n .h-\\[22px\\] {\n height: 22px;\n }\n .h-\\[23px\\] {\n height: 23px;\n }\n .h-\\[24px\\] {\n height: 24px;\n }\n .h-\\[25px\\] {\n height: 25px;\n }\n .h-\\[26\\%\\] {\n height: 26%;\n }\n .h-\\[26px\\] {\n height: 26px;\n }\n .h-\\[28px\\] {\n height: 28px;\n }\n .h-\\[29px\\] {\n height: 29px;\n }\n .h-\\[30\\%\\] {\n height: 30%;\n }\n .h-\\[30px\\] {\n height: 30px;\n }\n .h-\\[32px\\] {\n height: 32px;\n }\n .h-\\[34px\\] {\n height: 34px;\n }\n .h-\\[35px\\] {\n height: 35px;\n }\n .h-\\[36px\\] {\n height: 36px;\n }\n .h-\\[38px\\] {\n height: 38px;\n }\n .h-\\[40px\\] {\n height: 40px;\n }\n .h-\\[41px\\] {\n height: 41px;\n }\n .h-\\[42px\\] {\n height: 42px;\n }\n .h-\\[44\\%\\] {\n height: 44%;\n }\n .h-\\[48px\\] {\n height: 48px;\n }\n .h-\\[50px\\] {\n height: 50px;\n }\n .h-\\[52\\%\\] {\n height: 52%;\n }\n .h-\\[52px\\] {\n height: 52px;\n }\n .h-\\[53px\\] {\n height: 53px;\n }\n .h-\\[54px\\] {\n height: 54px;\n }\n .h-\\[60px\\] {\n height: 60px;\n }\n .h-\\[60vh\\] {\n height: 60vh;\n }\n .h-\\[64px\\] {\n height: 64px;\n }\n .h-\\[68px\\] {\n height: 68px;\n }\n .h-\\[70px\\] {\n height: 70px;\n }\n .h-\\[70vh\\] {\n height: 70vh;\n }\n .h-\\[74px\\] {\n height: 74px;\n }\n .h-\\[85vh\\] {\n height: 85vh;\n }\n .h-\\[90px\\] {\n height: 90px;\n }\n .h-\\[92vh\\] {\n height: 92vh;\n }\n .h-\\[100vh\\] {\n height: 100vh;\n }\n .h-\\[108px\\] {\n height: 108px;\n }\n .h-\\[110px\\] {\n height: 110px;\n }\n .h-\\[150px\\] {\n height: 150px;\n }\n .h-\\[162px\\] {\n height: 162px;\n }\n .h-\\[180px\\] {\n height: 180px;\n }\n .h-\\[190px\\] {\n height: 190px;\n }\n .h-\\[200px\\] {\n height: 200px;\n }\n .h-\\[225px\\] {\n height: 225px;\n }\n .h-\\[250px\\] {\n height: 250px;\n }\n .h-\\[260px\\] {\n height: 260px;\n }\n .h-\\[262px\\] {\n height: 262px;\n }\n .h-\\[280px\\] {\n height: 280px;\n }\n .h-\\[300px\\] {\n height: 300px;\n }\n .h-\\[320px\\] {\n height: 320px;\n }\n .h-\\[340px\\] {\n height: 340px;\n }\n .h-\\[390px\\] {\n height: 390px;\n }\n .h-\\[400px\\] {\n height: 400px;\n }\n .h-\\[500px\\] {\n height: 500px;\n }\n .h-\\[600px\\] {\n height: 600px;\n }\n .h-\\[640px\\] {\n height: 640px;\n }\n .h-\\[720px\\] {\n height: 720px;\n }\n .h-\\[800px\\] {\n height: 800px;\n }\n .h-\\[calc-size\\(max-content\\,size\\)\\] {\n height: calc-size(max-content,size);\n }\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n .h-auto {\n height: auto;\n }\n .h-fit {\n height: fit-content;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .h-screen {\n height: 100vh;\n }\n .h-svh {\n height: 100svh;\n }\n .max-h-0 {\n max-height: calc(var(--spacing) * 0);\n }\n .max-h-4 {\n max-height: calc(var(--spacing) * 4);\n }\n .max-h-40 {\n max-height: calc(var(--spacing) * 40);\n }\n .max-h-48 {\n max-height: calc(var(--spacing) * 48);\n }\n .max-h-56 {\n max-height: calc(var(--spacing) * 56);\n }\n .max-h-60 {\n max-height: calc(var(--spacing) * 60);\n }\n .max-h-64 {\n max-height: calc(var(--spacing) * 64);\n }\n .max-h-72 {\n max-height: calc(var(--spacing) * 72);\n }\n .max-h-80 {\n max-height: calc(var(--spacing) * 80);\n }\n .max-h-96 {\n max-height: calc(var(--spacing) * 96);\n }\n .max-h-\\[--radix-select-content-available-height\\] {\n max-height: --radix-select-content-available-height;\n }\n .max-h-\\[20\\.5rem\\] {\n max-height: 20.5rem;\n }\n .max-h-\\[28px\\] {\n max-height: 28px;\n }\n .max-h-\\[40em\\] {\n max-height: 40em;\n }\n .max-h-\\[40vh\\] {\n max-height: 40vh;\n }\n .max-h-\\[45vh\\] {\n max-height: 45vh;\n }\n .max-h-\\[56vh\\] {\n max-height: 56vh;\n }\n .max-h-\\[60vh\\] {\n max-height: 60vh;\n }\n .max-h-\\[75vh\\] {\n max-height: 75vh;\n }\n .max-h-\\[80vh\\] {\n max-height: 80vh;\n }\n .max-h-\\[85vh\\] {\n max-height: 85vh;\n }\n .max-h-\\[86vh\\] {\n max-height: 86vh;\n }\n .max-h-\\[90vh\\] {\n max-height: 90vh;\n }\n .max-h-\\[92vh\\] {\n max-height: 92vh;\n }\n .max-h-\\[95vh\\] {\n max-height: 95vh;\n }\n .max-h-\\[180px\\] {\n max-height: 180px;\n }\n .max-h-\\[190px\\] {\n max-height: 190px;\n }\n .max-h-\\[200px\\] {\n max-height: 200px;\n }\n .max-h-\\[206px\\] {\n max-height: 206px;\n }\n .max-h-\\[248px\\] {\n max-height: 248px;\n }\n .max-h-\\[260px\\] {\n max-height: 260px;\n }\n .max-h-\\[280px\\] {\n max-height: 280px;\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .max-h-\\[420px\\] {\n max-height: 420px;\n }\n .max-h-\\[460px\\] {\n max-height: 460px;\n }\n .max-h-\\[600px\\] {\n max-height: 600px;\n }\n .max-h-\\[611px\\] {\n max-height: 611px;\n }\n .max-h-\\[612px\\] {\n max-height: 612px;\n }\n .max-h-\\[700px\\] {\n max-height: 700px;\n }\n .max-h-\\[calc\\(100vh-320px\\)\\] {\n max-height: calc(100vh - 320px);\n }\n .max-h-\\[var\\(--radix-dropdown-menu-content-available-height\\)\\] {\n max-height: var(--radix-dropdown-menu-content-available-height);\n }\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n .min-h-6 {\n min-height: calc(var(--spacing) * 6);\n }\n .min-h-8 {\n min-height: calc(var(--spacing) * 8);\n }\n .min-h-9 {\n min-height: calc(var(--spacing) * 9);\n }\n .min-h-10 {\n min-height: calc(var(--spacing) * 10);\n }\n .min-h-16 {\n min-height: calc(var(--spacing) * 16);\n }\n .min-h-48 {\n min-height: calc(var(--spacing) * 48);\n }\n .min-h-\\[1rem\\] {\n min-height: 1rem;\n }\n .min-h-\\[2\\.25rem\\] {\n min-height: 2.25rem;\n }\n .min-h-\\[7rem\\] {\n min-height: 7rem;\n }\n .min-h-\\[24px\\] {\n min-height: 24px;\n }\n .min-h-\\[28px\\] {\n min-height: 28px;\n }\n .min-h-\\[32px\\] {\n min-height: 32px;\n }\n .min-h-\\[48px\\] {\n min-height: 48px;\n }\n .min-h-\\[50vh\\] {\n min-height: 50vh;\n }\n .min-h-\\[60px\\] {\n min-height: 60px;\n }\n .min-h-\\[60vh\\] {\n min-height: 60vh;\n }\n .min-h-\\[120px\\] {\n min-height: 120px;\n }\n .min-h-\\[180px\\] {\n min-height: 180px;\n }\n .min-h-\\[220px\\] {\n min-height: 220px;\n }\n .min-h-\\[300px\\] {\n min-height: 300px;\n }\n .min-h-\\[360px\\] {\n min-height: 360px;\n }\n .min-h-\\[400px\\] {\n min-height: 400px;\n }\n .min-h-\\[420px\\] {\n min-height: 420px;\n }\n .min-h-\\[600px\\] {\n min-height: 600px;\n }\n .min-h-\\[calc\\(100svh-20px\\)\\] {\n min-height: calc(100svh - 20px);\n }\n .min-h-\\[calc\\(100vh-56px\\)\\] {\n min-height: calc(100vh - 56px);\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .min-h-svh {\n min-height: 100svh;\n }\n .\\!w-screen {\n width: 100vw !important;\n }\n .w-\\(--radix-dropdown-menu-trigger-width\\) {\n width: var(--radix-dropdown-menu-trigger-width);\n }\n .w-\\(--sidebar-width\\) {\n width: var(--sidebar-width);\n }\n .w-1 {\n width: calc(var(--spacing) * 1);\n }\n .w-1\\.5 {\n width: calc(var(--spacing) * 1.5);\n }\n .w-1\\/2 {\n width: calc(1/2 * 100%);\n }\n .w-1\\/4 {\n width: calc(1/4 * 100%);\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n }\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n .w-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n }\n .w-3\\/4 {\n width: calc(3/4 * 100%);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-4\\.5 {\n width: calc(var(--spacing) * 4.5);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-7 {\n width: calc(var(--spacing) * 7);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-9 {\n width: calc(var(--spacing) * 9);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-11 {\n width: calc(var(--spacing) * 11);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-13 {\n width: calc(var(--spacing) * 13);\n }\n .w-14 {\n width: calc(var(--spacing) * 14);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-28 {\n width: calc(var(--spacing) * 28);\n }\n .w-30 {\n width: calc(var(--spacing) * 30);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-36 {\n width: calc(var(--spacing) * 36);\n }\n .w-40 {\n width: calc(var(--spacing) * 40);\n }\n .w-44 {\n width: calc(var(--spacing) * 44);\n }\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n .w-55 {\n width: calc(var(--spacing) * 55);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-60 {\n width: calc(var(--spacing) * 60);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-80 {\n width: calc(var(--spacing) * 80);\n }\n .w-96 {\n width: calc(var(--spacing) * 96);\n }\n .w-240 {\n width: calc(var(--spacing) * 240);\n }\n .w-\\[--radix-popover-trigger-width\\] {\n width: --radix-popover-trigger-width;\n }\n .w-\\[1\\%\\] {\n width: 1%;\n }\n .w-\\[1\\.5px\\] {\n width: 1.5px;\n }\n .w-\\[1px\\] {\n width: 1px;\n }\n .w-\\[2\\.5px\\] {\n width: 2.5px;\n }\n .w-\\[2px\\] {\n width: 2px;\n }\n .w-\\[3px\\] {\n width: 3px;\n }\n .w-\\[5px\\] {\n width: 5px;\n }\n .w-\\[7px\\] {\n width: 7px;\n }\n .w-\\[8px\\] {\n width: 8px;\n }\n .w-\\[9px\\] {\n width: 9px;\n }\n .w-\\[10px\\] {\n width: 10px;\n }\n .w-\\[11px\\] {\n width: 11px;\n }\n .w-\\[12px\\] {\n width: 12px;\n }\n .w-\\[13px\\] {\n width: 13px;\n }\n .w-\\[14\\.8\\%\\] {\n width: 14.8%;\n }\n .w-\\[14px\\] {\n width: 14px;\n }\n .w-\\[15\\.33px\\] {\n width: 15.33px;\n }\n .w-\\[15px\\] {\n width: 15px;\n }\n .w-\\[16px\\] {\n width: 16px;\n }\n .w-\\[18px\\] {\n width: 18px;\n }\n .w-\\[20px\\] {\n width: 20px;\n }\n .w-\\[22px\\] {\n width: 22px;\n }\n .w-\\[23px\\] {\n width: 23px;\n }\n .w-\\[24px\\] {\n width: 24px;\n }\n .w-\\[26\\%\\] {\n width: 26%;\n }\n .w-\\[26px\\] {\n width: 26px;\n }\n .w-\\[28px\\] {\n width: 28px;\n }\n .w-\\[30\\%\\] {\n width: 30%;\n }\n .w-\\[30px\\] {\n width: 30px;\n }\n .w-\\[33px\\] {\n width: 33px;\n }\n .w-\\[35px\\] {\n width: 35px;\n }\n .w-\\[38\\%\\] {\n width: 38%;\n }\n .w-\\[38px\\] {\n width: 38px;\n }\n .w-\\[40px\\] {\n width: 40px;\n }\n .w-\\[42px\\] {\n width: 42px;\n }\n .w-\\[44\\%\\] {\n width: 44%;\n }\n .w-\\[44px\\] {\n width: 44px;\n }\n .w-\\[45\\%\\] {\n width: 45%;\n }\n .w-\\[46px\\] {\n width: 46px;\n }\n .w-\\[48px\\] {\n width: 48px;\n }\n .w-\\[50px\\] {\n width: 50px;\n }\n .w-\\[52px\\] {\n width: 52px;\n }\n .w-\\[54px\\] {\n width: 54px;\n }\n .w-\\[56\\%\\] {\n width: 56%;\n }\n .w-\\[60px\\] {\n width: 60px;\n }\n .w-\\[62px\\] {\n width: 62px;\n }\n .w-\\[64px\\] {\n width: 64px;\n }\n .w-\\[66px\\] {\n width: 66px;\n }\n .w-\\[70\\%\\] {\n width: 70%;\n }\n .w-\\[70px\\] {\n width: 70px;\n }\n .w-\\[72px\\] {\n width: 72px;\n }\n .w-\\[74px\\] {\n width: 74px;\n }\n .w-\\[75px\\] {\n width: 75px;\n }\n .w-\\[80px\\] {\n width: 80px;\n }\n .w-\\[84px\\] {\n width: 84px;\n }\n .w-\\[86px\\] {\n width: 86px;\n }\n .w-\\[88px\\] {\n width: 88px;\n }\n .w-\\[90px\\] {\n width: 90px;\n }\n .w-\\[92px\\] {\n width: 92px;\n }\n .w-\\[95vw\\] {\n width: 95vw;\n }\n .w-\\[96px\\] {\n width: 96px;\n }\n .w-\\[100px\\] {\n width: 100px;\n }\n .w-\\[100vw\\] {\n width: 100vw;\n }\n .w-\\[110px\\] {\n width: 110px;\n }\n .w-\\[112px\\] {\n width: 112px;\n }\n .w-\\[120px\\] {\n width: 120px;\n }\n .w-\\[124px\\] {\n width: 124px;\n }\n .w-\\[126px\\] {\n width: 126px;\n }\n .w-\\[128px\\] {\n width: 128px;\n }\n .w-\\[130px\\] {\n width: 130px;\n }\n .w-\\[132px\\] {\n width: 132px;\n }\n .w-\\[140px\\] {\n width: 140px;\n }\n .w-\\[145px\\] {\n width: 145px;\n }\n .w-\\[148px\\] {\n width: 148px;\n }\n .w-\\[150px\\] {\n width: 150px;\n }\n .w-\\[158px\\] {\n width: 158px;\n }\n .w-\\[160px\\] {\n width: 160px;\n }\n .w-\\[165px\\] {\n width: 165px;\n }\n .w-\\[168px\\] {\n width: 168px;\n }\n .w-\\[170px\\] {\n width: 170px;\n }\n .w-\\[178px\\] {\n width: 178px;\n }\n .w-\\[180px\\] {\n width: 180px;\n }\n .w-\\[190px\\] {\n width: 190px;\n }\n .w-\\[200px\\] {\n width: 200px;\n }\n .w-\\[210px\\] {\n width: 210px;\n }\n .w-\\[220px\\] {\n width: 220px;\n }\n .w-\\[230px\\] {\n width: 230px;\n }\n .w-\\[240px\\] {\n width: 240px;\n }\n .w-\\[250px\\] {\n width: 250px;\n }\n .w-\\[260px\\] {\n width: 260px;\n }\n .w-\\[268px\\] {\n width: 268px;\n }\n .w-\\[280px\\] {\n width: 280px;\n }\n .w-\\[300px\\] {\n width: 300px;\n }\n .w-\\[301px\\] {\n width: 301px;\n }\n .w-\\[320px\\] {\n width: 320px;\n }\n .w-\\[333px\\] {\n width: 333px;\n }\n .w-\\[336px\\] {\n width: 336px;\n }\n .w-\\[340px\\] {\n width: 340px;\n }\n .w-\\[370px\\] {\n width: 370px;\n }\n .w-\\[380px\\] {\n width: 380px;\n }\n .w-\\[400px\\] {\n width: 400px;\n }\n .w-\\[420px\\] {\n width: 420px;\n }\n .w-\\[440px\\] {\n width: 440px;\n }\n .w-\\[480px\\] {\n width: 480px;\n }\n .w-\\[492px\\] {\n width: 492px;\n }\n .w-\\[500px\\] {\n width: 500px;\n }\n .w-\\[520px\\] {\n width: 520px;\n }\n .w-\\[540px\\] {\n width: 540px;\n }\n .w-\\[544px\\] {\n width: 544px;\n }\n .w-\\[573px\\] {\n width: 573px;\n }\n .w-\\[600px\\] {\n width: 600px;\n }\n .w-\\[688px\\] {\n width: 688px;\n }\n .w-\\[880px\\] {\n width: 880px;\n }\n .w-\\[1080px\\] {\n width: 1080px;\n }\n .w-\\[calc\\(100\\%\\+0\\.5rem\\)\\] {\n width: calc(100% + 0.5rem);\n }\n .w-\\[var\\(--radix-dropdown-menu-trigger-width\\)\\] {\n width: var(--radix-dropdown-menu-trigger-width);\n }\n .w-auto {\n width: auto;\n }\n .w-auto\\! {\n width: auto !important;\n }\n .w-fit {\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .w-max {\n width: max-content;\n }\n .w-min {\n width: min-content;\n }\n .w-px {\n width: 1px;\n }\n .w-screen {\n width: 100vw;\n }\n .\\!max-w-\\[860px\\] {\n max-width: 860px !important;\n }\n .\\!max-w-none {\n max-width: none !important;\n }\n .max-w-\\(--skeleton-width\\) {\n max-width: var(--skeleton-width);\n }\n .max-w-0 {\n max-width: calc(var(--spacing) * 0);\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-3xl {\n max-width: var(--container-3xl);\n }\n .max-w-4 {\n max-width: calc(var(--spacing) * 4);\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\n }\n .max-w-5xl {\n max-width: var(--container-5xl);\n }\n .max-w-5xl\\! {\n max-width: var(--container-5xl) !important;\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-7xl {\n max-width: var(--container-7xl);\n }\n .max-w-12 {\n max-width: calc(var(--spacing) * 12);\n }\n .max-w-80 {\n max-width: calc(var(--spacing) * 80);\n }\n .max-w-\\[10rem\\] {\n max-width: 10rem;\n }\n .max-w-\\[12rem\\] {\n max-width: 12rem;\n }\n .max-w-\\[30px\\] {\n max-width: 30px;\n }\n .max-w-\\[40px\\] {\n max-width: 40px;\n }\n .max-w-\\[50\\%\\] {\n max-width: 50%;\n }\n .max-w-\\[60\\%\\] {\n max-width: 60%;\n }\n .max-w-\\[62\\%\\] {\n max-width: 62%;\n }\n .max-w-\\[65ch\\] {\n max-width: 65ch;\n }\n .max-w-\\[78\\%\\] {\n max-width: 78%;\n }\n .max-w-\\[80\\%\\] {\n max-width: 80%;\n }\n .max-w-\\[92\\%\\] {\n max-width: 92%;\n }\n .max-w-\\[92vw\\] {\n max-width: 92vw;\n }\n .max-w-\\[95vw\\] {\n max-width: 95vw;\n }\n .max-w-\\[100\\%\\] {\n max-width: 100%;\n }\n .max-w-\\[130px\\] {\n max-width: 130px;\n }\n .max-w-\\[140px\\] {\n max-width: 140px;\n }\n .max-w-\\[150px\\] {\n max-width: 150px;\n }\n .max-w-\\[160px\\] {\n max-width: 160px;\n }\n .max-w-\\[170px\\] {\n max-width: 170px;\n }\n .max-w-\\[177px\\] {\n max-width: 177px;\n }\n .max-w-\\[180px\\] {\n max-width: 180px;\n }\n .max-w-\\[190px\\] {\n max-width: 190px;\n }\n .max-w-\\[200px\\] {\n max-width: 200px;\n }\n .max-w-\\[220px\\] {\n max-width: 220px;\n }\n .max-w-\\[240px\\] {\n max-width: 240px;\n }\n .max-w-\\[250px\\] {\n max-width: 250px;\n }\n .max-w-\\[260px\\] {\n max-width: 260px;\n }\n .max-w-\\[280px\\] {\n max-width: 280px;\n }\n .max-w-\\[320px\\] {\n max-width: 320px;\n }\n .max-w-\\[340px\\] {\n max-width: 340px;\n }\n .max-w-\\[354px\\] {\n max-width: 354px;\n }\n .max-w-\\[384px\\] {\n max-width: 384px;\n }\n .max-w-\\[400px\\] {\n max-width: 400px;\n }\n .max-w-\\[420px\\] {\n max-width: 420px;\n }\n .max-w-\\[440px\\] {\n max-width: 440px;\n }\n .max-w-\\[450px\\] {\n max-width: 450px;\n }\n .max-w-\\[460px\\] {\n max-width: 460px;\n }\n .max-w-\\[480px\\] {\n max-width: 480px;\n }\n .max-w-\\[500px\\] {\n max-width: 500px;\n }\n .max-w-\\[512px\\] {\n max-width: 512px;\n }\n .max-w-\\[520px\\] {\n max-width: 520px;\n }\n .max-w-\\[540px\\] {\n max-width: 540px;\n }\n .max-w-\\[544px\\] {\n max-width: 544px;\n }\n .max-w-\\[560px\\] {\n max-width: 560px;\n }\n .max-w-\\[580px\\] {\n max-width: 580px;\n }\n .max-w-\\[600px\\] {\n max-width: 600px;\n }\n .max-w-\\[640px\\] {\n max-width: 640px;\n }\n .max-w-\\[660px\\] {\n max-width: 660px;\n }\n .max-w-\\[680px\\] {\n max-width: 680px;\n }\n .max-w-\\[700px\\] {\n max-width: 700px;\n }\n .max-w-\\[720px\\] {\n max-width: 720px;\n }\n .max-w-\\[760px\\] {\n max-width: 760px;\n }\n .max-w-\\[791px\\] {\n max-width: 791px;\n }\n .max-w-\\[800px\\] {\n max-width: 800px;\n }\n .max-w-\\[960px\\] {\n max-width: 960px;\n }\n .max-w-\\[1080px\\] {\n max-width: 1080px;\n }\n .max-w-\\[1180px\\] {\n max-width: 1180px;\n }\n .max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n }\n .max-w-\\[min\\(100\\%\\,11rem\\)\\] {\n max-width: min(100%, 11rem);\n }\n .max-w-full {\n max-width: 100%;\n }\n .max-w-lg {\n max-width: var(--container-lg);\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .max-w-none {\n max-width: none;\n }\n .max-w-sm {\n max-width: var(--container-sm);\n }\n .max-w-xl {\n max-width: var(--container-xl);\n }\n .max-w-xs {\n max-width: var(--container-xs);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .min-w-5 {\n min-width: calc(var(--spacing) * 5);\n }\n .min-w-7 {\n min-width: calc(var(--spacing) * 7);\n }\n .min-w-8 {\n min-width: calc(var(--spacing) * 8);\n }\n .min-w-9 {\n min-width: calc(var(--spacing) * 9);\n }\n .min-w-24 {\n min-width: calc(var(--spacing) * 24);\n }\n .min-w-56 {\n min-width: calc(var(--spacing) * 56);\n }\n .min-w-60 {\n min-width: calc(var(--spacing) * 60);\n }\n .min-w-\\[3px\\] {\n min-width: 3px;\n }\n .min-w-\\[4px\\] {\n min-width: 4px;\n }\n .min-w-\\[8rem\\] {\n min-width: 8rem;\n }\n .min-w-\\[20px\\] {\n min-width: 20px;\n }\n .min-w-\\[22px\\] {\n min-width: 22px;\n }\n .min-w-\\[34px\\] {\n min-width: 34px;\n }\n .min-w-\\[44px\\] {\n min-width: 44px;\n }\n .min-w-\\[48px\\] {\n min-width: 48px;\n }\n .min-w-\\[60px\\] {\n min-width: 60px;\n }\n .min-w-\\[85px\\] {\n min-width: 85px;\n }\n .min-w-\\[86px\\] {\n min-width: 86px;\n }\n .min-w-\\[88px\\] {\n min-width: 88px;\n }\n .min-w-\\[96px\\] {\n min-width: 96px;\n }\n .min-w-\\[104px\\] {\n min-width: 104px;\n }\n .min-w-\\[120px\\] {\n min-width: 120px;\n }\n .min-w-\\[140px\\] {\n min-width: 140px;\n }\n .min-w-\\[150px\\] {\n min-width: 150px;\n }\n .min-w-\\[160px\\] {\n min-width: 160px;\n }\n .min-w-\\[168px\\] {\n min-width: 168px;\n }\n .min-w-\\[170px\\] {\n min-width: 170px;\n }\n .min-w-\\[180px\\] {\n min-width: 180px;\n }\n .min-w-\\[200px\\] {\n min-width: 200px;\n }\n .min-w-\\[220px\\] {\n min-width: 220px;\n }\n .min-w-\\[240px\\] {\n min-width: 240px;\n }\n .min-w-\\[270px\\] {\n min-width: 270px;\n }\n .min-w-\\[320px\\] {\n min-width: 320px;\n }\n .min-w-\\[600px\\] {\n min-width: 600px;\n }\n .min-w-\\[700px\\] {\n min-width: 700px;\n }\n .min-w-\\[860px\\] {\n min-width: 860px;\n }\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n .min-w-fit {\n min-width: fit-content;\n }\n .min-w-full {\n min-width: 100%;\n }\n .min-w-max {\n min-width: max-content;\n }\n .min-w-xs {\n min-width: var(--container-xs);\n }\n .flex-0 {\n flex: 0;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-2 {\n flex: 2;\n }\n .flex-\\[0\\] {\n flex: 0;\n }\n .flex-none {\n flex: none;\n }\n .\\!shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink {\n flex-shrink: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .\\!grow-0 {\n flex-grow: 0 !important;\n }\n .flex-grow {\n flex-grow: 1;\n }\n .grow {\n flex-grow: 1;\n }\n .\\!basis-auto {\n flex-basis: auto !important;\n }\n .table-auto {\n table-layout: auto;\n }\n .table-fixed {\n table-layout: fixed;\n }\n .caption-bottom {\n caption-side: bottom;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .border-separate {\n border-collapse: separate;\n }\n .border-spacing-0 {\n --tw-border-spacing-x: calc(var(--spacing) * 0);\n --tw-border-spacing-y: calc(var(--spacing) * 0);\n border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);\n }\n .border-spacing-\\[2px\\] {\n --tw-border-spacing-x: 2px;\n --tw-border-spacing-y: 2px;\n border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);\n }\n .origin-\\(--radix-tooltip-content-transform-origin\\) {\n transform-origin: var(--radix-tooltip-content-transform-origin);\n }\n .origin-\\[--radix-dropdown-menu-content-transform-origin\\] {\n transform-origin: --radix-dropdown-menu-content-transform-origin;\n }\n .origin-\\[--radix-popover-content-transform-origin\\] {\n transform-origin: --radix-popover-content-transform-origin;\n }\n .origin-\\[--radix-select-content-transform-origin\\] {\n transform-origin: --radix-select-content-transform-origin;\n }\n .origin-bottom-right {\n transform-origin: 100% 100%;\n }\n .\\!translate-x-0 {\n --tw-translate-x: calc(var(--spacing) * 0) !important;\n translate: var(--tw-translate-x) var(--tw-translate-y) !important;\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-2 {\n --tw-translate-x: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-full {\n --tw-translate-x: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-px {\n --tw-translate-x: -1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-0 {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-1\\/2 {\n --tw-translate-x: calc(1/2 * 100%);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-6 {\n --tw-translate-x: calc(var(--spacing) * 6);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-full {\n --tw-translate-x: 100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-px {\n --tw-translate-x: 1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .\\!translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0) !important;\n translate: var(--tw-translate-x) var(--tw-translate-y) !important;\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-2\\/3 {\n --tw-translate-y: calc(calc(2/3 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0\\.5 {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-2 {\n --tw-translate-y: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[6px\\] {\n --tw-translate-y: 6px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[calc\\(-50\\%_-_2px\\)\\] {\n --tw-translate-y: calc(-50% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .scale-75 {\n --tw-scale-x: 75%;\n --tw-scale-y: 75%;\n --tw-scale-z: 75%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-95 {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-100 {\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .-rotate-90 {\n rotate: calc(90deg * -1);\n }\n .rotate-0 {\n rotate: 0deg;\n }\n .rotate-45 {\n rotate: 45deg;\n }\n .rotate-90 {\n rotate: 90deg;\n }\n .rotate-180 {\n rotate: 180deg;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-\\[slide-in-from-left_0\\.22s_ease-out\\] {\n animation: slide-in-from-left 0.22s ease-out;\n }\n .animate-\\[slide-in-from-right_0\\.22s_ease-out\\] {\n animation: slide-in-from-right 0.22s ease-out;\n }\n .animate-bounce {\n animation: var(--animate-bounce);\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-col-resize {\n cursor: col-resize;\n }\n .cursor-crosshair {\n cursor: crosshair;\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-grab {\n cursor: grab;\n }\n .cursor-help {\n cursor: help;\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .cursor-zoom-in {\n cursor: zoom-in;\n }\n .touch-none {\n touch-action: none;\n }\n .resize {\n resize: both;\n }\n .resize-none {\n resize: none;\n }\n .resize-y {\n resize: vertical;\n }\n .snap-x {\n scroll-snap-type: x var(--tw-scroll-snap-strictness);\n }\n .snap-mandatory {\n --tw-scroll-snap-strictness: mandatory;\n }\n .list-inside {\n list-style-position: inside;\n }\n .list-decimal {\n list-style-type: decimal;\n }\n .list-disc {\n list-style-type: disc;\n }\n .list-none {\n list-style-type: none;\n }\n .appearance-none {\n appearance: none;\n }\n .grid-flow-row {\n grid-auto-flow: row;\n }\n .auto-rows-min {\n grid-auto-rows: min-content;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .grid-cols-\\[0\\.75rem_minmax\\(7rem\\,9rem\\)_minmax\\(8rem\\,12rem\\)_1fr\\] {\n grid-template-columns: 0.75rem minmax(7rem,9rem) minmax(8rem,12rem) 1fr;\n }\n .grid-cols-\\[1fr_2fr\\] {\n grid-template-columns: 1fr 2fr;\n }\n .grid-cols-\\[1fr_auto\\] {\n grid-template-columns: 1fr auto;\n }\n .grid-cols-\\[1fr_auto_auto\\] {\n grid-template-columns: 1fr auto auto;\n }\n .grid-cols-\\[1fr_auto_auto_auto\\] {\n grid-template-columns: 1fr auto auto auto;\n }\n .grid-cols-\\[12rem_1fr\\] {\n grid-template-columns: 12rem 1fr;\n }\n .grid-cols-\\[16px_1fr\\] {\n grid-template-columns: 16px 1fr;\n }\n .grid-cols-\\[96px_1fr_auto\\] {\n grid-template-columns: 96px 1fr auto;\n }\n .grid-cols-\\[116px_minmax\\(0\\,1fr\\)_104px\\] {\n grid-template-columns: 116px minmax(0,1fr) 104px;\n }\n .grid-cols-\\[132px_1fr_48px\\] {\n grid-template-columns: 132px 1fr 48px;\n }\n .grid-cols-\\[auto_1fr_auto\\] {\n grid-template-columns: auto 1fr auto;\n }\n .grid-cols-\\[auto_1fr_auto_auto\\] {\n grid-template-columns: auto 1fr auto auto;\n }\n .grid-cols-\\[repeat\\(auto-fit\\,minmax\\(128px\\,1fr\\)\\)\\] {\n grid-template-columns: repeat(auto-fit,minmax(128px,1fr));\n }\n .grid-cols-\\[repeat\\(auto-fit\\,minmax\\(240px\\,1fr\\)\\)\\] {\n grid-template-columns: repeat(auto-fit,minmax(240px,1fr));\n }\n .grid-cols-subgrid {\n grid-template-columns: subgrid;\n }\n .grid-rows-\\[0fr\\] {\n grid-template-rows: 0fr;\n }\n .grid-rows-\\[1fr\\] {\n grid-template-rows: 1fr;\n }\n .grid-rows-\\[auto_auto\\] {\n grid-template-rows: auto auto;\n }\n .grid-rows-\\[repeat\\(6\\,auto\\)\\] {\n grid-template-rows: repeat(6,auto);\n }\n .grid-rows-subgrid {\n grid-template-rows: subgrid;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-nowrap {\n flex-wrap: nowrap;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .place-items-center {\n place-items: center;\n }\n .\\!items-start {\n align-items: flex-start !important;\n }\n .items-baseline {\n align-items: baseline;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .items-stretch {\n align-items: stretch;\n }\n .\\!justify-start {\n justify-content: flex-start !important;\n }\n .justify-around {\n justify-content: space-around;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .justify-stretch {\n justify-content: stretch;\n }\n .\\!gap-0 {\n gap: calc(var(--spacing) * 0) !important;\n }\n .gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-3\\.5 {\n gap: calc(var(--spacing) * 3.5);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-4\\.5 {\n gap: calc(var(--spacing) * 4.5);\n }\n .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n .gap-10 {\n gap: calc(var(--spacing) * 10);\n }\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n .gap-14 {\n gap: calc(var(--spacing) * 14);\n }\n .gap-20 {\n gap: calc(var(--spacing) * 20);\n }\n .gap-\\[--spacing\\(var\\(--gap\\)\\)\\] {\n gap: calc(var(--spacing) * var(--gap));\n }\n .gap-\\[1px\\] {\n gap: 1px;\n }\n .gap-\\[2px\\] {\n gap: 2px;\n }\n .gap-\\[3px\\] {\n gap: 3px;\n }\n .gap-\\[4px\\] {\n gap: 4px;\n }\n .gap-\\[5px\\] {\n gap: 5px;\n }\n .gap-\\[6px\\] {\n gap: 6px;\n }\n .gap-\\[7px\\] {\n gap: 7px;\n }\n .gap-\\[8px\\] {\n gap: 8px;\n }\n .gap-\\[9px\\] {\n gap: 9px;\n }\n .gap-\\[10px\\] {\n gap: 10px;\n }\n .gap-\\[11px\\] {\n gap: 11px;\n }\n .gap-\\[12px\\] {\n gap: 12px;\n }\n .gap-\\[14px\\] {\n gap: 14px;\n }\n .gap-\\[15px\\] {\n gap: 15px;\n }\n .gap-\\[16px\\] {\n gap: 16px;\n }\n .gap-\\[18px\\] {\n gap: 18px;\n }\n .gap-\\[20px\\] {\n gap: 20px;\n }\n .gap-\\[24px\\] {\n gap: 24px;\n }\n .gap-\\[40px\\] {\n gap: 40px;\n }\n .gap-px {\n gap: 1px;\n }\n .space-y-0 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-0\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 0.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 0.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-1\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-8 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-\\[6px\\] {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(6px * var(--tw-space-y-reverse));\n margin-block-end: calc(6px * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-\\[7px\\] {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(7px * var(--tw-space-y-reverse));\n margin-block-end: calc(7px * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-\\[12px\\] {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(12px * var(--tw-space-y-reverse));\n margin-block-end: calc(12px * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-\\[14px\\] {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(14px * var(--tw-space-y-reverse));\n margin-block-end: calc(14px * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .gap-x-1\\.5 {\n column-gap: calc(var(--spacing) * 1.5);\n }\n .gap-x-2 {\n column-gap: calc(var(--spacing) * 2);\n }\n .gap-x-2\\.5 {\n column-gap: calc(var(--spacing) * 2.5);\n }\n .gap-x-3 {\n column-gap: calc(var(--spacing) * 3);\n }\n .gap-x-4 {\n column-gap: calc(var(--spacing) * 4);\n }\n .gap-x-5 {\n column-gap: calc(var(--spacing) * 5);\n }\n .gap-x-6 {\n column-gap: calc(var(--spacing) * 6);\n }\n .gap-x-12 {\n column-gap: calc(var(--spacing) * 12);\n }\n .gap-x-\\[12px\\] {\n column-gap: 12px;\n }\n .gap-x-\\[14px\\] {\n column-gap: 14px;\n }\n .gap-x-\\[18px\\] {\n column-gap: 18px;\n }\n .-space-x-4 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * -4) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * -4) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .-space-x-px {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(-1px * var(--tw-space-x-reverse));\n margin-inline-end: calc(-1px * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-3 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-4 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-5 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 5) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-6 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 6) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .gap-y-1 {\n row-gap: calc(var(--spacing) * 1);\n }\n .gap-y-1\\.5 {\n row-gap: calc(var(--spacing) * 1.5);\n }\n .gap-y-2 {\n row-gap: calc(var(--spacing) * 2);\n }\n .gap-y-3 {\n row-gap: calc(var(--spacing) * 3);\n }\n .gap-y-4 {\n row-gap: calc(var(--spacing) * 4);\n }\n .gap-y-5 {\n row-gap: calc(var(--spacing) * 5);\n }\n .gap-y-6 {\n row-gap: calc(var(--spacing) * 6);\n }\n .gap-y-7 {\n row-gap: calc(var(--spacing) * 7);\n }\n .gap-y-8 {\n row-gap: calc(var(--spacing) * 8);\n }\n .gap-y-\\[2px\\] {\n row-gap: 2px;\n }\n .gap-y-\\[4px\\] {\n row-gap: 4px;\n }\n .gap-y-\\[6px\\] {\n row-gap: 6px;\n }\n .gap-y-\\[10px\\] {\n row-gap: 10px;\n }\n .divide-y {\n :where(& > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n }\n .divide-border {\n :where(& > :not(:last-child)) {\n border-color: var(--color-border);\n }\n }\n .divide-gray-100 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-gray-100);\n }\n }\n .divide-gray-200 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-gray-200);\n }\n }\n .divide-gray-300 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-gray-300);\n }\n }\n .self-center {\n align-self: center;\n }\n .self-end {\n align-self: flex-end;\n }\n .self-start {\n align-self: flex-start;\n }\n .self-stretch {\n align-self: stretch;\n }\n .justify-self-end {\n justify-self: flex-end;\n }\n .justify-self-start {\n justify-self: flex-start;\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-visible {\n overflow: visible;\n }\n .overflow-x-auto {\n overflow-x: auto;\n }\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .overflow-y-scroll {\n overflow-y: scroll;\n }\n .overscroll-contain {\n overscroll-behavior: contain;\n }\n .\\!rounded-none {\n border-radius: 0 !important;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n .rounded-3xl {\n border-radius: var(--radius-3xl);\n }\n .rounded-\\[1\\.5px\\] {\n border-radius: 1.5px;\n }\n .rounded-\\[1px\\] {\n border-radius: 1px;\n }\n .rounded-\\[2px\\] {\n border-radius: 2px;\n }\n .rounded-\\[3px\\] {\n border-radius: 3px;\n }\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n .rounded-\\[5px\\] {\n border-radius: 5px;\n }\n .rounded-\\[6px\\] {\n border-radius: 6px;\n }\n .rounded-\\[7px\\] {\n border-radius: 7px;\n }\n .rounded-\\[8px\\] {\n border-radius: 8px;\n }\n .rounded-\\[9px\\] {\n border-radius: 9px;\n }\n .rounded-\\[10px\\] {\n border-radius: 10px;\n }\n .rounded-\\[11px\\] {\n border-radius: 11px;\n }\n .rounded-\\[12px\\] {\n border-radius: 12px;\n }\n .rounded-\\[13px_13px_4px_13px\\] {\n border-radius: 13px 13px 4px 13px;\n }\n .rounded-\\[13px_13px_13px_4px\\] {\n border-radius: 13px 13px 13px 4px;\n }\n .rounded-\\[14px\\] {\n border-radius: 14px;\n }\n .rounded-\\[16px\\] {\n border-radius: 16px;\n }\n .rounded-\\[18px\\] {\n border-radius: 18px;\n }\n .rounded-\\[18px_18px_4px_18px\\] {\n border-radius: 18px 18px 4px 18px;\n }\n .rounded-\\[50px\\] {\n border-radius: 50px;\n }\n .rounded-\\[100\\%\\] {\n border-radius: 100%;\n }\n .rounded-\\[min\\(var\\(--radius-md\\)\\,12px\\)\\] {\n border-radius: min(var(--radius-md), 12px);\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-none {\n border-radius: 0;\n }\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n .rounded-xs {\n border-radius: var(--radius-xs);\n }\n .rounded-t {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .rounded-t-2xl {\n border-top-left-radius: var(--radius-2xl);\n border-top-right-radius: var(--radius-2xl);\n }\n .rounded-t-\\[3px\\] {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n }\n .rounded-t-lg {\n border-top-left-radius: var(--radius-lg);\n border-top-right-radius: var(--radius-lg);\n }\n .rounded-t-md {\n border-top-left-radius: var(--radius-md);\n border-top-right-radius: var(--radius-md);\n }\n .rounded-t-sm {\n border-top-left-radius: var(--radius-sm);\n border-top-right-radius: var(--radius-sm);\n }\n .rounded-l-full {\n border-top-left-radius: calc(infinity * 1px);\n border-bottom-left-radius: calc(infinity * 1px);\n }\n .rounded-l-md {\n border-top-left-radius: var(--radius-md);\n border-bottom-left-radius: var(--radius-md);\n }\n .rounded-l-none {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .rounded-tl-xl {\n border-top-left-radius: var(--radius-xl);\n }\n .rounded-r {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n }\n .rounded-r-\\[2px\\] {\n border-top-right-radius: 2px;\n border-bottom-right-radius: 2px;\n }\n .rounded-r-\\[3px\\] {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n }\n .rounded-r-\\[10px\\] {\n border-top-right-radius: 10px;\n border-bottom-right-radius: 10px;\n }\n .rounded-r-full {\n border-top-right-radius: calc(infinity * 1px);\n border-bottom-right-radius: calc(infinity * 1px);\n }\n .rounded-r-md {\n border-top-right-radius: var(--radius-md);\n border-bottom-right-radius: var(--radius-md);\n }\n .rounded-r-none {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .rounded-b-\\[14px\\] {\n border-bottom-right-radius: 14px;\n border-bottom-left-radius: 14px;\n }\n .rounded-b-lg {\n border-bottom-right-radius: var(--radius-lg);\n border-bottom-left-radius: var(--radius-lg);\n }\n .rounded-bl-xl {\n border-bottom-left-radius: var(--radius-xl);\n }\n .\\!border-0 {\n border-style: var(--tw-border-style) !important;\n border-width: 0px !important;\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-1 {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-3 {\n border-style: var(--tw-border-style);\n border-width: 3px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-\\[0\\.2px\\] {\n border-style: var(--tw-border-style);\n border-width: 0.2px;\n }\n .border-\\[0\\.5\\] {\n border-style: var(--tw-border-style);\n border-width: 0.5;\n }\n .border-\\[0\\.5px\\] {\n border-style: var(--tw-border-style);\n border-width: 0.5px;\n }\n .border-\\[0px\\] {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-\\[1\\.5px\\] {\n border-style: var(--tw-border-style);\n border-width: 1.5px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-t-1 {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-t-2 {\n border-top-style: var(--tw-border-style);\n border-top-width: 2px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-r-0 {\n border-right-style: var(--tw-border-style);\n border-right-width: 0px;\n }\n .border-r-1 {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-0 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n .border-b-1 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-b-3 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 3px;\n }\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .border-l-0 {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n .border-l-2 {\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n }\n .border-l-\\[3px\\] {\n border-left-style: var(--tw-border-style);\n border-left-width: 3px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .border-\\[\\#0d1f35\\] {\n border-color: #0d1f35;\n }\n .border-\\[\\#1e3556\\] {\n border-color: #1e3556;\n }\n .border-\\[\\#22c55e\\]\\/35 {\n border-color: color-mix(in oklab, #22c55e 35%, transparent);\n }\n .border-\\[\\#86efac\\] {\n border-color: #86efac;\n }\n .border-\\[\\#1877F2\\] {\n border-color: #1877F2;\n }\n .border-\\[\\#2563eb\\] {\n border-color: #2563eb;\n }\n .border-\\[\\#18181b\\] {\n border-color: #18181b;\n }\n .border-\\[\\#161823\\] {\n border-color: #161823;\n }\n .border-\\[\\#707070\\] {\n border-color: #707070;\n }\n .border-\\[\\#747775\\] {\n border-color: #747775;\n }\n .border-\\[\\#DBE2EB\\] {\n border-color: #DBE2EB;\n }\n .border-\\[\\#E4E4E7\\] {\n border-color: #E4E4E7;\n }\n .border-\\[\\#E88B00\\] {\n border-color: #E88B00;\n }\n .border-\\[\\#bbf7d0\\] {\n border-color: #bbf7d0;\n }\n .border-\\[\\#cbd5e1\\] {\n border-color: #cbd5e1;\n }\n .border-\\[\\#d1d5db\\] {\n border-color: #d1d5db;\n }\n .border-\\[\\#d6e3ff\\] {\n border-color: #d6e3ff;\n }\n .border-\\[\\#dbe4f3\\] {\n border-color: #dbe4f3;\n }\n .border-\\[\\#e2e4e9\\] {\n border-color: #e2e4e9;\n }\n .border-\\[\\#e2e6ea\\] {\n border-color: #e2e6ea;\n }\n .border-\\[\\#e4e4e7\\] {\n border-color: #e4e4e7;\n }\n .border-\\[\\#eef2f7\\] {\n border-color: #eef2f7;\n }\n .border-\\[\\#f0f0f0\\] {\n border-color: #f0f0f0;\n }\n .border-\\[\\#f4f6f8\\] {\n border-color: #f4f6f8;\n }\n .border-\\[\\#f8f9fa\\] {\n border-color: #f8f9fa;\n }\n .border-\\[\\#fcd34d\\] {\n border-color: #fcd34d;\n }\n .border-\\[color\\:var\\(--ob-bd\\)\\] {\n border-color: var(--ob-bd);\n }\n .border-\\[var\\(--bc-text-color\\,\\#18181B\\)\\] {\n border-color: var(--bc-text-color,#18181B);\n }\n .border-accent {\n border-color: var(--color-accent);\n }\n .border-accent\\/30 {\n border-color: color-mix(in srgb, #f4f4f5 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-accent) 30%, transparent);\n }\n }\n .border-accent\\/40 {\n border-color: color-mix(in srgb, #f4f4f5 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n .border-amber-200 {\n border-color: var(--color-amber-200);\n }\n .border-amber-300 {\n border-color: var(--color-amber-300);\n }\n .border-amber-300\\/60 {\n border-color: color-mix(in srgb, oklch(87.9% 0.169 91.605) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-amber-300) 60%, transparent);\n }\n }\n .border-amber-400 {\n border-color: var(--color-amber-400);\n }\n .border-amber-500\\/40 {\n border-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-amber-500) 40%, transparent);\n }\n }\n .border-amber-500\\/50 {\n border-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-amber-500) 50%, transparent);\n }\n }\n .border-black {\n border-color: var(--color-black);\n }\n .border-black\\/12 {\n border-color: color-mix(in srgb, #000 12%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-black) 12%, transparent);\n }\n }\n .border-blue-100 {\n border-color: var(--color-blue-100);\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-blue-300 {\n border-color: var(--color-blue-300);\n }\n .border-blue-500 {\n border-color: var(--color-blue-500);\n }\n .border-blue-600 {\n border-color: var(--color-blue-600);\n }\n .border-border {\n border-color: var(--color-border);\n }\n .border-border\\/30 {\n border-color: color-mix(in srgb, #e4e4e7 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-border) 30%, transparent);\n }\n }\n .border-border\\/60 {\n border-color: color-mix(in srgb, #e4e4e7 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-border) 60%, transparent);\n }\n }\n .border-border\\/80 {\n border-color: color-mix(in srgb, #e4e4e7 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-border) 80%, transparent);\n }\n }\n .border-current {\n border-color: currentcolor;\n }\n .border-current\\/30 {\n border-color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, currentcolor 30%, transparent);\n }\n }\n .border-destructive {\n border-color: var(--color-destructive);\n }\n .border-destructive\\/30 {\n border-color: color-mix(in srgb, #dc2626 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-destructive) 30%, transparent);\n }\n }\n .border-destructive\\/50 {\n border-color: color-mix(in srgb, #dc2626 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-destructive) 50%, transparent);\n }\n }\n .border-emerald-200 {\n border-color: var(--color-emerald-200);\n }\n .border-emerald-300 {\n border-color: var(--color-emerald-300);\n }\n .border-emerald-500 {\n border-color: var(--color-emerald-500);\n }\n .border-gray-100 {\n border-color: var(--color-gray-100);\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-gray-300 {\n border-color: var(--color-gray-300);\n }\n .border-gray-400 {\n border-color: var(--color-gray-400);\n }\n .border-gray-900\\/5 {\n border-color: color-mix(in srgb, oklch(21% 0.034 264.665) 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent);\n }\n }\n .border-gray-900\\/25 {\n border-color: color-mix(in srgb, oklch(21% 0.034 264.665) 25%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-gray-900) 25%, transparent);\n }\n }\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n .border-green-300 {\n border-color: var(--color-green-300);\n }\n .border-green-400 {\n border-color: var(--color-green-400);\n }\n .border-green-500 {\n border-color: var(--color-green-500);\n }\n .border-green-600 {\n border-color: var(--color-green-600);\n }\n .border-indigo-200 {\n border-color: var(--color-indigo-200);\n }\n .border-indigo-300 {\n border-color: var(--color-indigo-300);\n }\n .border-input {\n border-color: var(--color-input);\n }\n .border-muted-foreground\\/25 {\n border-color: color-mix(in srgb, #74716e 25%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-muted-foreground) 25%, transparent);\n }\n }\n .border-muted-foreground\\/40 {\n border-color: color-mix(in srgb, #74716e 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-muted-foreground) 40%, transparent);\n }\n }\n .border-muted-foreground\\/60 {\n border-color: color-mix(in srgb, #74716e 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-muted-foreground) 60%, transparent);\n }\n }\n .border-muted-foreground\\/70 {\n border-color: color-mix(in srgb, #74716e 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-muted-foreground) 70%, transparent);\n }\n }\n .border-neutral-10 {\n border-color: var(--color-neutral-10);\n }\n .border-neutral-20 {\n border-color: var(--color-neutral-20);\n }\n .border-neutral-40 {\n border-color: var(--color-neutral-40);\n }\n .border-neutral-200 {\n border-color: var(--color-neutral-200);\n }\n .border-orange-100 {\n border-color: var(--color-orange-100);\n }\n .border-orange-200 {\n border-color: var(--color-orange-200);\n }\n .border-orange-300 {\n border-color: var(--color-orange-300);\n }\n .border-orange-400 {\n border-color: var(--color-orange-400);\n }\n .border-primary {\n border-color: var(--color-primary);\n }\n .border-primary\\/30 {\n border-color: color-mix(in srgb, #18181b 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 30%, transparent);\n }\n }\n .border-primary\\/50 {\n border-color: color-mix(in srgb, #18181b 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 50%, transparent);\n }\n }\n .border-purple-100 {\n border-color: var(--color-purple-100);\n }\n .border-purple-200 {\n border-color: var(--color-purple-200);\n }\n .border-purple-300 {\n border-color: var(--color-purple-300);\n }\n .border-purple-500 {\n border-color: var(--color-purple-500);\n }\n .border-red-200 {\n border-color: var(--color-red-200);\n }\n .border-red-300 {\n border-color: var(--color-red-300);\n }\n .border-red-400 {\n border-color: var(--color-red-400);\n }\n .border-red-500 {\n border-color: var(--color-red-500);\n }\n .border-red-600 {\n border-color: var(--color-red-600);\n }\n .border-rose-200 {\n border-color: var(--color-rose-200);\n }\n .border-sidebar-ring {\n border-color: var(--color-sidebar-ring);\n }\n .border-slate-100 {\n border-color: var(--color-slate-100);\n }\n .border-slate-200 {\n border-color: var(--color-slate-200);\n }\n .border-slate-300 {\n border-color: var(--color-slate-300);\n }\n .border-slate-400 {\n border-color: var(--color-slate-400);\n }\n .border-slate-500 {\n border-color: var(--color-slate-500);\n }\n .border-slate-900 {\n border-color: var(--color-slate-900);\n }\n .border-teal-600\\/30 {\n border-color: color-mix(in srgb, oklch(60% 0.118 184.704) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-teal-600) 30%, transparent);\n }\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-violet-100 {\n border-color: var(--color-violet-100);\n }\n .border-violet-300 {\n border-color: var(--color-violet-300);\n }\n .border-violet-600 {\n border-color: var(--color-violet-600);\n }\n .border-white {\n border-color: var(--color-white);\n }\n .border-white\\/10 {\n border-color: color-mix(in srgb, #fff 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-white) 10%, transparent);\n }\n }\n .border-white\\/20 {\n border-color: color-mix(in srgb, #fff 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-white) 20%, transparent);\n }\n }\n .border-white\\/30 {\n border-color: color-mix(in srgb, #fff 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-white) 30%, transparent);\n }\n }\n .border-yellow-200 {\n border-color: var(--color-yellow-200);\n }\n .border-zinc-200 {\n border-color: var(--color-zinc-200);\n }\n .border-zinc-900 {\n border-color: var(--color-zinc-900);\n }\n .border-t-accent {\n border-top-color: var(--color-accent);\n }\n .border-t-gray-900 {\n border-top-color: var(--color-gray-900);\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .border-t-white {\n border-top-color: var(--color-white);\n }\n .border-b-\\[\\#e2e4e9\\] {\n border-bottom-color: #e2e4e9;\n }\n .border-b-blue-20 {\n border-bottom-color: var(--color-blue-20);\n }\n .border-b-neutral-20 {\n border-bottom-color: var(--color-neutral-20);\n }\n .border-b-transparent {\n border-bottom-color: transparent;\n }\n .border-b-zinc-300 {\n border-bottom-color: var(--color-zinc-300);\n }\n .border-l-\\[var\\(--b-orange-50\\)\\] {\n border-left-color: var(--b-orange-50);\n }\n .border-l-blue-500\\/40 {\n border-left-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-left-color: color-mix(in oklab, var(--color-blue-500) 40%, transparent);\n }\n }\n .border-l-primary {\n border-left-color: var(--color-primary);\n }\n .\\!bg-\\[\\#1877F2\\] {\n background-color: #1877F2 !important;\n }\n .\\!bg-\\[\\#ff7a59\\] {\n background-color: #ff7a59 !important;\n }\n .\\!bg-\\[var\\(--b-tooltip-bg\\)\\] {\n background-color: var(--b-tooltip-bg) !important;\n }\n .bg-\\[\\#\\.\\.\\.\\] {\n background-color: #...;\n }\n .bg-\\[\\#0d1b2a\\] {\n background-color: #0d1b2a;\n }\n .bg-\\[\\#0001\\] {\n background-color: #0001;\n }\n .bg-\\[\\#2A9D90\\] {\n background-color: #2A9D90;\n }\n .bg-\\[\\#16a34a\\] {\n background-color: #16a34a;\n }\n .bg-\\[\\#22c55e\\] {\n background-color: #22c55e;\n }\n .bg-\\[\\#22c55e\\]\\/15 {\n background-color: color-mix(in oklab, #22c55e 15%, transparent);\n }\n .bg-\\[\\#1877F2\\] {\n background-color: #1877F2;\n }\n .bg-\\[\\#2563eb\\] {\n background-color: #2563eb;\n }\n .bg-\\[\\#18181b\\] {\n background-color: #18181b;\n }\n .bg-\\[\\#222831\\] {\n background-color: #222831;\n }\n .bg-\\[\\#DBE2EB\\] {\n background-color: #DBE2EB;\n }\n .bg-\\[\\#E0E6EE\\] {\n background-color: #E0E6EE;\n }\n .bg-\\[\\#F1F4F8\\] {\n background-color: #F1F4F8;\n }\n .bg-\\[\\#FF9900\\] {\n background-color: #FF9900;\n }\n .bg-\\[\\#dbeafe\\] {\n background-color: #dbeafe;\n }\n .bg-\\[\\#e2e6ea\\] {\n background-color: #e2e6ea;\n }\n .bg-\\[\\#e76d4e\\] {\n background-color: #e76d4e;\n }\n .bg-\\[\\#eaf1ff\\] {\n background-color: #eaf1ff;\n }\n .bg-\\[\\#eff6ff\\] {\n background-color: #eff6ff;\n }\n .bg-\\[\\#f0fdf4\\] {\n background-color: #f0fdf4;\n }\n .bg-\\[\\#f1f4f8\\] {\n background-color: #f1f4f8;\n }\n .bg-\\[\\#f1f5f9\\] {\n background-color: #f1f5f9;\n }\n .bg-\\[\\#f3e8ff\\] {\n background-color: #f3e8ff;\n }\n .bg-\\[\\#f4f4f5\\] {\n background-color: #f4f4f5;\n }\n .bg-\\[\\#f4f4f5\\]\\/60 {\n background-color: color-mix(in oklab, #f4f4f5 60%, transparent);\n }\n .bg-\\[\\#f5f6f8\\] {\n background-color: #f5f6f8;\n }\n .bg-\\[\\#f8f9fa\\] {\n background-color: #f8f9fa;\n }\n .bg-\\[\\#f8fafb\\] {\n background-color: #f8fafb;\n }\n .bg-\\[\\#f9fafb\\] {\n background-color: #f9fafb;\n }\n .bg-\\[\\#f59e0b\\] {\n background-color: #f59e0b;\n }\n .bg-\\[\\#fafafa\\] {\n background-color: #fafafa;\n }\n .bg-\\[\\#fef3c7\\] {\n background-color: #fef3c7;\n }\n .bg-\\[\\#fffa\\] {\n background-color: #fffa;\n }\n .bg-\\[\\#fffbeb\\] {\n background-color: #fffbeb;\n }\n .bg-\\[\\#ffffff\\] {\n background-color: #ffffff;\n }\n .bg-\\[color\\:var\\(--ob-bg\\)\\] {\n background-color: var(--ob-bg);\n }\n .bg-\\[rgb\\(243_244_246\\)\\]\\/90 {\n background-color: color-mix(in oklab, rgb(243 244 246) 90%, transparent);\n }\n .bg-\\[rgba\\(28\\,25\\,23\\,0\\.08\\)\\] {\n background-color: rgba(28,25,23,0.08);\n }\n .bg-\\[var\\(--b-orange-10\\)\\] {\n background-color: var(--b-orange-10);\n }\n .bg-\\[var\\(--b-tooltip-bg\\)\\] {\n background-color: var(--b-tooltip-bg);\n }\n .bg-\\[var\\(--bc-primary-button-background-color\\)\\] {\n background-color: var(--bc-primary-button-background-color);\n }\n .bg-\\[var\\(--bc-secondary-button-background-color\\)\\] {\n background-color: var(--bc-secondary-button-background-color);\n }\n .bg-accent {\n background-color: var(--color-accent);\n }\n .bg-accent\\/5 {\n background-color: color-mix(in srgb, #f4f4f5 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 5%, transparent);\n }\n }\n .bg-accent\\/10 {\n background-color: color-mix(in srgb, #f4f4f5 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 10%, transparent);\n }\n }\n .bg-accent\\/40 {\n background-color: color-mix(in srgb, #f4f4f5 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n .bg-accent\\/80 {\n background-color: color-mix(in srgb, #f4f4f5 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 80%, transparent);\n }\n }\n .bg-amber-50 {\n background-color: var(--color-amber-50);\n }\n .bg-amber-100 {\n background-color: var(--color-amber-100);\n }\n .bg-amber-500 {\n background-color: var(--color-amber-500);\n }\n .bg-amber-500\\/5 {\n background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-amber-500) 5%, transparent);\n }\n }\n .bg-amber-600 {\n background-color: var(--color-amber-600);\n }\n .bg-background {\n background-color: var(--color-background);\n }\n .bg-background\\/70 {\n background-color: color-mix(in srgb, #ffffff 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-background) 70%, transparent);\n }\n }\n .bg-background\\/95 {\n background-color: color-mix(in srgb, #ffffff 95%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-background) 95%, transparent);\n }\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-black\\/0 {\n background-color: color-mix(in srgb, #000 0%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 0%, transparent);\n }\n }\n .bg-black\\/10 {\n background-color: color-mix(in srgb, #000 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 10%, transparent);\n }\n }\n .bg-black\\/30 {\n background-color: color-mix(in srgb, #000 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 30%, transparent);\n }\n }\n .bg-black\\/40 {\n background-color: color-mix(in srgb, #000 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 40%, transparent);\n }\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-black\\/60 {\n background-color: color-mix(in srgb, #000 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 60%, transparent);\n }\n }\n .bg-black\\/70 {\n background-color: color-mix(in srgb, #000 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 70%, transparent);\n }\n }\n .bg-blue-10 {\n background-color: var(--color-blue-10);\n }\n .bg-blue-20 {\n background-color: var(--color-blue-20);\n }\n .bg-blue-30 {\n background-color: var(--color-blue-30);\n }\n .bg-blue-40 {\n background-color: var(--color-blue-40);\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-blue-50\\/30 {\n background-color: color-mix(in srgb, #3b82f6 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-50) 30%, transparent);\n }\n }\n .bg-blue-60 {\n background-color: var(--color-blue-60);\n }\n .bg-blue-70 {\n background-color: var(--color-blue-70);\n }\n .bg-blue-80 {\n background-color: var(--color-blue-80);\n }\n .bg-blue-90 {\n background-color: var(--color-blue-90);\n }\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n .bg-blue-200 {\n background-color: var(--color-blue-200);\n }\n .bg-blue-500 {\n background-color: var(--color-blue-500);\n }\n .bg-blue-600 {\n background-color: var(--color-blue-600);\n }\n .bg-border {\n background-color: var(--color-border);\n }\n .bg-card {\n background-color: var(--color-card);\n }\n .bg-card\\/70 {\n background-color: color-mix(in srgb, #ffffff 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-card) 70%, transparent);\n }\n }\n .bg-card\\/95 {\n background-color: color-mix(in srgb, #ffffff 95%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-card) 95%, transparent);\n }\n }\n .bg-current {\n background-color: currentcolor;\n }\n .bg-destructive {\n background-color: var(--color-destructive);\n }\n .bg-destructive\\/5 {\n background-color: color-mix(in srgb, #dc2626 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 5%, transparent);\n }\n }\n .bg-destructive\\/10 {\n background-color: color-mix(in srgb, #dc2626 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 10%, transparent);\n }\n }\n .bg-destructive\\/15 {\n background-color: color-mix(in srgb, #dc2626 15%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 15%, transparent);\n }\n }\n .bg-emerald-50 {\n background-color: var(--color-emerald-50);\n }\n .bg-emerald-500 {\n background-color: var(--color-emerald-500);\n }\n .bg-emerald-600 {\n background-color: var(--color-emerald-600);\n }\n .bg-fuchsia-500 {\n background-color: var(--color-fuchsia-500);\n }\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-gray-200 {\n background-color: var(--color-gray-200);\n }\n .bg-gray-300 {\n background-color: var(--color-gray-300);\n }\n .bg-gray-400 {\n background-color: var(--color-gray-400);\n }\n .bg-gray-500 {\n background-color: var(--color-gray-500);\n }\n .bg-gray-800 {\n background-color: var(--color-gray-800);\n }\n .bg-gray-900 {\n background-color: var(--color-gray-900);\n }\n .bg-gray-900\\/40 {\n background-color: color-mix(in srgb, oklch(21% 0.034 264.665) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-gray-900) 40%, transparent);\n }\n }\n .bg-gray-900\\/80 {\n background-color: color-mix(in srgb, oklch(21% 0.034 264.665) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-gray-900) 80%, transparent);\n }\n }\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n .bg-green-500 {\n background-color: var(--color-green-500);\n }\n .bg-green-600 {\n background-color: var(--color-green-600);\n }\n .bg-indigo-50 {\n background-color: var(--color-indigo-50);\n }\n .bg-indigo-50\\/70 {\n background-color: color-mix(in srgb, oklch(96.2% 0.018 272.314) 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-50) 70%, transparent);\n }\n }\n .bg-indigo-100 {\n background-color: var(--color-indigo-100);\n }\n .bg-indigo-500 {\n background-color: var(--color-indigo-500);\n }\n .bg-muted {\n background-color: var(--color-muted);\n }\n .bg-muted-foreground {\n background-color: var(--color-muted-foreground);\n }\n .bg-muted-foreground\\/40 {\n background-color: color-mix(in srgb, #74716e 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted-foreground) 40%, transparent);\n }\n }\n .bg-muted-foreground\\/70 {\n background-color: color-mix(in srgb, #74716e 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted-foreground) 70%, transparent);\n }\n }\n .bg-muted-foreground\\/90 {\n background-color: color-mix(in srgb, #74716e 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted-foreground) 90%, transparent);\n }\n }\n .bg-muted\\/20 {\n background-color: color-mix(in srgb, #f7f7f6 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 20%, transparent);\n }\n }\n .bg-muted\\/30 {\n background-color: color-mix(in srgb, #f7f7f6 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 30%, transparent);\n }\n }\n .bg-muted\\/40 {\n background-color: color-mix(in srgb, #f7f7f6 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 40%, transparent);\n }\n }\n .bg-muted\\/50 {\n background-color: color-mix(in srgb, #f7f7f6 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n .bg-muted\\/70 {\n background-color: color-mix(in srgb, #f7f7f6 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 70%, transparent);\n }\n }\n .bg-neutral-10 {\n background-color: var(--color-neutral-10);\n }\n .bg-neutral-20 {\n background-color: var(--color-neutral-20);\n }\n .bg-neutral-30 {\n background-color: var(--color-neutral-30);\n }\n .bg-neutral-40 {\n background-color: var(--color-neutral-40);\n }\n .bg-neutral-50 {\n background-color: var(--color-neutral-50);\n }\n .bg-neutral-60 {\n background-color: var(--color-neutral-60);\n }\n .bg-neutral-70 {\n background-color: var(--color-neutral-70);\n }\n .bg-neutral-80 {\n background-color: var(--color-neutral-80);\n }\n .bg-neutral-90 {\n background-color: var(--color-neutral-90);\n }\n .bg-neutral-100 {\n background-color: var(--color-neutral-100);\n }\n .bg-neutral-200 {\n background-color: var(--color-neutral-200);\n }\n .bg-neutral-800 {\n background-color: var(--color-neutral-800);\n }\n .bg-orange-10 {\n background-color: var(--color-orange-10);\n }\n .bg-orange-20 {\n background-color: var(--color-orange-20);\n }\n .bg-orange-30 {\n background-color: var(--color-orange-30);\n }\n .bg-orange-40 {\n background-color: var(--color-orange-40);\n }\n .bg-orange-50 {\n background-color: var(--color-orange-50);\n }\n .bg-orange-60 {\n background-color: var(--color-orange-60);\n }\n .bg-orange-70 {\n background-color: var(--color-orange-70);\n }\n .bg-orange-80 {\n background-color: var(--color-orange-80);\n }\n .bg-orange-90 {\n background-color: var(--color-orange-90);\n }\n .bg-orange-100 {\n background-color: var(--color-orange-100);\n }\n .bg-orange-400 {\n background-color: var(--color-orange-400);\n }\n .bg-orange-500 {\n background-color: var(--color-orange-500);\n }\n .bg-orange-600 {\n background-color: var(--color-orange-600);\n }\n .bg-pink-600 {\n background-color: var(--color-pink-600);\n }\n .bg-primary {\n background-color: var(--color-primary);\n }\n .bg-primary\\/5 {\n background-color: color-mix(in srgb, #18181b 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 5%, transparent);\n }\n }\n .bg-primary\\/10 {\n background-color: color-mix(in srgb, #18181b 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n .bg-purple-50 {\n background-color: var(--color-purple-50);\n }\n .bg-purple-100 {\n background-color: var(--color-purple-100);\n }\n .bg-purple-500 {\n background-color: var(--color-purple-500);\n }\n .bg-purple-600 {\n background-color: var(--color-purple-600);\n }\n .bg-red-50 {\n background-color: var(--color-red-50);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-red-500 {\n background-color: var(--color-red-500);\n }\n .bg-red-600 {\n background-color: var(--color-red-600);\n }\n .bg-rose-50 {\n background-color: var(--color-rose-50);\n }\n .bg-rose-500 {\n background-color: var(--color-rose-500);\n }\n .bg-secondary {\n background-color: var(--color-secondary);\n }\n .bg-sky-500 {\n background-color: var(--color-sky-500);\n }\n .bg-sky-600 {\n background-color: var(--color-sky-600);\n }\n .bg-slate-50 {\n background-color: var(--color-slate-50);\n }\n .bg-slate-50\\/60 {\n background-color: color-mix(in srgb, oklch(98.4% 0.003 247.858) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-slate-50) 60%, transparent);\n }\n }\n .bg-slate-50\\/70 {\n background-color: color-mix(in srgb, oklch(98.4% 0.003 247.858) 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-slate-50) 70%, transparent);\n }\n }\n .bg-slate-100 {\n background-color: var(--color-slate-100);\n }\n .bg-slate-200 {\n background-color: var(--color-slate-200);\n }\n .bg-slate-700 {\n background-color: var(--color-slate-700);\n }\n .bg-slate-900 {\n background-color: var(--color-slate-900);\n }\n .bg-slate-900\\/20 {\n background-color: color-mix(in srgb, oklch(20.8% 0.042 265.755) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-slate-900) 20%, transparent);\n }\n }\n .bg-teal-50 {\n background-color: var(--color-teal-50);\n }\n .bg-teal-500 {\n background-color: var(--color-teal-500);\n }\n .bg-teal-600 {\n background-color: var(--color-teal-600);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-violet-50 {\n background-color: var(--color-violet-50);\n }\n .bg-violet-100 {\n background-color: var(--color-violet-100);\n }\n .bg-violet-200 {\n background-color: var(--color-violet-200);\n }\n .bg-violet-500 {\n background-color: var(--color-violet-500);\n }\n .bg-violet-600 {\n background-color: var(--color-violet-600);\n }\n .bg-violet-700 {\n background-color: var(--color-violet-700);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-white\\/5 {\n background-color: color-mix(in srgb, #fff 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 5%, transparent);\n }\n }\n .bg-white\\/10 {\n background-color: color-mix(in srgb, #fff 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 10%, transparent);\n }\n }\n .bg-white\\/20 {\n background-color: color-mix(in srgb, #fff 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 20%, transparent);\n }\n }\n .bg-white\\/90 {\n background-color: color-mix(in srgb, #fff 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 90%, transparent);\n }\n }\n .bg-yellow-50 {\n background-color: var(--color-yellow-50);\n }\n .bg-yellow-100 {\n background-color: var(--color-yellow-100);\n }\n .bg-yellow-200 {\n background-color: var(--color-yellow-200);\n }\n .bg-yellow-500 {\n background-color: var(--color-yellow-500);\n }\n .bg-yellow-600 {\n background-color: var(--color-yellow-600);\n }\n .bg-zinc-200 {\n background-color: var(--color-zinc-200);\n }\n .bg-zinc-300 {\n background-color: var(--color-zinc-300);\n }\n .bg-zinc-900 {\n background-color: var(--color-zinc-900);\n }\n .bg-linear-to-r {\n --tw-gradient-position: to right;\n @supports (background-image: linear-gradient(in lab, red, red)) {\n --tw-gradient-position: to right in oklab;\n }\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-b {\n --tw-gradient-position: to bottom in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-br {\n --tw-gradient-position: to bottom right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-l {\n --tw-gradient-position: to left in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-r {\n --tw-gradient-position: to right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-t {\n --tw-gradient-position: to top in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-\\[linear-gradient\\(90deg\\,\\#FF0000\\,\\#FFFF00\\,\\#00FF00\\,\\#00FFFF\\,\\#0000FF\\,\\#FF00FF\\,\\#FF0000\\)\\] {\n background-image: linear-gradient(90deg,#FF0000,#FFFF00,#00FF00,#00FFFF,#0000FF,#FF00FF,#FF0000);\n }\n .bg-\\[linear-gradient\\(135deg\\,\\#0d1b2a\\,\\#1a3050\\)\\] {\n background-image: linear-gradient(135deg,#0d1b2a,#1a3050);\n }\n .bg-\\[linear-gradient\\(135deg\\,\\#0d1b2a_0\\%\\,\\#1a2e4a_100\\%\\)\\] {\n background-image: linear-gradient(135deg,#0d1b2a 0%,#1a2e4a 100%);\n }\n .bg-\\[linear-gradient\\(160deg\\,\\#07111f_0\\%\\,\\#0c1e3a_55\\%\\,\\#060e1a_100\\%\\)\\] {\n background-image: linear-gradient(160deg,#07111f 0%,#0c1e3a 55%,#060e1a 100%);\n }\n .bg-\\[linear-gradient\\(160deg\\,\\#07111f_0\\%\\,\\#0d2040_60\\%\\,\\#060e1a_100\\%\\)\\] {\n background-image: linear-gradient(160deg,#07111f 0%,#0d2040 60%,#060e1a 100%);\n }\n .bg-\\[radial-gradient\\(circle\\,\\#cbd5e1_1px\\,transparent_1px\\)\\] {\n background-image: radial-gradient(circle,#cbd5e1 1px,transparent 1px);\n }\n .bg-\\[repeating-linear-gradient\\(-45deg\\,var\\(--card\\)\\,var\\(--card\\)_5px\\,var\\(--card2\\)_5px\\,var\\(--card2\\)_10px\\)\\] {\n background-image: repeating-linear-gradient(-45deg,var(--card),var(--card) 5px,var(--card2) 5px,var(--card2) 10px);\n }\n .bg-\\[repeating-linear-gradient\\(0deg\\,var\\(--muted\\)_0_3px\\,transparent_3px_7px\\)\\] {\n background-image: repeating-linear-gradient(0deg,var(--muted) 0 3px,transparent 3px 7px);\n }\n .bg-none {\n background-image: none;\n }\n .from-\\[\\#2B5876\\] {\n --tw-gradient-from: #2B5876;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-\\[\\#a78bfa\\] {\n --tw-gradient-from: #a78bfa;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-\\[\\#c084fc\\] {\n --tw-gradient-from: #c084fc;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-\\[\\#e76d4e\\] {\n --tw-gradient-from: #e76d4e;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-\\[\\#f5fdf9\\] {\n --tw-gradient-from: #f5fdf9;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-\\[\\#fdba74\\] {\n --tw-gradient-from: #fdba74;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-blue-50 {\n --tw-gradient-from: var(--color-blue-50);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-cyan-500 {\n --tw-gradient-from: var(--color-cyan-500);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-emerald-50 {\n --tw-gradient-from: var(--color-emerald-50);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-slate-950 {\n --tw-gradient-from: var(--color-slate-950);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-teal-400 {\n --tw-gradient-from: var(--color-teal-400);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-transparent {\n --tw-gradient-from: transparent;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-white {\n --tw-gradient-from: var(--color-white);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-white\\/40 {\n --tw-gradient-from: color-mix(in srgb, #fff 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--color-white) 40%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .via-cyan-950 {\n --tw-gradient-via: var(--color-cyan-950);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-white {\n --tw-gradient-via: var(--color-white);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .to-\\[\\#4E4376\\] {\n --tw-gradient-to: #4E4376;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-\\[\\#818cf8\\] {\n --tw-gradient-to: #818cf8;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-\\[\\#6366f1\\] {\n --tw-gradient-to: #6366f1;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-\\[\\#f6c344\\] {\n --tw-gradient-to: #f6c344;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-\\[\\#f472b6\\] {\n --tw-gradient-to: #f472b6;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-black\\/50 {\n --tw-gradient-to: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-blue-500 {\n --tw-gradient-to: var(--color-blue-500);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-50 {\n --tw-gradient-to: var(--color-indigo-50);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-50\\/40 {\n --tw-gradient-to: color-mix(in srgb, oklch(96.2% 0.018 272.314) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--color-indigo-50) 40%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-slate-950 {\n --tw-gradient-to: var(--color-slate-950);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-transparent {\n --tw-gradient-to: transparent;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-white {\n --tw-gradient-to: var(--color-white);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-yellow-500\\/40 {\n --tw-gradient-to: color-mix(in srgb, oklch(79.5% 0.184 86.047) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--color-yellow-500) 40%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .bg-\\[length\\:24px_24px\\] {\n background-size: 24px 24px;\n }\n .bg-cover {\n background-size: cover;\n }\n .bg-clip-text {\n background-clip: text;\n }\n .bg-center {\n background-position: center;\n }\n .bg-no-repeat {\n background-repeat: no-repeat;\n }\n .fill-\\[var\\(--b-tooltip-bg\\)\\] {\n fill: var(--b-tooltip-bg);\n }\n .fill-amber-400 {\n fill: var(--color-amber-400);\n }\n .fill-blue-500 {\n fill: var(--color-blue-500);\n }\n .fill-card {\n fill: var(--color-card);\n }\n .fill-current {\n fill: currentcolor;\n }\n .fill-green-500 {\n fill: var(--color-green-500);\n }\n .fill-primary {\n fill: var(--color-primary);\n }\n .fill-red-500 {\n fill: var(--color-red-500);\n }\n .fill-slate-500 {\n fill: var(--color-slate-500);\n }\n .fill-slate-900 {\n fill: var(--color-slate-900);\n }\n .stroke-card {\n stroke: var(--color-card);\n }\n .stroke-slate-500 {\n stroke: var(--color-slate-500);\n }\n .object-contain {\n object-fit: contain;\n }\n .object-cover {\n object-fit: cover;\n }\n .object-center {\n object-position: center;\n }\n .\\!p-0 {\n padding: calc(var(--spacing) * 0) !important;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-0\\.5 {\n padding: calc(var(--spacing) * 0.5);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-3\\.5 {\n padding: calc(var(--spacing) * 3.5);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-7 {\n padding: calc(var(--spacing) * 7);\n }\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n .p-9 {\n padding: calc(var(--spacing) * 9);\n }\n .p-10 {\n padding: calc(var(--spacing) * 10);\n }\n .p-12 {\n padding: calc(var(--spacing) * 12);\n }\n .p-16 {\n padding: calc(var(--spacing) * 16);\n }\n .p-1234 {\n padding: calc(var(--spacing) * 1234);\n }\n .p-4321 {\n padding: calc(var(--spacing) * 4321);\n }\n .p-9999 {\n padding: calc(var(--spacing) * 9999);\n }\n .p-\\[1\\.5px\\] {\n padding: 1.5px;\n }\n .p-\\[2px\\] {\n padding: 2px;\n }\n .p-\\[3px\\] {\n padding: 3px;\n }\n .p-\\[4px\\] {\n padding: 4px;\n }\n .p-\\[6px\\] {\n padding: 6px;\n }\n .p-\\[8px\\] {\n padding: 8px;\n }\n .p-\\[8px_10px\\] {\n padding: 8px 10px;\n }\n .p-\\[9\\.7px\\] {\n padding: 9.7px;\n }\n .p-\\[9px\\] {\n padding: 9px;\n }\n .p-\\[9px_10px\\] {\n padding: 9px 10px;\n }\n .p-\\[10px\\] {\n padding: 10px;\n }\n .p-\\[12px\\] {\n padding: 12px;\n }\n .p-\\[14px\\] {\n padding: 14px;\n }\n .p-\\[16px\\] {\n padding: 16px;\n }\n .p-\\[17px\\] {\n padding: 17px;\n }\n .p-\\[18px\\] {\n padding: 18px;\n }\n .p-\\[20px\\] {\n padding: 20px;\n }\n .p-\\[22px\\] {\n padding: 22px;\n }\n .p-\\[24px\\] {\n padding: 24px;\n }\n .p-\\[26px\\] {\n padding: 26px;\n }\n .px-0 {\n padding-inline: calc(var(--spacing) * 0);\n }\n .px-0\\.5 {\n padding-inline: calc(var(--spacing) * 0.5);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-3\\.5 {\n padding-inline: calc(var(--spacing) * 3.5);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-5 {\n padding-inline: calc(var(--spacing) * 5);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .px-7 {\n padding-inline: calc(var(--spacing) * 7);\n }\n .px-8 {\n padding-inline: calc(var(--spacing) * 8);\n }\n .px-9 {\n padding-inline: calc(var(--spacing) * 9);\n }\n .px-10 {\n padding-inline: calc(var(--spacing) * 10);\n }\n .px-11 {\n padding-inline: calc(var(--spacing) * 11);\n }\n .px-123 {\n padding-inline: calc(var(--spacing) * 123);\n }\n .px-\\[2px\\] {\n padding-inline: 2px;\n }\n .px-\\[4px\\] {\n padding-inline: 4px;\n }\n .px-\\[5px\\] {\n padding-inline: 5px;\n }\n .px-\\[6px\\] {\n padding-inline: 6px;\n }\n .px-\\[7px\\] {\n padding-inline: 7px;\n }\n .px-\\[8px\\] {\n padding-inline: 8px;\n }\n .px-\\[9px\\] {\n padding-inline: 9px;\n }\n .px-\\[10px\\] {\n padding-inline: 10px;\n }\n .px-\\[11px\\] {\n padding-inline: 11px;\n }\n .px-\\[12px\\] {\n padding-inline: 12px;\n }\n .px-\\[13px\\] {\n padding-inline: 13px;\n }\n .px-\\[14px\\] {\n padding-inline: 14px;\n }\n .px-\\[15px\\] {\n padding-inline: 15px;\n }\n .px-\\[16px\\] {\n padding-inline: 16px;\n }\n .px-\\[17px\\] {\n padding-inline: 17px;\n }\n .px-\\[18px\\] {\n padding-inline: 18px;\n }\n .px-\\[20px\\] {\n padding-inline: 20px;\n }\n .px-\\[22px\\] {\n padding-inline: 22px;\n }\n .px-\\[26px\\] {\n padding-inline: 26px;\n }\n .px-\\[30px\\] {\n padding-inline: 30px;\n }\n .px-\\[40px\\] {\n padding-inline: 40px;\n }\n .py-0 {\n padding-block: calc(var(--spacing) * 0);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-3\\.5 {\n padding-block: calc(var(--spacing) * 3.5);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-5 {\n padding-block: calc(var(--spacing) * 5);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .py-14 {\n padding-block: calc(var(--spacing) * 14);\n }\n .py-16 {\n padding-block: calc(var(--spacing) * 16);\n }\n .py-20 {\n padding-block: calc(var(--spacing) * 20);\n }\n .py-24 {\n padding-block: calc(var(--spacing) * 24);\n }\n .py-\\[1\\.5px\\] {\n padding-block: 1.5px;\n }\n .py-\\[1px\\] {\n padding-block: 1px;\n }\n .py-\\[2\\.5px\\] {\n padding-block: 2.5px;\n }\n .py-\\[2px\\] {\n padding-block: 2px;\n }\n .py-\\[3px\\] {\n padding-block: 3px;\n }\n .py-\\[4\\.5px\\] {\n padding-block: 4.5px;\n }\n .py-\\[4px\\] {\n padding-block: 4px;\n }\n .py-\\[5px\\] {\n padding-block: 5px;\n }\n .py-\\[6\\.5px\\] {\n padding-block: 6.5px;\n }\n .py-\\[6px\\] {\n padding-block: 6px;\n }\n .py-\\[7px\\] {\n padding-block: 7px;\n }\n .py-\\[8px\\] {\n padding-block: 8px;\n }\n .py-\\[9px\\] {\n padding-block: 9px;\n }\n .py-\\[10\\.5px\\] {\n padding-block: 10.5px;\n }\n .py-\\[10px\\] {\n padding-block: 10px;\n }\n .py-\\[11px\\] {\n padding-block: 11px;\n }\n .py-\\[12px\\] {\n padding-block: 12px;\n }\n .py-\\[13px\\] {\n padding-block: 13px;\n }\n .py-\\[14px\\] {\n padding-block: 14px;\n }\n .py-\\[15px\\] {\n padding-block: 15px;\n }\n .py-\\[16px\\] {\n padding-block: 16px;\n }\n .py-\\[18px\\] {\n padding-block: 18px;\n }\n .py-\\[20px\\] {\n padding-block: 20px;\n }\n .py-\\[24px\\] {\n padding-block: 24px;\n }\n .py-\\[28px\\] {\n padding-block: 28px;\n }\n .py-\\[30px\\] {\n padding-block: 30px;\n }\n .py-\\[32px\\] {\n padding-block: 32px;\n }\n .py-\\[40px\\] {\n padding-block: 40px;\n }\n .py-\\[46px\\] {\n padding-block: 46px;\n }\n .py-\\[48px\\] {\n padding-block: 48px;\n }\n .py-\\[64px\\] {\n padding-block: 64px;\n }\n .py-\\[80px\\] {\n padding-block: 80px;\n }\n .py-px {\n padding-block: 1px;\n }\n .ps-0 {\n padding-inline-start: calc(var(--spacing) * 0);\n }\n .pt-0 {\n padding-top: calc(var(--spacing) * 0);\n }\n .pt-0\\.5 {\n padding-top: calc(var(--spacing) * 0.5);\n }\n .pt-1 {\n padding-top: calc(var(--spacing) * 1);\n }\n .pt-1\\.5 {\n padding-top: calc(var(--spacing) * 1.5);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-2\\.5 {\n padding-top: calc(var(--spacing) * 2.5);\n }\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n .pt-3\\.5 {\n padding-top: calc(var(--spacing) * 3.5);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-5 {\n padding-top: calc(var(--spacing) * 5);\n }\n .pt-6 {\n padding-top: calc(var(--spacing) * 6);\n }\n .pt-7 {\n padding-top: calc(var(--spacing) * 7);\n }\n .pt-8 {\n padding-top: calc(var(--spacing) * 8);\n }\n .pt-10 {\n padding-top: calc(var(--spacing) * 10);\n }\n .pt-11 {\n padding-top: calc(var(--spacing) * 11);\n }\n .pt-12 {\n padding-top: calc(var(--spacing) * 12);\n }\n .pt-14 {\n padding-top: calc(var(--spacing) * 14);\n }\n .pt-16 {\n padding-top: calc(var(--spacing) * 16);\n }\n .pt-24 {\n padding-top: calc(var(--spacing) * 24);\n }\n .pt-\\[2px\\] {\n padding-top: 2px;\n }\n .pt-\\[3px\\] {\n padding-top: 3px;\n }\n .pt-\\[4px\\] {\n padding-top: 4px;\n }\n .pt-\\[5px\\] {\n padding-top: 5px;\n }\n .pt-\\[6px\\] {\n padding-top: 6px;\n }\n .pt-\\[8px\\] {\n padding-top: 8px;\n }\n .pt-\\[10px\\] {\n padding-top: 10px;\n }\n .pt-\\[11px\\] {\n padding-top: 11px;\n }\n .pt-\\[14px\\] {\n padding-top: 14px;\n }\n .pt-\\[18px\\] {\n padding-top: 18px;\n }\n .pt-\\[22px\\] {\n padding-top: 22px;\n }\n .pt-\\[26px\\] {\n padding-top: 26px;\n }\n .pr-0 {\n padding-right: calc(var(--spacing) * 0);\n }\n .pr-1 {\n padding-right: calc(var(--spacing) * 1);\n }\n .pr-1\\.5 {\n padding-right: calc(var(--spacing) * 1.5);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-3 {\n padding-right: calc(var(--spacing) * 3);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-5 {\n padding-right: calc(var(--spacing) * 5);\n }\n .pr-6 {\n padding-right: calc(var(--spacing) * 6);\n }\n .pr-8 {\n padding-right: calc(var(--spacing) * 8);\n }\n .pr-9 {\n padding-right: calc(var(--spacing) * 9);\n }\n .pr-10 {\n padding-right: calc(var(--spacing) * 10);\n }\n .pr-\\[6px\\] {\n padding-right: 6px;\n }\n .pr-\\[8px\\] {\n padding-right: 8px;\n }\n .pr-\\[10px\\] {\n padding-right: 10px;\n }\n .pr-\\[12px\\] {\n padding-right: 12px;\n }\n .pr-\\[14px\\] {\n padding-right: 14px;\n }\n .pr-\\[16px\\] {\n padding-right: 16px;\n }\n .pr-\\[17px\\] {\n padding-right: 17px;\n }\n .pr-\\[40px\\] {\n padding-right: 40px;\n }\n .pb-0 {\n padding-bottom: calc(var(--spacing) * 0);\n }\n .pb-0\\.5 {\n padding-bottom: calc(var(--spacing) * 0.5);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-1\\.5 {\n padding-bottom: calc(var(--spacing) * 1.5);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-2\\.5 {\n padding-bottom: calc(var(--spacing) * 2.5);\n }\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n .pb-3\\.5 {\n padding-bottom: calc(var(--spacing) * 3.5);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-5 {\n padding-bottom: calc(var(--spacing) * 5);\n }\n .pb-6 {\n padding-bottom: calc(var(--spacing) * 6);\n }\n .pb-7 {\n padding-bottom: calc(var(--spacing) * 7);\n }\n .pb-8 {\n padding-bottom: calc(var(--spacing) * 8);\n }\n .pb-\\[3px\\] {\n padding-bottom: 3px;\n }\n .pb-\\[4px\\] {\n padding-bottom: 4px;\n }\n .pb-\\[6px\\] {\n padding-bottom: 6px;\n }\n .pb-\\[8px\\] {\n padding-bottom: 8px;\n }\n .pb-\\[10px\\] {\n padding-bottom: 10px;\n }\n .pb-\\[11px\\] {\n padding-bottom: 11px;\n }\n .pb-\\[12px\\] {\n padding-bottom: 12px;\n }\n .pb-\\[13px\\] {\n padding-bottom: 13px;\n }\n .pb-\\[14px\\] {\n padding-bottom: 14px;\n }\n .pb-\\[16px\\] {\n padding-bottom: 16px;\n }\n .pb-\\[18px\\] {\n padding-bottom: 18px;\n }\n .pb-\\[22px\\] {\n padding-bottom: 22px;\n }\n .pb-\\[24px\\] {\n padding-bottom: 24px;\n }\n .pb-\\[30px\\] {\n padding-bottom: 30px;\n }\n .pb-\\[40px\\] {\n padding-bottom: 40px;\n }\n .pl-0 {\n padding-left: calc(var(--spacing) * 0);\n }\n .pl-0\\.5 {\n padding-left: calc(var(--spacing) * 0.5);\n }\n .pl-1 {\n padding-left: calc(var(--spacing) * 1);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n .pl-7 {\n padding-left: calc(var(--spacing) * 7);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .pl-9 {\n padding-left: calc(var(--spacing) * 9);\n }\n .pl-10 {\n padding-left: calc(var(--spacing) * 10);\n }\n .pl-11 {\n padding-left: calc(var(--spacing) * 11);\n }\n .pl-14 {\n padding-left: calc(var(--spacing) * 14);\n }\n .pl-\\[2px\\] {\n padding-left: 2px;\n }\n .pl-\\[4px\\] {\n padding-left: 4px;\n }\n .pl-\\[6px\\] {\n padding-left: 6px;\n }\n .pl-\\[9px\\] {\n padding-left: 9px;\n }\n .pl-\\[10px\\] {\n padding-left: 10px;\n }\n .pl-\\[11px\\] {\n padding-left: 11px;\n }\n .pl-\\[16px\\] {\n padding-left: 16px;\n }\n .pl-\\[17px\\] {\n padding-left: 17px;\n }\n .pl-\\[20px\\] {\n padding-left: 20px;\n }\n .pl-\\[28px\\] {\n padding-left: 28px;\n }\n .pl-\\[32px\\] {\n padding-left: 32px;\n }\n .pl-\\[42px\\] {\n padding-left: 42px;\n }\n .pl-\\[68px\\] {\n padding-left: 68px;\n }\n .pl-\\[84px\\] {\n padding-left: 84px;\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .text-start {\n text-align: start;\n }\n .align-baseline {\n vertical-align: baseline;\n }\n .align-middle {\n vertical-align: middle;\n }\n .align-top {\n vertical-align: top;\n }\n .font-\\[inherit\\] {\n font-family: inherit;\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .font-sans {\n font-family: var(--font-sans);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n .text-5xl {\n font-size: var(--text-5xl);\n line-height: var(--tw-leading, var(--text-5xl--line-height));\n }\n .text-6xl {\n font-size: var(--text-6xl);\n line-height: var(--tw-leading, var(--text-6xl--line-height));\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-sm\\/6 {\n font-size: var(--text-sm);\n line-height: calc(var(--spacing) * 6);\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xl\\/7 {\n font-size: var(--text-xl);\n line-height: calc(var(--spacing) * 7);\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-xs\\/5 {\n font-size: var(--text-xs);\n line-height: calc(var(--spacing) * 5);\n }\n .text-\\[0\\.7rem\\] {\n font-size: 0.7rem;\n }\n .text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n }\n .text-\\[0\\.56rem\\] {\n font-size: 0.56rem;\n }\n .text-\\[0\\.85em\\] {\n font-size: 0.85em;\n }\n .text-\\[8\\.5px\\] {\n font-size: 8.5px;\n }\n .text-\\[8px\\] {\n font-size: 8px;\n }\n .text-\\[9\\.5px\\] {\n font-size: 9.5px;\n }\n .text-\\[9px\\] {\n font-size: 9px;\n }\n .text-\\[10\\.5px\\] {\n font-size: 10.5px;\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .text-\\[11\\.5px\\] {\n font-size: 11.5px;\n }\n .text-\\[11px\\] {\n font-size: 11px;\n }\n .text-\\[12\\.5px\\] {\n font-size: 12.5px;\n }\n .text-\\[12px\\] {\n font-size: 12px;\n }\n .text-\\[13\\.5px\\] {\n font-size: 13.5px;\n }\n .text-\\[13px\\] {\n font-size: 13px;\n }\n .text-\\[14px\\] {\n font-size: 14px;\n }\n .text-\\[15px\\] {\n font-size: 15px;\n }\n .text-\\[16px\\] {\n font-size: 16px;\n }\n .text-\\[17px\\] {\n font-size: 17px;\n }\n .text-\\[18px\\] {\n font-size: 18px;\n }\n .text-\\[20px\\] {\n font-size: 20px;\n }\n .text-\\[21px\\] {\n font-size: 21px;\n }\n .text-\\[22px\\] {\n font-size: 22px;\n }\n .text-\\[23px\\] {\n font-size: 23px;\n }\n .text-\\[24px\\] {\n font-size: 24px;\n }\n .text-\\[26px\\] {\n font-size: 26px;\n }\n .text-\\[28px\\] {\n font-size: 28px;\n }\n .text-\\[30px\\] {\n font-size: 30px;\n }\n .text-\\[32px\\] {\n font-size: 32px;\n }\n .text-\\[48px\\] {\n font-size: 48px;\n }\n .leading-1 {\n --tw-leading: calc(var(--spacing) * 1);\n line-height: calc(var(--spacing) * 1);\n }\n .leading-4 {\n --tw-leading: calc(var(--spacing) * 4);\n line-height: calc(var(--spacing) * 4);\n }\n .leading-5 {\n --tw-leading: calc(var(--spacing) * 5);\n line-height: calc(var(--spacing) * 5);\n }\n .leading-6 {\n --tw-leading: calc(var(--spacing) * 6);\n line-height: calc(var(--spacing) * 6);\n }\n .leading-7 {\n --tw-leading: calc(var(--spacing) * 7);\n line-height: calc(var(--spacing) * 7);\n }\n .leading-8 {\n --tw-leading: calc(var(--spacing) * 8);\n line-height: calc(var(--spacing) * 8);\n }\n .leading-9 {\n --tw-leading: calc(var(--spacing) * 9);\n line-height: calc(var(--spacing) * 9);\n }\n .leading-\\[1\\.1\\] {\n --tw-leading: 1.1;\n line-height: 1.1;\n }\n .leading-\\[1\\.2\\] {\n --tw-leading: 1.2;\n line-height: 1.2;\n }\n .leading-\\[1\\.3\\] {\n --tw-leading: 1.3;\n line-height: 1.3;\n }\n .leading-\\[1\\.5\\] {\n --tw-leading: 1.5;\n line-height: 1.5;\n }\n .leading-\\[1\\.6\\] {\n --tw-leading: 1.6;\n line-height: 1.6;\n }\n .leading-\\[1\\.7\\] {\n --tw-leading: 1.7;\n line-height: 1.7;\n }\n .leading-\\[1\\.08\\] {\n --tw-leading: 1.08;\n line-height: 1.08;\n }\n .leading-\\[1\\.12\\] {\n --tw-leading: 1.12;\n line-height: 1.12;\n }\n .leading-\\[1\\.15\\] {\n --tw-leading: 1.15;\n line-height: 1.15;\n }\n .leading-\\[1\\.25\\] {\n --tw-leading: 1.25;\n line-height: 1.25;\n }\n .leading-\\[1\\.35\\] {\n --tw-leading: 1.35;\n line-height: 1.35;\n }\n .leading-\\[1\\.55\\] {\n --tw-leading: 1.55;\n line-height: 1.55;\n }\n .leading-\\[1\\.65\\] {\n --tw-leading: 1.65;\n line-height: 1.65;\n }\n .leading-\\[1\\.75\\] {\n --tw-leading: 1.75;\n line-height: 1.75;\n }\n .leading-\\[1\\.95\\] {\n --tw-leading: 1.95;\n line-height: 1.95;\n }\n .leading-\\[1\\] {\n --tw-leading: 1;\n line-height: 1;\n }\n .leading-\\[18px\\] {\n --tw-leading: 18px;\n line-height: 18px;\n }\n .leading-\\[21px\\] {\n --tw-leading: 21px;\n line-height: 21px;\n }\n .leading-\\[24px\\] {\n --tw-leading: 24px;\n line-height: 24px;\n }\n .leading-\\[32px\\] {\n --tw-leading: 32px;\n line-height: 32px;\n }\n .leading-\\[36px\\] {\n --tw-leading: 36px;\n line-height: 36px;\n }\n .leading-\\[40px\\] {\n --tw-leading: 40px;\n line-height: 40px;\n }\n .leading-\\[56px\\] {\n --tw-leading: 56px;\n line-height: 56px;\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .leading-normal {\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-snug {\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n .font-\\[400\\] {\n --tw-font-weight: 400;\n font-weight: 400;\n }\n .font-\\[450\\] {\n --tw-font-weight: 450;\n font-weight: 450;\n }\n .font-\\[500\\] {\n --tw-font-weight: 500;\n font-weight: 500;\n }\n .font-black {\n --tw-font-weight: var(--font-weight-black);\n font-weight: var(--font-weight-black);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-extrabold {\n --tw-font-weight: var(--font-weight-extrabold);\n font-weight: var(--font-weight-extrabold);\n }\n .font-light {\n --tw-font-weight: var(--font-weight-light);\n font-weight: var(--font-weight-light);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-\\[-0\\.01em\\] {\n --tw-tracking: -0.01em;\n letter-spacing: -0.01em;\n }\n .tracking-\\[-0\\.02em\\] {\n --tw-tracking: -0.02em;\n letter-spacing: -0.02em;\n }\n .tracking-\\[-0\\.2px\\] {\n --tw-tracking: -0.2px;\n letter-spacing: -0.2px;\n }\n .tracking-\\[-0\\.5px\\] {\n --tw-tracking: -0.5px;\n letter-spacing: -0.5px;\n }\n .tracking-\\[-0\\.6px\\] {\n --tw-tracking: -0.6px;\n letter-spacing: -0.6px;\n }\n .tracking-\\[-0\\.015em\\] {\n --tw-tracking: -0.015em;\n letter-spacing: -0.015em;\n }\n .tracking-\\[-0\\.028em\\] {\n --tw-tracking: -0.028em;\n letter-spacing: -0.028em;\n }\n .tracking-\\[0\\.01em\\] {\n --tw-tracking: 0.01em;\n letter-spacing: 0.01em;\n }\n .tracking-\\[0\\.1em\\] {\n --tw-tracking: 0.1em;\n letter-spacing: 0.1em;\n }\n .tracking-\\[0\\.02em\\] {\n --tw-tracking: 0.02em;\n letter-spacing: 0.02em;\n }\n .tracking-\\[0\\.03em\\] {\n --tw-tracking: 0.03em;\n letter-spacing: 0.03em;\n }\n .tracking-\\[0\\.04em\\] {\n --tw-tracking: 0.04em;\n letter-spacing: 0.04em;\n }\n .tracking-\\[0\\.4px\\] {\n --tw-tracking: 0.4px;\n letter-spacing: 0.4px;\n }\n .tracking-\\[0\\.05em\\] {\n --tw-tracking: 0.05em;\n letter-spacing: 0.05em;\n }\n .tracking-\\[0\\.06em\\] {\n --tw-tracking: 0.06em;\n letter-spacing: 0.06em;\n }\n .tracking-\\[0\\.6px\\] {\n --tw-tracking: 0.6px;\n letter-spacing: 0.6px;\n }\n .tracking-\\[0\\.07em\\] {\n --tw-tracking: 0.07em;\n letter-spacing: 0.07em;\n }\n .tracking-\\[0\\.08em\\] {\n --tw-tracking: 0.08em;\n letter-spacing: 0.08em;\n }\n .tracking-\\[0\\.09em\\] {\n --tw-tracking: 0.09em;\n letter-spacing: 0.09em;\n }\n .tracking-\\[0\\.10em\\] {\n --tw-tracking: 0.10em;\n letter-spacing: 0.10em;\n }\n .tracking-\\[0\\.11em\\] {\n --tw-tracking: 0.11em;\n letter-spacing: 0.11em;\n }\n .tracking-normal {\n --tw-tracking: var(--tracking-normal);\n letter-spacing: var(--tracking-normal);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .\\[text-wrap\\:wrap\\] {\n text-wrap: wrap;\n }\n .text-balance {\n text-wrap: balance;\n }\n .text-pretty {\n text-wrap: pretty;\n }\n .text-wrap {\n text-wrap: wrap;\n }\n .break-words {\n overflow-wrap: break-word;\n }\n .break-all {\n word-break: break-all;\n }\n .text-ellipsis {\n text-overflow: ellipsis;\n }\n .\\!whitespace-normal {\n white-space: normal !important;\n }\n .whitespace-normal {\n white-space: normal;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .whitespace-pre {\n white-space: pre;\n }\n .whitespace-pre-line {\n white-space: pre-line;\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .\\!text-white {\n color: var(--color-white) !important;\n }\n .text-\\[\\#0d1b2a\\] {\n color: #0d1b2a;\n }\n .text-\\[\\#0f766e\\] {\n color: #0f766e;\n }\n .text-\\[\\#1F1F1F\\] {\n color: #1F1F1F;\n }\n .text-\\[\\#1F9D55\\] {\n color: #1F9D55;\n }\n .text-\\[\\#1FAE9F\\] {\n color: #1FAE9F;\n }\n .text-\\[\\#1d4ed8\\] {\n color: #1d4ed8;\n }\n .text-\\[\\#3b82f6\\] {\n color: #3b82f6;\n }\n .text-\\[\\#4E647F\\] {\n color: #4E647F;\n }\n .text-\\[\\#4b5563\\] {\n color: #4b5563;\n }\n .text-\\[\\#6b7280\\] {\n color: #6b7280;\n }\n .text-\\[\\#7e22ce\\] {\n color: #7e22ce;\n }\n .text-\\[\\#9ca3af\\] {\n color: #9ca3af;\n }\n .text-\\[\\#16a34a\\] {\n color: #16a34a;\n }\n .text-\\[\\#22c55e\\] {\n color: #22c55e;\n }\n .text-\\[\\#94a3b8\\] {\n color: #94a3b8;\n }\n .text-\\[\\#666\\] {\n color: #666;\n }\n .text-\\[\\#2563eb\\] {\n color: #2563eb;\n }\n .text-\\[\\#3763f4\\] {\n color: #3763f4;\n }\n .text-\\[\\#8799AF\\] {\n color: #8799AF;\n }\n .text-\\[\\#09090b\\] {\n color: #09090b;\n }\n .text-\\[\\#18181b\\] {\n color: #18181b;\n }\n .text-\\[\\#64748b\\] {\n color: #64748b;\n }\n .text-\\[\\#71717A\\] {\n color: #71717A;\n }\n .text-\\[\\#71717a\\] {\n color: #71717a;\n }\n .text-\\[\\#92400e\\] {\n color: #92400e;\n }\n .text-\\[\\#111111\\] {\n color: #111111;\n }\n .text-\\[\\#161823\\] {\n color: #161823;\n }\n .text-\\[\\#166534\\] {\n color: #166534;\n }\n .text-\\[\\#222831\\] {\n color: #222831;\n }\n .text-\\[\\#334155\\] {\n color: #334155;\n }\n .text-\\[\\#374151\\] {\n color: #374151;\n }\n .text-\\[\\#475569\\] {\n color: #475569;\n }\n .text-\\[\\#979797\\] {\n color: #979797;\n }\n .text-\\[\\#B7791F\\] {\n color: #B7791F;\n }\n .text-\\[\\#D64545\\] {\n color: #D64545;\n }\n .text-\\[\\#d32f2f\\] {\n color: #d32f2f;\n }\n .text-\\[\\#e2e8f0\\] {\n color: #e2e8f0;\n }\n .text-\\[\\#ef4444\\] {\n color: #ef4444;\n }\n .text-\\[color\\:var\\(--dn-fg\\)\\] {\n color: var(--dn-fg);\n }\n .text-\\[color\\:var\\(--ob-fg\\)\\] {\n color: var(--ob-fg);\n }\n .text-\\[rgba\\(17\\,17\\,17\\,0\\.32\\)\\] {\n color: rgba(17,17,17,0.32);\n }\n .text-\\[var\\(--bc-error-color\\,\\#DC2626\\)\\] {\n color: var(--bc-error-color,#DC2626);\n }\n .text-\\[var\\(--bc-link-color\\)\\] {\n color: var(--bc-link-color);\n }\n .text-\\[var\\(--bc-link-color\\,\\#6D28D9\\)\\] {\n color: var(--bc-link-color,#6D28D9);\n }\n .text-\\[var\\(--bc-primary-button-text-color\\)\\] {\n color: var(--bc-primary-button-text-color);\n }\n .text-\\[var\\(--bc-secondary-button-text-color\\)\\] {\n color: var(--bc-secondary-button-text-color);\n }\n .text-\\[var\\(--bc-text-color\\)\\] {\n color: var(--bc-text-color);\n }\n .text-\\[var\\(--bc-text-color\\,\\#18181B\\)\\] {\n color: var(--bc-text-color,#18181B);\n }\n .text-\\[var\\(--ds-text-mid\\)\\] {\n color: var(--ds-text-mid);\n }\n .text-accent {\n color: var(--color-accent);\n }\n .text-accent-foreground {\n color: var(--color-accent-foreground);\n }\n .text-accent\\/80 {\n color: color-mix(in srgb, #f4f4f5 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-accent) 80%, transparent);\n }\n }\n .text-amber-300 {\n color: var(--color-amber-300);\n }\n .text-amber-400 {\n color: var(--color-amber-400);\n }\n .text-amber-500 {\n color: var(--color-amber-500);\n }\n .text-amber-600 {\n color: var(--color-amber-600);\n }\n .text-amber-700 {\n color: var(--color-amber-700);\n }\n .text-amber-800 {\n color: var(--color-amber-800);\n }\n .text-amber-900 {\n color: var(--color-amber-900);\n }\n .text-amber-900\\/90 {\n color: color-mix(in srgb, oklch(41.4% 0.112 45.904) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-amber-900) 90%, transparent);\n }\n }\n .text-background {\n color: var(--color-background);\n }\n .text-black {\n color: var(--color-black);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-blue-500 {\n color: var(--color-blue-500);\n }\n .text-blue-600 {\n color: var(--color-blue-600);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n .text-blue-900 {\n color: var(--color-blue-900);\n }\n .text-card-foreground {\n color: var(--color-card-foreground);\n }\n .text-current {\n color: currentcolor;\n }\n .text-destructive {\n color: var(--color-destructive);\n }\n .text-destructive-foreground {\n color: var(--color-destructive-foreground);\n }\n .text-destructive\\/70 {\n color: color-mix(in srgb, #dc2626 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-destructive) 70%, transparent);\n }\n }\n .text-destructive\\/80 {\n color: color-mix(in srgb, #dc2626 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-destructive) 80%, transparent);\n }\n }\n .text-emerald-300 {\n color: var(--color-emerald-300);\n }\n .text-emerald-500 {\n color: var(--color-emerald-500);\n }\n .text-emerald-600 {\n color: var(--color-emerald-600);\n }\n .text-emerald-700 {\n color: var(--color-emerald-700);\n }\n .text-gray-100 {\n color: var(--color-gray-100);\n }\n .text-gray-300 {\n color: var(--color-gray-300);\n }\n .text-gray-400 {\n color: var(--color-gray-400);\n }\n .text-gray-500 {\n color: var(--color-gray-500);\n }\n .text-gray-600 {\n color: var(--color-gray-600);\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .text-gray-800 {\n color: var(--color-gray-800);\n }\n .text-gray-900 {\n color: var(--color-gray-900);\n }\n .text-green-400 {\n color: var(--color-green-400);\n }\n .text-green-500 {\n color: var(--color-green-500);\n }\n .text-green-600 {\n color: var(--color-green-600);\n }\n .text-green-700 {\n color: var(--color-green-700);\n }\n .text-green-800 {\n color: var(--color-green-800);\n }\n .text-green-900 {\n color: var(--color-green-900);\n }\n .text-indigo-500 {\n color: var(--color-indigo-500);\n }\n .text-indigo-600 {\n color: var(--color-indigo-600);\n }\n .text-indigo-700 {\n color: var(--color-indigo-700);\n }\n .text-inherit {\n color: inherit;\n }\n .text-input {\n color: var(--color-input);\n }\n .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n .text-muted-foreground\\/60 {\n color: color-mix(in srgb, #74716e 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-muted-foreground) 60%, transparent);\n }\n }\n .text-muted-foreground\\/70 {\n color: color-mix(in srgb, #74716e 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-muted-foreground) 70%, transparent);\n }\n }\n .text-neutral-70 {\n color: var(--color-neutral-70);\n }\n .text-neutral-300 {\n color: var(--color-neutral-300);\n }\n .text-neutral-400 {\n color: var(--color-neutral-400);\n }\n .text-neutral-500 {\n color: var(--color-neutral-500);\n }\n .text-neutral-600 {\n color: var(--color-neutral-600);\n }\n .text-neutral-700 {\n color: var(--color-neutral-700);\n }\n .text-neutral-900 {\n color: var(--color-neutral-900);\n }\n .text-orange-500 {\n color: var(--color-orange-500);\n }\n .text-orange-600 {\n color: var(--color-orange-600);\n }\n .text-orange-700 {\n color: var(--color-orange-700);\n }\n .text-orange-800 {\n color: var(--color-orange-800);\n }\n .text-primary {\n color: var(--color-primary);\n }\n .text-primary-foreground {\n color: var(--color-primary-foreground);\n }\n .text-primary\\/10 {\n color: color-mix(in srgb, #18181b 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n .text-primary\\/40 {\n color: color-mix(in srgb, #18181b 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 40%, transparent);\n }\n }\n .text-primary\\/50 {\n color: color-mix(in srgb, #18181b 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 50%, transparent);\n }\n }\n .text-primary\\/60 {\n color: color-mix(in srgb, #18181b 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 60%, transparent);\n }\n }\n .text-primary\\/70 {\n color: color-mix(in srgb, #18181b 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 70%, transparent);\n }\n }\n .text-purple-500 {\n color: var(--color-purple-500);\n }\n .text-purple-600 {\n color: var(--color-purple-600);\n }\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n .text-purple-800 {\n color: var(--color-purple-800);\n }\n .text-purple-900 {\n color: var(--color-purple-900);\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-red-600 {\n color: var(--color-red-600);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-red-800 {\n color: var(--color-red-800);\n }\n .text-red-900 {\n color: var(--color-red-900);\n }\n .text-rose-500 {\n color: var(--color-rose-500);\n }\n .text-rose-600 {\n color: var(--color-rose-600);\n }\n .text-rose-700 {\n color: var(--color-rose-700);\n }\n .text-secondary-foreground {\n color: var(--color-secondary-foreground);\n }\n .text-sky-700 {\n color: var(--color-sky-700);\n }\n .text-slate-100 {\n color: var(--color-slate-100);\n }\n .text-slate-300 {\n color: var(--color-slate-300);\n }\n .text-slate-400 {\n color: var(--color-slate-400);\n }\n .text-slate-500 {\n color: var(--color-slate-500);\n }\n .text-slate-600 {\n color: var(--color-slate-600);\n }\n .text-slate-700 {\n color: var(--color-slate-700);\n }\n .text-slate-800 {\n color: var(--color-slate-800);\n }\n .text-slate-900 {\n color: var(--color-slate-900);\n }\n .text-slate-950 {\n color: var(--color-slate-950);\n }\n .text-teal-400 {\n color: var(--color-teal-400);\n }\n .text-teal-700 {\n color: var(--color-teal-700);\n }\n .text-teal-900 {\n color: var(--color-teal-900);\n }\n .text-teal-900\\/70 {\n color: color-mix(in srgb, oklch(38.6% 0.063 188.416) 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-900) 70%, transparent);\n }\n }\n .text-teal-900\\/80 {\n color: color-mix(in srgb, oklch(38.6% 0.063 188.416) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-900) 80%, transparent);\n }\n }\n .text-teal-900\\/90 {\n color: color-mix(in srgb, oklch(38.6% 0.063 188.416) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-900) 90%, transparent);\n }\n }\n .text-transparent {\n color: transparent;\n }\n .text-violet-600 {\n color: var(--color-violet-600);\n }\n .text-violet-700 {\n color: var(--color-violet-700);\n }\n .text-violet-800 {\n color: var(--color-violet-800);\n }\n .text-white {\n color: var(--color-white);\n }\n .text-white\\/35 {\n color: color-mix(in srgb, #fff 35%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-white) 35%, transparent);\n }\n }\n .text-white\\/40 {\n color: color-mix(in srgb, #fff 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-white) 40%, transparent);\n }\n }\n .text-white\\/70 {\n color: color-mix(in srgb, #fff 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-white) 70%, transparent);\n }\n }\n .text-yellow-300 {\n color: var(--color-yellow-300);\n }\n .text-yellow-400 {\n color: var(--color-yellow-400);\n }\n .text-yellow-500 {\n color: var(--color-yellow-500);\n }\n .text-yellow-600 {\n color: var(--color-yellow-600);\n }\n .text-yellow-700 {\n color: var(--color-yellow-700);\n }\n .text-yellow-800 {\n color: var(--color-yellow-800);\n }\n .text-yellow-900 {\n color: var(--color-yellow-900);\n }\n .text-zinc-500 {\n color: var(--color-zinc-500);\n }\n .text-zinc-600 {\n color: var(--color-zinc-600);\n }\n .text-zinc-900 {\n color: var(--color-zinc-900);\n }\n .capitalize {\n text-transform: capitalize;\n }\n .lowercase {\n text-transform: lowercase;\n }\n .normal-case {\n text-transform: none;\n }\n .uppercase {\n text-transform: uppercase;\n }\n .uppercase\\! {\n text-transform: uppercase !important;\n }\n .italic {\n font-style: italic;\n }\n .ordinal {\n --tw-ordinal: ordinal;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .line-through {\n text-decoration-line: line-through;\n }\n .no-underline {\n text-decoration-line: none;\n }\n .underline {\n text-decoration-line: underline;\n }\n .decoration-muted-foreground\\/50 {\n text-decoration-color: color-mix(in srgb, #74716e 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n text-decoration-color: color-mix(in oklab, var(--color-muted-foreground) 50%, transparent);\n }\n }\n .decoration-dotted {\n text-decoration-style: dotted;\n }\n .decoration-solid {\n text-decoration-style: solid;\n }\n .underline-offset-2 {\n text-underline-offset: 2px;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .underline-offset-\\[3px\\] {\n text-underline-offset: 3px;\n }\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .caret-red-600 {\n caret-color: var(--color-red-600);\n }\n .caret-slate-900 {\n caret-color: var(--color-slate-900);\n }\n .accent-\\[var\\(--brand\\)\\] {\n accent-color: var(--brand);\n }\n .accent-accent {\n accent-color: var(--color-accent);\n }\n .accent-black {\n accent-color: var(--color-black);\n }\n .accent-primary {\n accent-color: var(--color-primary);\n }\n .\\[color-scheme\\:light\\] {\n color-scheme: light;\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-10 {\n opacity: 10%;\n }\n .opacity-30 {\n opacity: 30%;\n }\n .opacity-40 {\n opacity: 40%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-55 {\n opacity: 55%;\n }\n .opacity-60 {\n opacity: 60%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-75 {\n opacity: 75%;\n }\n .opacity-80 {\n opacity: 80%;\n }\n .opacity-90 {\n opacity: 90%;\n }\n .opacity-95 {\n opacity: 95%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .opacity-\\[0\\.28\\] {\n opacity: 0.28;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow\\! {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)) !important;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow) !important;\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-border\\)\\)\\] {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_2px_8px_rgba\\(217\\,74\\,30\\,0\\.15\\)\\] {\n --tw-shadow: 0 2px 8px var(--tw-shadow-color, rgba(217,74,30,0.15));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_3px_10px_rgba\\(0\\,0\\,0\\,0\\.14\\)\\] {\n --tw-shadow: 0 3px 10px var(--tw-shadow-color, rgba(0,0,0,0.14));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_8px_32px_rgba\\(0\\,0\\,0\\,0\\.12\\)\\,0_2px_8px_rgba\\(0\\,0\\,0\\,0\\.06\\)\\] {\n --tw-shadow: 0 8px 32px var(--tw-shadow-color, rgba(0,0,0,0.12)), 0 2px 8px var(--tw-shadow-color, rgba(0,0,0,0.06));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0px_0px_4px_0px_\\#e4e4e7\\] {\n --tw-shadow: 0px 0px 4px 0px var(--tw-shadow-color, #e4e4e7);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0px_1px_2px_0px_rgba\\(0\\,0\\,0\\,0\\.05\\)\\] {\n --tw-shadow: 0px 1px 2px 0px var(--tw-shadow-color, rgba(0,0,0,0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0px_10px_15px_-3px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\,0px_4px_6px_-2px_rgba\\(0\\,0\\,0\\,0\\.05\\)\\] {\n --tw-shadow: 0px 10px 15px -3px var(--tw-shadow-color, rgba(0,0,0,0.1)), 0px 4px 6px -2px var(--tw-shadow-color, rgba(0,0,0,0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[2px_0_4px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\] {\n --tw-shadow: 2px 0 4px var(--tw-shadow-color, rgba(0,0,0,0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[inset_0_-1px_0_var\\(--border\\)\\] {\n --tw-shadow: inset 0 -1px 0 var(--tw-shadow-color, var(--border));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[inset_0_1px_0_rgba\\(255\\,255\\,255\\,\\.2\\)\\] {\n --tw-shadow: inset 0 1px 0 var(--tw-shadow-color, rgba(255,255,255,.2));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[inset_0_1px_0_rgba\\(255\\,255\\,255\\,\\.16\\)\\] {\n --tw-shadow: inset 0 1px 0 var(--tw-shadow-color, rgba(255,255,255,.16));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[var\\(--shadow\\)\\] {\n --tw-shadow: var(--shadow);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-inner {\n --tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-none {\n --tw-shadow: 0 0 #0000;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow\\/ring {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-0 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-\\[1\\.5px\\] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1.5px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-\\[3px\\] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .\\[box-shadow\\:none\\] {\n box-shadow: none;\n }\n .shadow-card {\n --tw-shadow-color: #ffffff;\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-card) var(--tw-shadow-alpha), transparent);\n }\n }\n .ring-\\[\\#10b981\\]\\/40 {\n --tw-ring-color: color-mix(in oklab, #10b981 40%, transparent);\n }\n .ring-black\\/5 {\n --tw-ring-color: color-mix(in srgb, #000 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-black) 5%, transparent);\n }\n }\n .ring-blue-300\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(80.9% 0.105 251.813) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-blue-300) 60%, transparent);\n }\n }\n .ring-blue-500 {\n --tw-ring-color: var(--color-blue-500);\n }\n .ring-border {\n --tw-ring-color: var(--color-border);\n }\n .ring-card {\n --tw-ring-color: var(--color-card);\n }\n .ring-gray-300 {\n --tw-ring-color: var(--color-gray-300);\n }\n .ring-gray-900\\/10 {\n --tw-ring-color: color-mix(in srgb, oklch(21% 0.034 264.665) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-gray-900) 10%, transparent);\n }\n }\n .ring-orange-400 {\n --tw-ring-color: var(--color-orange-400);\n }\n .ring-primary {\n --tw-ring-color: var(--color-primary);\n }\n .ring-sidebar-ring {\n --tw-ring-color: var(--color-sidebar-ring);\n }\n .ring-offset-4 {\n --tw-ring-offset-width: 4px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n .ring-offset-background {\n --tw-ring-offset-color: var(--color-background);\n }\n .ring-offset-gray-200 {\n --tw-ring-offset-color: var(--color-gray-200);\n }\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .outline-1 {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .-outline-offset-1 {\n outline-offset: calc(1px * -1);\n }\n .outline-gray-300 {\n outline-color: var(--color-gray-300);\n }\n .outline-red-300 {\n outline-color: var(--color-red-300);\n }\n .blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-2xl {\n --tw-blur: blur(var(--blur-2xl));\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-3xl {\n --tw-blur: blur(var(--blur-3xl));\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .drop-shadow-\\[0_3px_9px_rgba\\(124\\,92\\,255\\,0\\.4\\)\\] {\n --tw-drop-shadow-size: drop-shadow(0 3px 9px var(--tw-drop-shadow-color, rgba(124,92,255,0.4)));\n --tw-drop-shadow: var(--tw-drop-shadow-size);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .drop-shadow-md {\n --tw-drop-shadow-size: drop-shadow(0 3px 3px var(--tw-drop-shadow-color, rgb(0 0 0 / 0.12)));\n --tw-drop-shadow: drop-shadow(var(--drop-shadow-md));\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .invert {\n --tw-invert: invert(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .\\!filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,) !important;\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .filter\\! {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,) !important;\n }\n .backdrop-blur {\n --tw-backdrop-blur: blur(8px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-blur-\\[1px\\] {\n --tw-backdrop-blur: blur(1px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-blur-xl {\n --tw-backdrop-blur: blur(var(--blur-xl));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-filter {\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition\\! {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events !important;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)) !important;\n transition-duration: var(--tw-duration, var(--default-transition-duration)) !important;\n }\n .transition-\\[border-color\\,box-shadow\\,background-color\\] {\n transition-property: border-color,box-shadow,background-color;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[border-color\\,box-shadow\\] {\n transition-property: border-color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[filter\\] {\n transition-property: filter;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[grid-template-rows\\] {\n transition-property: grid-template-rows;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[left\\,right\\,width\\] {\n transition-property: left,right,width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[margin\\,opacity\\] {\n transition-property: margin,opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[margin-right\\] {\n transition-property: margin-right;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[opacity\\,transform\\] {\n transition-property: opacity,transform;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[right\\] {\n transition-property: right;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[transform\\,width\\,height\\,opacity\\] {\n transition-property: transform,width,height,opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\,height\\,padding\\] {\n transition-property: width,height,padding;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\,right\\,margin-right\\] {\n transition-property: width,right,margin-right;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\] {\n transition-property: width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-none {\n transition-property: none;\n }\n .duration-75 {\n --tw-duration: 75ms;\n transition-duration: 75ms;\n }\n .duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-150 {\n --tw-duration: 150ms;\n transition-duration: 150ms;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .duration-\\[100ms\\] {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-\\[120ms\\] {\n --tw-duration: 120ms;\n transition-duration: 120ms;\n }\n .duration-\\[130ms\\] {\n --tw-duration: 130ms;\n transition-duration: 130ms;\n }\n .duration-\\[140ms\\] {\n --tw-duration: 140ms;\n transition-duration: 140ms;\n }\n .duration-\\[160ms\\] {\n --tw-duration: 160ms;\n transition-duration: 160ms;\n }\n .duration-\\[180ms\\] {\n --tw-duration: 180ms;\n transition-duration: 180ms;\n }\n .duration-\\[220ms\\] {\n --tw-duration: 220ms;\n transition-duration: 220ms;\n }\n .duration-\\[250ms\\] {\n --tw-duration: 250ms;\n transition-duration: 250ms;\n }\n .duration-\\[280ms\\] {\n --tw-duration: 280ms;\n transition-duration: 280ms;\n }\n .duration-\\[380ms\\] {\n --tw-duration: 380ms;\n transition-duration: 380ms;\n }\n .duration-\\[500ms\\] {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n .duration-\\[600ms\\] {\n --tw-duration: 600ms;\n transition-duration: 600ms;\n }\n .ease-\\[cubic-bezier\\(0\\.2\\,0\\.8\\,0\\.2\\,1\\)\\] {\n --tw-ease: cubic-bezier(0.2,0.8,0.2,1);\n transition-timing-function: cubic-bezier(0.2,0.8,0.2,1);\n }\n .ease-\\[cubic-bezier\\(0\\.34\\,1\\.42\\,0\\.64\\,1\\)\\] {\n --tw-ease: cubic-bezier(0.34,1.42,0.64,1);\n transition-timing-function: cubic-bezier(0.34,1.42,0.64,1);\n }\n .ease-in {\n --tw-ease: var(--ease-in);\n transition-timing-function: var(--ease-in);\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .ease-linear {\n --tw-ease: linear;\n transition-timing-function: linear;\n }\n .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n .will-change-transform {\n will-change: transform;\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-all {\n -webkit-user-select: all;\n user-select: all;\n }\n .select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n .\\[-ms-overflow-style\\:none\\] {\n -ms-overflow-style: none;\n }\n .\\[-webkit-overflow-scrolling\\:touch\\] {\n -webkit-overflow-scrolling: touch;\n }\n .\\[cron\\:alarm-detection\\] {\n cron: alarm-detection;\n }\n .\\[cron\\:bulk-subscribe-failure-retention\\] {\n cron: bulk-subscribe-failure-retention;\n }\n .\\[cron\\:bulk-subscribe-watchdog\\] {\n cron: bulk-subscribe-watchdog;\n }\n .\\[cron\\:daily-summary\\] {\n cron: daily-summary;\n }\n .\\[cron\\:event-processor\\] {\n cron: event-processor;\n }\n .\\[cron\\:invitation-retention\\] {\n cron: invitation-retention;\n }\n .\\[cron\\:opt-out-token-retention\\] {\n cron: opt-out-token-retention;\n }\n .\\[cron\\:payout-calc\\] {\n cron: payout-calc;\n }\n .\\[cron\\:referral-webhook-dispatch\\] {\n cron: referral-webhook-dispatch;\n }\n .\\[cron\\:session-cleanup\\] {\n cron: session-cleanup;\n }\n .\\[cron\\:testing-expiry\\] {\n cron: testing-expiry;\n }\n .\\[daily-summary\\:backfill\\] {\n daily-summary: backfill;\n }\n .\\[daily-summary\\:diag\\] {\n daily-summary: diag;\n }\n .\\[event-processor\\:diag\\] {\n event-processor: diag;\n }\n .\\[event-processor\\:parsers\\] {\n event-processor: parsers;\n }\n .\\[lead-pipeline\\:diag\\] {\n lead-pipeline: diag;\n }\n .\\[min-inline-size\\:0\\] {\n min-inline-size: 0;\n }\n .\\[payout-calc\\:diag\\] {\n payout-calc: diag;\n }\n .\\[payout\\:trigger\\] {\n payout: trigger;\n }\n .\\[scrollbar-gutter\\:stable\\] {\n scrollbar-gutter: stable;\n }\n .\\[scrollbar-width\\:none\\] {\n scrollbar-width: none;\n }\n .\\[scrollbar-width\\:thin\\] {\n scrollbar-width: thin;\n }\n .\\[transition\\:max-height_200ms\\,opacity_150ms\\,padding_200ms\\] {\n transition: max-height 200ms,opacity 150ms,padding 200ms;\n }\n .\\[transition\\:opacity_120ms\\,margin_250ms_ease-in-out\\] {\n transition: opacity 120ms,margin 250ms ease-in-out;\n }\n .\\[transition\\:opacity_150ms\\,max-width_250ms_ease-in-out\\] {\n transition: opacity 150ms,max-width 250ms ease-in-out;\n }\n .\\[transition\\:opacity_150ms_ease\\,max-width_250ms_ease-in-out\\] {\n transition: opacity 150ms ease,max-width 250ms ease-in-out;\n }\n .ring-inset {\n --tw-ring-inset: inset;\n }\n .group-focus-within\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):focus-within *) {\n opacity: 100%;\n }\n }\n .group-hover\\:block {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n display: block;\n }\n }\n }\n .group-hover\\:border-gray-400 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n border-color: var(--color-gray-400);\n }\n }\n }\n .group-hover\\:bg-black\\/20 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #000 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 20%, transparent);\n }\n }\n }\n }\n .group-hover\\:bg-black\\/30 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #000 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 30%, transparent);\n }\n }\n }\n }\n .group-hover\\:text-blue-600 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .group-hover\\:opacity-60 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 60%;\n }\n }\n }\n .group-hover\\:opacity-80 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 80%;\n }\n }\n }\n .group-hover\\:opacity-100 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-hover\\:brightness-110 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-brightness: brightness(110%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n }\n }\n .group-hover\\:brightness-\\[1\\.18\\] {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-brightness: brightness(1.18);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n }\n }\n .group-hover\\/card\\:pointer-events-auto {\n &:is(:where(.group\\/card):hover *) {\n @media (hover: hover) {\n pointer-events: auto;\n }\n }\n }\n .group-hover\\/card\\:translate-y-0 {\n &:is(:where(.group\\/card):hover *) {\n @media (hover: hover) {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-hover\\/card\\:opacity-100 {\n &:is(:where(.group\\/card):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-hover\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-has-data-\\[sidebar\\=menu-action\\]\\/menu-item\\:pr-8 {\n &:is(:where(.group\\/menu-item):has(*[data-sidebar=\"menu-action\"]) *) {\n padding-right: calc(var(--spacing) * 8);\n }\n }\n .group-data-\\[checked\\]\\:translate-x-5 {\n &:is(:where(.group)[data-checked] *) {\n --tw-translate-x: calc(var(--spacing) * 5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[checked\\]\\:opacity-0 {\n &:is(:where(.group)[data-checked] *) {\n opacity: 0%;\n }\n }\n .group-data-\\[checked\\]\\:opacity-100 {\n &:is(:where(.group)[data-checked] *) {\n opacity: 100%;\n }\n }\n .group-data-\\[checked\\]\\:duration-100 {\n &:is(:where(.group)[data-checked] *) {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n }\n .group-data-\\[checked\\]\\:duration-200 {\n &:is(:where(.group)[data-checked] *) {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n }\n .group-data-\\[checked\\]\\:ease-in {\n &:is(:where(.group)[data-checked] *) {\n --tw-ease: var(--ease-in);\n transition-timing-function: var(--ease-in);\n }\n }\n .group-data-\\[checked\\]\\:ease-out {\n &:is(:where(.group)[data-checked] *) {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:-mt-8 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n margin-top: calc(var(--spacing) * -8);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n display: none;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:size-8\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--spacing) * 8) !important;\n height: calc(var(--spacing) * 8) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\(--sidebar-width-icon\\) {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: var(--sidebar-width-icon);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)));\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\+2px\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:overflow-hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n overflow: hidden;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-0\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 0) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-2\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 2) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:opacity-0 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n opacity: 0%;\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:right-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n right: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:left-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n left: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:w-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n width: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[side\\=left\\]\\:-right-4 {\n &:is(:where(.group)[data-side=\"left\"] *) {\n right: calc(var(--spacing) * -4);\n }\n }\n .group-data-\\[side\\=left\\]\\:border-r {\n &:is(:where(.group)[data-side=\"left\"] *) {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .group-data-\\[side\\=right\\]\\:left-0 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n left: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[side\\=right\\]\\:rotate-180 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[side\\=right\\]\\:border-l {\n &:is(:where(.group)[data-side=\"right\"] *) {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .group-data-\\[size\\=default\\]\\/switch\\:size-4 {\n &:is(:where(.group\\/switch)[data-size=\"default\"] *) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .group-data-\\[size\\=sm\\]\\/switch\\:size-3 {\n &:is(:where(.group\\/switch)[data-size=\"sm\"] *) {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .group-data-\\[spacing\\=0\\]\\/toggle-group\\:rounded-none {\n &:is(:where(.group\\/toggle-group)[data-spacing=\"0\"] *) {\n border-radius: 0;\n }\n }\n .group-data-\\[spacing\\=0\\]\\/toggle-group\\:px-2 {\n &:is(:where(.group\\/toggle-group)[data-spacing=\"0\"] *) {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .group-data-\\[state\\=checked\\]\\:opacity-100 {\n &:is(:where(.group)[data-state=\"checked\"] *) {\n opacity: 100%;\n }\n }\n .group-data-\\[state\\=open\\]\\/tagswitch\\:rotate-180 {\n &:is(:where(.group\\/tagswitch)[data-state=\"open\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[state\\=unchecked\\]\\:opacity-100 {\n &:is(:where(.group)[data-state=\"unchecked\"] *) {\n opacity: 100%;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:rounded-lg {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-radius: var(--radius-lg);\n }\n }\n .group-data-\\[variant\\=floating\\]\\:border {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:shadow-sm {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .peer-disabled\\:cursor-not-allowed {\n &:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n }\n .peer-disabled\\:opacity-70 {\n &:is(:where(.peer):disabled ~ *) {\n opacity: 70%;\n }\n }\n .peer-data-\\[size\\=default\\]\\/menu-button\\:top-1\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"default\"] ~ *) {\n top: calc(var(--spacing) * 1.5);\n }\n }\n .peer-data-\\[size\\=lg\\]\\/menu-button\\:top-2\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"lg\"] ~ *) {\n top: calc(var(--spacing) * 2.5);\n }\n }\n .peer-data-\\[size\\=sm\\]\\/menu-button\\:top-1 {\n &:is(:where(.peer\\/menu-button)[data-size=\"sm\"] ~ *) {\n top: calc(var(--spacing) * 1);\n }\n }\n .selection\\:bg-primary {\n & *::selection {\n background-color: var(--color-primary);\n }\n &::selection {\n background-color: var(--color-primary);\n }\n }\n .selection\\:text-primary-foreground {\n & *::selection {\n color: var(--color-primary-foreground);\n }\n &::selection {\n color: var(--color-primary-foreground);\n }\n }\n .file\\:inline-flex {\n &::file-selector-button {\n display: inline-flex;\n }\n }\n .file\\:h-7 {\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n }\n .file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n }\n .file\\:text-sm {\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .file\\:font-medium {\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .placeholder\\:text-gray-400 {\n &::placeholder {\n color: var(--color-gray-400);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n }\n .placeholder\\:text-red-300 {\n &::placeholder {\n color: var(--color-red-300);\n }\n }\n .placeholder\\:text-slate-400 {\n &::placeholder {\n color: var(--color-slate-400);\n }\n }\n .placeholder\\:opacity-85 {\n &::placeholder {\n opacity: 85%;\n }\n }\n .before\\:absolute {\n &::before {\n content: var(--tw-content);\n position: absolute;\n }\n }\n .before\\:top-0 {\n &::before {\n content: var(--tw-content);\n top: calc(var(--spacing) * 0);\n }\n }\n .before\\:bottom-0 {\n &::before {\n content: var(--tw-content);\n bottom: calc(var(--spacing) * 0);\n }\n }\n .before\\:left-0 {\n &::before {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n .before\\:w-px {\n &::before {\n content: var(--tw-content);\n width: 1px;\n }\n }\n .before\\:bg-border {\n &::before {\n content: var(--tw-content);\n background-color: var(--color-border);\n }\n }\n .after\\:absolute {\n &::after {\n content: var(--tw-content);\n position: absolute;\n }\n }\n .after\\:-inset-2 {\n &::after {\n content: var(--tw-content);\n inset: calc(var(--spacing) * -2);\n }\n }\n .after\\:-inset-x-3 {\n &::after {\n content: var(--tw-content);\n inset-inline: calc(var(--spacing) * -3);\n }\n }\n .after\\:-inset-y-2 {\n &::after {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * -2);\n }\n }\n .after\\:inset-y-0 {\n &::after {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .after\\:right-0 {\n &::after {\n content: var(--tw-content);\n right: calc(var(--spacing) * 0);\n }\n }\n .after\\:bottom-0 {\n &::after {\n content: var(--tw-content);\n bottom: calc(var(--spacing) * 0);\n }\n }\n .after\\:left-0 {\n &::after {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n .after\\:left-1\\/2 {\n &::after {\n content: var(--tw-content);\n left: calc(1/2 * 100%);\n }\n }\n .after\\:h-\\[2px\\] {\n &::after {\n content: var(--tw-content);\n height: 2px;\n }\n }\n .after\\:w-\\[2px\\] {\n &::after {\n content: var(--tw-content);\n width: 2px;\n }\n }\n .after\\:scale-x-0 {\n &::after {\n content: var(--tw-content);\n --tw-scale-x: 0%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n .after\\:bg-\\[var\\(--tab-indicator-color\\)\\] {\n &::after {\n content: var(--tw-content);\n background-color: var(--tab-indicator-color);\n }\n }\n .after\\:transition-transform {\n &::after {\n content: var(--tw-content);\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:after\\:left-full {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n &::after {\n content: var(--tw-content);\n left: 100%;\n }\n }\n }\n .first\\:border-l-0 {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n .last\\:mb-0 {\n &:last-child {\n margin-bottom: calc(var(--spacing) * 0);\n }\n }\n .last\\:border-0 {\n &:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .last\\:border-r-0 {\n &:last-child {\n border-right-style: var(--tw-border-style);\n border-right-width: 0px;\n }\n }\n .last\\:border-b {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .last\\:border-b-0 {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .last\\:pb-0 {\n &:last-child {\n padding-bottom: calc(var(--spacing) * 0);\n }\n }\n .last\\:pb-\\[3px\\] {\n &:last-child {\n padding-bottom: 3px;\n }\n }\n .focus-within\\:pointer-events-auto {\n &:focus-within {\n pointer-events: auto;\n }\n }\n .focus-within\\:relative {\n &:focus-within {\n position: relative;\n }\n }\n .focus-within\\:translate-y-0 {\n &:focus-within {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .focus-within\\:opacity-100 {\n &:focus-within {\n opacity: 100%;\n }\n }\n .focus-within\\:ring-2 {\n &:focus-within {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-within\\:ring-\\[3px\\] {\n &:focus-within {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-within\\:ring-accent {\n &:focus-within {\n --tw-ring-color: var(--color-accent);\n }\n }\n .focus-within\\:ring-accent\\/40 {\n &:focus-within {\n --tw-ring-color: color-mix(in srgb, #f4f4f5 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n }\n .focus-within\\:ring-blue-600 {\n &:focus-within {\n --tw-ring-color: var(--color-blue-600);\n }\n }\n .focus-within\\:ring-offset-2 {\n &:focus-within {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus-within\\:outline-none {\n &:focus-within {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .hover\\:-translate-y-0\\.5 {\n &:hover {\n @media (hover: hover) {\n --tw-translate-y: calc(var(--spacing) * -0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .hover\\:-translate-y-px {\n &:hover {\n @media (hover: hover) {\n --tw-translate-y: -1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .hover\\:translate-y-0 {\n &:hover {\n @media (hover: hover) {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .hover\\:cursor-pointer {\n &:hover {\n @media (hover: hover) {\n cursor: pointer;\n }\n }\n }\n .hover\\:border-\\[\\#2563eb\\] {\n &:hover {\n @media (hover: hover) {\n border-color: #2563eb;\n }\n }\n }\n .hover\\:border-\\[color\\:var\\(--ob-bd-h\\)\\] {\n &:hover {\n @media (hover: hover) {\n border-color: var(--ob-bd-h);\n }\n }\n }\n .hover\\:border-accent\\/50 {\n &:hover {\n @media (hover: hover) {\n border-color: color-mix(in srgb, #f4f4f5 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n }\n }\n .hover\\:border-blue-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-400);\n }\n }\n }\n .hover\\:border-blue-600 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-600);\n }\n }\n }\n .hover\\:border-border {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-border);\n }\n }\n }\n .hover\\:border-gray-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-gray-300);\n }\n }\n }\n .hover\\:border-gray-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-gray-400);\n }\n }\n }\n .hover\\:border-gray-500 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-gray-500);\n }\n }\n }\n .hover\\:border-indigo-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-300);\n }\n }\n }\n .hover\\:border-muted-foreground {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-muted-foreground);\n }\n }\n }\n .hover\\:border-orange-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-orange-400);\n }\n }\n }\n .hover\\:border-primary {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-primary);\n }\n }\n }\n .hover\\:border-primary\\/40 {\n &:hover {\n @media (hover: hover) {\n border-color: color-mix(in srgb, #18181b 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 40%, transparent);\n }\n }\n }\n }\n .hover\\:border-primary\\/50 {\n &:hover {\n @media (hover: hover) {\n border-color: color-mix(in srgb, #18181b 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 50%, transparent);\n }\n }\n }\n }\n .hover\\:border-purple-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-purple-400);\n }\n }\n }\n .hover\\:border-red-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-red-200);\n }\n }\n }\n .hover\\:border-red-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-red-300);\n }\n }\n }\n .hover\\:border-red-600 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-red-600);\n }\n }\n }\n .hover\\:border-slate-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-400);\n }\n }\n }\n .hover\\:\\!bg-\\[\\#12478a\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #12478a !important;\n }\n }\n }\n .hover\\:\\!bg-\\[\\#af543d\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #af543d !important;\n }\n }\n }\n .hover\\:bg-\\[\\#1a2e4a\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #1a2e4a;\n }\n }\n }\n .hover\\:bg-\\[\\#1d4ed8\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #1d4ed8;\n }\n }\n }\n .hover\\:bg-\\[\\#2d3544\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #2d3544;\n }\n }\n }\n .hover\\:bg-\\[\\#16a34a\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #16a34a;\n }\n }\n }\n .hover\\:bg-\\[\\#166FE5\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #166FE5;\n }\n }\n }\n .hover\\:bg-\\[\\#18181b\\]\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in oklab, #18181b 90%, transparent);\n }\n }\n }\n .hover\\:bg-\\[\\#E88B00\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #E88B00;\n }\n }\n }\n .hover\\:bg-\\[\\#F1F4F8\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #F1F4F8;\n }\n }\n }\n .hover\\:bg-\\[\\#d0d8e4\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #d0d8e4;\n }\n }\n }\n .hover\\:bg-\\[\\#f2f2f2\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #f2f2f2;\n }\n }\n }\n .hover\\:bg-\\[\\#fafafa\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #fafafa;\n }\n }\n }\n .hover\\:bg-\\[color\\:var\\(--ob-bg-h\\)\\] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--ob-bg-h);\n }\n }\n }\n .hover\\:bg-\\[var\\(--bc-primary-button-background-color\\)\\] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--bc-primary-button-background-color);\n }\n }\n }\n .hover\\:bg-\\[var\\(--bc-secondary-button-background-color\\)\\] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--bc-secondary-button-background-color);\n }\n }\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n }\n .hover\\:bg-accent\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/30 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-amber-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-amber-100);\n }\n }\n }\n .hover\\:bg-background {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-background);\n }\n }\n }\n .hover\\:bg-black\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #000 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-blue-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-100);\n }\n }\n }\n .hover\\:bg-blue-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-200);\n }\n }\n }\n .hover\\:bg-blue-500 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-500);\n }\n }\n }\n .hover\\:bg-blue-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-700);\n }\n }\n }\n .hover\\:bg-border {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-border);\n }\n }\n }\n .hover\\:bg-border\\/60 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #e4e4e7 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-border) 60%, transparent);\n }\n }\n }\n }\n .hover\\:bg-card {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-card);\n }\n }\n }\n .hover\\:bg-destructive {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-destructive);\n }\n }\n }\n .hover\\:bg-destructive\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #dc2626 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-destructive\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #dc2626 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #dc2626 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-gray-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-50);\n }\n }\n }\n .hover\\:bg-gray-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-100);\n }\n }\n }\n .hover\\:bg-gray-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-200);\n }\n }\n }\n .hover\\:bg-gray-300 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-300);\n }\n }\n }\n .hover\\:bg-gray-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-800);\n }\n }\n }\n .hover\\:bg-green-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-green-700);\n }\n }\n }\n .hover\\:bg-indigo-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-50);\n }\n }\n }\n .hover\\:bg-indigo-50\\/60 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(96.2% 0.018 272.314) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-50) 60%, transparent);\n }\n }\n }\n }\n .hover\\:bg-indigo-500\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-500) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n }\n }\n }\n .hover\\:bg-muted\\/30 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f7f7f6 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/40 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f7f7f6 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 40%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f7f7f6 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/60 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f7f7f6 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 60%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/70 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f7f7f6 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 70%, transparent);\n }\n }\n }\n }\n .hover\\:bg-neutral-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-100);\n }\n }\n }\n .hover\\:bg-neutral-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-200);\n }\n }\n }\n .hover\\:bg-orange-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-orange-100);\n }\n }\n }\n .hover\\:bg-primary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #18181b 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #18181b 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-purple-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-purple-100);\n }\n }\n }\n .hover\\:bg-purple-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-purple-700);\n }\n }\n }\n .hover\\:bg-red-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-50);\n }\n }\n }\n .hover\\:bg-red-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-200);\n }\n }\n }\n .hover\\:bg-red-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-700);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-slate-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-50);\n }\n }\n }\n .hover\\:bg-slate-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-100);\n }\n }\n }\n .hover\\:bg-slate-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-800);\n }\n }\n }\n .hover\\:bg-teal-600 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-teal-600);\n }\n }\n }\n .hover\\:bg-teal-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-teal-700);\n }\n }\n }\n .hover\\:bg-transparent {\n &:hover {\n @media (hover: hover) {\n background-color: transparent;\n }\n }\n }\n .hover\\:bg-violet-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-violet-700);\n }\n }\n }\n .hover\\:bg-violet-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-violet-800);\n }\n }\n }\n .hover\\:bg-white {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-white);\n }\n }\n }\n .hover\\:bg-white\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #fff 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 20%, transparent);\n }\n }\n }\n }\n .hover\\:bg-white\\/\\[0\\.04\\] {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #fff 4%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 4%, transparent);\n }\n }\n }\n }\n .hover\\:bg-yellow-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-yellow-700);\n }\n }\n }\n .hover\\:bg-zinc-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-zinc-100);\n }\n }\n }\n .hover\\:bg-zinc-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-zinc-800);\n }\n }\n }\n .hover\\:text-\\[\\#1d4ed8\\] {\n &:hover {\n @media (hover: hover) {\n color: #1d4ed8;\n }\n }\n }\n .hover\\:text-\\[\\#6b7280\\] {\n &:hover {\n @media (hover: hover) {\n color: #6b7280;\n }\n }\n }\n .hover\\:text-\\[\\#18181b\\] {\n &:hover {\n @media (hover: hover) {\n color: #18181b;\n }\n }\n }\n .hover\\:text-\\[\\#64748b\\] {\n &:hover {\n @media (hover: hover) {\n color: #64748b;\n }\n }\n }\n .hover\\:text-\\[color\\:var\\(--dn-fg-hover\\)\\] {\n &:hover {\n @media (hover: hover) {\n color: var(--dn-fg-hover);\n }\n }\n }\n .hover\\:text-\\[color\\:var\\(--ob-fg-h\\)\\] {\n &:hover {\n @media (hover: hover) {\n color: var(--ob-fg-h);\n }\n }\n }\n .hover\\:text-\\[var\\(--bc-secondary-button-text-color\\)\\] {\n &:hover {\n @media (hover: hover) {\n color: var(--bc-secondary-button-text-color);\n }\n }\n }\n .hover\\:text-accent {\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent);\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n .hover\\:text-accent\\/80 {\n &:hover {\n @media (hover: hover) {\n color: color-mix(in srgb, #f4f4f5 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-accent) 80%, transparent);\n }\n }\n }\n }\n .hover\\:text-black {\n &:hover {\n @media (hover: hover) {\n color: var(--color-black);\n }\n }\n }\n .hover\\:text-blue-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-500);\n }\n }\n }\n .hover\\:text-blue-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .hover\\:text-blue-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-700);\n }\n }\n }\n .hover\\:text-blue-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-800);\n }\n }\n }\n .hover\\:text-blue-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-900);\n }\n }\n }\n .hover\\:text-destructive {\n &:hover {\n @media (hover: hover) {\n color: var(--color-destructive);\n }\n }\n }\n .hover\\:text-gray-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-gray-500);\n }\n }\n }\n .hover\\:text-gray-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-gray-600);\n }\n }\n }\n .hover\\:text-gray-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-gray-700);\n }\n }\n }\n .hover\\:text-gray-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-gray-800);\n }\n }\n }\n .hover\\:text-gray-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-gray-900);\n }\n }\n }\n .hover\\:text-green-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-green-900);\n }\n }\n }\n .hover\\:text-indigo-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-600);\n }\n }\n }\n .hover\\:text-muted-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--color-muted-foreground);\n }\n }\n }\n .hover\\:text-neutral-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-neutral-900);\n }\n }\n }\n .hover\\:text-orange-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-orange-500);\n }\n }\n }\n .hover\\:text-primary {\n &:hover {\n @media (hover: hover) {\n color: var(--color-primary);\n }\n }\n }\n .hover\\:text-primary\\/60 {\n &:hover {\n @media (hover: hover) {\n color: color-mix(in srgb, #18181b 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary) 60%, transparent);\n }\n }\n }\n }\n .hover\\:text-red-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-500);\n }\n }\n }\n .hover\\:text-red-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-600);\n }\n }\n }\n .hover\\:text-red-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-700);\n }\n }\n }\n .hover\\:text-red-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-800);\n }\n }\n }\n .hover\\:text-red-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-900);\n }\n }\n }\n .hover\\:text-slate-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-600);\n }\n }\n }\n .hover\\:text-slate-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-700);\n }\n }\n }\n .hover\\:text-slate-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-800);\n }\n }\n }\n .hover\\:text-teal-950 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-teal-950);\n }\n }\n }\n .hover\\:text-violet-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-violet-800);\n }\n }\n }\n .hover\\:text-white {\n &:hover {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n .hover\\:text-yellow-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-yellow-900);\n }\n }\n }\n .hover\\:no-underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: none;\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-70 {\n &:hover {\n @media (hover: hover) {\n opacity: 70%;\n }\n }\n }\n .hover\\:opacity-80 {\n &:hover {\n @media (hover: hover) {\n opacity: 80%;\n }\n }\n }\n .hover\\:opacity-90 {\n &:hover {\n @media (hover: hover) {\n opacity: 90%;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .hover\\:opacity-\\[0\\.88\\] {\n &:hover {\n @media (hover: hover) {\n opacity: 0.88;\n }\n }\n }\n .hover\\:shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-accent\\)\\)\\] {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-\\[0_4px_14px_rgba\\(37\\,99\\,235\\,0\\.1\\)\\] {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 14px var(--tw-shadow-color, rgba(37,99,235,0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-\\[0_8px_24px_rgba\\(0\\,0\\,0\\,0\\.08\\)\\] {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 8px 24px var(--tw-shadow-color, rgba(0,0,0,0.08));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-sm {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-card {\n &:hover {\n @media (hover: hover) {\n --tw-shadow-color: #ffffff;\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-card) var(--tw-shadow-alpha), transparent);\n }\n }\n }\n }\n .hover\\:brightness-110 {\n &:hover {\n @media (hover: hover) {\n --tw-brightness: brightness(110%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n }\n }\n .hover\\:brightness-\\[1\\.15\\] {\n &:hover {\n @media (hover: hover) {\n --tw-brightness: brightness(1.15);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n }\n }\n .focus\\:relative {\n &:focus {\n position: relative;\n }\n }\n .focus\\:z-10 {\n &:focus {\n z-index: 10;\n }\n }\n .focus\\:z-20 {\n &:focus {\n z-index: 20;\n }\n }\n .focus\\:border-accent {\n &:focus {\n border-color: var(--color-accent);\n }\n }\n .focus\\:border-destructive {\n &:focus {\n border-color: var(--color-destructive);\n }\n }\n .focus\\:border-gray-500 {\n &:focus {\n border-color: var(--color-gray-500);\n }\n }\n .focus\\:border-indigo-500 {\n &:focus {\n border-color: var(--color-indigo-500);\n }\n }\n .focus\\:border-primary {\n &:focus {\n border-color: var(--color-primary);\n }\n }\n .focus\\:border-red-500 {\n &:focus {\n border-color: var(--color-red-500);\n }\n }\n .focus\\:border-transparent {\n &:focus {\n border-color: transparent;\n }\n }\n .focus\\:bg-accent {\n &:focus {\n background-color: var(--color-accent);\n }\n }\n .focus\\:bg-card {\n &:focus {\n background-color: var(--color-card);\n }\n }\n .focus\\:text-accent-foreground {\n &:focus {\n color: var(--color-accent-foreground);\n }\n }\n .focus\\:text-destructive {\n &:focus {\n color: var(--color-destructive);\n }\n }\n .focus\\:opacity-100 {\n &:focus {\n opacity: 100%;\n }\n }\n .focus\\:ring-0 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-1 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:\\[box-shadow\\:none\\] {\n &:focus {\n box-shadow: none;\n }\n }\n .focus\\:ring-accent {\n &:focus {\n --tw-ring-color: var(--color-accent);\n }\n }\n .focus\\:ring-accent\\/30 {\n &:focus {\n --tw-ring-color: color-mix(in srgb, #f4f4f5 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-accent) 30%, transparent);\n }\n }\n }\n .focus\\:ring-accent\\/40 {\n &:focus {\n --tw-ring-color: color-mix(in srgb, #f4f4f5 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n }\n .focus\\:ring-black {\n &:focus {\n --tw-ring-color: var(--color-black);\n }\n }\n .focus\\:ring-blue-500 {\n &:focus {\n --tw-ring-color: var(--color-blue-500);\n }\n }\n .focus\\:ring-blue-600 {\n &:focus {\n --tw-ring-color: var(--color-blue-600);\n }\n }\n .focus\\:ring-destructive {\n &:focus {\n --tw-ring-color: var(--color-destructive);\n }\n }\n .focus\\:ring-gray-500 {\n &:focus {\n --tw-ring-color: var(--color-gray-500);\n }\n }\n .focus\\:ring-primary {\n &:focus {\n --tw-ring-color: var(--color-primary);\n }\n }\n .focus\\:ring-purple-500 {\n &:focus {\n --tw-ring-color: var(--color-purple-500);\n }\n }\n .focus\\:ring-white\\/50 {\n &:focus {\n --tw-ring-color: color-mix(in srgb, #fff 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-white) 50%, transparent);\n }\n }\n }\n .focus\\:ring-offset-0 {\n &:focus {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:ring-offset-2 {\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:outline-2 {\n &:focus {\n outline-style: var(--tw-outline-style);\n outline-width: 2px;\n }\n }\n .focus\\:-outline-offset-2 {\n &:focus {\n outline-offset: calc(2px * -1);\n }\n }\n .focus\\:outline-offset-0 {\n &:focus {\n outline-offset: 0px;\n }\n }\n .focus\\:outline-blue-600 {\n &:focus {\n outline-color: var(--color-blue-600);\n }\n }\n .focus\\:outline-red-600 {\n &:focus {\n outline-color: var(--color-red-600);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .focus-visible\\:z-10 {\n &:focus-visible {\n z-index: 10;\n }\n }\n .focus-visible\\:border-\\[\\#2563eb\\] {\n &:focus-visible {\n border-color: #2563eb;\n }\n }\n .focus-visible\\:border-blue-600 {\n &:focus-visible {\n border-color: var(--color-blue-600);\n }\n }\n .focus-visible\\:border-indigo-300 {\n &:focus-visible {\n border-color: var(--color-indigo-300);\n }\n }\n .focus-visible\\:border-indigo-500 {\n &:focus-visible {\n border-color: var(--color-indigo-500);\n }\n }\n .focus-visible\\:border-red-300 {\n &:focus-visible {\n border-color: var(--color-red-300);\n }\n }\n .focus-visible\\:bg-white {\n &:focus-visible {\n background-color: var(--color-white);\n }\n }\n .focus-visible\\:opacity-100 {\n &:focus-visible {\n opacity: 100%;\n }\n }\n .focus-visible\\:ring-0 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-1 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:\\[box-shadow\\:none\\] {\n &:focus-visible {\n box-shadow: none;\n }\n }\n .focus-visible\\:ring-accent\\/40 {\n &:focus-visible {\n --tw-ring-color: color-mix(in srgb, #f4f4f5 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n }\n .focus-visible\\:ring-border {\n &:focus-visible {\n --tw-ring-color: var(--color-border);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: color-mix(in srgb, #dc2626 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n }\n .focus-visible\\:ring-indigo-500\\/\\[0\\.06\\] {\n &:focus-visible {\n --tw-ring-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 6%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-indigo-500) 6%, transparent);\n }\n }\n }\n .focus-visible\\:ring-neutral-300 {\n &:focus-visible {\n --tw-ring-color: var(--color-neutral-300);\n }\n }\n .focus-visible\\:ring-red-300 {\n &:focus-visible {\n --tw-ring-color: var(--color-red-300);\n }\n }\n .focus-visible\\:ring-sidebar-ring {\n &:focus-visible {\n --tw-ring-color: var(--color-sidebar-ring);\n }\n }\n .focus-visible\\:ring-offset-0 {\n &:focus-visible {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus-visible\\:ring-offset-2 {\n &:focus-visible {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus-visible\\:outline {\n &:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n }\n .focus-visible\\:outline-2 {\n &:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 2px;\n }\n }\n .focus-visible\\:outline-offset-2 {\n &:focus-visible {\n outline-offset: 2px;\n }\n }\n .focus-visible\\:outline-blue-600 {\n &:focus-visible {\n outline-color: var(--color-blue-600);\n }\n }\n .focus-visible\\:outline-none {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .focus-visible\\:ring-inset {\n &:focus-visible {\n --tw-ring-inset: inset;\n }\n }\n .active\\:bg-accent\\/80 {\n &:active {\n background-color: color-mix(in srgb, #f4f4f5 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 80%, transparent);\n }\n }\n }\n .active\\:bg-gray-100 {\n &:active {\n background-color: var(--color-gray-100);\n }\n }\n .active\\:bg-gray-200 {\n &:active {\n background-color: var(--color-gray-200);\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:cursor-default {\n &:disabled {\n cursor: default;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:bg-gray-50 {\n &:disabled {\n background-color: var(--color-gray-50);\n }\n }\n .disabled\\:text-gray-500 {\n &:disabled {\n color: var(--color-gray-500);\n }\n }\n .disabled\\:opacity-30 {\n &:disabled {\n opacity: 30%;\n }\n }\n .disabled\\:opacity-40 {\n &:disabled {\n opacity: 40%;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .disabled\\:opacity-60 {\n &:disabled {\n opacity: 60%;\n }\n }\n .disabled\\:opacity-100 {\n &:disabled {\n opacity: 100%;\n }\n }\n .disabled\\:outline-gray-200 {\n &:disabled {\n outline-color: var(--color-gray-200);\n }\n }\n .in-data-\\[side\\=left\\]\\:cursor-w-resize {\n :where(*[data-side=\"left\"]) & {\n cursor: w-resize;\n }\n }\n .in-data-\\[side\\=right\\]\\:cursor-e-resize {\n :where(*[data-side=\"right\"]) & {\n cursor: e-resize;\n }\n }\n .has-data-\\[slot\\=card-action\\]\\:grid-cols-\\[1fr_auto\\] {\n &:has(*[data-slot=\"card-action\"]) {\n grid-template-columns: 1fr auto;\n }\n }\n .has-\\[\\[aria-checked\\=true\\]\\]\\:border-blue-600 {\n &:has(*:is([aria-checked=true])) {\n border-color: var(--color-blue-600);\n }\n }\n .has-\\[\\[aria-checked\\=true\\]\\]\\:bg-blue-50 {\n &:has(*:is([aria-checked=true])) {\n background-color: var(--color-blue-50);\n }\n }\n .has-\\[\\>svg\\]\\:px-0 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 0);\n }\n }\n .aria-disabled\\:pointer-events-none {\n &[aria-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .aria-disabled\\:opacity-50 {\n &[aria-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .aria-expanded\\:ring-2 {\n &[aria-expanded=\"true\"] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .aria-expanded\\:ring-muted-foreground {\n &[aria-expanded=\"true\"] {\n --tw-ring-color: var(--color-muted-foreground);\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--color-destructive);\n }\n }\n .aria-invalid\\:ring-3 {\n &[aria-invalid=\"true\"] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .aria-invalid\\:ring-\\[3px\\] {\n &[aria-invalid=\"true\"] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: color-mix(in srgb, #dc2626 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n }\n .aria-pressed\\:bg-muted {\n &[aria-pressed=\"true\"] {\n background-color: var(--color-muted);\n }\n }\n .data-\\[active\\=true\\]\\:font-medium {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .data-\\[checked\\]\\:bg-blue-600 {\n &[data-checked] {\n background-color: var(--color-blue-600);\n }\n }\n .data-\\[closed\\]\\:-translate-x-full {\n &[data-closed] {\n --tw-translate-x: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[closed\\]\\:translate-y-4 {\n &[data-closed] {\n --tw-translate-y: calc(var(--spacing) * 4);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[closed\\]\\:scale-95 {\n &[data-closed] {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n .data-\\[closed\\]\\:opacity-0 {\n &[data-closed] {\n opacity: 0%;\n }\n }\n .data-\\[disabled\\]\\:pointer-events-none {\n &[data-disabled] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\]\\:opacity-50 {\n &[data-disabled] {\n opacity: 50%;\n }\n }\n .data-\\[disabled\\=true\\]\\:pointer-events-none {\n &[data-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\=true\\]\\:cursor-not-allowed {\n &[data-disabled=\"true\"] {\n cursor: not-allowed;\n }\n }\n .data-\\[disabled\\=true\\]\\:opacity-50 {\n &[data-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .data-\\[enter\\]\\:duration-300 {\n &[data-enter] {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n }\n .data-\\[enter\\]\\:ease-out {\n &[data-enter] {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n }\n .data-\\[error\\=true\\]\\:text-destructive {\n &[data-error=\"true\"] {\n color: var(--color-destructive);\n }\n }\n .data-\\[highlighted\\]\\:bg-accent {\n &[data-highlighted] {\n background-color: var(--color-accent);\n }\n }\n .data-\\[leave\\]\\:duration-200 {\n &[data-leave] {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n }\n .data-\\[leave\\]\\:ease-in {\n &[data-leave] {\n --tw-ease: var(--ease-in);\n transition-timing-function: var(--ease-in);\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-px {\n &[data-orientation=\"horizontal\"] {\n height: 1px;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:w-full {\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:h-full {\n &[data-orientation=\"vertical\"] {\n height: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-px {\n &[data-orientation=\"vertical\"] {\n width: 1px;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:flex-col {\n &[data-orientation=\"vertical\"] {\n flex-direction: column;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:items-stretch {\n &[data-orientation=\"vertical\"] {\n align-items: stretch;\n }\n }\n .data-\\[placeholder\\]\\:text-muted-foreground {\n &[data-placeholder] {\n color: var(--color-muted-foreground);\n }\n }\n .data-\\[selected\\=true\\]\\:bg-muted {\n &[data-selected=\"true\"] {\n background-color: var(--color-muted);\n }\n }\n .data-\\[side\\=bottom\\]\\:translate-y-1 {\n &[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=left\\]\\:-translate-x-1 {\n &[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=right\\]\\:translate-x-1 {\n &[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=top\\]\\:-translate-y-1 {\n &[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[size\\=default\\]\\:h-\\[18\\.4px\\] {\n &[data-size=\"default\"] {\n height: 18.4px;\n }\n }\n .data-\\[size\\=default\\]\\:w-\\[32px\\] {\n &[data-size=\"default\"] {\n width: 32px;\n }\n }\n .data-\\[size\\=sm\\]\\:h-\\[14px\\] {\n &[data-size=\"sm\"] {\n height: 14px;\n }\n }\n .data-\\[size\\=sm\\]\\:w-\\[24px\\] {\n &[data-size=\"sm\"] {\n width: 24px;\n }\n }\n .data-\\[size\\=sm\\]\\:rounded-\\[min\\(var\\(--radius-md\\)\\,10px\\)\\] {\n &[data-size=\"sm\"] {\n border-radius: min(var(--radius-md), 10px);\n }\n }\n .group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:first\\:rounded-l-lg {\n &:is(:where(.group\\/toggle-group)[data-horizontal] *) {\n &[data-spacing=\"0\"] {\n &:first-child {\n border-top-left-radius: var(--radius-lg);\n border-bottom-left-radius: var(--radius-lg);\n }\n }\n }\n }\n .group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:first\\:rounded-t-lg {\n &:is(:where(.group\\/toggle-group)[data-vertical] *) {\n &[data-spacing=\"0\"] {\n &:first-child {\n border-top-left-radius: var(--radius-lg);\n border-top-right-radius: var(--radius-lg);\n }\n }\n }\n }\n .group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:last\\:rounded-r-lg {\n &:is(:where(.group\\/toggle-group)[data-horizontal] *) {\n &[data-spacing=\"0\"] {\n &:last-child {\n border-top-right-radius: var(--radius-lg);\n border-bottom-right-radius: var(--radius-lg);\n }\n }\n }\n }\n .group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:last\\:rounded-b-lg {\n &:is(:where(.group\\/toggle-group)[data-vertical] *) {\n &[data-spacing=\"0\"] {\n &:last-child {\n border-bottom-right-radius: var(--radius-lg);\n border-bottom-left-radius: var(--radius-lg);\n }\n }\n }\n }\n .data-\\[state\\=active\\]\\:border-slate-900 {\n &[data-state=\"active\"] {\n border-color: var(--color-slate-900);\n }\n }\n .data-\\[state\\=active\\]\\:border-b-primary {\n &[data-state=\"active\"] {\n border-bottom-color: var(--color-primary);\n }\n }\n .data-\\[state\\=active\\]\\:bg-\\[\\#6366f1\\] {\n &[data-state=\"active\"] {\n background-color: #6366f1;\n }\n }\n .data-\\[state\\=active\\]\\:bg-\\[var\\(--base-accent\\,\\#F4F4F5\\)\\] {\n &[data-state=\"active\"] {\n background-color: var(--base-accent,#F4F4F5);\n }\n }\n .data-\\[state\\=active\\]\\:bg-background {\n &[data-state=\"active\"] {\n background-color: var(--color-background);\n }\n }\n .data-\\[state\\=active\\]\\:bg-slate-900 {\n &[data-state=\"active\"] {\n background-color: var(--color-slate-900);\n }\n }\n .data-\\[state\\=active\\]\\:text-\\[var\\(--tab-active-color\\)\\] {\n &[data-state=\"active\"] {\n color: var(--tab-active-color);\n }\n }\n .data-\\[state\\=active\\]\\:text-white {\n &[data-state=\"active\"] {\n color: var(--color-white);\n }\n }\n .data-\\[state\\=active\\]\\:shadow-none {\n &[data-state=\"active\"] {\n --tw-shadow: 0 0 #0000;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[state\\=active\\]\\:shadow-sm {\n &[data-state=\"active\"] {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[state\\=active\\]\\:after\\:scale-x-100 {\n &[data-state=\"active\"] {\n &::after {\n content: var(--tw-content);\n --tw-scale-x: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .data-\\[state\\=checked\\]\\:translate-x-\\[72px\\] {\n &[data-state=\"checked\"] {\n --tw-translate-x: 72px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=checked\\]\\:translate-x-\\[var\\(--sw-on\\)\\] {\n &[data-state=\"checked\"] {\n --tw-translate-x: var(--sw-on);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=checked\\]\\:border-black {\n &[data-state=\"checked\"] {\n border-color: var(--color-black);\n }\n }\n .data-\\[state\\=checked\\]\\:border-blue-600 {\n &[data-state=\"checked\"] {\n border-color: var(--color-blue-600);\n }\n }\n .data-\\[state\\=checked\\]\\:border-primary {\n &[data-state=\"checked\"] {\n border-color: var(--color-primary);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-black {\n &[data-state=\"checked\"] {\n background-color: var(--color-black);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-blue-600 {\n &[data-state=\"checked\"] {\n background-color: var(--color-blue-600);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-primary {\n &[data-state=\"checked\"] {\n background-color: var(--color-primary);\n }\n }\n .data-\\[state\\=checked\\]\\:text-primary-foreground {\n &[data-state=\"checked\"] {\n color: var(--color-primary-foreground);\n }\n }\n .data-\\[state\\=checked\\]\\:text-white {\n &[data-state=\"checked\"] {\n color: var(--color-white);\n }\n }\n .data-\\[state\\=checked\\]\\:\\[background\\:var\\(--switch-checked-bg\\)\\] {\n &[data-state=\"checked\"] {\n background: var(--switch-checked-bg);\n }\n }\n .group-data-\\[size\\=default\\]\\/switch\\:data-\\[state\\=checked\\]\\:translate-x-\\[calc\\(100\\%-2px\\)\\] {\n &:is(:where(.group\\/switch)[data-size=\"default\"] *) {\n &[data-state=\"checked\"] {\n --tw-translate-x: calc(100% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-data-\\[size\\=sm\\]\\/switch\\:data-\\[state\\=checked\\]\\:translate-x-\\[calc\\(100\\%-2px\\)\\] {\n &:is(:where(.group\\/switch)[data-size=\"sm\"] *) {\n &[data-state=\"checked\"] {\n --tw-translate-x: calc(100% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[state\\=closed\\]\\:duration-300 {\n &[data-state=\"closed\"] {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n }\n .data-\\[state\\=inactive\\]\\:hidden {\n &[data-state=\"inactive\"] {\n display: none;\n }\n }\n .data-\\[state\\=on\\]\\:bg-muted {\n &[data-state=\"on\"] {\n background-color: var(--color-muted);\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent {\n &[data-state=\"open\"] {\n background-color: var(--color-accent);\n }\n }\n .data-\\[state\\=open\\]\\:bg-secondary {\n &[data-state=\"open\"] {\n background-color: var(--color-secondary);\n }\n }\n .data-\\[state\\=open\\]\\:text-muted-foreground {\n &[data-state=\"open\"] {\n color: var(--color-muted-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:opacity-100 {\n &[data-state=\"open\"] {\n opacity: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:duration-500 {\n &[data-state=\"open\"] {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n }\n .data-\\[state\\=selected\\]\\:bg-muted {\n &[data-state=\"selected\"] {\n background-color: var(--color-muted);\n }\n }\n .data-\\[state\\=unchecked\\]\\:translate-x-\\[4px\\] {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: 4px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=unchecked\\]\\:translate-x-\\[var\\(--sw-off\\)\\] {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: var(--sw-off);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=unchecked\\]\\:bg-input {\n &[data-state=\"unchecked\"] {\n background-color: var(--color-input);\n }\n }\n .group-data-\\[size\\=default\\]\\/switch\\:data-\\[state\\=unchecked\\]\\:translate-x-0 {\n &:is(:where(.group\\/switch)[data-size=\"default\"] *) {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-data-\\[size\\=sm\\]\\/switch\\:data-\\[state\\=unchecked\\]\\:translate-x-0 {\n &:is(:where(.group\\/switch)[data-size=\"sm\"] *) {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:border-l-0 {\n &:is(:where(.group\\/toggle-group)[data-horizontal] *) {\n &[data-spacing=\"0\"] {\n &[data-variant=\"outline\"] {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n }\n }\n .group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:border-t-0 {\n &:is(:where(.group\\/toggle-group)[data-vertical] *) {\n &[data-spacing=\"0\"] {\n &[data-variant=\"outline\"] {\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n }\n }\n }\n .group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:first\\:border-l {\n &:is(:where(.group\\/toggle-group)[data-horizontal] *) {\n &[data-spacing=\"0\"] {\n &[data-variant=\"outline\"] {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n }\n }\n }\n .group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:first\\:border-t {\n &:is(:where(.group\\/toggle-group)[data-vertical] *) {\n &[data-spacing=\"0\"] {\n &[data-variant=\"outline\"] {\n &:first-child {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n }\n }\n }\n }\n .supports-\\[backdrop-filter\\]\\:bg-background\\/80 {\n @supports (backdrop-filter: var(--tw)) {\n background-color: color-mix(in srgb, #ffffff 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-background) 80%, transparent);\n }\n }\n }\n .motion-safe\\:transition-\\[width\\] {\n @media (prefers-reduced-motion: no-preference) {\n transition-property: width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n .motion-safe\\:duration-1000 {\n @media (prefers-reduced-motion: no-preference) {\n --tw-duration: 1000ms;\n transition-duration: 1000ms;\n }\n }\n .motion-safe\\:ease-linear {\n @media (prefers-reduced-motion: no-preference) {\n --tw-ease: linear;\n transition-timing-function: linear;\n }\n }\n .motion-reduce\\:transition-none {\n @media (prefers-reduced-motion: reduce) {\n transition-property: none;\n }\n }\n .max-\\[860px\\]\\:gap-\\[6px\\] {\n @media (width < 860px) {\n gap: 6px;\n }\n }\n .max-\\[860px\\]\\:p-\\[6px\\] {\n @media (width < 860px) {\n padding: 6px;\n }\n }\n .max-\\[800px\\]\\:flex-col {\n @media (width < 800px) {\n flex-direction: column;\n }\n }\n .max-\\[750px\\]\\:col-start-1 {\n @media (width < 750px) {\n grid-column-start: 1;\n }\n }\n .max-\\[750px\\]\\:col-end-1 {\n @media (width < 750px) {\n grid-column-end: 1;\n }\n }\n .max-\\[750px\\]\\:grid-cols-1 {\n @media (width < 750px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n .max-\\[750px\\]\\:flex-col {\n @media (width < 750px) {\n flex-direction: column;\n }\n }\n .max-\\[750px\\]\\:gap-0 {\n @media (width < 750px) {\n gap: calc(var(--spacing) * 0);\n }\n }\n .max-md\\:flex-wrap {\n @media (width < 48rem) {\n flex-wrap: wrap;\n }\n }\n .max-sm\\:mt-2 {\n @media (width < 40rem) {\n margin-top: calc(var(--spacing) * 2);\n }\n }\n .min-\\[861px\\]\\:col-span-2 {\n @media (width >= 861px) {\n grid-column: span 2 / span 2;\n }\n }\n .min-\\[861px\\]\\:mx-0 {\n @media (width >= 861px) {\n margin-inline: calc(var(--spacing) * 0);\n }\n }\n .min-\\[861px\\]\\:basis-\\[42\\%\\] {\n @media (width >= 861px) {\n flex-basis: 42%;\n }\n }\n .min-\\[861px\\]\\:grid-cols-2 {\n @media (width >= 861px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .min-\\[861px\\]\\:grid-cols-3 {\n @media (width >= 861px) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .min-\\[861px\\]\\:grid-cols-4 {\n @media (width >= 861px) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .min-\\[861px\\]\\:flex-row {\n @media (width >= 861px) {\n flex-direction: row;\n }\n }\n .min-\\[861px\\]\\:items-center {\n @media (width >= 861px) {\n align-items: center;\n }\n }\n .min-\\[1101px\\]\\:grid-cols-3 {\n @media (width >= 1101px) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .min-\\[1101px\\]\\:grid-cols-5 {\n @media (width >= 1101px) {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n }\n .min-\\[1101px\\]\\:grid-cols-6 {\n @media (width >= 1101px) {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n }\n .sm\\:col-span-2 {\n @media (width >= 40rem) {\n grid-column: span 2 / span 2;\n }\n }\n .sm\\:col-span-3 {\n @media (width >= 40rem) {\n grid-column: span 3 / span 3;\n }\n }\n .sm\\:-mx-6 {\n @media (width >= 40rem) {\n margin-inline: calc(var(--spacing) * -6);\n }\n }\n .sm\\:my-8 {\n @media (width >= 40rem) {\n margin-block: calc(var(--spacing) * 8);\n }\n }\n .sm\\:mt-0 {\n @media (width >= 40rem) {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .sm\\:mt-10 {\n @media (width >= 40rem) {\n margin-top: calc(var(--spacing) * 10);\n }\n }\n .sm\\:mb-1 {\n @media (width >= 40rem) {\n margin-bottom: calc(var(--spacing) * 1);\n }\n }\n .sm\\:ml-2 {\n @media (width >= 40rem) {\n margin-left: calc(var(--spacing) * 2);\n }\n }\n .sm\\:ml-4 {\n @media (width >= 40rem) {\n margin-left: calc(var(--spacing) * 4);\n }\n }\n .sm\\:block {\n @media (width >= 40rem) {\n display: block;\n }\n }\n .sm\\:flex {\n @media (width >= 40rem) {\n display: flex;\n }\n }\n .sm\\:grid {\n @media (width >= 40rem) {\n display: grid;\n }\n }\n .sm\\:hidden {\n @media (width >= 40rem) {\n display: none;\n }\n }\n .sm\\:size-4 {\n @media (width >= 40rem) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .sm\\:w-1\\/2 {\n @media (width >= 40rem) {\n width: calc(1/2 * 100%);\n }\n }\n .sm\\:w-auto {\n @media (width >= 40rem) {\n width: auto;\n }\n }\n .sm\\:w-full {\n @media (width >= 40rem) {\n width: 100%;\n }\n }\n .sm\\:max-w-1\\/2 {\n @media (width >= 40rem) {\n max-width: calc(1/2 * 100%);\n }\n }\n .sm\\:max-w-2xl {\n @media (width >= 40rem) {\n max-width: var(--container-2xl);\n }\n }\n .sm\\:max-w-3xl {\n @media (width >= 40rem) {\n max-width: var(--container-3xl);\n }\n }\n .sm\\:max-w-3xl\\! {\n @media (width >= 40rem) {\n max-width: var(--container-3xl) !important;\n }\n }\n .sm\\:max-w-6xl {\n @media (width >= 40rem) {\n max-width: var(--container-6xl);\n }\n }\n .sm\\:max-w-\\[420px\\] {\n @media (width >= 40rem) {\n max-width: 420px;\n }\n }\n .sm\\:max-w-\\[425px\\] {\n @media (width >= 40rem) {\n max-width: 425px;\n }\n }\n .sm\\:max-w-\\[440px\\] {\n @media (width >= 40rem) {\n max-width: 440px;\n }\n }\n .sm\\:max-w-\\[480px\\] {\n @media (width >= 40rem) {\n max-width: 480px;\n }\n }\n .sm\\:max-w-\\[520px\\] {\n @media (width >= 40rem) {\n max-width: 520px;\n }\n }\n .sm\\:max-w-\\[540px\\] {\n @media (width >= 40rem) {\n max-width: 540px;\n }\n }\n .sm\\:max-w-\\[560px\\] {\n @media (width >= 40rem) {\n max-width: 560px;\n }\n }\n .sm\\:max-w-\\[600px\\] {\n @media (width >= 40rem) {\n max-width: 600px;\n }\n }\n .sm\\:max-w-\\[860px\\] {\n @media (width >= 40rem) {\n max-width: 860px;\n }\n }\n .sm\\:max-w-\\[950px\\] {\n @media (width >= 40rem) {\n max-width: 950px;\n }\n }\n .sm\\:max-w-lg {\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n }\n .sm\\:max-w-md {\n @media (width >= 40rem) {\n max-width: var(--container-md);\n }\n }\n .sm\\:max-w-none {\n @media (width >= 40rem) {\n max-width: none;\n }\n }\n .sm\\:max-w-sm {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n .sm\\:max-w-xl {\n @media (width >= 40rem) {\n max-width: var(--container-xl);\n }\n }\n .sm\\:grid-cols-2 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .sm\\:grid-cols-3 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .sm\\:grid-cols-4 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .sm\\:grid-cols-5 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n }\n .sm\\:grid-cols-6 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:flex-row-reverse {\n @media (width >= 40rem) {\n flex-direction: row-reverse;\n }\n }\n .sm\\:items-center {\n @media (width >= 40rem) {\n align-items: center;\n }\n }\n .sm\\:\\!justify-start {\n @media (width >= 40rem) {\n justify-content: flex-start !important;\n }\n }\n .sm\\:justify-between {\n @media (width >= 40rem) {\n justify-content: space-between;\n }\n }\n .sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n .sm\\:justify-start {\n @media (width >= 40rem) {\n justify-content: flex-start;\n }\n }\n .sm\\:gap-2\\.5 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:gap-3 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 3);\n }\n }\n .sm\\:gap-4 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 4);\n }\n }\n .sm\\:gap-5 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 5);\n }\n }\n .sm\\:gap-6 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 6);\n }\n }\n .sm\\:truncate {\n @media (width >= 40rem) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n .sm\\:rounded-lg {\n @media (width >= 40rem) {\n border-radius: var(--radius-lg);\n }\n }\n .sm\\:border-t-0 {\n @media (width >= 40rem) {\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n }\n .sm\\:border-l {\n @media (width >= 40rem) {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .sm\\:p-0 {\n @media (width >= 40rem) {\n padding: calc(var(--spacing) * 0);\n }\n }\n .sm\\:p-4 {\n @media (width >= 40rem) {\n padding: calc(var(--spacing) * 4);\n }\n }\n .sm\\:p-6 {\n @media (width >= 40rem) {\n padding: calc(var(--spacing) * 6);\n }\n }\n .sm\\:p-8 {\n @media (width >= 40rem) {\n padding: calc(var(--spacing) * 8);\n }\n }\n .sm\\:px-0 {\n @media (width >= 40rem) {\n padding-inline: calc(var(--spacing) * 0);\n }\n }\n .sm\\:px-6 {\n @media (width >= 40rem) {\n padding-inline: calc(var(--spacing) * 6);\n }\n }\n .sm\\:px-8 {\n @media (width >= 40rem) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n .sm\\:py-4 {\n @media (width >= 40rem) {\n padding-block: calc(var(--spacing) * 4);\n }\n }\n .sm\\:py-5 {\n @media (width >= 40rem) {\n padding-block: calc(var(--spacing) * 5);\n }\n }\n .sm\\:py-32 {\n @media (width >= 40rem) {\n padding-block: calc(var(--spacing) * 32);\n }\n }\n .sm\\:pt-8 {\n @media (width >= 40rem) {\n padding-top: calc(var(--spacing) * 8);\n }\n }\n .sm\\:pr-0 {\n @media (width >= 40rem) {\n padding-right: calc(var(--spacing) * 0);\n }\n }\n .sm\\:pr-8 {\n @media (width >= 40rem) {\n padding-right: calc(var(--spacing) * 8);\n }\n }\n .sm\\:pl-0 {\n @media (width >= 40rem) {\n padding-left: calc(var(--spacing) * 0);\n }\n }\n .sm\\:text-left {\n @media (width >= 40rem) {\n text-align: left;\n }\n }\n .sm\\:text-2xl {\n @media (width >= 40rem) {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n }\n .sm\\:text-4xl {\n @media (width >= 40rem) {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n }\n .sm\\:text-5xl {\n @media (width >= 40rem) {\n font-size: var(--text-5xl);\n line-height: var(--tw-leading, var(--text-5xl--line-height));\n }\n }\n .sm\\:text-7xl {\n @media (width >= 40rem) {\n font-size: var(--text-7xl);\n line-height: var(--tw-leading, var(--text-7xl--line-height));\n }\n }\n .sm\\:text-sm\\/6 {\n @media (width >= 40rem) {\n font-size: var(--text-sm);\n line-height: calc(var(--spacing) * 6);\n }\n }\n .sm\\:text-xl {\n @media (width >= 40rem) {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n }\n .sm\\:text-xl\\/8 {\n @media (width >= 40rem) {\n font-size: var(--text-xl);\n line-height: calc(var(--spacing) * 8);\n }\n }\n .sm\\:tracking-tight {\n @media (width >= 40rem) {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n }\n .data-\\[closed\\]\\:sm\\:translate-y-0 {\n &[data-closed] {\n @media (width >= 40rem) {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[closed\\]\\:sm\\:scale-95 {\n &[data-closed] {\n @media (width >= 40rem) {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .md\\:static {\n @media (width >= 48rem) {\n position: static;\n }\n }\n .md\\:col-span-2 {\n @media (width >= 48rem) {\n grid-column: span 2 / span 2;\n }\n }\n .md\\:mt-0 {\n @media (width >= 48rem) {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .md\\:block {\n @media (width >= 48rem) {\n display: block;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:hidden {\n @media (width >= 48rem) {\n display: none;\n }\n }\n .md\\:w-\\[125px\\] {\n @media (width >= 48rem) {\n width: 125px;\n }\n }\n .md\\:w-auto {\n @media (width >= 48rem) {\n width: auto;\n }\n }\n .md\\:flex-1 {\n @media (width >= 48rem) {\n flex: 1;\n }\n }\n .md\\:flex-\\[1\\.15\\] {\n @media (width >= 48rem) {\n flex: 1.15;\n }\n }\n .md\\:translate-x-0 {\n @media (width >= 48rem) {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .md\\:grid-cols-1 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-4 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-\\[1fr_1\\.2fr\\] {\n @media (width >= 48rem) {\n grid-template-columns: 1fr 1.2fr;\n }\n }\n .md\\:grid-cols-\\[220px_1fr\\] {\n @media (width >= 48rem) {\n grid-template-columns: 220px 1fr;\n }\n }\n .md\\:grid-cols-\\[minmax\\(0\\,1fr\\)_280px\\] {\n @media (width >= 48rem) {\n grid-template-columns: minmax(0,1fr) 280px;\n }\n }\n .md\\:flex-row {\n @media (width >= 48rem) {\n flex-direction: row;\n }\n }\n .md\\:items-center {\n @media (width >= 48rem) {\n align-items: center;\n }\n }\n .md\\:justify-between {\n @media (width >= 48rem) {\n justify-content: space-between;\n }\n }\n .md\\:gap-2 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 2);\n }\n }\n .md\\:gap-4 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 4);\n }\n }\n .md\\:rounded-full {\n @media (width >= 48rem) {\n border-radius: calc(infinity * 1px);\n }\n }\n .md\\:border-r {\n @media (width >= 48rem) {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .md\\:border-b-0 {\n @media (width >= 48rem) {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .md\\:px-3 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .md\\:py-1 {\n @media (width >= 48rem) {\n padding-block: calc(var(--spacing) * 1);\n }\n }\n .md\\:py-16 {\n @media (width >= 48rem) {\n padding-block: calc(var(--spacing) * 16);\n }\n }\n .md\\:py-28 {\n @media (width >= 48rem) {\n padding-block: calc(var(--spacing) * 28);\n }\n }\n .md\\:pt-4 {\n @media (width >= 48rem) {\n padding-top: calc(var(--spacing) * 4);\n }\n }\n .md\\:text-6xl {\n @media (width >= 48rem) {\n font-size: var(--text-6xl);\n line-height: var(--tw-leading, var(--text-6xl--line-height));\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .md\\:leading-normal {\n @media (width >= 48rem) {\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n }\n }\n .md\\:opacity-0 {\n @media (width >= 48rem) {\n opacity: 0%;\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:m-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin: calc(var(--spacing) * 2);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:ml-0 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin-left: calc(var(--spacing) * 0);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:rounded-xl {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n border-radius: var(--radius-xl);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:shadow-sm {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:peer-data-\\[state\\=collapsed\\]\\:ml-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n &:is(:where(.peer)[data-state=\"collapsed\"] ~ *) {\n margin-left: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .md\\:after\\:hidden {\n @media (width >= 48rem) {\n &::after {\n content: var(--tw-content);\n display: none;\n }\n }\n }\n .lg\\:fixed {\n @media (width >= 64rem) {\n position: fixed;\n }\n }\n .lg\\:sticky {\n @media (width >= 64rem) {\n position: sticky;\n }\n }\n .lg\\:inset-y-0 {\n @media (width >= 64rem) {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .lg\\:top-6 {\n @media (width >= 64rem) {\n top: calc(var(--spacing) * 6);\n }\n }\n .lg\\:z-50 {\n @media (width >= 64rem) {\n z-index: 50;\n }\n }\n .lg\\:col-span-1 {\n @media (width >= 64rem) {\n grid-column: span 1 / span 1;\n }\n }\n .lg\\:col-span-2 {\n @media (width >= 64rem) {\n grid-column: span 2 / span 2;\n }\n }\n .lg\\:-mx-8 {\n @media (width >= 64rem) {\n margin-inline: calc(var(--spacing) * -8);\n }\n }\n .lg\\:block {\n @media (width >= 64rem) {\n display: block;\n }\n }\n .lg\\:flex {\n @media (width >= 64rem) {\n display: flex;\n }\n }\n .lg\\:grid {\n @media (width >= 64rem) {\n display: grid;\n }\n }\n .lg\\:hidden {\n @media (width >= 64rem) {\n display: none;\n }\n }\n .lg\\:h-\\[75vh\\] {\n @media (width >= 64rem) {\n height: 75vh;\n }\n }\n .lg\\:w-72 {\n @media (width >= 64rem) {\n width: calc(var(--spacing) * 72);\n }\n }\n .lg\\:w-full {\n @media (width >= 64rem) {\n width: 100%;\n }\n }\n .lg\\:flex-\\[0_0_35\\%\\] {\n @media (width >= 64rem) {\n flex: 0 0 35%;\n }\n }\n .lg\\:flex-\\[0_0_65\\%\\] {\n @media (width >= 64rem) {\n flex: 0 0 65%;\n }\n }\n .lg\\:grid-cols-2 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-4 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-5 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-6 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-\\[1fr_420px\\] {\n @media (width >= 64rem) {\n grid-template-columns: 1fr 420px;\n }\n }\n .lg\\:grid-cols-\\[2fr_1fr\\] {\n @media (width >= 64rem) {\n grid-template-columns: 2fr 1fr;\n }\n }\n .lg\\:flex-col {\n @media (width >= 64rem) {\n flex-direction: column;\n }\n }\n .lg\\:flex-row {\n @media (width >= 64rem) {\n flex-direction: row;\n }\n }\n .lg\\:items-start {\n @media (width >= 64rem) {\n align-items: flex-start;\n }\n }\n .lg\\:items-stretch {\n @media (width >= 64rem) {\n align-items: stretch;\n }\n }\n .lg\\:justify-between {\n @media (width >= 64rem) {\n justify-content: space-between;\n }\n }\n .lg\\:justify-end {\n @media (width >= 64rem) {\n justify-content: flex-end;\n }\n }\n .lg\\:gap-8 {\n @media (width >= 64rem) {\n gap: calc(var(--spacing) * 8);\n }\n }\n .lg\\:self-start {\n @media (width >= 64rem) {\n align-self: flex-start;\n }\n }\n .lg\\:border-r {\n @media (width >= 64rem) {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .lg\\:p-8 {\n @media (width >= 64rem) {\n padding: calc(var(--spacing) * 8);\n }\n }\n .lg\\:px-6 {\n @media (width >= 64rem) {\n padding-inline: calc(var(--spacing) * 6);\n }\n }\n .lg\\:px-8 {\n @media (width >= 64rem) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n .lg\\:py-5 {\n @media (width >= 64rem) {\n padding-block: calc(var(--spacing) * 5);\n }\n }\n .lg\\:pt-8 {\n @media (width >= 64rem) {\n padding-top: calc(var(--spacing) * 8);\n }\n }\n .lg\\:pl-72 {\n @media (width >= 64rem) {\n padding-left: calc(var(--spacing) * 72);\n }\n }\n .xl\\:sticky {\n @media (width >= 80rem) {\n position: sticky;\n }\n }\n .xl\\:top-0 {\n @media (width >= 80rem) {\n top: calc(var(--spacing) * 0);\n }\n }\n .xl\\:grid-cols-4 {\n @media (width >= 80rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .xl\\:grid-cols-\\[250px_minmax\\(0\\,1fr\\)_236px\\] {\n @media (width >= 80rem) {\n grid-template-columns: 250px minmax(0,1fr) 236px;\n }\n }\n .xl\\:grid-cols-\\[760px_280px\\] {\n @media (width >= 80rem) {\n grid-template-columns: 760px 280px;\n }\n }\n .xl\\:gap-x-8 {\n @media (width >= 80rem) {\n column-gap: calc(var(--spacing) * 8);\n }\n }\n .\\32 xl\\:grid-cols-3 {\n @media (width >= 96rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .\\@max-md\\:hidden {\n @container (width < 28rem) {\n display: none;\n }\n }\n .\\@max-md\\:grid-cols-1 {\n @container (width < 28rem) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n .\\@min-\\[460px\\]\\/strip\\:grid-cols-2 {\n @container strip (width >= 460px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .\\@min-\\[640px\\]\\:px-8 {\n @container (width >= 640px) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n .\\@min-\\[640px\\]\\:pb-3 {\n @container (width >= 640px) {\n padding-bottom: calc(var(--spacing) * 3);\n }\n }\n .\\@min-\\[760px\\]\\/strip\\:grid-cols-3 {\n @container strip (width >= 760px) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .\\@min-\\[1200px\\]\\/strip\\:grid-cols-6 {\n @container strip (width >= 1200px) {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n }\n .dark\\:block {\n @media (prefers-color-scheme: dark) {\n display: block;\n }\n }\n .dark\\:hidden {\n @media (prefers-color-scheme: dark) {\n display: none;\n }\n }\n .dark\\:border-amber-800 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-amber-800);\n }\n }\n .dark\\:border-amber-900 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-amber-900);\n }\n }\n .dark\\:border-blue-900 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-blue-900);\n }\n }\n .dark\\:border-emerald-900 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-emerald-900);\n }\n }\n .dark\\:border-gray-500 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-gray-500);\n }\n }\n .dark\\:border-green-900 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-green-900);\n }\n }\n .dark\\:border-input {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-input);\n }\n }\n .dark\\:border-purple-900 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-purple-900);\n }\n }\n .dark\\:border-slate-700 {\n @media (prefers-color-scheme: dark) {\n border-color: var(--color-slate-700);\n }\n }\n .dark\\:border-teal-400\\/25 {\n @media (prefers-color-scheme: dark) {\n border-color: color-mix(in srgb, oklch(77.7% 0.152 181.912) 25%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-teal-400) 25%, transparent);\n }\n }\n }\n .dark\\:bg-amber-950\\/40 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(27.9% 0.077 45.635) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-amber-950) 40%, transparent);\n }\n }\n }\n .dark\\:bg-amber-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(27.9% 0.077 45.635) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-amber-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-blue-950\\/20 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(28.2% 0.091 267.935) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-950) 20%, transparent);\n }\n }\n }\n .dark\\:bg-blue-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(28.2% 0.091 267.935) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-destructive\\/60 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, #dc2626 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 60%, transparent);\n }\n }\n }\n .dark\\:bg-emerald-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(26.2% 0.051 172.552) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-emerald-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-gray-100 {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-gray-100);\n }\n }\n .dark\\:bg-gray-500 {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-gray-500);\n }\n }\n .dark\\:bg-gray-600 {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-gray-600);\n }\n }\n .dark\\:bg-gray-700 {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-gray-700);\n }\n }\n .dark\\:bg-gray-900 {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-gray-900);\n }\n }\n .dark\\:bg-green-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(26.6% 0.065 152.934) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-green-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-input\\/30 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, #e4e4e7 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n }\n .dark\\:bg-orange-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(26.6% 0.079 36.259) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-orange-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-purple-950\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(29.1% 0.149 302.717) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-purple-950) 50%, transparent);\n }\n }\n }\n .dark\\:bg-slate-900\\/50 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(20.8% 0.042 265.755) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-slate-900) 50%, transparent);\n }\n }\n }\n .dark\\:bg-teal-950\\/30 {\n @media (prefers-color-scheme: dark) {\n background-color: color-mix(in srgb, oklch(27.7% 0.046 192.524) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-teal-950) 30%, transparent);\n }\n }\n }\n .dark\\:bg-white {\n @media (prefers-color-scheme: dark) {\n background-color: var(--color-white);\n }\n }\n .dark\\:p-\\[3px\\] {\n @media (prefers-color-scheme: dark) {\n padding: 3px;\n }\n }\n .dark\\:text-amber-200 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-amber-200);\n }\n }\n .dark\\:text-amber-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-amber-300);\n }\n }\n .dark\\:text-amber-400 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-amber-400);\n }\n }\n .dark\\:text-blue-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-blue-300);\n }\n }\n .dark\\:text-emerald-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-emerald-300);\n }\n }\n .dark\\:text-gray-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-gray-300);\n }\n }\n .dark\\:text-gray-600 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-gray-600);\n }\n }\n .dark\\:text-gray-900 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-gray-900);\n }\n }\n .dark\\:text-green-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-green-300);\n }\n }\n .dark\\:text-orange-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-orange-300);\n }\n }\n .dark\\:text-purple-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-purple-300);\n }\n }\n .dark\\:text-red-400 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-red-400);\n }\n }\n .dark\\:text-slate-300 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-slate-300);\n }\n }\n .dark\\:text-slate-400 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-slate-400);\n }\n }\n .dark\\:text-teal-100 {\n @media (prefers-color-scheme: dark) {\n color: var(--color-teal-100);\n }\n }\n .dark\\:text-teal-100\\/60 {\n @media (prefers-color-scheme: dark) {\n color: color-mix(in srgb, oklch(95.3% 0.051 180.801) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-100) 60%, transparent);\n }\n }\n }\n .dark\\:text-teal-100\\/70 {\n @media (prefers-color-scheme: dark) {\n color: color-mix(in srgb, oklch(95.3% 0.051 180.801) 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-100) 70%, transparent);\n }\n }\n }\n .dark\\:text-teal-100\\/80 {\n @media (prefers-color-scheme: dark) {\n color: color-mix(in srgb, oklch(95.3% 0.051 180.801) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-teal-100) 80%, transparent);\n }\n }\n }\n .dark\\:group-hover\\:border-gray-500 {\n @media (prefers-color-scheme: dark) {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n border-color: var(--color-gray-500);\n }\n }\n }\n }\n .dark\\:hover\\:border-gray-400 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-gray-400);\n }\n }\n }\n }\n .dark\\:hover\\:border-gray-500 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-gray-500);\n }\n }\n }\n }\n .dark\\:hover\\:border-red-900 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-red-900);\n }\n }\n }\n }\n .dark\\:hover\\:bg-accent\\/50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:bg-amber-900\\/50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(41.4% 0.112 45.904) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-amber-900) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:bg-gray-50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-50);\n }\n }\n }\n }\n .dark\\:hover\\:bg-gray-700 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-700);\n }\n }\n }\n }\n .dark\\:hover\\:bg-input\\/50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #e4e4e7 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:bg-red-950\\/50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(25.8% 0.092 26.042) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-red-950) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:text-red-400 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-400);\n }\n }\n }\n }\n .dark\\:hover\\:text-teal-50 {\n @media (prefers-color-scheme: dark) {\n &:hover {\n @media (hover: hover) {\n color: var(--color-teal-50);\n }\n }\n }\n }\n .dark\\:focus\\:border-gray-400 {\n @media (prefers-color-scheme: dark) {\n &:focus {\n border-color: var(--color-gray-400);\n }\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &:focus-visible {\n --tw-ring-color: color-mix(in srgb, #dc2626 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:disabled\\:bg-input\\/80 {\n @media (prefers-color-scheme: dark) {\n &:disabled {\n background-color: color-mix(in srgb, #e4e4e7 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 80%, transparent);\n }\n }\n }\n }\n .dark\\:has-\\[\\[aria-checked\\=true\\]\\]\\:border-blue-900 {\n @media (prefers-color-scheme: dark) {\n &:has(*:is([aria-checked=true])) {\n border-color: var(--color-blue-900);\n }\n }\n }\n .dark\\:has-\\[\\[aria-checked\\=true\\]\\]\\:bg-blue-950 {\n @media (prefers-color-scheme: dark) {\n &:has(*:is([aria-checked=true])) {\n background-color: var(--color-blue-950);\n }\n }\n }\n .dark\\:aria-invalid\\:border-destructive\\/50 {\n @media (prefers-color-scheme: dark) {\n &[aria-invalid=\"true\"] {\n border-color: color-mix(in srgb, #dc2626 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-destructive) 50%, transparent);\n }\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: color-mix(in srgb, #dc2626 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:border-slate-100 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"active\"] {\n border-color: var(--color-slate-100);\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:bg-slate-100 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"active\"] {\n background-color: var(--color-slate-100);\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:text-slate-900 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"active\"] {\n color: var(--color-slate-900);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:border-blue-700 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"checked\"] {\n border-color: var(--color-blue-700);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-blue-700 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"checked\"] {\n background-color: var(--color-blue-700);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"checked\"] {\n background-color: var(--color-primary);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary-foreground {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"checked\"] {\n background-color: var(--color-primary-foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=unchecked\\]\\:bg-input\\/80 {\n @media (prefers-color-scheme: dark) {\n &[data-state=\"unchecked\"] {\n background-color: color-mix(in srgb, #e4e4e7 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 80%, transparent);\n }\n }\n }\n }\n .print\\:fill-\\[\\#3730A3\\] {\n @media print {\n fill: #3730A3;\n }\n }\n .\\[\\&_\\.react-draggable\\]\\:cursor-grab {\n & .react-draggable {\n cursor: grab;\n }\n }\n .\\[\\&_\\.react-draggable-dragging\\]\\:\\!cursor-grabbing {\n & .react-draggable-dragging {\n cursor: grabbing !important;\n }\n }\n .\\[\\&_\\.react-grid-placeholder\\]\\:\\!bg-\\[\\#6366f1\\] {\n & .react-grid-placeholder {\n background-color: #6366f1 !important;\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:absolute {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n position: absolute;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:right-0 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n right: calc(var(--spacing) * 0);\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:bottom-0 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n bottom: calc(var(--spacing) * 0);\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:h-\\[10px\\] {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n height: 10px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:w-\\[10px\\] {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n width: 10px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-t-0 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-r-2 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n border-right-style: var(--tw-border-style);\n border-right-width: 2px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-b-2 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-l-0 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-solid {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n --tw-border-style: solid;\n border-style: solid;\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:border-indigo-400 {\n & .react-resizable-handle-se {\n &::after {\n content: var(--tw-content);\n border-color: var(--color-indigo-400);\n }\n }\n }\n .\\[\\&_\\.react-resizable-handle-se\\]\\:after\\:content-\\[\\\"\\\"\\] {\n & .react-resizable-handle-se {\n &::after {\n --tw-content: \"\";\n content: var(--tw-content);\n }\n }\n }\n .\\[\\&_\\.toggle\\.active\\]\\:bg-\\[\\#4E647F\\]\\! {\n & .toggle.active {\n background-color: #4E647F !important;\n }\n }\n .\\[\\&_\\:is\\(h1\\,h2\\,h3\\)\\]\\:m-0 {\n & :is(h1,h2,h3) {\n margin: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_a\\]\\:text-accent {\n & a {\n color: var(--color-accent);\n }\n }\n .\\[\\&_a\\]\\:text-blue-400 {\n & a {\n color: var(--color-blue-400);\n }\n }\n .\\[\\&_a\\]\\:text-blue-500 {\n & a {\n color: var(--color-blue-500);\n }\n }\n .\\[\\&_a\\]\\:text-white {\n & a {\n color: var(--color-white);\n }\n }\n .\\[\\&_a\\]\\:underline {\n & a {\n text-decoration-line: underline;\n }\n }\n .\\[\\&_a\\]\\:hover\\:text-blue-300 {\n & a {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-300);\n }\n }\n }\n }\n .\\[\\&_a\\]\\:hover\\:no-underline {\n & a {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: none;\n }\n }\n }\n }\n .\\[\\&_code\\]\\:rounded {\n & code {\n border-radius: 0.25rem;\n }\n }\n .\\[\\&_code\\]\\:rounded-\\[4px\\] {\n & code {\n border-radius: 4px;\n }\n }\n .\\[\\&_code\\]\\:bg-blue-100 {\n & code {\n background-color: var(--color-blue-100);\n }\n }\n .\\[\\&_code\\]\\:px-1 {\n & code {\n padding-inline: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_code\\]\\:px-\\[4px\\] {\n & code {\n padding-inline: 4px;\n }\n }\n .\\[\\&_code\\]\\:px-\\[5px\\] {\n & code {\n padding-inline: 5px;\n }\n }\n .\\[\\&_code\\]\\:py-0\\.5 {\n & code {\n padding-block: calc(var(--spacing) * 0.5);\n }\n }\n .\\[\\&_code\\]\\:py-\\[1px\\] {\n & code {\n padding-block: 1px;\n }\n }\n .\\[\\&_code\\]\\:font-mono {\n & code {\n font-family: var(--font-mono);\n }\n }\n .\\[\\&_code\\]\\:text-xs {\n & code {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&_code\\]\\:text-\\[11px\\] {\n & code {\n font-size: 11px;\n }\n }\n .\\[\\&_em\\]\\:italic {\n & em {\n font-style: italic;\n }\n }\n .\\[\\&_h1\\]\\:mt-2 {\n & h1 {\n margin-top: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_h1\\]\\:mb-1 {\n & h1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_h1\\]\\:text-lg {\n & h1 {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n }\n .\\[\\&_h1\\]\\:font-bold {\n & h1 {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n }\n .\\[\\&_h2\\]\\:mt-2 {\n & h2 {\n margin-top: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_h2\\]\\:mt-\\[1em\\] {\n & h2 {\n margin-top: 1em;\n }\n }\n .\\[\\&_h2\\]\\:mb-1 {\n & h2 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_h2\\]\\:text-base {\n & h2 {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n }\n .\\[\\&_h2\\]\\:text-lg {\n & h2 {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n }\n .\\[\\&_h2\\]\\:font-semibold {\n & h2 {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .\\[\\&_h2\\,\\&_h3\\]\\:mt-\\[1em\\] {\n & h2,& h3 {\n margin-top: 1em;\n }\n }\n .\\[\\&_h3\\]\\:mt-1 {\n & h3 {\n margin-top: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_h3\\]\\:mb-1 {\n & h3 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_h3\\]\\:text-sm {\n & h3 {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .\\[\\&_h3\\]\\:font-semibold {\n & h3 {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .\\[\\&_hr\\]\\:my-\\[1em\\] {\n & hr {\n margin-block: 1em;\n }\n }\n .\\[\\&_img\\]\\:my-2 {\n & img {\n margin-block: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_img\\]\\:max-w-full {\n & img {\n max-width: 100%;\n }\n }\n .\\[\\&_img\\]\\:rounded {\n & img {\n border-radius: 0.25rem;\n }\n }\n .\\[\\&_li\\]\\:my-0\\.5 {\n & li {\n margin-block: calc(var(--spacing) * 0.5);\n }\n }\n .\\[\\&_ol\\]\\:my-1 {\n & ol {\n margin-block: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_ol\\]\\:list-decimal {\n & ol {\n list-style-type: decimal;\n }\n }\n .\\[\\&_ol\\]\\:pl-4 {\n & ol {\n padding-left: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_ol\\]\\:pl-5 {\n & ol {\n padding-left: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_p\\]\\:my-1 {\n & p {\n margin-block: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_p\\+p\\]\\:mt-\\[1em\\] {\n & p+p {\n margin-top: 1em;\n }\n }\n .\\[\\&_pre\\]\\:my-2 {\n & pre {\n margin-block: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_pre\\]\\:max-w-full {\n & pre {\n max-width: 100%;\n }\n }\n .\\[\\&_pre\\]\\:overflow-x-auto {\n & pre {\n overflow-x: auto;\n }\n }\n .\\[\\&_pre\\]\\:rounded {\n & pre {\n border-radius: 0.25rem;\n }\n }\n .\\[\\&_pre\\]\\:bg-gray-800 {\n & pre {\n background-color: var(--color-gray-800);\n }\n }\n .\\[\\&_pre\\]\\:p-2 {\n & pre {\n padding: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_pre\\]\\:text-gray-100 {\n & pre {\n color: var(--color-gray-100);\n }\n }\n .\\[\\&_pre_code\\]\\:bg-transparent {\n & pre code {\n background-color: transparent;\n }\n }\n .\\[\\&_pre_code\\]\\:p-0 {\n & pre code {\n padding: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_pre_code\\]\\:break-words {\n & pre code {\n overflow-wrap: break-word;\n }\n }\n .\\[\\&_pre_code\\]\\:whitespace-pre-wrap {\n & pre code {\n white-space: pre-wrap;\n }\n }\n .\\[\\&_strong\\]\\:font-medium {\n & strong {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:size-4 {\n & svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_svg\\]\\:h-\\[12px\\] {\n & svg {\n height: 12px;\n }\n }\n .\\[\\&_svg\\]\\:h-\\[13px\\] {\n & svg {\n height: 13px;\n }\n }\n .\\[\\&_svg\\]\\:w-\\[12px\\] {\n & svg {\n width: 12px;\n }\n }\n .\\[\\&_svg\\]\\:w-\\[13px\\] {\n & svg {\n width: 13px;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_table\\]\\:min-w-full {\n & table {\n min-width: 100%;\n }\n }\n .\\[\\&_table\\]\\:table-fixed {\n & table {\n table-layout: fixed;\n }\n }\n .\\[\\&_tbody_td\\]\\:px-\\[17px\\] {\n & tbody td {\n padding-inline: 17px;\n }\n }\n .\\[\\&_tbody_td\\]\\:py-0 {\n & tbody td {\n padding-block: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_tbody_td\\]\\:text-\\[12px\\] {\n & tbody td {\n font-size: 12px;\n }\n }\n .\\[\\&_tbody_td\\]\\:tabular-nums {\n & tbody td {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n }\n .\\[\\&_tbody_tr\\]\\:h-\\[53px\\] {\n & tbody tr {\n height: 53px;\n }\n }\n .\\[\\&_tbody_tr\\]\\:transition-colors {\n & tbody tr {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n .\\[\\&_td\\]\\:border {\n & td {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .\\[\\&_td\\]\\:border-border {\n & td {\n border-color: var(--color-border);\n }\n }\n .\\[\\&_td\\]\\:border-neutral-10 {\n & td {\n border-color: var(--color-neutral-10);\n }\n }\n .\\[\\&_td\\]\\:border-neutral-200 {\n & td {\n border-color: var(--color-neutral-200);\n }\n }\n .\\[\\&_td\\]\\:p-1 {\n & td {\n padding: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_td\\]\\:p-2 {\n & td {\n padding: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_td\\]\\:px-3 {\n & td {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_td\\]\\:py-1\\.5 {\n & td {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_th\\]\\:sticky {\n & th {\n position: sticky;\n }\n }\n .\\[\\&_th\\]\\:top-0 {\n & th {\n top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_th\\]\\:z-\\[1\\] {\n & th {\n z-index: 1;\n }\n }\n .\\[\\&_th\\]\\:border {\n & th {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .\\[\\&_th\\]\\:border-border {\n & th {\n border-color: var(--color-border);\n }\n }\n .\\[\\&_th\\]\\:border-neutral-10 {\n & th {\n border-color: var(--color-neutral-10);\n }\n }\n .\\[\\&_th\\]\\:border-neutral-200 {\n & th {\n border-color: var(--color-neutral-200);\n }\n }\n .\\[\\&_th\\]\\:p-1 {\n & th {\n padding: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_th\\]\\:p-2 {\n & th {\n padding: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_th\\]\\:px-3 {\n & th {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_th\\]\\:py-1\\.5 {\n & th {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_th\\]\\:py-2 {\n & th {\n padding-block: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_th\\]\\:text-\\[14px\\] {\n & th {\n font-size: 14px;\n }\n }\n .\\[\\&_th\\]\\:font-medium {\n & th {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_th\\]\\:tracking-wide {\n & th {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n }\n .\\[\\&_th\\]\\:uppercase {\n & th {\n text-transform: uppercase;\n }\n }\n .\\[\\&_th\\]\\:shadow-\\[inset_0_-1px_0_var\\(--border\\)\\] {\n & th {\n --tw-shadow: inset 0 -1px 0 var(--tw-shadow-color, var(--border));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .\\[\\&_thead_th\\]\\:sticky {\n & thead th {\n position: sticky;\n }\n }\n .\\[\\&_thead_th\\]\\:h-\\[48px\\] {\n & thead th {\n height: 48px;\n }\n }\n .\\[\\&_thead_th\\]\\:px-\\[17px\\] {\n & thead th {\n padding-inline: 17px;\n }\n }\n .\\[\\&_thead_th\\]\\:font-mono {\n & thead th {\n font-family: var(--font-mono);\n }\n }\n .\\[\\&_thead_th\\]\\:text-\\[10px\\] {\n & thead th {\n font-size: 10px;\n }\n }\n .\\[\\&_thead_th\\]\\:font-medium {\n & thead th {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_thead_th\\]\\:tracking-\\[0\\.05em\\] {\n & thead th {\n --tw-tracking: 0.05em;\n letter-spacing: 0.05em;\n }\n }\n .\\[\\&_thead_th\\]\\:whitespace-nowrap {\n & thead th {\n white-space: nowrap;\n }\n }\n .\\[\\&_thead_th\\]\\:uppercase {\n & thead th {\n text-transform: uppercase;\n }\n }\n .\\[\\&_thead_th_div\\>button\\]\\:gap-\\[4px\\] {\n & thead th div>button {\n gap: 4px;\n }\n }\n .\\[\\&_thead_th_div\\>button\\]\\:\\!text-\\[10px\\] {\n & thead th div>button {\n font-size: 10px !important;\n }\n }\n .\\[\\&_thead_th_div\\>button\\]\\:hover\\:bg-transparent {\n & thead th div>button {\n &:hover {\n @media (hover: hover) {\n background-color: transparent;\n }\n }\n }\n }\n .\\[\\&_thead_th_div\\>button_svg\\]\\:h-\\[11px\\] {\n & thead th div>button svg {\n height: 11px;\n }\n }\n .\\[\\&_thead_th_div\\>button_svg\\]\\:w-\\[11px\\] {\n & thead th div>button svg {\n width: 11px;\n }\n }\n .\\[\\&_thead_tr\\]\\:bg-blue-50 {\n & thead tr {\n background-color: var(--color-blue-50);\n }\n }\n .\\[\\&_thead_tr\\]\\:bg-muted\\/50 {\n & thead tr {\n background-color: color-mix(in srgb, #f7f7f6 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n }\n .\\[\\&_thead_tr\\]\\:bg-neutral-50 {\n & thead tr {\n background-color: var(--color-neutral-50);\n }\n }\n .\\[\\&_tr\\]\\:border-b {\n & tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .\\[\\&_tr\\:last-child\\]\\:border-0 {\n & tr:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .\\[\\&_ul\\]\\:my-1 {\n & ul {\n margin-block: calc(var(--spacing) * 1);\n }\n }\n .\\[\\&_ul\\]\\:list-inside {\n & ul {\n list-style-position: inside;\n }\n }\n .\\[\\&_ul\\]\\:list-disc {\n & ul {\n list-style-type: disc;\n }\n }\n .\\[\\&_ul\\]\\:pl-4 {\n & ul {\n padding-left: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_ul\\]\\:pl-5 {\n & ul {\n padding-left: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar\\]\\:hidden {\n &::-webkit-scrollbar {\n display: none;\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar\\]\\:w-1\\.5 {\n &::-webkit-scrollbar {\n width: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar\\]\\:w-\\[6px\\] {\n &::-webkit-scrollbar {\n width: 6px;\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar-thumb\\]\\:rounded-full {\n &::-webkit-scrollbar-thumb {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar-thumb\\]\\:bg-slate-300 {\n &::-webkit-scrollbar-thumb {\n background-color: var(--color-slate-300);\n }\n }\n .\\[\\&\\:\\:-webkit-scrollbar-track\\]\\:bg-transparent {\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n }\n .\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0 {\n &:has([role=checkbox]) {\n padding-right: calc(var(--spacing) * 0);\n }\n }\n .\\[\\.border-b\\]\\:pb-6 {\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 6);\n }\n }\n .\\[\\.border-t\\]\\:pt-6 {\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 6);\n }\n }\n .\\[\\&\\:last-child\\>td\\]\\:border-b-0 {\n &:last-child>td {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .\\[\\&\\>\\*\\]\\:m-0 {\n &>* {\n margin: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&\\>\\*\\]\\:shrink-0 {\n &>* {\n flex-shrink: 0;\n }\n }\n .\\[\\&\\>button\\]\\:hidden {\n &>button {\n display: none;\n }\n }\n .\\[\\&\\>button\\]\\:w-auto {\n &>button {\n width: auto;\n }\n }\n .\\[\\&\\>button\\]\\:cursor-not-allowed {\n &>button {\n cursor: not-allowed;\n }\n }\n .\\[\\&\\>button\\]\\:rounded-none\\! {\n &>button {\n border-radius: 0 !important;\n }\n }\n .\\[\\&\\>button\\]\\:bg-neutral-900 {\n &>button {\n background-color: var(--color-neutral-900);\n }\n }\n .\\[\\&\\>button\\]\\:bg-transparent\\! {\n &>button {\n background-color: transparent !important;\n }\n }\n .\\[\\&\\>button\\]\\:font-semibold {\n &>button {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .\\[\\&\\>button\\]\\:text-neutral-300 {\n &>button {\n color: var(--color-neutral-300);\n }\n }\n .\\[\\&\\>button\\]\\:text-neutral-900\\! {\n &>button {\n color: var(--color-neutral-900) !important;\n }\n }\n .\\[\\&\\>button\\]\\:text-white {\n &>button {\n color: var(--color-white);\n }\n }\n .\\[\\&\\>button\\]\\:line-through {\n &>button {\n text-decoration-line: line-through;\n }\n }\n .\\[\\&\\>button\\]\\:underline {\n &>button {\n text-decoration-line: underline;\n }\n }\n .\\[\\&\\>button\\]\\:decoration-2 {\n &>button {\n text-decoration-thickness: 2px;\n }\n }\n .\\[\\&\\>button\\]\\:underline-offset-4 {\n &>button {\n text-underline-offset: 4px;\n }\n }\n .\\[\\&\\>button\\]\\:hover\\:bg-neutral-900 {\n &>button {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-900);\n }\n }\n }\n }\n .\\[\\&\\>button\\]\\:hover\\:bg-transparent\\! {\n &>button {\n &:hover {\n @media (hover: hover) {\n background-color: transparent !important;\n }\n }\n }\n }\n .\\[\\&\\>button\\]\\:hover\\:text-neutral-900\\! {\n &>button {\n &:hover {\n @media (hover: hover) {\n color: var(--color-neutral-900) !important;\n }\n }\n }\n }\n .\\[\\&\\>button\\]\\:hover\\:text-white {\n &>button {\n &:hover {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n }\n .\\[\\&\\>button\\:last-child\\]\\:mt-0 {\n &>button:last-child {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&\\>div\\]\\:min-w-\\[200px\\] {\n &>div {\n min-width: 200px;\n }\n }\n .\\[\\&\\>div\\]\\:flex-1 {\n &>div {\n flex: 1;\n }\n }\n .\\[\\&\\>div\\]\\:\\!rounded-none {\n &>div {\n border-radius: 0 !important;\n }\n }\n .\\[\\&\\>div\\]\\:\\!border-0 {\n &>div {\n border-style: var(--tw-border-style) !important;\n border-width: 0px !important;\n }\n }\n .\\[\\&\\>div\\]\\:\\!shadow-none {\n &>div {\n --tw-shadow: 0 0 #0000 !important;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow) !important;\n }\n }\n .\\[\\&\\>div_label\\]\\:mb-2 {\n &>div label {\n margin-bottom: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&\\>div_label\\]\\:block {\n &>div label {\n display: block;\n }\n }\n .\\[\\&\\>div_label\\]\\:text-sm {\n &>div label {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .\\[\\&\\>div_label\\]\\:font-medium {\n &>div label {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&\\>div_label\\]\\:text-gray-700 {\n &>div label {\n color: var(--color-gray-700);\n }\n }\n .\\[\\&\\>div\\:first-child\\]\\:min-w-\\[200px\\] {\n &>div:first-child {\n min-width: 200px;\n }\n }\n .\\[\\&\\>div\\:first-child\\]\\:flex-1 {\n &>div:first-child {\n flex: 1;\n }\n }\n .\\[\\&\\>div\\:nth-child\\(2\\)\\]\\:min-w-\\[200px\\] {\n &>div:nth-child(2) {\n min-width: 200px;\n }\n }\n .\\[\\&\\>div\\:nth-child\\(2\\)\\]\\:flex-1 {\n &>div:nth-child(2) {\n flex: 1;\n }\n }\n .\\[\\&\\>label\\]\\:mb-2 {\n &>label {\n margin-bottom: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&\\>label\\]\\:block {\n &>label {\n display: block;\n }\n }\n .\\[\\&\\>label\\]\\:text-sm {\n &>label {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .\\[\\&\\>label\\]\\:font-medium {\n &>label {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&\\>label\\]\\:text-gray-700 {\n &>label {\n color: var(--color-gray-700);\n }\n }\n .max-\\[800px\\]\\:\\[\\&\\>li\\]\\:pb-4 {\n @media (width < 800px) {\n &>li {\n padding-bottom: calc(var(--spacing) * 4);\n }\n }\n }\n .\\[\\&\\>span\\]\\:line-clamp-1 {\n &>span {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n .\\[\\&\\>span\\:last-child\\]\\:truncate {\n &>span:last-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n .\\[\\&\\>svg\\]\\:pointer-events-none {\n &>svg {\n pointer-events: none;\n }\n }\n .\\[\\&\\>svg\\]\\:size-3 {\n &>svg {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:size-4 {\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>svg\\]\\:h-3\\.5 {\n &>svg {\n height: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\]\\:h-\\[12px\\] {\n &>svg {\n height: 12px;\n }\n }\n .\\[\\&\\>svg\\]\\:w-3\\.5 {\n &>svg {\n width: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\]\\:w-\\[12px\\] {\n &>svg {\n width: 12px;\n }\n }\n .\\[\\&\\>svg\\]\\:shrink-0 {\n &>svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&\\>tbody\\>tr\\:last-child\\>td\\]\\:border-b-0 {\n &>tbody>tr:last-child>td {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .\\[\\&\\>td\\]\\:border-b-0 {\n &>td {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .\\[\\&\\>td\\]\\:p-2 {\n &>td {\n padding: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&\\>th\\]\\:sticky {\n &>th {\n position: sticky;\n }\n }\n .\\[\\&\\>th\\]\\:top-0 {\n &>th {\n top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&\\>th\\]\\:z-10 {\n &>th {\n z-index: 10;\n }\n }\n .\\[\\&\\>th\\]\\:bg-muted {\n &>th {\n background-color: var(--color-muted);\n }\n }\n .\\[\\&\\>th\\]\\:bg-muted\\/70 {\n &>th {\n background-color: color-mix(in srgb, #f7f7f6 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 70%, transparent);\n }\n }\n }\n .\\[\\&\\>th\\]\\:p-2 {\n &>th {\n padding: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&\\>th\\]\\:text-left {\n &>th {\n text-align: left;\n }\n }\n .\\[\\&\\>th\\]\\:font-semibold {\n &>th {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .\\[\\&\\>tr\\]\\:last\\:border-b-0 {\n &>tr {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n .\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180 {\n &[data-state=open]>svg {\n rotate: 180deg;\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-right-2 {\n [data-side=left][data-collapsible=offcanvas] & {\n right: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize {\n [data-side=left][data-state=collapsed] & {\n cursor: e-resize;\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-left-2 {\n [data-side=right][data-collapsible=offcanvas] & {\n left: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize {\n [data-side=right][data-state=collapsed] & {\n cursor: w-resize;\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-accent {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-destructive\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #dc2626 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-green-200 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-green-200);\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-primary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #18181b 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-secondary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #f4f4f5 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:text-accent-foreground {\n a& {\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n }\n .\\[table\\[data-flush\\]_\\&\\:last-child\\>td\\:first-child\\]\\:rounded-bl-\\[13px\\] {\n table[data-flush] &:last-child>td:first-child {\n border-bottom-left-radius: 13px;\n }\n }\n .\\[table\\[data-flush\\]_\\&\\:last-child\\>td\\:last-child\\]\\:rounded-br-\\[13px\\] {\n table[data-flush] &:last-child>td:last-child {\n border-bottom-right-radius: 13px;\n }\n }\n}\n@layer base {\n :root,\n :host {\n font-family: 'Inter', sans-serif;\n }\n}\n@property --tw-border-spacing-x {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-spacing-y {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-scroll-snap-strictness {\n syntax: \"*\";\n inherits: false;\n initial-value: proximity;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: \"<color>\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: \"<color>\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: \"<color>\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: \"<length-percentage>\";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: \"<length-percentage>\";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: \"<length-percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ordinal {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-slashed-zero {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-figure {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-spacing {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-fraction {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-content {\n syntax: \"*\";\n initial-value: \"\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes bounce {\n 0%, 100% {\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n }\n 50% {\n transform: none;\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-scroll-snap-strictness: proximity;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-ordinal: initial;\n --tw-slashed-zero: initial;\n --tw-numeric-figure: initial;\n --tw-numeric-spacing: initial;\n --tw-numeric-fraction: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-content: \"\";\n }\n }\n}\n";
|
|
2798
3928
|
|
|
2799
3929
|
/**
|
|
2800
3930
|
* Global stylesheet registry (shared across independently-bundled SDKs via
|
|
@@ -7636,20 +8766,33 @@ const renderImageBlock = (block) => {
|
|
|
7636
8766
|
if (!block.props.url || !isSafeImageUrl(block.props.url)) {
|
|
7637
8767
|
return null;
|
|
7638
8768
|
}
|
|
8769
|
+
// The step's rows grow to fit their content, and an `<img>` grid item
|
|
8770
|
+
// contributes its natural aspect-ratio height — a banner area holding a
|
|
8771
|
+
// square photo would grow to the photo instead of cropping it. Taking the
|
|
8772
|
+
// image out of flow leaves the wrapper nothing to contribute, so the image
|
|
8773
|
+
// fills exactly the cells it was placed in.
|
|
8774
|
+
const wrapper = document.createElement('div');
|
|
8775
|
+
applyStyles(wrapper, { position: 'relative', width: '100%', height: '100%' });
|
|
7639
8776
|
const el = document.createElement('img');
|
|
7640
8777
|
el.src = block.props.url;
|
|
7641
8778
|
el.alt = (_a = block.props.alt) !== null && _a !== void 0 ? _a : '';
|
|
7642
8779
|
applyStyles(el, {
|
|
8780
|
+
position: 'absolute',
|
|
8781
|
+
top: '0',
|
|
8782
|
+
left: '0',
|
|
7643
8783
|
width: '100%',
|
|
7644
8784
|
height: '100%',
|
|
7645
8785
|
'object-fit': 'cover',
|
|
7646
8786
|
display: 'block',
|
|
7647
8787
|
'border-radius': block.props.borderRadius,
|
|
7648
8788
|
});
|
|
7649
|
-
|
|
8789
|
+
wrapper.appendChild(el);
|
|
8790
|
+
return wrapper;
|
|
7650
8791
|
};
|
|
7651
8792
|
|
|
7652
|
-
|
|
8793
|
+
// eslint-disable-next-line @nx/enforce-module-boundaries
|
|
8794
|
+
const COUNTRIES = Object.keys(COUNTRY_DIAL_CODES).sort();
|
|
8795
|
+
const renderPhoneInputBlock = (block, ctx) => {
|
|
7653
8796
|
const wrapper = document.createElement('div');
|
|
7654
8797
|
applyStyles(wrapper, { 'margin-bottom': '0.5em' });
|
|
7655
8798
|
if (block.props.label) {
|
|
@@ -7671,38 +8814,71 @@ const renderPhoneInputBlock = (block) => {
|
|
|
7671
8814
|
}
|
|
7672
8815
|
const row = document.createElement('div');
|
|
7673
8816
|
applyStyles(row, { display: 'flex' });
|
|
7674
|
-
|
|
7675
|
-
|
|
7676
|
-
|
|
7677
|
-
|
|
7678
|
-
|
|
7679
|
-
|
|
7680
|
-
|
|
7681
|
-
|
|
7682
|
-
|
|
7683
|
-
|
|
7684
|
-
|
|
7685
|
-
|
|
7686
|
-
|
|
7687
|
-
|
|
8817
|
+
// Geo first unless the merchant pinned the country, then whatever they
|
|
8818
|
+
// configured, then the fallback — so an unknown country never leaves the
|
|
8819
|
+
// picker blank.
|
|
8820
|
+
const initialCountry = block.props.useShopperCountry === false
|
|
8821
|
+
? resolveCountry(block.props.defaultCountry)
|
|
8822
|
+
: resolveCountry(ctx.geoCountry, block.props.defaultCountry);
|
|
8823
|
+
// Deliberately unnamed. `collectFormData` collects every named input and
|
|
8824
|
+
// select, and the country is an input to the phone value rather than a field
|
|
8825
|
+
// of its own — naming it would forward a stray key to the leads backend.
|
|
8826
|
+
const country = document.createElement('select');
|
|
8827
|
+
country.setAttribute('aria-label', 'Country calling code');
|
|
8828
|
+
for (const iso of COUNTRIES) {
|
|
8829
|
+
const option = document.createElement('option');
|
|
8830
|
+
option.value = iso;
|
|
8831
|
+
option.textContent = `${iso} +${COUNTRY_DIAL_CODES[iso]}`;
|
|
8832
|
+
country.appendChild(option);
|
|
8833
|
+
}
|
|
8834
|
+
country.value = initialCountry;
|
|
8835
|
+
applyStyles(country, {
|
|
8836
|
+
padding: '0.5em',
|
|
8837
|
+
border: '1px solid #d1d5db',
|
|
8838
|
+
'border-right': 'none',
|
|
8839
|
+
'border-radius': '0.375em 0 0 0.375em',
|
|
8840
|
+
background: '#f9fafb',
|
|
8841
|
+
'font-size': '0.875em',
|
|
8842
|
+
color: '#374151',
|
|
8843
|
+
'font-family': 'inherit',
|
|
8844
|
+
});
|
|
8845
|
+
row.appendChild(country);
|
|
8846
|
+
// Also unnamed: the canonical E.164 value is submitted from the hidden input
|
|
8847
|
+
// below, so every lead carries one shape whatever the shopper typed.
|
|
7688
8848
|
const input = document.createElement('input');
|
|
7689
8849
|
input.type = 'tel';
|
|
7690
|
-
input.name = 'phone';
|
|
7691
8850
|
input.autocomplete = 'tel';
|
|
7692
8851
|
input.inputMode = 'tel';
|
|
7693
8852
|
input.placeholder = block.props.placeholder;
|
|
7694
8853
|
input.required = block.props.required;
|
|
7695
8854
|
applyStyles(input, {
|
|
7696
8855
|
flex: '1',
|
|
8856
|
+
'min-width': '0',
|
|
7697
8857
|
padding: '0.625em 0.75em',
|
|
7698
8858
|
border: '1px solid #d1d5db',
|
|
7699
|
-
'border-radius':
|
|
7700
|
-
? '0 0.375em 0.375em 0'
|
|
7701
|
-
: '0.375em',
|
|
8859
|
+
'border-radius': '0 0.375em 0.375em 0',
|
|
7702
8860
|
'font-size': '0.875em',
|
|
7703
8861
|
});
|
|
7704
8862
|
row.appendChild(input);
|
|
7705
8863
|
wrapper.appendChild(row);
|
|
8864
|
+
const canonical = document.createElement('input');
|
|
8865
|
+
canonical.type = 'hidden';
|
|
8866
|
+
canonical.name = 'phone';
|
|
8867
|
+
wrapper.appendChild(canonical);
|
|
8868
|
+
attachFieldValidation({
|
|
8869
|
+
input,
|
|
8870
|
+
wrapper,
|
|
8871
|
+
root: ctx.popupRoot,
|
|
8872
|
+
check: phoneCheck(() => dialCode(country.value), block.props.invalidMessage, block.props.required),
|
|
8873
|
+
onValue: (value) => {
|
|
8874
|
+
canonical.value = toE164(value, dialCode(country.value));
|
|
8875
|
+
},
|
|
8876
|
+
});
|
|
8877
|
+
// Changing the country changes what counts as valid, so a number already
|
|
8878
|
+
// typed is re-judged rather than left showing a stale verdict.
|
|
8879
|
+
country.addEventListener('change', () => {
|
|
8880
|
+
input.dispatchEvent(new Event('input'));
|
|
8881
|
+
});
|
|
7706
8882
|
return wrapper;
|
|
7707
8883
|
};
|
|
7708
8884
|
|
|
@@ -7713,6 +8889,8 @@ const renderPhoneInputBlock = (block) => {
|
|
|
7713
8889
|
// card unmounting must not cancel the request other cards are awaiting.
|
|
7714
8890
|
const productCache = new Map();
|
|
7715
8891
|
const inFlight = new Map();
|
|
8892
|
+
/** Synchronous cache read, so a warmed product can render on the first paint. */
|
|
8893
|
+
const getCachedProduct = (handle) => productCache.get(handle);
|
|
7716
8894
|
const fetchProduct = (handle) => {
|
|
7717
8895
|
const cached = productCache.get(handle);
|
|
7718
8896
|
if (cached) {
|
|
@@ -7739,6 +8917,7 @@ const fetchProduct = (handle) => {
|
|
|
7739
8917
|
inFlight.set(handle, promise);
|
|
7740
8918
|
return promise;
|
|
7741
8919
|
};
|
|
8920
|
+
|
|
7742
8921
|
const renderProductCardBlock = (block) => {
|
|
7743
8922
|
var _a, _b, _c;
|
|
7744
8923
|
const card = document.createElement('div');
|
|
@@ -8059,7 +9238,20 @@ const renderTestimonialBlock = (block) => {
|
|
|
8059
9238
|
return wrapper;
|
|
8060
9239
|
};
|
|
8061
9240
|
|
|
9241
|
+
// eslint-disable-next-line @nx/enforce-module-boundaries
|
|
9242
|
+
/** One resolve pass; containers recurse through here, so nesting is covered. */
|
|
8062
9243
|
const renderBlock = (block, ctx) => {
|
|
9244
|
+
var _a;
|
|
9245
|
+
const resolved = ctx.tokens
|
|
9246
|
+
? resolveBlockProps(block, ctx.tokens.values)
|
|
9247
|
+
: block;
|
|
9248
|
+
const el = dispatchBlock(resolved, ctx);
|
|
9249
|
+
if (el && ((_a = ctx.tokens) === null || _a === void 0 ? void 0 : _a.onBlockRendered)) {
|
|
9250
|
+
ctx.tokens.onBlockRendered(block, el);
|
|
9251
|
+
}
|
|
9252
|
+
return el;
|
|
9253
|
+
};
|
|
9254
|
+
const dispatchBlock = (block, ctx) => {
|
|
8063
9255
|
switch (block.type) {
|
|
8064
9256
|
case 'heading':
|
|
8065
9257
|
return renderHeadingBlock(block);
|
|
@@ -8074,7 +9266,7 @@ const renderBlock = (block, ctx) => {
|
|
|
8074
9266
|
case 'email-input':
|
|
8075
9267
|
return renderEmailInputBlock(block, ctx);
|
|
8076
9268
|
case 'phone-input':
|
|
8077
|
-
return renderPhoneInputBlock(block);
|
|
9269
|
+
return renderPhoneInputBlock(block, ctx);
|
|
8078
9270
|
case 'consent':
|
|
8079
9271
|
return renderConsentBlock(block);
|
|
8080
9272
|
case 'countdown':
|
|
@@ -8096,7 +9288,7 @@ const renderBlock = (block, ctx) => {
|
|
|
8096
9288
|
case 'radio-group':
|
|
8097
9289
|
return renderRadioGroupBlock(block);
|
|
8098
9290
|
case 'form-input':
|
|
8099
|
-
return renderFormInputBlock(block);
|
|
9291
|
+
return renderFormInputBlock(block, ctx);
|
|
8100
9292
|
case 'floating-image':
|
|
8101
9293
|
return renderFloatingImageBlock(block);
|
|
8102
9294
|
case 'product-card':
|
|
@@ -8166,6 +9358,11 @@ const pickStep = (rule) => {
|
|
|
8166
9358
|
const renderStep = (step, ctx) => {
|
|
8167
9359
|
var _a, _b, _c, _d;
|
|
8168
9360
|
const isMobile = isMobileViewport();
|
|
9361
|
+
// An inline form is sized by whatever section the merchant dropped it into,
|
|
9362
|
+
// so it is laid out fluidly rather than as the fixed box every floating
|
|
9363
|
+
// format gets, and it comes back wrapped in the element its rows measure
|
|
9364
|
+
// against. The blocks and their placement are identical either way.
|
|
9365
|
+
const isInline = isInlineRule(ctx.rule);
|
|
8169
9366
|
const container = document.createElement('div');
|
|
8170
9367
|
applyStyles(container, {
|
|
8171
9368
|
...rootStyleToCss(step.rootStyle, ctx.theme),
|
|
@@ -8176,18 +9373,46 @@ const renderStep = (step, ctx) => {
|
|
|
8176
9373
|
'grid-auto-rows': 'minmax(8px, auto)',
|
|
8177
9374
|
'box-sizing': 'border-box',
|
|
8178
9375
|
// A block taller than the rows it was given is clipped to the popup rather
|
|
8179
|
-
// than escaping it and floating over the merchant's page.
|
|
8180
|
-
|
|
9376
|
+
// than escaping it and floating over the merchant's page. An inline form
|
|
9377
|
+
// has no such edge to escape, and clipping it would cut off its own fields
|
|
9378
|
+
// as soon as the rows reflow in a column narrower than the canvas.
|
|
9379
|
+
overflow: isInline ? 'visible' : 'hidden',
|
|
8181
9380
|
});
|
|
8182
|
-
|
|
8183
|
-
|
|
9381
|
+
const size = step.popupDimensions
|
|
9382
|
+
? isMobile
|
|
8184
9383
|
? step.popupDimensions.mobile
|
|
8185
|
-
: step.popupDimensions.desktop
|
|
8186
|
-
|
|
8187
|
-
|
|
8188
|
-
|
|
8189
|
-
|
|
8190
|
-
|
|
9384
|
+
: step.popupDimensions.desktop
|
|
9385
|
+
: undefined;
|
|
9386
|
+
if (size) {
|
|
9387
|
+
applyStyles(container, isInline
|
|
9388
|
+
? {
|
|
9389
|
+
// The authored width becomes a ceiling, not a box: the form fills a
|
|
9390
|
+
// narrow footer column and stops growing past the size it was
|
|
9391
|
+
// designed at. Height stays automatic, because content that
|
|
9392
|
+
// reflows into more rows must not be cut off.
|
|
9393
|
+
width: '100%',
|
|
9394
|
+
// Rows track the width the form actually got, so a design squeezed
|
|
9395
|
+
// into a narrow column keeps its proportions instead of collapsing
|
|
9396
|
+
// to content. Leaving this at the `minmax(8px, auto)` default took
|
|
9397
|
+
// a 4-row spacer on a 480 canvas from 160px to 32px. `100cqw`
|
|
9398
|
+
// resolves against the wrapper added below — a grid cannot query
|
|
9399
|
+
// its own width — and `auto` as the ceiling keeps a block whose
|
|
9400
|
+
// content reflows taller from being clipped.
|
|
9401
|
+
'grid-auto-rows': `minmax(calc(100cqw / ${CANVAS_COLS}), auto)`,
|
|
9402
|
+
}
|
|
9403
|
+
: {
|
|
9404
|
+
// The configured height and row height are a floor, not a cap. A
|
|
9405
|
+
// block whose content is taller than the rows it was given — a
|
|
9406
|
+
// labelled input showing a validation message, most often — grows
|
|
9407
|
+
// its row and pushes the rest down, instead of spilling over the
|
|
9408
|
+
// block beneath it. A popup whose blocks all fit is laid out
|
|
9409
|
+
// exactly as before: `align-content: start` stops auto rows
|
|
9410
|
+
// stretching to fill the min-height, which fixed rows never did.
|
|
9411
|
+
width: `${size.width}px`,
|
|
9412
|
+
'min-height': `${size.height}px`,
|
|
9413
|
+
'grid-auto-rows': `minmax(${size.width / CANVAS_COLS}px, auto)`,
|
|
9414
|
+
'align-content': 'start',
|
|
9415
|
+
});
|
|
8191
9416
|
}
|
|
8192
9417
|
for (const block of step.blocks) {
|
|
8193
9418
|
if (!isBlockVisible(block, isMobile)) {
|
|
@@ -8197,6 +9422,16 @@ const renderStep = (step, ctx) => {
|
|
|
8197
9422
|
if (!el) {
|
|
8198
9423
|
continue;
|
|
8199
9424
|
}
|
|
9425
|
+
// Image blocks take their <img> out of flow so a photo can't grow the
|
|
9426
|
+
// configured rows. Without configured rows the photo's own height is the
|
|
9427
|
+
// only thing sizing them, so it goes back in flow.
|
|
9428
|
+
if (!step.popupDimensions &&
|
|
9429
|
+
(block.type === 'image' || block.type === 'floating-image')) {
|
|
9430
|
+
const img = el.firstElementChild;
|
|
9431
|
+
if (img) {
|
|
9432
|
+
img.style.position = 'static';
|
|
9433
|
+
}
|
|
9434
|
+
}
|
|
8200
9435
|
const coords = resolveCoords(block.props, isMobile);
|
|
8201
9436
|
// Blocks size themselves with width/height 100% and add their own padding
|
|
8202
9437
|
// and border, so content-box makes them wider than the cells they occupy.
|
|
@@ -8212,7 +9447,21 @@ const renderStep = (step, ctx) => {
|
|
|
8212
9447
|
applyBlockAnimation(block, el);
|
|
8213
9448
|
container.appendChild(el);
|
|
8214
9449
|
}
|
|
8215
|
-
|
|
9450
|
+
if (!isInline || !size) {
|
|
9451
|
+
return container;
|
|
9452
|
+
}
|
|
9453
|
+
// The width ceiling moves out to a wrapper so the grid has something to query
|
|
9454
|
+
// for `cqw`. `rootStyleToCss` writes no padding and no border, so the
|
|
9455
|
+
// wrapper's content box is exactly the grid's width and one column is the
|
|
9456
|
+
// same size the builder canvas showed.
|
|
9457
|
+
const fluid = document.createElement('div');
|
|
9458
|
+
applyStyles(fluid, {
|
|
9459
|
+
width: '100%',
|
|
9460
|
+
'max-width': `${size.width}px`,
|
|
9461
|
+
'container-type': 'inline-size',
|
|
9462
|
+
});
|
|
9463
|
+
fluid.appendChild(container);
|
|
9464
|
+
return fluid;
|
|
8216
9465
|
};
|
|
8217
9466
|
|
|
8218
9467
|
// Stays below blotout-consent banner's 999999 so the legally-required
|
|
@@ -8258,8 +9507,9 @@ const CORNER_TRANSFORM_ORIGIN = {
|
|
|
8258
9507
|
'bottom-right': 'bottom right',
|
|
8259
9508
|
};
|
|
8260
9509
|
|
|
9510
|
+
// eslint-disable-next-line @nx/enforce-module-boundaries
|
|
8261
9511
|
const TEASER_PREFIX = 'blotoutPopup:teaser:';
|
|
8262
|
-
const renderTeaser = (rule, onReopen) => {
|
|
9512
|
+
const renderTeaser = (rule, tokenValues, onReopen) => {
|
|
8263
9513
|
var _a, _b, _c, _d, _e;
|
|
8264
9514
|
if (!((_a = rule.teaser) === null || _a === void 0 ? void 0 : _a.enabled)) {
|
|
8265
9515
|
return null;
|
|
@@ -8304,7 +9554,8 @@ const renderTeaser = (rule, onReopen) => {
|
|
|
8304
9554
|
chip.appendChild(icon);
|
|
8305
9555
|
}
|
|
8306
9556
|
const text = document.createElement('span');
|
|
8307
|
-
|
|
9557
|
+
// Teaser sits outside the block tree, so the dispatcher never sees it.
|
|
9558
|
+
text.textContent = resolveTokens(teaser.text, tokenValues, teaser.tokenFallbacks);
|
|
8308
9559
|
chip.appendChild(text);
|
|
8309
9560
|
const close = document.createElement('button');
|
|
8310
9561
|
close.type = 'button';
|
|
@@ -8334,6 +9585,263 @@ const renderTeaser = (rule, onReopen) => {
|
|
|
8334
9585
|
return chip;
|
|
8335
9586
|
};
|
|
8336
9587
|
|
|
9588
|
+
// eslint-disable-next-line @nx/enforce-module-boundaries
|
|
9589
|
+
// From the registry, so a third product token is swapped as well as fetched.
|
|
9590
|
+
const PRODUCT_TOKEN_IDS = new Set(TOKENS.filter((token) => token.tier === 'product').map((token) => token.id));
|
|
9591
|
+
// `{{lastViewedProduct.price}}` belongs to the same fetch as its bare form.
|
|
9592
|
+
const isProductToken = (id) => PRODUCT_TOKEN_IDS.has(tokenBaseId(id));
|
|
9593
|
+
// Shopify's shape, flattened to the registry's field names. First variant,
|
|
9594
|
+
// same as product-card.
|
|
9595
|
+
const fieldValues = (product) => {
|
|
9596
|
+
var _a;
|
|
9597
|
+
const variant = (_a = product.variants) === null || _a === void 0 ? void 0 : _a[0];
|
|
9598
|
+
return {
|
|
9599
|
+
title: product.title,
|
|
9600
|
+
price: variant === null || variant === void 0 ? void 0 : variant.price,
|
|
9601
|
+
compareAtPrice: variant === null || variant === void 0 ? void 0 : variant.compare_at_price,
|
|
9602
|
+
vendor: product.vendor,
|
|
9603
|
+
type: product.product_type,
|
|
9604
|
+
};
|
|
9605
|
+
};
|
|
9606
|
+
// A dropdown renders labels as `optEl.textContent` (blocks/dropdown.ts:29), so
|
|
9607
|
+
// wrapping a token there would put a span inside an `<option>`.
|
|
9608
|
+
const rejectsChildren = (node) => { var _a; return ((_a = node.parentElement) === null || _a === void 0 ? void 0 : _a.tagName) === 'OPTION'; };
|
|
9609
|
+
const ATTRS = ['placeholder', 'alt'];
|
|
9610
|
+
// Exact match wins over a containing one: a token-only prop resolves to a
|
|
9611
|
+
// short phrase ("this item") that static copy nearby may also contain.
|
|
9612
|
+
const findTextNode = (root, needle) => {
|
|
9613
|
+
if (needle === '') {
|
|
9614
|
+
return null;
|
|
9615
|
+
}
|
|
9616
|
+
const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);
|
|
9617
|
+
let contains = null;
|
|
9618
|
+
let node = walker.nextNode();
|
|
9619
|
+
while (node) {
|
|
9620
|
+
const value = node.nodeValue;
|
|
9621
|
+
if (value === needle) {
|
|
9622
|
+
return node;
|
|
9623
|
+
}
|
|
9624
|
+
if (!contains && (value === null || value === void 0 ? void 0 : value.includes(needle))) {
|
|
9625
|
+
contains = node;
|
|
9626
|
+
}
|
|
9627
|
+
node = walker.nextNode();
|
|
9628
|
+
}
|
|
9629
|
+
return contains;
|
|
9630
|
+
};
|
|
9631
|
+
/** Cuts [start, end) out of `node` into its own span. */
|
|
9632
|
+
const wrapRange = (node, start, end) => {
|
|
9633
|
+
// The tail stays a sibling; `node` is left holding everything before it.
|
|
9634
|
+
node.splitText(end);
|
|
9635
|
+
const value = node.splitText(start);
|
|
9636
|
+
const el = document.createElement('span');
|
|
9637
|
+
value.replaceWith(el);
|
|
9638
|
+
el.appendChild(value);
|
|
9639
|
+
return el;
|
|
9640
|
+
};
|
|
9641
|
+
/**
|
|
9642
|
+
* Wraps each product token's value in its own span.
|
|
9643
|
+
*
|
|
9644
|
+
* Right-to-left, so splitting the tail never shifts an earlier offset.
|
|
9645
|
+
*/
|
|
9646
|
+
const markSpans = (node, rendered, spans, fallbacks, into, raw) => {
|
|
9647
|
+
var _a, _b;
|
|
9648
|
+
const base = (_b = (_a = node.nodeValue) === null || _a === void 0 ? void 0 : _a.indexOf(rendered)) !== null && _b !== void 0 ? _b : -1;
|
|
9649
|
+
if (base < 0) {
|
|
9650
|
+
return;
|
|
9651
|
+
}
|
|
9652
|
+
if (rejectsChildren(node)) {
|
|
9653
|
+
into.push({ kind: 'text', node, raw, fallbacks });
|
|
9654
|
+
return;
|
|
9655
|
+
}
|
|
9656
|
+
for (const span of [...spans].reverse()) {
|
|
9657
|
+
if (span.end <= span.start) {
|
|
9658
|
+
continue;
|
|
9659
|
+
}
|
|
9660
|
+
const el = wrapRange(node, base + span.start, base + span.end);
|
|
9661
|
+
into.push({ kind: 'span', el, id: span.id, fallbacks });
|
|
9662
|
+
}
|
|
9663
|
+
};
|
|
9664
|
+
/**
|
|
9665
|
+
* Fallback when the copy is not contiguous — a renderer split the line across
|
|
9666
|
+
* nodes. Marks each token's own value wherever it landed.
|
|
9667
|
+
*/
|
|
9668
|
+
const markEach = (root, spans, values, fallbacks, into, raw) => {
|
|
9669
|
+
var _a, _b;
|
|
9670
|
+
let any = false;
|
|
9671
|
+
for (const span of spans) {
|
|
9672
|
+
const value = resolveToken(span.id, values, fallbacks);
|
|
9673
|
+
const node = findTextNode(root, value);
|
|
9674
|
+
const at = (_b = (_a = node === null || node === void 0 ? void 0 : node.nodeValue) === null || _a === void 0 ? void 0 : _a.indexOf(value)) !== null && _b !== void 0 ? _b : -1;
|
|
9675
|
+
if (!node || at < 0) {
|
|
9676
|
+
continue;
|
|
9677
|
+
}
|
|
9678
|
+
if (rejectsChildren(node)) {
|
|
9679
|
+
into.push({ kind: 'text', node, raw, fallbacks });
|
|
9680
|
+
any = true;
|
|
9681
|
+
continue;
|
|
9682
|
+
}
|
|
9683
|
+
const el = wrapRange(node, at, at + value.length);
|
|
9684
|
+
into.push({ kind: 'span', el, id: span.id, fallbacks });
|
|
9685
|
+
any = true;
|
|
9686
|
+
}
|
|
9687
|
+
return any;
|
|
9688
|
+
};
|
|
9689
|
+
const markAttrs = (root, rendered, raw, fallbacks, into) => {
|
|
9690
|
+
const check = (el) => {
|
|
9691
|
+
for (const attr of ATTRS) {
|
|
9692
|
+
if (el.getAttribute(attr) === rendered) {
|
|
9693
|
+
into.push({ kind: 'attr', el, attr, raw, fallbacks });
|
|
9694
|
+
}
|
|
9695
|
+
}
|
|
9696
|
+
};
|
|
9697
|
+
check(root);
|
|
9698
|
+
root.querySelectorAll('*').forEach(check);
|
|
9699
|
+
};
|
|
9700
|
+
// Which handle answers which token on this page.
|
|
9701
|
+
const productSources = (signals, lastViewedHandle) => [
|
|
9702
|
+
['productName', signals['page.productHandle']],
|
|
9703
|
+
['lastViewedProduct', lastViewedHandle],
|
|
9704
|
+
];
|
|
9705
|
+
/** True when a rule's copy references a product-tier token. */
|
|
9706
|
+
const needsProductRead = (rules) => rules.some((rule) => tokensInTier(collectRuleTokens(rule), 'product').length > 0);
|
|
9707
|
+
/**
|
|
9708
|
+
* Warms `productCache` before the gate runs, so the popup opens on real values
|
|
9709
|
+
* instead of opening on fallbacks and visibly rewriting itself ~600ms later.
|
|
9710
|
+
*
|
|
9711
|
+
* Never rejects, and never waits past the deadline: a slow or dead Shopify
|
|
9712
|
+
* answers with the fallback copy, exactly as it did before.
|
|
9713
|
+
*/
|
|
9714
|
+
const warmProductTokens = (signals, lastViewedHandle, timeoutMs) => {
|
|
9715
|
+
const reads = productSources(signals, lastViewedHandle)
|
|
9716
|
+
.map(([, handle]) => handle)
|
|
9717
|
+
.filter((handle) => !!handle)
|
|
9718
|
+
.map((handle) => fetchProduct(handle));
|
|
9719
|
+
if (!reads.length) {
|
|
9720
|
+
return Promise.resolve();
|
|
9721
|
+
}
|
|
9722
|
+
return new Promise((resolve) => {
|
|
9723
|
+
const timer = setTimeout(resolve, timeoutMs);
|
|
9724
|
+
void Promise.all(reads).then(() => {
|
|
9725
|
+
clearTimeout(timer);
|
|
9726
|
+
resolve();
|
|
9727
|
+
});
|
|
9728
|
+
});
|
|
9729
|
+
};
|
|
9730
|
+
/**
|
|
9731
|
+
* Seeds values from the warmed cache, then swaps anything that lands later.
|
|
9732
|
+
*
|
|
9733
|
+
* The swap is the safety net now, not the normal path: a click trigger three
|
|
9734
|
+
* navigations after the warm-up still gets its title this way.
|
|
9735
|
+
*/
|
|
9736
|
+
const attachProductTokens = (tokens, signals,
|
|
9737
|
+
/** Product viewed BEFORE this page; init records the current one at load. */
|
|
9738
|
+
lastViewedHandle) => {
|
|
9739
|
+
const marked = [];
|
|
9740
|
+
tokens.onBlockRendered = (block, el) => {
|
|
9741
|
+
const props = block.props;
|
|
9742
|
+
if (!props) {
|
|
9743
|
+
return;
|
|
9744
|
+
}
|
|
9745
|
+
const fallbacks = props['tokenFallbacks'];
|
|
9746
|
+
// `tokenTextsOf` covers `options[].label`, which `resolveProps` resolves
|
|
9747
|
+
// but a TOKEN_TEXT_PROPS-only scan left stuck on its fallback forever.
|
|
9748
|
+
for (const raw of tokenTextsOf(props)) {
|
|
9749
|
+
if (!collectTokens(raw).some(isProductToken)) {
|
|
9750
|
+
continue;
|
|
9751
|
+
}
|
|
9752
|
+
const { text: rendered, spans } = resolveTokenSpans(raw, tokens.values, fallbacks);
|
|
9753
|
+
const product = spans.filter((span) => isProductToken(span.id));
|
|
9754
|
+
if (!product.length) {
|
|
9755
|
+
continue;
|
|
9756
|
+
}
|
|
9757
|
+
const node = findTextNode(el, rendered);
|
|
9758
|
+
if (node) {
|
|
9759
|
+
markSpans(node, rendered, product, fallbacks, marked, raw);
|
|
9760
|
+
continue;
|
|
9761
|
+
}
|
|
9762
|
+
// The line is not in one piece. Mark each token's own value instead.
|
|
9763
|
+
if (markEach(el, product, tokens.values, fallbacks, marked, raw)) {
|
|
9764
|
+
continue;
|
|
9765
|
+
}
|
|
9766
|
+
// Not in any text node — the renderer put it in an attribute.
|
|
9767
|
+
markAttrs(el, rendered, raw, fallbacks, marked);
|
|
9768
|
+
}
|
|
9769
|
+
};
|
|
9770
|
+
const setValues = (base, product) => {
|
|
9771
|
+
const resolved = fieldValues(product);
|
|
9772
|
+
let changed = false;
|
|
9773
|
+
const set = (key, value) => {
|
|
9774
|
+
if (!value || tokens.values[key] === value) {
|
|
9775
|
+
return;
|
|
9776
|
+
}
|
|
9777
|
+
tokens.values[key] = value;
|
|
9778
|
+
changed = true;
|
|
9779
|
+
};
|
|
9780
|
+
// Bare `{{productName}}` stays the title; the dotted forms carry the rest.
|
|
9781
|
+
set(base, resolved.title);
|
|
9782
|
+
for (const field of PRODUCT_FIELDS) {
|
|
9783
|
+
set(`${base}.${field}`, resolved[field]);
|
|
9784
|
+
}
|
|
9785
|
+
return changed;
|
|
9786
|
+
};
|
|
9787
|
+
const apply = (base, product) => {
|
|
9788
|
+
if (!setValues(base, product)) {
|
|
9789
|
+
return;
|
|
9790
|
+
}
|
|
9791
|
+
for (const mark of marked) {
|
|
9792
|
+
if (mark.kind === 'text') {
|
|
9793
|
+
// Same guard as product-card.ts:70.
|
|
9794
|
+
if (mark.node.isConnected) {
|
|
9795
|
+
mark.node.nodeValue = resolveTokens(mark.raw, tokens.values, mark.fallbacks);
|
|
9796
|
+
}
|
|
9797
|
+
continue;
|
|
9798
|
+
}
|
|
9799
|
+
// Same guard as product-card.ts:70.
|
|
9800
|
+
if (!mark.el.isConnected) {
|
|
9801
|
+
continue;
|
|
9802
|
+
}
|
|
9803
|
+
if (mark.kind === 'span') {
|
|
9804
|
+
const next = resolveToken(mark.id, tokens.values, mark.fallbacks);
|
|
9805
|
+
if (mark.el.textContent !== next) {
|
|
9806
|
+
mark.el.textContent = next;
|
|
9807
|
+
}
|
|
9808
|
+
continue;
|
|
9809
|
+
}
|
|
9810
|
+
const next = resolveTokens(mark.raw, tokens.values, mark.fallbacks);
|
|
9811
|
+
if (mark.el.getAttribute(mark.attr) !== next) {
|
|
9812
|
+
mark.el.setAttribute(mark.attr, next);
|
|
9813
|
+
}
|
|
9814
|
+
}
|
|
9815
|
+
};
|
|
9816
|
+
const sources = productSources(signals, lastViewedHandle);
|
|
9817
|
+
// Warmed by `warmProductTokens` before the gate: seed synchronously so the
|
|
9818
|
+
// first paint is already right and nothing visibly changes.
|
|
9819
|
+
for (const [id, handle] of sources) {
|
|
9820
|
+
const cached = handle ? getCachedProduct(handle) : undefined;
|
|
9821
|
+
if (cached) {
|
|
9822
|
+
setValues(id, cached);
|
|
9823
|
+
}
|
|
9824
|
+
}
|
|
9825
|
+
for (const [id, handle] of sources) {
|
|
9826
|
+
if (!handle) {
|
|
9827
|
+
continue;
|
|
9828
|
+
}
|
|
9829
|
+
// A failed fetch leaves the fallback in place, and nothing retries.
|
|
9830
|
+
void fetchProduct(handle).then((product) => {
|
|
9831
|
+
if (product) {
|
|
9832
|
+
apply(id, product);
|
|
9833
|
+
}
|
|
9834
|
+
});
|
|
9835
|
+
}
|
|
9836
|
+
// `showStep` re-renders the tree per step; without this the detached
|
|
9837
|
+
// subtrees stay retained here.
|
|
9838
|
+
return {
|
|
9839
|
+
resetPending: () => {
|
|
9840
|
+
marked.length = 0;
|
|
9841
|
+
},
|
|
9842
|
+
};
|
|
9843
|
+
};
|
|
9844
|
+
|
|
8337
9845
|
// eslint-disable-next-line no-duplicate-imports -- side-effect: registers <bop-popup>
|
|
8338
9846
|
const createOverlayCloseButton = (onClose) => {
|
|
8339
9847
|
const btn = document.createElement('button');
|
|
@@ -8447,6 +9955,26 @@ const wrapFullscreenTakeover = (rule, popupRoot, inner) => {
|
|
|
8447
9955
|
popupRoot.contentRoot.appendChild(inner);
|
|
8448
9956
|
};
|
|
8449
9957
|
|
|
9958
|
+
/**
|
|
9959
|
+
* The one format that is not a floating layer.
|
|
9960
|
+
*
|
|
9961
|
+
* Every other wrapper pins the host with `position: fixed` and `Z_INDEX` and
|
|
9962
|
+
* appends an overlay close button. This one writes neither: the host element
|
|
9963
|
+
* already defaults to `:host { display: block }`, so leaving its positioning
|
|
9964
|
+
* alone is what puts the form in the merchant's normal page flow, taking real
|
|
9965
|
+
* layout space and reflowing with the section that holds it. There is no close
|
|
9966
|
+
* control because an inline form is not a dismissible surface.
|
|
9967
|
+
*/
|
|
9968
|
+
const wrapInline = (rule, popupRoot, inner) => {
|
|
9969
|
+
var _a;
|
|
9970
|
+
const display = rule.display;
|
|
9971
|
+
inner.style.width = '100%';
|
|
9972
|
+
// Defaults to no animation: the floating formats animate because they arrive
|
|
9973
|
+
// over the page, while this one is part of the page from first paint.
|
|
9974
|
+
applyPopupAnimation(inner, (_a = display.animation) !== null && _a !== void 0 ? _a : 'none');
|
|
9975
|
+
popupRoot.contentRoot.appendChild(inner);
|
|
9976
|
+
};
|
|
9977
|
+
|
|
8450
9978
|
const FOCUSABLE = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
8451
9979
|
// Asked of the DOM rather than closed over, because `showStep` replaces the
|
|
8452
9980
|
// whole subtree on every step change — a captured reference would point at the
|
|
@@ -8683,7 +10211,8 @@ const MIN_FIT_SCALE = 0.1;
|
|
|
8683
10211
|
// behind the step container's `overflow: hidden`.
|
|
8684
10212
|
const fitScale = (inner) => {
|
|
8685
10213
|
const width = pxSize(inner.style.width);
|
|
8686
|
-
|
|
10214
|
+
// step.ts sets the configured height as a floor, so it lands on min-height.
|
|
10215
|
+
const height = pxSize(inner.style.height || inner.style.minHeight);
|
|
8687
10216
|
if (!(width > 0) || !(height > 0)) {
|
|
8688
10217
|
return undefined;
|
|
8689
10218
|
}
|
|
@@ -8748,6 +10277,7 @@ const wrapSlideIn = (rule, popupRoot, inner) => {
|
|
|
8748
10277
|
|
|
8749
10278
|
// eslint-disable-next-line @nx/enforce-module-boundaries
|
|
8750
10279
|
const renderPopup = (rule, signals, options = {}) => {
|
|
10280
|
+
var _a;
|
|
8751
10281
|
const { sendTag, getEdgeData, sendEdgeData, baseUrl, userId } = options;
|
|
8752
10282
|
const { variantId, content } = selectVariant(rule, userId !== null && userId !== void 0 ? userId : '');
|
|
8753
10283
|
const effRule = { ...rule, content };
|
|
@@ -8761,6 +10291,17 @@ const renderPopup = (rule, signals, options = {}) => {
|
|
|
8761
10291
|
// Resolve once so every block, wrapper and CSS variable sees the same
|
|
8762
10292
|
// complete theme — a rule may carry a partial theme, or none at all.
|
|
8763
10293
|
const theme = resolveTheme(effRule.theme);
|
|
10294
|
+
// One map per instance; the product tier mutates it after render.
|
|
10295
|
+
const tokens = {
|
|
10296
|
+
values: { ...signalTokenValues(signals), ...((_a = options.tokenValues) !== null && _a !== void 0 ? _a : {}) },
|
|
10297
|
+
};
|
|
10298
|
+
// Only when the copy asks for a product. `variants` stripped first:
|
|
10299
|
+
// `selectVariant` already picked the content that renders.
|
|
10300
|
+
let resetTokenSwaps;
|
|
10301
|
+
const renderedTokens = collectRuleTokens({ ...effRule, variants: undefined });
|
|
10302
|
+
if (tokensInTier(renderedTokens, 'product').length > 0) {
|
|
10303
|
+
resetTokenSwaps = attachProductTokens(tokens, signals, options.lastViewedProduct).resetPending;
|
|
10304
|
+
}
|
|
8764
10305
|
// Custom properties inherit through the shadow boundary, so setting them on
|
|
8765
10306
|
// the host is what lets blocks and the merchant's rule CSS read the theme.
|
|
8766
10307
|
applyStyles(popupRoot, themeCssVars(theme));
|
|
@@ -8769,6 +10310,8 @@ const renderPopup = (rule, signals, options = {}) => {
|
|
|
8769
10310
|
}
|
|
8770
10311
|
const showStep = (step) => {
|
|
8771
10312
|
popupRoot.contentRoot.replaceChildren();
|
|
10313
|
+
// Previous step's elements are detached; drop their swap entries.
|
|
10314
|
+
resetTokenSwaps === null || resetTokenSwaps === void 0 ? void 0 : resetTokenSwaps();
|
|
8772
10315
|
const ctx = {
|
|
8773
10316
|
rule: effRule,
|
|
8774
10317
|
popupRoot,
|
|
@@ -8782,6 +10325,10 @@ const renderPopup = (rule, signals, options = {}) => {
|
|
|
8782
10325
|
userId,
|
|
8783
10326
|
variantId,
|
|
8784
10327
|
leadState,
|
|
10328
|
+
tokens,
|
|
10329
|
+
geoCountry: typeof signals['location.country'] === 'string'
|
|
10330
|
+
? signals['location.country']
|
|
10331
|
+
: undefined,
|
|
8785
10332
|
};
|
|
8786
10333
|
const inner = renderStep(step, ctx);
|
|
8787
10334
|
switch (effRule.display.format) {
|
|
@@ -8800,6 +10347,9 @@ const renderPopup = (rule, signals, options = {}) => {
|
|
|
8800
10347
|
case 'fullscreenTakeover':
|
|
8801
10348
|
wrapFullscreenTakeover(effRule, popupRoot, inner);
|
|
8802
10349
|
return;
|
|
10350
|
+
case 'inline':
|
|
10351
|
+
wrapInline(effRule, popupRoot, inner);
|
|
10352
|
+
return;
|
|
8803
10353
|
}
|
|
8804
10354
|
};
|
|
8805
10355
|
popupRoot.addEventListener('blotoutPopup:gotostep', ((e) => {
|
|
@@ -8816,6 +10366,15 @@ const renderPopup = (rule, signals, options = {}) => {
|
|
|
8816
10366
|
popupRoot.addEventListener('blotoutPopup:dismiss', ((e) => {
|
|
8817
10367
|
var _a, _b;
|
|
8818
10368
|
const source = (_b = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.source) !== null && _b !== void 0 ? _b : 'closeButton';
|
|
10369
|
+
// An inline form is not a dismissible surface. Nothing in this handler
|
|
10370
|
+
// applies to it: there is no fatigue to record for a rule that is never
|
|
10371
|
+
// fatigue-gated, and no teaser to offer for something that was never a
|
|
10372
|
+
// popup. Reachable only if a merchant drops a close-button block onto the
|
|
10373
|
+
// canvas before switching the rule to inline; `triggerDismiss` leaves the
|
|
10374
|
+
// host in its anchor, so the click does nothing at all.
|
|
10375
|
+
if (isInlineRule(rule)) {
|
|
10376
|
+
return;
|
|
10377
|
+
}
|
|
8819
10378
|
setDismissed(rule.id, rule.fatigue.suppressAfterDismiss);
|
|
8820
10379
|
persistRuleEvent(rule, 'dismiss', getEdgeData, sendEdgeData);
|
|
8821
10380
|
// A post-convert auto-close already fired blotoutPopupConvert; only an explicit
|
|
@@ -8831,7 +10390,7 @@ const renderPopup = (rule, signals, options = {}) => {
|
|
|
8831
10390
|
displayFormat: rule.display.format,
|
|
8832
10391
|
});
|
|
8833
10392
|
}
|
|
8834
|
-
const teaser = renderTeaser(rule, () => {
|
|
10393
|
+
const teaser = renderTeaser(rule, tokens.values, () => {
|
|
8835
10394
|
clearDismissed(rule.id, rule.fatigue.suppressAfterDismiss);
|
|
8836
10395
|
// The page-load server snapshot is stale by reopen time (the visitor may
|
|
8837
10396
|
// have converted/dismissed on another device), so gate local-only.
|
|
@@ -9479,16 +11038,112 @@ const createCartTracker = (adapter, opts) => {
|
|
|
9479
11038
|
};
|
|
9480
11039
|
};
|
|
9481
11040
|
|
|
11041
|
+
/**
|
|
11042
|
+
* How long to keep asking the adapter for an answer it has not given yet.
|
|
11043
|
+
*
|
|
11044
|
+
* The platform writes its customer global as the document renders, so on
|
|
11045
|
+
* almost every page view the first read already resolves and none of this runs.
|
|
11046
|
+
* The window only has to cover a storefront where the SDK happens to execute
|
|
11047
|
+
* before that markup does; past a few seconds the global is not coming and a
|
|
11048
|
+
* rule gated on it has no business waiting on it either.
|
|
11049
|
+
*/
|
|
11050
|
+
const RESOLVE_POLL_MS = 200;
|
|
11051
|
+
const RESOLVE_DEADLINE_MS = 3000;
|
|
11052
|
+
/**
|
|
11053
|
+
* Sign-in state, derived from whatever customer adapter this page resolved to.
|
|
11054
|
+
*
|
|
11055
|
+
* Like the cart tracker it knows nothing about Shopify — the adapter answers,
|
|
11056
|
+
* this turns the answer into a signal. Unlike the cart there is nothing to
|
|
11057
|
+
* fetch and nothing to keep watching: every platform we care about makes
|
|
11058
|
+
* signing in and out a full page load, so once resolved the value cannot move
|
|
11059
|
+
* under us within one SDK lifetime. So `getSignals` reads live rather than
|
|
11060
|
+
* caching, and a page-view boundary picks up a fresh answer for free.
|
|
11061
|
+
*
|
|
11062
|
+
* What it does have to announce is the first resolution. The engine evaluates
|
|
11063
|
+
* once at start and then only when something tells it to, so a read that was
|
|
11064
|
+
* still unresolved at init would otherwise sit unjudged until the shopper
|
|
11065
|
+
* happened to scroll or navigate — and on a page where they do neither, a
|
|
11066
|
+
* signed-in customer would simply never see their popup. Same reasoning as the
|
|
11067
|
+
* cart tracker's "always notify the first read": if the first read stays
|
|
11068
|
+
* silent, nothing ever asks the engine to look again.
|
|
11069
|
+
*/
|
|
11070
|
+
const createSignInTracker = (adapter) => {
|
|
11071
|
+
const subscribers = [];
|
|
11072
|
+
let timer;
|
|
11073
|
+
// The adapter slot is a merchant's to fill, so its promise not to throw is
|
|
11074
|
+
// one we cannot enforce. Unguarded, a throw here would abort `runGate` on the
|
|
11075
|
+
// edge-read path, outside init's own try/catch, and leave the poll below
|
|
11076
|
+
// running past its deadline.
|
|
11077
|
+
const read = () => {
|
|
11078
|
+
try {
|
|
11079
|
+
return adapter.isSignedIn();
|
|
11080
|
+
}
|
|
11081
|
+
catch {
|
|
11082
|
+
return undefined;
|
|
11083
|
+
}
|
|
11084
|
+
};
|
|
11085
|
+
const stopPolling = () => {
|
|
11086
|
+
if (timer !== undefined) {
|
|
11087
|
+
clearInterval(timer);
|
|
11088
|
+
timer = undefined;
|
|
11089
|
+
}
|
|
11090
|
+
};
|
|
11091
|
+
// Only started when the answer is not already there, and stopped the moment
|
|
11092
|
+
// it arrives, so the common case costs one property read and no timer.
|
|
11093
|
+
if (read() === undefined) {
|
|
11094
|
+
const startedAt = Date.now();
|
|
11095
|
+
timer = setInterval(() => {
|
|
11096
|
+
if (read() !== undefined) {
|
|
11097
|
+
stopPolling();
|
|
11098
|
+
for (const cb of subscribers) {
|
|
11099
|
+
cb();
|
|
11100
|
+
}
|
|
11101
|
+
return;
|
|
11102
|
+
}
|
|
11103
|
+
if (Date.now() - startedAt >= RESOLVE_DEADLINE_MS) {
|
|
11104
|
+
stopPolling();
|
|
11105
|
+
}
|
|
11106
|
+
}, RESOLVE_POLL_MS);
|
|
11107
|
+
}
|
|
11108
|
+
return {
|
|
11109
|
+
getSignals: () => {
|
|
11110
|
+
const signedIn = read();
|
|
11111
|
+
// No key at all while unresolved, rather than a guess. Sign-in
|
|
11112
|
+
// conditions are restricted to `equals`, which cannot match an absent
|
|
11113
|
+
// signal, so an unanswered read leaves the rule inert instead of
|
|
11114
|
+
// treating a customer the store has not named yet as a stranger.
|
|
11115
|
+
if (signedIn === undefined) {
|
|
11116
|
+
return {};
|
|
11117
|
+
}
|
|
11118
|
+
return { 'customer.isSignedIn': signedIn };
|
|
11119
|
+
},
|
|
11120
|
+
onChange: (cb) => {
|
|
11121
|
+
subscribers.push(cb);
|
|
11122
|
+
},
|
|
11123
|
+
stop: stopPolling,
|
|
11124
|
+
};
|
|
11125
|
+
};
|
|
11126
|
+
|
|
9482
11127
|
const usesSignal = (rule, ids) => { var _a; return ((_a = rule.conditions) !== null && _a !== void 0 ? _a : []).some((c) => ids.has(c.signalId)); };
|
|
9483
11128
|
const anyUsesSignal = (rules, ids) => rules.some((r) => usesSignal(r, ids));
|
|
9484
11129
|
const BEHAVIOR_SIGNALS = new Set(BEHAVIOR_SIGNAL_IDS);
|
|
9485
11130
|
const CART_SIGNALS = new Set(CART_SIGNAL_IDS);
|
|
11131
|
+
const SIGN_IN_SIGNALS = new Set(SIGN_IN_SIGNAL_IDS);
|
|
9486
11132
|
const usesBehaviorSignal = (rule) => usesSignal(rule, BEHAVIOR_SIGNALS);
|
|
9487
11133
|
/**
|
|
9488
11134
|
* Cart rules are deferred like behavior rules: the cart is read after init, so
|
|
9489
11135
|
* evaluating one in the static gate would always see an unknown cart.
|
|
9490
11136
|
*/
|
|
9491
11137
|
const usesCartSignal = (rule) => usesSignal(rule, CART_SIGNALS);
|
|
11138
|
+
/**
|
|
11139
|
+
* Sign-in rules are deferred too, for a different reason: the read is
|
|
11140
|
+
* synchronous, but the store global behind it is written as the page renders
|
|
11141
|
+
* and can be missing when the static gate runs. Judging one there gives it a
|
|
11142
|
+
* single look at the moment it is least likely to be answerable. On the engine
|
|
11143
|
+
* it is re-judged whenever anything else moves and at every page-view boundary,
|
|
11144
|
+
* so the answer only has to arrive eventually.
|
|
11145
|
+
*/
|
|
11146
|
+
const usesSignInSignal = (rule) => usesSignal(rule, SIGN_IN_SIGNALS);
|
|
9492
11147
|
// The signals that advance without an event to hang off, so they are the only
|
|
9493
11148
|
// ones that need a periodic tick. `satisfies` is the guard: rename any of these
|
|
9494
11149
|
// ids in config and this stops compiling, rather than shipping a trigger that
|
|
@@ -9619,24 +11274,27 @@ const startTriggerEngine = (params) => {
|
|
|
9619
11274
|
};
|
|
9620
11275
|
|
|
9621
11276
|
/**
|
|
9622
|
-
* The
|
|
9623
|
-
* none registered.
|
|
11277
|
+
* The adapter in `slot` for the platform this page is running on, or undefined
|
|
11278
|
+
* when none registered.
|
|
9624
11279
|
*
|
|
9625
11280
|
* Read from the window registry rather than a table in here, so the core bundle
|
|
9626
11281
|
* links no platform code at all. The per-platform bundle that `/load` served
|
|
9627
11282
|
* has already put itself in the registry by the time init runs.
|
|
9628
11283
|
*
|
|
9629
11284
|
* Undefined is the normal answer, not an error: on a host with no adapter the
|
|
9630
|
-
*
|
|
11285
|
+
* store is never read and the rules that depend on it simply stay inert.
|
|
11286
|
+
*
|
|
11287
|
+
* `kind` and `rules` only feed the log lines — which adapter answered is the
|
|
11288
|
+
* first thing you want when a rule does nothing on a merchant's store.
|
|
9631
11289
|
*/
|
|
9632
|
-
const
|
|
11290
|
+
const resolveAdapter = (slot, kind, rules) => {
|
|
9633
11291
|
var _a;
|
|
9634
11292
|
if (typeof window === 'undefined') {
|
|
9635
11293
|
return undefined;
|
|
9636
11294
|
}
|
|
9637
|
-
const adapter = (_a = window[registryKey]) === null || _a === void 0 ? void 0 : _a
|
|
11295
|
+
const adapter = (_a = window[registryKey]) === null || _a === void 0 ? void 0 : _a[slot];
|
|
9638
11296
|
if (!adapter) {
|
|
9639
|
-
logger.info(
|
|
11297
|
+
logger.info(`BlotoutPopup SDK: no ${kind} adapter registered for this host; ${rules} rules idle`);
|
|
9640
11298
|
return undefined;
|
|
9641
11299
|
}
|
|
9642
11300
|
// The registered adapter still has to agree it is on its own platform. A tag
|
|
@@ -9645,7 +11303,7 @@ const resolveCartAdapter = () => {
|
|
|
9645
11303
|
// page view.
|
|
9646
11304
|
try {
|
|
9647
11305
|
if (!adapter.detect()) {
|
|
9648
|
-
logger.info(`BlotoutPopup SDK:
|
|
11306
|
+
logger.info(`BlotoutPopup SDK: ${kind} adapter '${adapter.id}' registered but this page is not that platform; ${rules} rules idle`);
|
|
9649
11307
|
return undefined;
|
|
9650
11308
|
}
|
|
9651
11309
|
}
|
|
@@ -9653,11 +11311,109 @@ const resolveCartAdapter = () => {
|
|
|
9653
11311
|
// A detector must never take the SDK down.
|
|
9654
11312
|
return undefined;
|
|
9655
11313
|
}
|
|
9656
|
-
|
|
9657
|
-
// nothing on a merchant's store.
|
|
9658
|
-
logger.info(`BlotoutPopup SDK: cart adapter '${adapter.id}' active`);
|
|
11314
|
+
logger.info(`BlotoutPopup SDK: ${kind} adapter '${adapter.id}' active`);
|
|
9659
11315
|
return adapter;
|
|
9660
11316
|
};
|
|
11317
|
+
const resolveCartAdapter = () => resolveAdapter('cartAdapter', 'cart', 'cart');
|
|
11318
|
+
/**
|
|
11319
|
+
* Same contract, for the same reason: the core bundle links no platform code,
|
|
11320
|
+
* and a host with no adapter leaves sign-in rules inert rather than answering
|
|
11321
|
+
* the question wrongly.
|
|
11322
|
+
*/
|
|
11323
|
+
const resolveCustomerAdapter = () => resolveAdapter('customerAdapter', 'customer', 'sign-in');
|
|
11324
|
+
|
|
11325
|
+
// eslint-disable-next-line @nx/enforce-module-boundaries
|
|
11326
|
+
/** True when at least one rule's copy references an identity-tier token. */
|
|
11327
|
+
const needsIdentityRead = (rules) => rules.some((rule) => tokensInTier(collectRuleTokens(rule), 'identity').length > 0);
|
|
11328
|
+
/** Never rejects: failure, timeout or a bad body all resolve to `{}`. */
|
|
11329
|
+
const fetchIdentityTokens = (baseUrl, timeoutMs, userId) => {
|
|
11330
|
+
if (!baseUrl) {
|
|
11331
|
+
return Promise.resolve({});
|
|
11332
|
+
}
|
|
11333
|
+
let url;
|
|
11334
|
+
try {
|
|
11335
|
+
url = new URL('/providers/blotoutPopup/tokens', baseUrl).toString();
|
|
11336
|
+
}
|
|
11337
|
+
catch {
|
|
11338
|
+
return Promise.resolve({});
|
|
11339
|
+
}
|
|
11340
|
+
const headers = new Headers();
|
|
11341
|
+
if (userId) {
|
|
11342
|
+
headers.set('EdgeTagUserId', userId);
|
|
11343
|
+
}
|
|
11344
|
+
return new Promise((resolve) => {
|
|
11345
|
+
let settled = false;
|
|
11346
|
+
const done = (values) => {
|
|
11347
|
+
if (settled) {
|
|
11348
|
+
return;
|
|
11349
|
+
}
|
|
11350
|
+
settled = true;
|
|
11351
|
+
resolve(values);
|
|
11352
|
+
};
|
|
11353
|
+
const timer = setTimeout(() => done({}), timeoutMs);
|
|
11354
|
+
fetch(url, { credentials: 'include', headers })
|
|
11355
|
+
.then((res) => (res.ok ? res.json() : null))
|
|
11356
|
+
.then((body) => {
|
|
11357
|
+
clearTimeout(timer);
|
|
11358
|
+
const values = body === null || body === void 0 ? void 0 : body.values;
|
|
11359
|
+
if (!values || typeof values !== 'object') {
|
|
11360
|
+
done({});
|
|
11361
|
+
return;
|
|
11362
|
+
}
|
|
11363
|
+
const out = {};
|
|
11364
|
+
for (const [id, value] of Object.entries(values)) {
|
|
11365
|
+
if (typeof value === 'string' && value !== '') {
|
|
11366
|
+
out[id] = value;
|
|
11367
|
+
}
|
|
11368
|
+
}
|
|
11369
|
+
done(out);
|
|
11370
|
+
})
|
|
11371
|
+
.catch(() => {
|
|
11372
|
+
clearTimeout(timer);
|
|
11373
|
+
done({});
|
|
11374
|
+
});
|
|
11375
|
+
});
|
|
11376
|
+
};
|
|
11377
|
+
|
|
11378
|
+
// `blotoutPopup:` prefix so `clearBlotoutPopupState` wipes it.
|
|
11379
|
+
const LAST_VIEWED_KEY = 'blotoutPopup:lastViewed';
|
|
11380
|
+
const MAX_AGE_MS = 30 * 24 * 60 * 60 * 1000;
|
|
11381
|
+
/** Records the product the shopper is looking at now. */
|
|
11382
|
+
const recordLastViewedProduct = (handle) => {
|
|
11383
|
+
if (!handle) {
|
|
11384
|
+
return;
|
|
11385
|
+
}
|
|
11386
|
+
const entry = { handle, at: Date.now() };
|
|
11387
|
+
safeSet('visitor', LAST_VIEWED_KEY, JSON.stringify(entry));
|
|
11388
|
+
};
|
|
11389
|
+
/** Undefined when missing, unreadable, or older than 30 days. */
|
|
11390
|
+
const readLastViewedProduct = () => {
|
|
11391
|
+
const raw = safeGet('visitor', LAST_VIEWED_KEY);
|
|
11392
|
+
if (!raw) {
|
|
11393
|
+
return undefined;
|
|
11394
|
+
}
|
|
11395
|
+
let entry;
|
|
11396
|
+
try {
|
|
11397
|
+
entry = JSON.parse(raw);
|
|
11398
|
+
}
|
|
11399
|
+
catch {
|
|
11400
|
+
safeRemove('visitor', LAST_VIEWED_KEY);
|
|
11401
|
+
return undefined;
|
|
11402
|
+
}
|
|
11403
|
+
if (!entry ||
|
|
11404
|
+
typeof entry.handle !== 'string' ||
|
|
11405
|
+
entry.handle === '' ||
|
|
11406
|
+
typeof entry.at !== 'number' ||
|
|
11407
|
+
!Number.isFinite(entry.at)) {
|
|
11408
|
+
safeRemove('visitor', LAST_VIEWED_KEY);
|
|
11409
|
+
return undefined;
|
|
11410
|
+
}
|
|
11411
|
+
if (Date.now() - entry.at > MAX_AGE_MS) {
|
|
11412
|
+
safeRemove('visitor', LAST_VIEWED_KEY);
|
|
11413
|
+
return undefined;
|
|
11414
|
+
}
|
|
11415
|
+
return entry.handle;
|
|
11416
|
+
};
|
|
9661
11417
|
|
|
9662
11418
|
// Fail-open deadline for the edge fatigue/identity read (see runInit).
|
|
9663
11419
|
const EDGE_READ_TIMEOUT_MS = 2500;
|
|
@@ -9694,8 +11450,17 @@ const runInit = (params) => {
|
|
|
9694
11450
|
sendPopupEvent(params.sendTag, 'blotoutPopupInitialized', {
|
|
9695
11451
|
ruleCount: variables.popupRules.length,
|
|
9696
11452
|
});
|
|
11453
|
+
// Empty until the edge read settles, so those tokens show their fallback.
|
|
11454
|
+
let identityValues = {};
|
|
11455
|
+
let identityRead;
|
|
11456
|
+
let productRead;
|
|
11457
|
+
// Declared here, assigned at the read below: `show` closes over it and
|
|
11458
|
+
// preview mode can return before that line runs.
|
|
11459
|
+
let lastViewedProduct;
|
|
9697
11460
|
let current = null;
|
|
9698
|
-
|
|
11461
|
+
// Split out of `mount` because an inline form is placed into the merchant's
|
|
11462
|
+
// own anchor rather than the body, but must still carry the tag's UI CSS.
|
|
11463
|
+
const applyUiCss = (el) => {
|
|
9699
11464
|
if (variables.uiPreferences.css) {
|
|
9700
11465
|
if (isSafeCss(variables.uiPreferences.css)) {
|
|
9701
11466
|
el.setUiCss(variables.uiPreferences.css);
|
|
@@ -9704,6 +11469,9 @@ const runInit = (params) => {
|
|
|
9704
11469
|
logger.info('BlotoutPopup SDK: uiPreferences.css rejected (contains @import / @charset / expression() or exceeds 50KB)');
|
|
9705
11470
|
}
|
|
9706
11471
|
}
|
|
11472
|
+
};
|
|
11473
|
+
const mount = (el) => {
|
|
11474
|
+
applyUiCss(el);
|
|
9707
11475
|
current === null || current === void 0 ? void 0 : current.remove();
|
|
9708
11476
|
document.body.appendChild(el);
|
|
9709
11477
|
current = el;
|
|
@@ -9718,10 +11486,20 @@ const runInit = (params) => {
|
|
|
9718
11486
|
if (!rule) {
|
|
9719
11487
|
return;
|
|
9720
11488
|
}
|
|
11489
|
+
// `mount` body-appends, so forcing an inline rule would drop an
|
|
11490
|
+
// unpositioned form at the end of the page instead of into its anchor,
|
|
11491
|
+
// where it either already sits or has no placement at all. Reachable with a
|
|
11492
|
+
// bare `show()` on a store whose first rule happens to be inline.
|
|
11493
|
+
if (isInlineRule(rule)) {
|
|
11494
|
+
logger.info(`BlotoutPopup SDK: rule '${rule.id}' is inline and cannot be shown`);
|
|
11495
|
+
return;
|
|
11496
|
+
}
|
|
9721
11497
|
const popup = renderPopup(rule, variables.cdnSignals, {
|
|
9722
11498
|
sendTag: params.sendTag,
|
|
9723
11499
|
baseUrl: params.baseUrl,
|
|
9724
11500
|
userId: params.userId,
|
|
11501
|
+
tokenValues: identityValues,
|
|
11502
|
+
lastViewedProduct,
|
|
9725
11503
|
});
|
|
9726
11504
|
if (popup) {
|
|
9727
11505
|
mount(popup);
|
|
@@ -9758,18 +11536,91 @@ const runInit = (params) => {
|
|
|
9758
11536
|
if (params.geoRegion) {
|
|
9759
11537
|
signals['location.region'] = params.geoRegion;
|
|
9760
11538
|
}
|
|
11539
|
+
// Only when a rule asks for it; otherwise we store a browsing record nothing
|
|
11540
|
+
// reads.
|
|
11541
|
+
const tracksLastViewed = variables.popupRules.some((rule) => collectRuleTokens(rule).some((id) => tokenBaseId(id) === 'lastViewedProduct'));
|
|
11542
|
+
// Read before recording, or on a PDP this names the on-screen product.
|
|
11543
|
+
lastViewedProduct = tracksLastViewed ? readLastViewedProduct() : undefined;
|
|
11544
|
+
if (tracksLastViewed) {
|
|
11545
|
+
recordLastViewedProduct(signals['page.productHandle']);
|
|
11546
|
+
}
|
|
9761
11547
|
// The page-scoped view of `signals`, refreshed at every page-view boundary.
|
|
9762
11548
|
// Click triggers and the public API read this rather than closing over the
|
|
9763
11549
|
// snapshot above, so a click three soft navigations later does not carry the
|
|
9764
11550
|
// first page's path and product handle into the popup and its analytics.
|
|
9765
11551
|
let pageSignals = signals;
|
|
9766
11552
|
const refreshPageSignals = () => {
|
|
11553
|
+
var _a;
|
|
9767
11554
|
pageSignals = withCurrentPageSignals(signals, {
|
|
9768
11555
|
url: window.location.href,
|
|
9769
11556
|
referrer: document.referrer,
|
|
9770
11557
|
});
|
|
11558
|
+
if (tracksLastViewed) {
|
|
11559
|
+
// Same order as above: this page's product is "last viewed" for the next.
|
|
11560
|
+
const handle = pageSignals['page.productHandle'];
|
|
11561
|
+
if (handle) {
|
|
11562
|
+
lastViewedProduct = (_a = readLastViewedProduct()) !== null && _a !== void 0 ? _a : lastViewedProduct;
|
|
11563
|
+
recordLastViewedProduct(handle);
|
|
11564
|
+
}
|
|
11565
|
+
}
|
|
9771
11566
|
return pageSignals;
|
|
9772
11567
|
};
|
|
11568
|
+
// Inline forms mount here, ahead of and independent of every gate below.
|
|
11569
|
+
// They are placed by the merchant in their theme rather than fired at the
|
|
11570
|
+
// shopper, so there is no trigger to wait for, no fatigue to consult and no
|
|
11571
|
+
// impression cap to spend — and nothing to gain from waiting on the edge
|
|
11572
|
+
// read, which would leave a hole in the page for up to its whole deadline.
|
|
11573
|
+
const inlineRules = variables.popupRules.filter(isInlineRule);
|
|
11574
|
+
// One impression per rule per page view. `onMount` runs on every fill, and
|
|
11575
|
+
// the observer re-fills whenever the theme swaps the section an anchor sits
|
|
11576
|
+
// in — the case it exists for — so emitting per fill would count theme churn
|
|
11577
|
+
// rather than shoppers. Cleared at the page-view boundary below.
|
|
11578
|
+
const inlineCounted = new Set();
|
|
11579
|
+
const countInlineImpression = (rule, host) => {
|
|
11580
|
+
if (inlineCounted.has(rule.id)) {
|
|
11581
|
+
return;
|
|
11582
|
+
}
|
|
11583
|
+
inlineCounted.add(rule.id);
|
|
11584
|
+
sendPopupEvent(params.sendTag, 'blotoutPopupLoaded', {
|
|
11585
|
+
ruleId: rule.id,
|
|
11586
|
+
displayFormat: rule.display.format,
|
|
11587
|
+
});
|
|
11588
|
+
// Analytics only: `recordAndEmitImpression` would also tick the local
|
|
11589
|
+
// impression counter and write engagement to the edge, which is how a
|
|
11590
|
+
// rule becomes spent — and an always-on form has nothing to spend.
|
|
11591
|
+
emitImpression(rule, params.userId, params.sendTag, params.baseUrl, host);
|
|
11592
|
+
};
|
|
11593
|
+
const inline = inlineRules.length
|
|
11594
|
+
? startInlineForms({
|
|
11595
|
+
rules: inlineRules,
|
|
11596
|
+
render: (rule) => {
|
|
11597
|
+
// The only schedule check on this path. `canFireRule` owns it for
|
|
11598
|
+
// every other format and inline skips that, so without this an SPA —
|
|
11599
|
+
// which fetches the rules once and re-fills from the page-view
|
|
11600
|
+
// boundary — would keep putting the form back past `endsAt`.
|
|
11601
|
+
if (!isInSchedule(rule.schedule)) {
|
|
11602
|
+
return null;
|
|
11603
|
+
}
|
|
11604
|
+
const host = renderPopup(rule, pageSignals, {
|
|
11605
|
+
sendTag: params.sendTag,
|
|
11606
|
+
getEdgeData: params.getEdgeData,
|
|
11607
|
+
sendEdgeData: params.sendEdgeData,
|
|
11608
|
+
baseUrl: params.baseUrl,
|
|
11609
|
+
userId: params.userId,
|
|
11610
|
+
tokenValues: identityValues,
|
|
11611
|
+
lastViewedProduct,
|
|
11612
|
+
});
|
|
11613
|
+
if (host) {
|
|
11614
|
+
applyUiCss(host);
|
|
11615
|
+
}
|
|
11616
|
+
return host;
|
|
11617
|
+
},
|
|
11618
|
+
onMount: (rule, host) => {
|
|
11619
|
+
logger.info(`BlotoutPopup SDK: mounted inline rule '${rule.id}' into its anchor`);
|
|
11620
|
+
countInlineImpression(rule, host);
|
|
11621
|
+
},
|
|
11622
|
+
})
|
|
11623
|
+
: undefined;
|
|
9773
11624
|
let serverState;
|
|
9774
11625
|
// Set once the deferred engine exists. Called when the screen frees up, so a
|
|
9775
11626
|
// rule that was eligible but held back gets its turn.
|
|
@@ -9789,7 +11640,11 @@ const runInit = (params) => {
|
|
|
9789
11640
|
// email-capture modal a shopper was half-way through typing into. Asked of
|
|
9790
11641
|
// the DOM rather than of `current`, because a teaser reopen appends its
|
|
9791
11642
|
// popup itself and `current` never learns about it.
|
|
9792
|
-
|
|
11643
|
+
// Inline hosts are excluded by attribute, not just skipped as rules. They
|
|
11644
|
+
// are the same custom element, so a footer form sitting in the page all
|
|
11645
|
+
// session would otherwise read as "a popup is already open" and hold back
|
|
11646
|
+
// every real popup on the store, permanently.
|
|
11647
|
+
if (document.querySelector(`${POPUP_TAG}:not([data-format="inline"])`)) {
|
|
9793
11648
|
logger.info(`BlotoutPopup SDK: rule '${rule.id}' held back, a popup is already open`);
|
|
9794
11649
|
return 'held';
|
|
9795
11650
|
}
|
|
@@ -9821,6 +11676,8 @@ const runInit = (params) => {
|
|
|
9821
11676
|
sendEdgeData: params.sendEdgeData,
|
|
9822
11677
|
baseUrl: params.baseUrl,
|
|
9823
11678
|
userId: params.userId,
|
|
11679
|
+
tokenValues: identityValues,
|
|
11680
|
+
lastViewedProduct,
|
|
9824
11681
|
});
|
|
9825
11682
|
if (!popup) {
|
|
9826
11683
|
return 'no-match';
|
|
@@ -9837,16 +11694,49 @@ const runInit = (params) => {
|
|
|
9837
11694
|
ruleId: rule.id,
|
|
9838
11695
|
displayFormat: rule.display.format,
|
|
9839
11696
|
});
|
|
9840
|
-
recordAndEmitImpression(rule, params.userId, params.sendTag, params.getEdgeData, params.sendEdgeData);
|
|
11697
|
+
recordAndEmitImpression(rule, params.userId, popup, params.baseUrl, params.sendTag, params.getEdgeData, params.sendEdgeData);
|
|
9841
11698
|
logger.info(`BlotoutPopup SDK: rendered rule '${rule.id}' (format: ${rule.display.format})`);
|
|
9842
11699
|
return 'fired';
|
|
9843
11700
|
};
|
|
9844
11701
|
// Rules the static gate must not judge: a trigger rule opens on its trigger,
|
|
9845
|
-
// and a behavior or
|
|
9846
|
-
|
|
11702
|
+
// and a behavior, cart or sign-in rule is judged by the engine once its
|
|
11703
|
+
// signals exist.
|
|
11704
|
+
const isDeferred = (rule) => isTriggerDriven(rule) ||
|
|
11705
|
+
usesBehaviorSignal(rule) ||
|
|
11706
|
+
usesCartSignal(rule) ||
|
|
11707
|
+
usesSignInSignal(rule);
|
|
11708
|
+
/**
|
|
11709
|
+
* Which rules this gate could still put on screen, asked before the reads
|
|
11710
|
+
* resolve.
|
|
11711
|
+
*
|
|
11712
|
+
* A trigger-driven rule never counts: it opens on a click, and
|
|
11713
|
+
* `startClickTriggers` is wired outside this wait, so it gains nothing from
|
|
11714
|
+
* one and would only delay an unrelated static popup.
|
|
11715
|
+
*
|
|
11716
|
+
* An engine-deferred rule counts whatever `canFireRule` says right now, on
|
|
11717
|
+
* any signals that do not exist yet. Every eligible static rule counts too:
|
|
11718
|
+
* `runStaticGate` only stops on `'fired'`, and a rule that passes
|
|
11719
|
+
* `canFireRule` can still produce no popup, so the gate carries on to the
|
|
11720
|
+
* next one. Stopping at the first eligible rule would leave that next one
|
|
11721
|
+
* opening on fallback copy.
|
|
11722
|
+
*/
|
|
11723
|
+
const gateNeeds = (tier) => variables.popupRules.some((rule) => {
|
|
11724
|
+
if (isTriggerDriven(rule)) {
|
|
11725
|
+
return false;
|
|
11726
|
+
}
|
|
11727
|
+
if (tokensInTier(collectRuleTokens(rule), tier).length === 0) {
|
|
11728
|
+
return false;
|
|
11729
|
+
}
|
|
11730
|
+
return (isDeferred(rule) ||
|
|
11731
|
+
canFireRule(rule, signals, serverState === null || serverState === void 0 ? void 0 : serverState.rules.rules[rule.id]));
|
|
11732
|
+
});
|
|
9847
11733
|
const runStaticGate = () => {
|
|
9848
11734
|
for (const rule of variables.popupRules) {
|
|
9849
|
-
|
|
11735
|
+
// An inline rule is already mounted in its anchor. Letting it through
|
|
11736
|
+
// here would body-mount a second copy with no wrapper positioning, and
|
|
11737
|
+
// the gate stops at the first rule that fires, so an inline rule listed
|
|
11738
|
+
// first would also spend the slot a real popup was waiting for.
|
|
11739
|
+
if (isInlineRule(rule) || isDeferred(rule)) {
|
|
9850
11740
|
continue;
|
|
9851
11741
|
}
|
|
9852
11742
|
if (!canFireRule(rule, signals, serverState === null || serverState === void 0 ? void 0 : serverState.rules.rules[rule.id])) {
|
|
@@ -9867,8 +11757,11 @@ const runInit = (params) => {
|
|
|
9867
11757
|
* the shopper has not seen, and a rule that already fired stays spent.
|
|
9868
11758
|
*/
|
|
9869
11759
|
const startDeferredRules = () => {
|
|
9870
|
-
const deferredRules = variables.popupRules.filter((rule) => !
|
|
9871
|
-
(
|
|
11760
|
+
const deferredRules = variables.popupRules.filter((rule) => !isInlineRule(rule) &&
|
|
11761
|
+
!isTriggerDriven(rule) &&
|
|
11762
|
+
(usesBehaviorSignal(rule) ||
|
|
11763
|
+
usesCartSignal(rule) ||
|
|
11764
|
+
usesSignInSignal(rule)));
|
|
9872
11765
|
if (!deferredRules.length) {
|
|
9873
11766
|
return undefined;
|
|
9874
11767
|
}
|
|
@@ -9886,6 +11779,16 @@ const runInit = (params) => {
|
|
|
9886
11779
|
timer: needsCartTicker(deferredRules),
|
|
9887
11780
|
}));
|
|
9888
11781
|
}
|
|
11782
|
+
// Same shape: only when a rule asks, and only where a customer adapter
|
|
11783
|
+
// recognises the host. With no adapter the signal is never written, and an
|
|
11784
|
+
// `equals` condition on an absent signal cannot match — so sign-in rules
|
|
11785
|
+
// stay inert on a non-Shopify storefront rather than guessing.
|
|
11786
|
+
const customerAdapter = deferredRules.some(usesSignInSignal)
|
|
11787
|
+
? resolveCustomerAdapter()
|
|
11788
|
+
: undefined;
|
|
11789
|
+
if (customerAdapter) {
|
|
11790
|
+
trackers.push(createSignInTracker(customerAdapter));
|
|
11791
|
+
}
|
|
9889
11792
|
const engine = startTriggerEngine({
|
|
9890
11793
|
rules: deferredRules,
|
|
9891
11794
|
baseSignals: signals,
|
|
@@ -9914,8 +11817,36 @@ const runInit = (params) => {
|
|
|
9914
11817
|
}
|
|
9915
11818
|
}
|
|
9916
11819
|
}
|
|
9917
|
-
|
|
9918
|
-
|
|
11820
|
+
// Only the page-load render waits; click triggers, the public API and the
|
|
11821
|
+
// watcher wire up now rather than behind a network read. And only for a
|
|
11822
|
+
// tier a rule the static gate could actually fire uses — otherwise a
|
|
11823
|
+
// token-free modal waits out the deadline for values it never reads.
|
|
11824
|
+
//
|
|
11825
|
+
// Product joins identity here so the popup opens on the real title rather
|
|
11826
|
+
// than opening on fallbacks and rewriting itself once Shopify answers.
|
|
11827
|
+
// Both reads started together, so the wait is one deadline, not two.
|
|
11828
|
+
const waits = [];
|
|
11829
|
+
if (identityRead && gateNeeds('identity')) {
|
|
11830
|
+
waits.push(identityRead);
|
|
11831
|
+
}
|
|
11832
|
+
if (productRead && gateNeeds('product')) {
|
|
11833
|
+
waits.push(productRead);
|
|
11834
|
+
}
|
|
11835
|
+
// The static gate and the trigger engine both open popups, so both wait.
|
|
11836
|
+
// Gating only the static gate left a `behavior.timeOnPage` rule opening on
|
|
11837
|
+
// fallback copy and rewriting itself once Shopify answered.
|
|
11838
|
+
let onBoundary;
|
|
11839
|
+
const openGate = () => {
|
|
11840
|
+
runStaticGate();
|
|
11841
|
+
onBoundary = startDeferredRules();
|
|
11842
|
+
};
|
|
11843
|
+
if (waits.length) {
|
|
11844
|
+
void Promise.all(waits).then(openGate);
|
|
11845
|
+
}
|
|
11846
|
+
else {
|
|
11847
|
+
openGate();
|
|
11848
|
+
}
|
|
11849
|
+
const clickRules = variables.popupRules.filter((rule) => !isInlineRule(rule) && hasClickTrigger(rule));
|
|
9919
11850
|
if (clickRules.length) {
|
|
9920
11851
|
startClickTriggers({
|
|
9921
11852
|
rules: clickRules,
|
|
@@ -9929,20 +11860,19 @@ const runInit = (params) => {
|
|
|
9929
11860
|
installPublicApi({
|
|
9930
11861
|
rules: variables.popupRules,
|
|
9931
11862
|
openRule: (rule) => {
|
|
11863
|
+
// There is nothing to open: an inline rule is either already in the
|
|
11864
|
+
// page or has no anchor, and body-mounting it on demand would drop an
|
|
11865
|
+
// unpositioned form over the storefront.
|
|
11866
|
+
if (isInlineRule(rule)) {
|
|
11867
|
+
logger.info(`BlotoutPopup SDK: rule '${rule.id}' is inline and cannot be opened`);
|
|
11868
|
+
return false;
|
|
11869
|
+
}
|
|
9932
11870
|
if (!canFireIgnoringConditions(rule, serverState === null || serverState === void 0 ? void 0 : serverState.rules.rules[rule.id])) {
|
|
9933
11871
|
return false;
|
|
9934
11872
|
}
|
|
9935
11873
|
return fireRule(rule, pageSignals, { shopperAsked: true }) === 'fired';
|
|
9936
11874
|
},
|
|
9937
11875
|
});
|
|
9938
|
-
// Started whether or not the static gate already fired something. Per-rule
|
|
9939
|
-
// fire state is the whole point of the engine: a cart rule must still get
|
|
9940
|
-
// its chance on a page where a welcome rule ran, and `fireRule` refuses
|
|
9941
|
-
// while a popup is on screen, so "still eligible" never means "clobbers the
|
|
9942
|
-
// one the shopper is reading". Gating this on `!fired` also meant a single
|
|
9943
|
-
// static fire left the document with no engine and no boundary watcher for
|
|
9944
|
-
// the rest of the session.
|
|
9945
|
-
const onBoundary = startDeferredRules();
|
|
9946
11876
|
// One watcher, because it patches the history methods — two would stack
|
|
9947
11877
|
// patches. Unconditional: `pageSignals` feeds the click triggers, the
|
|
9948
11878
|
// public API and the re-armed engine alike, and any of the three can be
|
|
@@ -9951,12 +11881,41 @@ const runInit = (params) => {
|
|
|
9951
11881
|
refreshPageSignals();
|
|
9952
11882
|
pacing.resetPageView();
|
|
9953
11883
|
onBoundary === null || onBoundary === void 0 ? void 0 : onBoundary();
|
|
11884
|
+
// A soft navigation is a new page view, so the forms it mounts are a new
|
|
11885
|
+
// impression each.
|
|
11886
|
+
inlineCounted.clear();
|
|
11887
|
+
// Belt and braces beside the anchor observer: a soft navigation that
|
|
11888
|
+
// swaps the page's content without touching `document.body`'s subtree in
|
|
11889
|
+
// a way the observer reports would otherwise leave the new page's anchor
|
|
11890
|
+
// empty until something else mutated the DOM.
|
|
11891
|
+
inline === null || inline === void 0 ? void 0 : inline.rescan();
|
|
11892
|
+
// An impression is per page view, not per mount. On the ordinary soft nav
|
|
11893
|
+
// the anchor and its host both survive, so nothing re-mounts and `onMount`
|
|
11894
|
+
// never runs — counting only mounts would report fewer impressions on an
|
|
11895
|
+
// SPA theme than on one doing full page loads. Runs after the rescan so a
|
|
11896
|
+
// form this boundary mounted is already counted and skipped here.
|
|
11897
|
+
for (const ruleId of mountedInlineRuleIds()) {
|
|
11898
|
+
const rule = inlineRules.find((r) => r.id === ruleId);
|
|
11899
|
+
if (rule) {
|
|
11900
|
+
countInlineImpression(rule);
|
|
11901
|
+
}
|
|
11902
|
+
}
|
|
9954
11903
|
});
|
|
9955
11904
|
};
|
|
9956
11905
|
// Only read server state when a rule that survives the cheap local gates
|
|
9957
11906
|
// (schedule + locally-decidable conditions) actually needs it — keeps the
|
|
9958
11907
|
// external read off the hot path on pages where no such rule can match.
|
|
9959
|
-
const candidates = variables.popupRules.filter((rule) => locallySurvivable(rule, signals));
|
|
11908
|
+
const candidates = variables.popupRules.filter((rule) => !isInlineRule(rule) && locallySurvivable(rule, signals));
|
|
11909
|
+
// Every enabled rule, not just this page's candidates: a `/cart` rule is not
|
|
11910
|
+
// survivable on the landing page, and the read is never retried.
|
|
11911
|
+
if (needsIdentityRead(variables.popupRules)) {
|
|
11912
|
+
identityRead = fetchIdentityTokens(params.baseUrl, EDGE_READ_TIMEOUT_MS, params.userId).then((values) => {
|
|
11913
|
+
identityValues = values;
|
|
11914
|
+
});
|
|
11915
|
+
}
|
|
11916
|
+
if (needsProductRead(variables.popupRules)) {
|
|
11917
|
+
productRead = warmProductTokens(signals, lastViewedProduct, EDGE_READ_TIMEOUT_MS);
|
|
11918
|
+
}
|
|
9960
11919
|
if (needsServerRead(candidates)) {
|
|
9961
11920
|
readServerStateWithDeadline(params.getEdgeData, EDGE_READ_TIMEOUT_MS, runGate);
|
|
9962
11921
|
}
|