@fanfare-io/fanfare-sdk-react 0.10.0 → 0.12.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/dist/clock-context.d.ts +23 -0
- package/dist/components/checkout/checkout-processing-panel.d.ts +10 -0
- package/dist/components/checkout/index.d.ts +4 -0
- package/dist/components/checkout/payment-collection-panel.d.ts +18 -0
- package/dist/components/checkout/receipt-panel.d.ts +10 -0
- package/dist/components/checkout/reservation-checkout-panel.d.ts +18 -0
- package/dist/components/checkout/stripe-card-field.d.ts +29 -0
- package/dist/components/checkout/stripe-client.d.ts +71 -0
- package/dist/components/checkout/use-payment-challenge.d.ts +32 -0
- package/dist/components/checkout/use-payment-method-selection.d.ts +8 -0
- package/dist/components/module/index.d.ts +1 -1
- package/dist/components/module/outcome-reason.d.ts +10 -1
- package/dist/components/widgets/experience-widget.d.ts +78 -2
- package/dist/components/widgets/internal/upcoming-module.d.ts +1 -1
- package/dist/components/widgets/internal/waitlist-view.d.ts +1 -0
- package/dist/hooks/use-auth.d.ts +1 -0
- package/dist/hooks/use-beacon-tracker.d.ts +21 -0
- package/dist/hooks/use-fanfare-dom-bridge.d.ts +57 -0
- package/dist/hooks/use-gate-open.d.ts +3 -0
- package/dist/hooks/use-sdk-event.d.ts +20 -0
- package/dist/index-Ce5dVdo3.js +6053 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.js +59 -5051
- package/dist/lib/currency.d.ts +10 -0
- package/dist/provider.d.ts +25 -1
- package/dist/stripe-card-field-D1b4Y7LK.js +170 -0
- package/dist/styles/base.css +1 -1
- package/package.json +19 -15
- package/dist/components/widgets/draw/draw-actions.d.ts +0 -40
- package/dist/components/widgets/draw/index.d.ts +0 -6
- package/dist/components/widgets/queue/index.d.ts +0 -6
- package/dist/components/widgets/queue/queue-actions.d.ts +0 -36
- package/dist/components/widgets/timed-release/index.d.ts +0 -6
- package/dist/components/widgets/timed-release/timed-release-actions.d.ts +0 -38
package/dist/lib/currency.d.ts
CHANGED
|
@@ -7,3 +7,13 @@ export type CurrencyFormatOptions = {
|
|
|
7
7
|
};
|
|
8
8
|
export declare function getCurrencySymbol(currencyCode: string, locale?: string): string;
|
|
9
9
|
export declare function formatMoney(amount: number, options?: CurrencyFormatOptions): string;
|
|
10
|
+
/**
|
|
11
|
+
* Formats a wire money string for display without ever altering its value.
|
|
12
|
+
*
|
|
13
|
+
* Money crosses the wire as a string and is never computed with in the SDK. The wire shape admits
|
|
14
|
+
* twelve integer digits and eight fractional digits, which exceeds the range IEEE-754 represents
|
|
15
|
+
* exactly, so a value is only handed to `Intl` once it has been shown to survive the round trip
|
|
16
|
+
* through `number`. Anything that cannot — or that is not a wire money string at all — is returned
|
|
17
|
+
* verbatim: an unformatted exact figure is correct, a formatted rounded one is not.
|
|
18
|
+
*/
|
|
19
|
+
export declare function formatMoneyString(amount: string, options?: CurrencyFormatOptions): string;
|
package/dist/provider.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FanfareConfig } from '@fanfare-io/fanfare-sdk-core';
|
|
2
|
+
import { JourneySnapshot } from '@fanfare-io/fanfare-sdk-core/experiences';
|
|
2
3
|
import { default as React } from 'react';
|
|
3
4
|
import { Locale, PartialTranslationMessages, TranslationMessageKey } from './i18n';
|
|
4
5
|
interface RequiredFanfareConfig {
|
|
@@ -26,6 +27,29 @@ export interface FanfareProviderProps extends FanfareConfig, RequiredFanfareConf
|
|
|
26
27
|
* @default "en"
|
|
27
28
|
*/
|
|
28
29
|
locale?: Locale;
|
|
30
|
+
/**
|
|
31
|
+
* Render children during server render and the client's first paint against
|
|
32
|
+
* a synchronous read-only SDK, instead of gating on initialization. The live
|
|
33
|
+
* SDK attaches after mount and replaces it seamlessly — server markup and
|
|
34
|
+
* the client's first paint are identical, so hydration matches.
|
|
35
|
+
*
|
|
36
|
+
* The default (false) preserves the client-only behavior exactly: children
|
|
37
|
+
* render only after the SDK initializes, with `loadingComponent` shown
|
|
38
|
+
* meanwhile.
|
|
39
|
+
*
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
ssr?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Snapshot seeding journey handles for first paint when `ssr` is enabled.
|
|
45
|
+
* The live SDK is authoritative once attached and refreshes within one poll.
|
|
46
|
+
*/
|
|
47
|
+
initialSnapshot?: JourneySnapshot;
|
|
48
|
+
/**
|
|
49
|
+
* Server-minted ISO timestamp anchoring time-derived rendering (countdowns)
|
|
50
|
+
* when `ssr` is enabled, so a skewed device clock doesn't shift the display.
|
|
51
|
+
*/
|
|
52
|
+
serverNow?: string;
|
|
29
53
|
/**
|
|
30
54
|
* Custom translations to merge with or override defaults.
|
|
31
55
|
* Use this to customize button labels, messages, and other text.
|
|
@@ -95,5 +119,5 @@ export interface FanfareProviderProps extends FanfareConfig, RequiredFanfareConf
|
|
|
95
119
|
* </FanfareProvider>
|
|
96
120
|
* ```
|
|
97
121
|
*/
|
|
98
|
-
export declare function FanfareProvider({ children, autoRestore, autoResume, loadingComponent, locale, translations, organizationId, publishableKey, environment, apiUrl, credentials, debug, auth, logging, sync, features, beacon, }: FanfareProviderProps): import("react/jsx-runtime").JSX.Element | null;
|
|
122
|
+
export declare function FanfareProvider({ children, autoRestore, autoResume, loadingComponent, ssr, initialSnapshot, serverNow, locale, translations, organizationId, publishableKey, environment, apiUrl, credentials, debug, auth, logging, sync, features, beacon, }: FanfareProviderProps): import("react/jsx-runtime").JSX.Element | null;
|
|
99
123
|
export {};
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as E, Fragment as F, jsx as g } from "react/jsx-runtime";
|
|
3
|
+
import * as r from "react";
|
|
4
|
+
import { createPortal as M } from "react-dom";
|
|
5
|
+
import { u as B, a as D, d as N, S as I, B as O, g as _ } from "./index-Ce5dVdo3.js";
|
|
6
|
+
const j = [
|
|
7
|
+
"--ff-color-foreground",
|
|
8
|
+
"--ff-font-sans",
|
|
9
|
+
"--ff-color-muted-foreground",
|
|
10
|
+
"--ff-color-danger"
|
|
11
|
+
], H = [
|
|
12
|
+
"ar",
|
|
13
|
+
"bg",
|
|
14
|
+
"cs",
|
|
15
|
+
"da",
|
|
16
|
+
"de",
|
|
17
|
+
"el",
|
|
18
|
+
"en",
|
|
19
|
+
"en-AU",
|
|
20
|
+
"en-CA",
|
|
21
|
+
"en-NZ",
|
|
22
|
+
"en-GB",
|
|
23
|
+
"es",
|
|
24
|
+
"es-ES",
|
|
25
|
+
"es-419",
|
|
26
|
+
"et",
|
|
27
|
+
"fi",
|
|
28
|
+
"fil",
|
|
29
|
+
"fr",
|
|
30
|
+
"fr-CA",
|
|
31
|
+
"fr-FR",
|
|
32
|
+
"he",
|
|
33
|
+
"hu",
|
|
34
|
+
"hr",
|
|
35
|
+
"id",
|
|
36
|
+
"it",
|
|
37
|
+
"it-IT",
|
|
38
|
+
"ja",
|
|
39
|
+
"ko",
|
|
40
|
+
"lt",
|
|
41
|
+
"lv",
|
|
42
|
+
"ms",
|
|
43
|
+
"mt",
|
|
44
|
+
"nb",
|
|
45
|
+
"nl",
|
|
46
|
+
"no",
|
|
47
|
+
"pl",
|
|
48
|
+
"pt",
|
|
49
|
+
"pt-BR",
|
|
50
|
+
"ro",
|
|
51
|
+
"ru",
|
|
52
|
+
"sk",
|
|
53
|
+
"sl",
|
|
54
|
+
"sv",
|
|
55
|
+
"th",
|
|
56
|
+
"tr",
|
|
57
|
+
"vi",
|
|
58
|
+
"zh",
|
|
59
|
+
"zh-HK",
|
|
60
|
+
"zh-TW"
|
|
61
|
+
];
|
|
62
|
+
function $(a) {
|
|
63
|
+
return H.find((u) => u === a) ?? "auto";
|
|
64
|
+
}
|
|
65
|
+
function K(a, u) {
|
|
66
|
+
let l = a;
|
|
67
|
+
for (; l; ) {
|
|
68
|
+
const c = getComputedStyle(l).getPropertyValue(u).trim();
|
|
69
|
+
if (c) return c;
|
|
70
|
+
if (l.parentElement) {
|
|
71
|
+
l = l.parentElement;
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const m = l.getRootNode();
|
|
75
|
+
l = m instanceof ShadowRoot && m.host instanceof HTMLElement ? m.host : null;
|
|
76
|
+
}
|
|
77
|
+
return "";
|
|
78
|
+
}
|
|
79
|
+
function Y(a) {
|
|
80
|
+
return a.isConnected ? a.ownerDocument.body : null;
|
|
81
|
+
}
|
|
82
|
+
function X({ config: a, onController: u, onChange: l }) {
|
|
83
|
+
const { t: c, locale: m } = B(), k = D(), p = r.useRef(null), w = r.useRef(null), C = r.useRef(null), [n, b] = r.useState(null), [R, h] = r.useState("loading"), [T, A] = r.useState(0), f = r.useRef(u), L = r.useRef(l), P = r.useRef(c);
|
|
84
|
+
r.useEffect(() => {
|
|
85
|
+
f.current = u, L.current = l, P.current = c;
|
|
86
|
+
});
|
|
87
|
+
const { publishableKey: S, stripeAccount: x } = a, z = $(m);
|
|
88
|
+
r.useEffect(() => {
|
|
89
|
+
const e = p.current, o = e ? Y(e) : null;
|
|
90
|
+
if (!o) {
|
|
91
|
+
h("unsupported"), f.current(null);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const t = document.createElement("div");
|
|
95
|
+
return t.dataset.fanfareField = "stripe-card-portal", t.style.position = "absolute", t.style.zIndex = "1000", o.appendChild(t), b(t), () => {
|
|
96
|
+
t.remove(), b(null);
|
|
97
|
+
};
|
|
98
|
+
}, []);
|
|
99
|
+
const s = r.useCallback(() => {
|
|
100
|
+
const e = p.current, o = w.current;
|
|
101
|
+
if (!e || !n) return;
|
|
102
|
+
const t = e.getBoundingClientRect();
|
|
103
|
+
if (n.style.left = `${t.left + window.scrollX}px`, n.style.top = `${t.top + window.scrollY}px`, n.style.width = `${t.width}px`, !!o)
|
|
104
|
+
for (const v of j) {
|
|
105
|
+
const i = K(e, v);
|
|
106
|
+
i ? o.style.setProperty(v, i) : o.style.removeProperty(v);
|
|
107
|
+
}
|
|
108
|
+
}, [n]);
|
|
109
|
+
return r.useEffect(() => {
|
|
110
|
+
if (!n) return;
|
|
111
|
+
s(), window.addEventListener("resize", s), window.addEventListener("scroll", s, !0);
|
|
112
|
+
const e = typeof ResizeObserver > "u" ? null : new ResizeObserver(s);
|
|
113
|
+
return e && p.current && e.observe(p.current), () => {
|
|
114
|
+
window.removeEventListener("resize", s), window.removeEventListener("scroll", s, !0), e?.disconnect();
|
|
115
|
+
};
|
|
116
|
+
}, [n, R, s]), r.useLayoutEffect(() => {
|
|
117
|
+
s();
|
|
118
|
+
}), r.useEffect(() => {
|
|
119
|
+
if (!n) return;
|
|
120
|
+
const e = w.current;
|
|
121
|
+
if (!e) return;
|
|
122
|
+
if (n.getRootNode() !== n.ownerDocument || e.getRootNode() !== e.ownerDocument) {
|
|
123
|
+
h("unsupported"), f.current(null);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
let o = !1, t = null;
|
|
127
|
+
return h("loading"), s(), (async () => {
|
|
128
|
+
let i;
|
|
129
|
+
try {
|
|
130
|
+
i = await _(x ? { publishableKey: S, stripeAccount: x } : { publishableKey: S });
|
|
131
|
+
} catch {
|
|
132
|
+
if (o) return;
|
|
133
|
+
h("failed"), f.current(null);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (o) return;
|
|
137
|
+
const y = i.elements({ locale: z }).create("card", { style: N(e) });
|
|
138
|
+
t = y, C.current = y, y.on("change", (d) => {
|
|
139
|
+
L.current?.({ complete: d.complete, errorMessage: d.error?.message ?? null });
|
|
140
|
+
}), y.mount(e), h("ready"), f.current({
|
|
141
|
+
createPaymentMethod: async () => {
|
|
142
|
+
const d = await i.createPaymentMethod({ type: "card", card: y });
|
|
143
|
+
if (d.error) throw new Error(d.error.message ?? P.current("checkout.error.generic"));
|
|
144
|
+
return d.paymentMethod.id;
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
})(), () => {
|
|
148
|
+
o = !0, t && (t.off("change"), t.unmount(), t.destroy()), C.current = null, f.current(null);
|
|
149
|
+
};
|
|
150
|
+
}, [n, S, x, z, T, s]), r.useEffect(() => {
|
|
151
|
+
const e = C.current, o = w.current;
|
|
152
|
+
!e || !o || (s(), e.update({ style: N(o) }));
|
|
153
|
+
}, [k, s]), /* @__PURE__ */ E(F, { children: [
|
|
154
|
+
/* @__PURE__ */ E("div", { ref: p, "data-fanfare-field": "stripe-card-anchor", className: "ff:min-h-10", children: [
|
|
155
|
+
R === "loading" ? /* @__PURE__ */ E("span", { className: "ff:flex ff:items-center ff:gap-2 ff:text-sm ff:text-muted", children: [
|
|
156
|
+
/* @__PURE__ */ g(I, { size: "sm" }),
|
|
157
|
+
c("checkout.newCard.loading")
|
|
158
|
+
] }) : null,
|
|
159
|
+
R === "unsupported" ? /* @__PURE__ */ g("p", { role: "status", className: "ff:text-sm ff:text-muted", children: c("checkout.newCard.unavailable") }) : null,
|
|
160
|
+
R === "failed" ? /* @__PURE__ */ E("div", { role: "alert", className: "ff:flex ff:flex-col ff:items-start ff:gap-2", children: [
|
|
161
|
+
/* @__PURE__ */ g("p", { className: "ff:text-sm ff:text-danger", children: c("checkout.newCard.loadFailed") }),
|
|
162
|
+
/* @__PURE__ */ g(O, { type: "button", variant: "outline", size: "sm", onClick: () => A((e) => e + 1), children: c("checkout.newCard.reload") })
|
|
163
|
+
] }) : null
|
|
164
|
+
] }),
|
|
165
|
+
n ? M(/* @__PURE__ */ g("div", { ref: w, "data-fanfare-field": "stripe-card" }), n) : null
|
|
166
|
+
] });
|
|
167
|
+
}
|
|
168
|
+
export {
|
|
169
|
+
X as StripeCardField
|
|
170
|
+
};
|
package/dist/styles/base.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--ff-font-sans:"Inter",system-ui,sans-serif;--ff-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ff-color-neutral-50:oklch(98.5% 0 0);--ff-color-neutral-200:oklch(92.2% 0 0);--ff-color-neutral-300:oklch(87% 0 0);--ff-color-neutral-500:oklch(55.6% 0 0);--ff-color-white:#fff;--ff-spacing:.25rem;--ff-container-sm:24rem;--ff-text-xs:.75rem;--ff-text-xs--line-height:calc(1/.75);--ff-text-sm:.875rem;--ff-text-sm--line-height:calc(1.25/.875);--ff-text-base:1rem;--ff-text-base--line-height:calc(1.5/1);--ff-text-lg:1.125rem;--ff-text-lg--line-height:calc(1.75/1.125);--ff-text-xl:1.25rem;--ff-text-xl--line-height:calc(1.75/1.25);--ff-text-2xl:1.5rem;--ff-text-2xl--line-height:calc(2/1.5);--ff-text-3xl:1.875rem;--ff-text-3xl--line-height:calc(2.25/1.875);--ff-text-4xl:2.25rem;--ff-text-4xl--line-height:calc(2.5/2.25);--ff-font-weight-extralight:200;--ff-font-weight-light:300;--ff-font-weight-normal:400;--ff-font-weight-medium:500;--ff-font-weight-semibold:600;--ff-font-weight-bold:700;--ff-font-weight-extrabold:800;--ff-font-weight-black:900;--ff-tracking-tight:-.025em;--ff-tracking-normal:0em;--ff-tracking-wide:.025em;--ff-tracking-wider:.05em;--ff-tracking-widest:.1em;--ff-leading-tight:1.25;--ff-radius-md:.375rem;--ff-radius-lg:.5rem;--ff-radius-xl:.75rem;--ff-radius-2xl:1rem;--ff-radius-3xl:1.5rem;--ff-ease-out:cubic-bezier(0,0,.2,1);--ff-animate-spin:spin 1s linear infinite;--ff-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--ff-default-transition-duration:.15s;--ff-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--ff-default-font-family:var(--ff-font-sans);--ff-default-mono-font-family:var(--ff-font-mono);--ff-color-primary:#1d1f27;--ff-color-primary-foreground:#fff;--ff-color-secondary:#f4f4f5;--ff-color-background:#fff;--ff-color-surface:transparent;--ff-color-surface-foreground:#1d1f27;--ff-color-foreground:#1d1f27;--ff-color-muted:#4b4e56cc;--ff-color-muted-foreground:#4b4e5699;--ff-color-border:#4b4e5666;--ff-color-success:oklch(77% .18 130);--ff-color-success-foreground:#111;--ff-color-warning:oklch(72% .18 65);--ff-color-warning-foreground:#111;--ff-color-danger:oklch(63% .24 25);--ff-color-danger-foreground:#fff;--ff-font-heading:"Inter",system-ui,sans-serif;--ff-text-xxs:.625rem;--ff-text-xxs--line-height:.875rem;--ff-animate-fade-in:fade-in .2s ease-out;--ff-animate-fade-out:fade-out .2s ease-out;--ff-animate-slide-in:slide-in .2s ease-out;--ff-animate-slide-out:slide-out .2s ease-out;--ff-animate-scale-in:scale-in .2s ease-out;--ff-animate-scale-out:scale-out .2s ease-out;--ff-animate-accordion-down:accordion-down .2s ease-out;--ff-animate-accordion-up:accordion-up .2s ease-out;--ff-animate-celebration:celebration-bounce .6s ease-out;--ff-animate-shake:shake .5s ease-out;--ff-animate-pulse-success:pulse-success 1s ease-out}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--ff-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--ff-default-font-feature-settings,normal);font-variation-settings:var(--ff-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--ff-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--ff-default-mono-font-feature-settings,normal);font-variation-settings:var(--ff-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.fanfare-themed{font-family:var(--ff-font-sans);color:var(--ff-color-foreground);background-color:var(--ff-color-surface)}.fanfare-themed *,.fanfare-themed :after,.fanfare-themed :before,.fanfare-themed ::backdrop{border-color:var(--ff-color-border);outline-color:var(--ff-color-border)}.fanfare-themed ::file-selector-button{border-color:var(--ff-color-border);outline-color:var(--ff-color-border)}.fanfare-themed button:not(:disabled),.fanfare-themed [role=button]:not(:disabled){cursor:pointer}.fanfare-themed :focus-visible{outline:2px solid var(--ff-color-primary);outline-offset:2px}@media (prefers-reduced-motion:reduce){.fanfare-themed *,.fanfare-themed :before,.fanfare-themed :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.fanfare-root{color:var(--ff-color-foreground);background-color:var(--ff-color-surface);font-family:var(--ff-font-sans)}.fanfare-root *,.fanfare-root :after,.fanfare-root :before,.fanfare-root ::backdrop{border-color:var(--ff-color-border);outline-color:var(--ff-color-border)}.fanfare-root ::file-selector-button{border-color:var(--ff-color-border);outline-color:var(--ff-color-border)}.fanfare-root button:not(:disabled),.fanfare-root [role=button]:not(:disabled){cursor:pointer}@media (prefers-reduced-motion:reduce){.fanfare-root *,.fanfare-root :before,.fanfare-root :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer components;@layer utilities{.ff\:pointer-events-none{pointer-events:none}.ff\:absolute{position:absolute}.ff\:relative{position:relative}.ff\:inset-0{inset:calc(var(--ff-spacing)*0)}.ff\:top-1\/2{top:50%}.ff\:top-3{top:calc(var(--ff-spacing)*3)}.ff\:right-2{right:calc(var(--ff-spacing)*2)}.ff\:left-3{left:calc(var(--ff-spacing)*3)}.ff\:z-10{z-index:10}.ff\:-mx-1{margin-inline:calc(var(--ff-spacing)*-1)}.ff\:mx-2{margin-inline:calc(var(--ff-spacing)*2)}.ff\:-mt-0\.5{margin-top:calc(var(--ff-spacing)*-.5)}.ff\:mt-0\.5{margin-top:calc(var(--ff-spacing)*.5)}.ff\:mt-1{margin-top:calc(var(--ff-spacing)*1)}.ff\:mt-3{margin-top:calc(var(--ff-spacing)*3)}.ff\:mt-4{margin-top:calc(var(--ff-spacing)*4)}.ff\:mt-auto{margin-top:auto}.ff\:mb-1\.5{margin-bottom:calc(var(--ff-spacing)*1.5)}.ff\:mb-2{margin-bottom:calc(var(--ff-spacing)*2)}.ff\:mb-4{margin-bottom:calc(var(--ff-spacing)*4)}.ff\:mb-6{margin-bottom:calc(var(--ff-spacing)*6)}.ff\:block{display:block}.ff\:flex{display:flex}.ff\:grid{display:grid}.ff\:inline-block{display:inline-block}.ff\:inline-flex{display:inline-flex}.ff\:size-1{width:calc(var(--ff-spacing)*1);height:calc(var(--ff-spacing)*1)}.ff\:size-1\.5{width:calc(var(--ff-spacing)*1.5);height:calc(var(--ff-spacing)*1.5)}.ff\:size-4{width:calc(var(--ff-spacing)*4);height:calc(var(--ff-spacing)*4)}.ff\:size-5{width:calc(var(--ff-spacing)*5);height:calc(var(--ff-spacing)*5)}.ff\:size-6{width:calc(var(--ff-spacing)*6);height:calc(var(--ff-spacing)*6)}.ff\:size-8{width:calc(var(--ff-spacing)*8);height:calc(var(--ff-spacing)*8)}.ff\:size-10{width:calc(var(--ff-spacing)*10);height:calc(var(--ff-spacing)*10)}.ff\:h-0\.5{height:calc(var(--ff-spacing)*.5)}.ff\:h-1{height:calc(var(--ff-spacing)*1)}.ff\:h-2{height:calc(var(--ff-spacing)*2)}.ff\:h-2\.5{height:calc(var(--ff-spacing)*2.5)}.ff\:h-3{height:calc(var(--ff-spacing)*3)}.ff\:h-4{height:calc(var(--ff-spacing)*4)}.ff\:h-4\.5{height:calc(var(--ff-spacing)*4.5)}.ff\:h-5{height:calc(var(--ff-spacing)*5)}.ff\:h-6{height:calc(var(--ff-spacing)*6)}.ff\:h-8{height:calc(var(--ff-spacing)*8)}.ff\:h-10{height:calc(var(--ff-spacing)*10)}.ff\:h-12{height:calc(var(--ff-spacing)*12)}.ff\:h-14{height:calc(var(--ff-spacing)*14)}.ff\:h-16{height:calc(var(--ff-spacing)*16)}.ff\:h-20{height:calc(var(--ff-spacing)*20)}.ff\:h-32{height:calc(var(--ff-spacing)*32)}.ff\:h-\[480px\]{height:480px}.ff\:h-auto{height:auto}.ff\:h-full{height:100%}.ff\:max-h-44{max-height:calc(var(--ff-spacing)*44)}.ff\:max-h-\[24rem\]{max-height:24rem}.ff\:w-1\/2{width:50%}.ff\:w-1\/3{width:33.3333%}.ff\:w-2\/3{width:66.6667%}.ff\:w-3\/4{width:75%}.ff\:w-5\/6{width:83.3333%}.ff\:w-6{width:calc(var(--ff-spacing)*6)}.ff\:w-9{width:calc(var(--ff-spacing)*9)}.ff\:w-10{width:calc(var(--ff-spacing)*10)}.ff\:w-12{width:calc(var(--ff-spacing)*12)}.ff\:w-14{width:calc(var(--ff-spacing)*14)}.ff\:w-16{width:calc(var(--ff-spacing)*16)}.ff\:w-20{width:calc(var(--ff-spacing)*20)}.ff\:w-40{width:calc(var(--ff-spacing)*40)}.ff\:w-72{width:calc(var(--ff-spacing)*72)}.ff\:w-80{width:calc(var(--ff-spacing)*80)}.ff\:w-auto{width:auto}.ff\:w-full{width:100%}.ff\:max-w-sm{max-width:var(--ff-container-sm)}.ff\:min-w-0{min-width:calc(var(--ff-spacing)*0)}.ff\:flex-1{flex:1}.ff\:shrink-0{flex-shrink:0}.ff\:origin-center{transform-origin:50%}.ff\:origin-top-left{transform-origin:0 0}.ff\:-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:-translate-y-2{--tw-translate-y:calc(var(--ff-spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x)var(--tw-scale-y)}.ff\:animate-\[skeleton-shimmer_2s_ease-in-out_infinite\]{animation:2s ease-in-out infinite skeleton-shimmer}.ff\:animate-\[skeleton-slide_2s_ease-in-out_infinite\]{animation:2s ease-in-out infinite skeleton-slide}.ff\:animate-\[spin_1\.2s_cubic-bezier\(0\.4\,0\,0\.6\,1\)_infinite\]{animation:1.2s cubic-bezier(.4,0,.6,1) infinite spin}.ff\:animate-\[spin_1\.8s_linear_infinite\]{animation:1.8s linear infinite spin}.ff\:animate-accordion-down{animation:var(--ff-animate-accordion-down)}.ff\:animate-accordion-up{animation:var(--ff-animate-accordion-up)}.ff\:animate-celebration{animation:var(--ff-animate-celebration)}.ff\:animate-fade-in{animation:var(--ff-animate-fade-in)}.ff\:animate-fade-out{animation:var(--ff-animate-fade-out)}.ff\:animate-none{animation:none}.ff\:animate-pulse{animation:var(--ff-animate-pulse)}.ff\:animate-pulse-success{animation:var(--ff-animate-pulse-success)}.ff\:animate-scale-in{animation:var(--ff-animate-scale-in)}.ff\:animate-scale-out{animation:var(--ff-animate-scale-out)}.ff\:animate-shake{animation:var(--ff-animate-shake)}.ff\:animate-slide-in{animation:var(--ff-animate-slide-in)}.ff\:animate-slide-out{animation:var(--ff-animate-slide-out)}.ff\:animate-spin{animation:var(--ff-animate-spin)}.ff\:cursor-not-allowed{cursor:not-allowed}.ff\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.ff\:flex-col{flex-direction:column}.ff\:flex-row{flex-direction:row}.ff\:flex-wrap{flex-wrap:wrap}.ff\:items-baseline{align-items:baseline}.ff\:items-center{align-items:center}.ff\:items-start{align-items:flex-start}.ff\:justify-between{justify-content:space-between}.ff\:justify-center{justify-content:center}.ff\:gap-0\.5{gap:calc(var(--ff-spacing)*.5)}.ff\:gap-1{gap:calc(var(--ff-spacing)*1)}.ff\:gap-1\.5{gap:calc(var(--ff-spacing)*1.5)}.ff\:gap-2{gap:calc(var(--ff-spacing)*2)}.ff\:gap-3{gap:calc(var(--ff-spacing)*3)}.ff\:gap-4{gap:calc(var(--ff-spacing)*4)}.ff\:gap-5{gap:calc(var(--ff-spacing)*5)}.ff\:gap-6{gap:calc(var(--ff-spacing)*6)}.ff\:gap-10{gap:calc(var(--ff-spacing)*10)}.ff\:gap-12{gap:calc(var(--ff-spacing)*12)}:where(.ff\:space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--ff-spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--ff-spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.ff\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--ff-spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--ff-spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.ff\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--ff-spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--ff-spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.ff\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--ff-spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--ff-spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.ff\:self-end{align-self:flex-end}.ff\:overflow-hidden{overflow:hidden}.ff\:overflow-visible{overflow:visible}.ff\:overflow-x-auto{overflow-x:auto}.ff\:overflow-y-auto{overflow-y:auto}.ff\:rounded{border-radius:.25rem}.ff\:rounded-2xl{border-radius:var(--ff-radius-2xl)}.ff\:rounded-3xl{border-radius:var(--ff-radius-3xl)}.ff\:rounded-\[8px\]{border-radius:8px}.ff\:rounded-\[10px\]{border-radius:10px}.ff\:rounded-\[14px\]{border-radius:14px}.ff\:rounded-full{border-radius:3.40282e38px}.ff\:rounded-lg{border-radius:var(--ff-radius-lg)}.ff\:rounded-md{border-radius:var(--ff-radius-md)}.ff\:rounded-none{border-radius:0}.ff\:rounded-xl{border-radius:var(--ff-radius-xl)}.ff\:border{border-style:var(--tw-border-style);border-width:1px}.ff\:border-0{border-style:var(--tw-border-style);border-width:0}.ff\:border-2{border-style:var(--tw-border-style);border-width:2px}.ff\:border-3{border-style:var(--tw-border-style);border-width:3px}.ff\:border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.ff\:border-\[2\.5px\]{border-style:var(--tw-border-style);border-width:2.5px}.ff\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.ff\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.ff\:border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.ff\:border-none{--tw-border-style:none;border-style:none}.ff\:border-border,.ff\:border-border\/40{border-color:var(--ff-color-border)}@supports (color:color-mix(in lab, red, red)){.ff\:border-border\/40{border-color:color-mix(in oklab,var(--ff-color-border)40%,transparent)}}.ff\:border-border\/50{border-color:var(--ff-color-border)}@supports (color:color-mix(in lab, red, red)){.ff\:border-border\/50{border-color:color-mix(in oklab,var(--ff-color-border)50%,transparent)}}.ff\:border-danger,.ff\:border-danger\/50{border-color:var(--ff-color-danger)}@supports (color:color-mix(in lab, red, red)){.ff\:border-danger\/50{border-color:color-mix(in oklab,var(--ff-color-danger)50%,transparent)}}.ff\:border-foreground,.ff\:border-foreground\/8{border-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:border-foreground\/8{border-color:color-mix(in oklab,var(--ff-color-foreground)8%,transparent)}}.ff\:border-foreground\/12{border-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:border-foreground\/12{border-color:color-mix(in oklab,var(--ff-color-foreground)12%,transparent)}}.ff\:border-foreground\/20{border-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:border-foreground\/20{border-color:color-mix(in oklab,var(--ff-color-foreground)20%,transparent)}}.ff\:border-foreground\/\[0\.08\]{border-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:border-foreground\/\[0\.08\]{border-color:color-mix(in oklab,var(--ff-color-foreground)8%,transparent)}}.ff\:border-neutral-200{border-color:var(--ff-color-neutral-200)}.ff\:border-primary{border-color:var(--ff-color-primary)}.ff\:border-transparent{border-color:#0000}.ff\:border-b-danger{border-bottom-color:var(--ff-color-danger)}.ff\:bg-\[\#ff3a00\]{background-color:#ff3a00}.ff\:bg-\[color-mix\(in_oklch\,var\(--ff-color-foreground\)_3\%\,var\(--ff-color-background\)\)\]{background-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-\[color-mix\(in_oklch\,var\(--ff-color-foreground\)_3\%\,var\(--ff-color-background\)\)\]{background-color:color-mix(in oklch,var(--ff-color-foreground)3%,var(--ff-color-background))}}.ff\:bg-background,.ff\:bg-background\/60{background-color:var(--ff-color-background)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-background\/60{background-color:color-mix(in oklab,var(--ff-color-background)60%,transparent)}}.ff\:bg-background\/70{background-color:var(--ff-color-background)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-background\/70{background-color:color-mix(in oklab,var(--ff-color-background)70%,transparent)}}.ff\:bg-danger,.ff\:bg-danger\/10{background-color:var(--ff-color-danger)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-danger\/10{background-color:color-mix(in oklab,var(--ff-color-danger)10%,transparent)}}.ff\:bg-foreground\/5{background-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-foreground\/5{background-color:color-mix(in oklab,var(--ff-color-foreground)5%,transparent)}}.ff\:bg-foreground\/40{background-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-foreground\/40{background-color:color-mix(in oklab,var(--ff-color-foreground)40%,transparent)}}.ff\:bg-foreground\/\[0\.1\]{background-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-foreground\/\[0\.1\]{background-color:color-mix(in oklab,var(--ff-color-foreground)10%,transparent)}}.ff\:bg-foreground\/\[0\.08\]{background-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-foreground\/\[0\.08\]{background-color:color-mix(in oklab,var(--ff-color-foreground)8%,transparent)}}.ff\:bg-muted\/5{background-color:var(--ff-color-muted)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-muted\/5{background-color:color-mix(in oklab,var(--ff-color-muted)5%,transparent)}}.ff\:bg-neutral-50{background-color:var(--ff-color-neutral-50)}.ff\:bg-primary{background-color:var(--ff-color-primary)}.ff\:bg-primary-foreground{background-color:var(--ff-color-primary-foreground)}.ff\:bg-primary\/5{background-color:var(--ff-color-primary)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-primary\/5{background-color:color-mix(in oklab,var(--ff-color-primary)5%,transparent)}}.ff\:bg-secondary{background-color:var(--ff-color-secondary)}.ff\:bg-success,.ff\:bg-success\/10{background-color:var(--ff-color-success)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-success\/10{background-color:color-mix(in oklab,var(--ff-color-success)10%,transparent)}}.ff\:bg-transparent{background-color:#0000}.ff\:bg-warning,.ff\:bg-warning\/10{background-color:var(--ff-color-warning)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-warning\/10{background-color:color-mix(in oklab,var(--ff-color-warning)10%,transparent)}}.ff\:bg-linear-to-b{--tw-gradient-position:to bottom}@supports (background-image:linear-gradient(in lab, red, red)){.ff\:bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.ff\:bg-linear-to-b{background-image:linear-gradient(var(--tw-gradient-stops))}.ff\:from-primary\/10{--tw-gradient-from:var(--ff-color-primary)}@supports (color:color-mix(in lab, red, red)){.ff\:from-primary\/10{--tw-gradient-from:color-mix(in oklab,var(--ff-color-primary)10%,transparent)}}.ff\:from-primary\/10{--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))}.ff\:to-primary\/5{--tw-gradient-to:var(--ff-color-primary)}@supports (color:color-mix(in lab, red, red)){.ff\:to-primary\/5{--tw-gradient-to:color-mix(in oklab,var(--ff-color-primary)5%,transparent)}}.ff\:to-primary\/5{--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))}.ff\:\[background-size\:200\%_100\%\]{background-size:200% 100%}.ff\:p-0{padding:calc(var(--ff-spacing)*0)}.ff\:p-4{padding:calc(var(--ff-spacing)*4)}.ff\:p-5{padding:calc(var(--ff-spacing)*5)}.ff\:p-6{padding:calc(var(--ff-spacing)*6)}.ff\:p-8{padding:calc(var(--ff-spacing)*8)}.ff\:px-0{padding-inline:calc(var(--ff-spacing)*0)}.ff\:px-2{padding-inline:calc(var(--ff-spacing)*2)}.ff\:px-2\.5{padding-inline:calc(var(--ff-spacing)*2.5)}.ff\:px-3{padding-inline:calc(var(--ff-spacing)*3)}.ff\:px-4{padding-inline:calc(var(--ff-spacing)*4)}.ff\:px-5{padding-inline:calc(var(--ff-spacing)*5)}.ff\:px-6{padding-inline:calc(var(--ff-spacing)*6)}.ff\:py-0\.5{padding-block:calc(var(--ff-spacing)*.5)}.ff\:py-1{padding-block:calc(var(--ff-spacing)*1)}.ff\:py-1\.5{padding-block:calc(var(--ff-spacing)*1.5)}.ff\:py-2{padding-block:calc(var(--ff-spacing)*2)}.ff\:py-2\.5{padding-block:calc(var(--ff-spacing)*2.5)}.ff\:py-3{padding-block:calc(var(--ff-spacing)*3)}.ff\:py-4{padding-block:calc(var(--ff-spacing)*4)}.ff\:py-12{padding-block:calc(var(--ff-spacing)*12)}.ff\:pt-2{padding-top:calc(var(--ff-spacing)*2)}.ff\:pt-3{padding-top:calc(var(--ff-spacing)*3)}.ff\:pt-5{padding-top:calc(var(--ff-spacing)*5)}.ff\:pb-0\.5{padding-bottom:calc(var(--ff-spacing)*.5)}.ff\:pb-1{padding-bottom:calc(var(--ff-spacing)*1)}.ff\:pb-2{padding-bottom:calc(var(--ff-spacing)*2)}.ff\:pb-8{padding-bottom:calc(var(--ff-spacing)*8)}.ff\:text-center{text-align:center}.ff\:text-right{text-align:right}.ff\:font-heading{font-family:var(--ff-font-heading)}.ff\:font-mono{font-family:var(--ff-font-mono)}.ff\:text-2xl{font-size:var(--ff-text-2xl);line-height:var(--tw-leading,var(--ff-text-2xl--line-height))}.ff\:text-3xl{font-size:var(--ff-text-3xl);line-height:var(--tw-leading,var(--ff-text-3xl--line-height))}.ff\:text-4xl{font-size:var(--ff-text-4xl);line-height:var(--tw-leading,var(--ff-text-4xl--line-height))}.ff\:text-base{font-size:var(--ff-text-base);line-height:var(--tw-leading,var(--ff-text-base--line-height))}.ff\:text-lg{font-size:var(--ff-text-lg);line-height:var(--tw-leading,var(--ff-text-lg--line-height))}.ff\:text-sm{font-size:var(--ff-text-sm);line-height:var(--tw-leading,var(--ff-text-sm--line-height))}.ff\:text-xl{font-size:var(--ff-text-xl);line-height:var(--tw-leading,var(--ff-text-xl--line-height))}.ff\:text-xs{font-size:var(--ff-text-xs);line-height:var(--tw-leading,var(--ff-text-xs--line-height))}.ff\:text-xxs{font-size:var(--ff-text-xxs);line-height:var(--tw-leading,var(--ff-text-xxs--line-height))}.ff\:text-\[2rem\]{font-size:2rem}.ff\:text-\[10\.5px\]{font-size:10.5px}.ff\:text-\[52px\]{font-size:52px}.ff\:leading-none{--tw-leading:1;line-height:1}.ff\:leading-tight{--tw-leading:var(--ff-leading-tight);line-height:var(--ff-leading-tight)}.ff\:font-black{--tw-font-weight:var(--ff-font-weight-black);font-weight:var(--ff-font-weight-black)}.ff\:font-bold{--tw-font-weight:var(--ff-font-weight-bold);font-weight:var(--ff-font-weight-bold)}.ff\:font-extrabold{--tw-font-weight:var(--ff-font-weight-extrabold);font-weight:var(--ff-font-weight-extrabold)}.ff\:font-extralight{--tw-font-weight:var(--ff-font-weight-extralight);font-weight:var(--ff-font-weight-extralight)}.ff\:font-light{--tw-font-weight:var(--ff-font-weight-light);font-weight:var(--ff-font-weight-light)}.ff\:font-medium{--tw-font-weight:var(--ff-font-weight-medium);font-weight:var(--ff-font-weight-medium)}.ff\:font-normal{--tw-font-weight:var(--ff-font-weight-normal);font-weight:var(--ff-font-weight-normal)}.ff\:font-semibold{--tw-font-weight:var(--ff-font-weight-semibold);font-weight:var(--ff-font-weight-semibold)}.ff\:tracking-\[-0\.025em\]{--tw-tracking:-.025em;letter-spacing:-.025em}.ff\:tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.ff\:tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.ff\:tracking-\[0\.15em\]{--tw-tracking:.15em;letter-spacing:.15em}.ff\:tracking-normal{--tw-tracking:var(--ff-tracking-normal);letter-spacing:var(--ff-tracking-normal)}.ff\:tracking-tight{--tw-tracking:var(--ff-tracking-tight);letter-spacing:var(--ff-tracking-tight)}.ff\:tracking-wide{--tw-tracking:var(--ff-tracking-wide);letter-spacing:var(--ff-tracking-wide)}.ff\:tracking-wider{--tw-tracking:var(--ff-tracking-wider);letter-spacing:var(--ff-tracking-wider)}.ff\:tracking-widest{--tw-tracking:var(--ff-tracking-widest);letter-spacing:var(--ff-tracking-widest)}.ff\:whitespace-nowrap{white-space:nowrap}.ff\:text-current{color:currentColor}.ff\:text-danger{color:var(--ff-color-danger)}.ff\:text-danger-foreground{color:var(--ff-color-danger-foreground)}.ff\:text-foreground,.ff\:text-foreground\/80{color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:text-foreground\/80{color:color-mix(in oklab,var(--ff-color-foreground)80%,transparent)}}.ff\:text-muted{color:var(--ff-color-muted)}.ff\:text-muted-foreground{color:var(--ff-color-muted-foreground)}.ff\:text-muted\/60{color:var(--ff-color-muted)}@supports (color:color-mix(in lab, red, red)){.ff\:text-muted\/60{color:color-mix(in oklab,var(--ff-color-muted)60%,transparent)}}.ff\:text-neutral-300{color:var(--ff-color-neutral-300)}.ff\:text-neutral-500{color:var(--ff-color-neutral-500)}.ff\:text-primary{color:var(--ff-color-primary)}.ff\:text-primary-foreground{color:var(--ff-color-primary-foreground)}.ff\:text-success{color:var(--ff-color-success)}.ff\:text-success-foreground{color:var(--ff-color-success-foreground)}.ff\:text-warning{color:var(--ff-color-warning)}.ff\:text-warning-foreground{color:var(--ff-color-warning-foreground)}.ff\:text-white{color:var(--ff-color-white)}.ff\:uppercase{text-transform:uppercase}.ff\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ff\:accent-foreground{accent-color:var(--ff-color-foreground)}.ff\:opacity-0{opacity:0}.ff\:opacity-25{opacity:.25}.ff\:opacity-40{opacity:.4}.ff\:opacity-50{opacity:.5}.ff\:opacity-60{opacity:.6}.ff\:opacity-80{opacity:.8}.ff\:shadow-\[0_0_10px_-2px_var\(--ff-color-primary\)\]{--tw-shadow:0 0 10px -2px var(--tw-shadow-color,var(--ff-color-primary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[0_1px_3px_rgba\(0\,0\,0\,0\.04\)\,0_8px_24px_rgba\(0\,0\,0\,0\.06\)\]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#0000000a),0 8px 24px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[0_2px_12px_-3px_rgba\(0\,0\,0\,0\.08\)\,0_0_12px_-6px_var\(--ff-color-primary\)\]{--tw-shadow:0 2px 12px -3px var(--tw-shadow-color,#00000014),0 0 12px -6px var(--tw-shadow-color,var(--ff-color-primary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[0_2px_12px_-3px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 2px 12px -3px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[2px_2px_0_var\(--ff-color-foreground\)\]{--tw-shadow:2px 2px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[3px_3px_0_var\(--ff-color-foreground\)\]{--tw-shadow:3px 3px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[4px_4px_0_var\(--ff-color-foreground\)\]{--tw-shadow:4px 4px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[6px_6px_0_var\(--ff-color-foreground\)\]{--tw-shadow:6px 6px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[inset_0_-3px_0_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:inset 0 -3px 0 var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[inset_0_1px_4px_-1px_rgba\(0\,0\,0\,0\.06\)\]{--tw-shadow:inset 0 1px 4px -1px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[inset_0_2px_4px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:inset 0 2px 4px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[inset_2px_2px_0_var\(--ff-color-secondary\)\]{--tw-shadow:inset 2px 2px 0 var(--tw-shadow-color,var(--ff-color-secondary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[inset_3px_3px_0_var\(--ff-color-secondary\)\]{--tw-shadow:inset 3px 3px 0 var(--tw-shadow-color,var(--ff-color-secondary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--ff-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ff-default-transition-duration))}.ff\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--ff-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ff-default-transition-duration))}.ff\:transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--ff-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ff-default-transition-duration))}.ff\:duration-100{--tw-duration:.1s;transition-duration:.1s}.ff\:duration-150{--tw-duration:.15s;transition-duration:.15s}.ff\:duration-200{--tw-duration:.2s;transition-duration:.2s}.ff\:duration-300{--tw-duration:.3s;transition-duration:.3s}.ff\:ease-out{--tw-ease:var(--ff-ease-out);transition-timing-function:var(--ff-ease-out)}.ff\:outline-none{--tw-outline-style:none;outline-style:none}.ff\:select-none{-webkit-user-select:none;user-select:none}.ff\:\[background\:linear-gradient\(90deg\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_0\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_10\%\,transparent\)_50\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_100\%\)\]{background:linear-gradient(90deg,var(--ff-color-foreground)0%,var(--ff-color-foreground)50%,var(--ff-color-foreground)100%)}@supports (color:color-mix(in lab, red, red)){.ff\:\[background\:linear-gradient\(90deg\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_0\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_10\%\,transparent\)_50\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_100\%\)\]{background:linear-gradient(90deg,color-mix(in oklch,var(--ff-color-foreground)6%,transparent)0%,color-mix(in oklch,var(--ff-color-foreground)10%,transparent)50%,color-mix(in oklch,var(--ff-color-foreground)6%,transparent)100%)}}.ff\:\[background\:linear-gradient\(90deg\,transparent_0\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_20\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_80\%\,transparent_100\%\)\]{background:linear-gradient(90deg,transparent 0%,var(--ff-color-foreground)20%,var(--ff-color-foreground)80%,transparent 100%)}@supports (color:color-mix(in lab, red, red)){.ff\:\[background\:linear-gradient\(90deg\,transparent_0\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_20\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_80\%\,transparent_100\%\)\]{background:linear-gradient(90deg,transparent 0%,color-mix(in oklch,var(--ff-color-foreground)6%,transparent)20%,color-mix(in oklch,var(--ff-color-foreground)6%,transparent)80%,transparent 100%)}}.ff\:\[background\:linear-gradient\(90deg\,var\(--ff-color-primary\)\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,white\)\)\]{background:linear-gradient(90deg,var(--ff-color-primary),var(--ff-color-primary))}@supports (color:color-mix(in lab, red, red)){.ff\:\[background\:linear-gradient\(90deg\,var\(--ff-color-primary\)\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,white\)\)\]{background:linear-gradient(90deg,var(--ff-color-primary),color-mix(in oklch,var(--ff-color-primary)80%,white))}}.ff\:\[background\:repeating-linear-gradient\(-45deg\,var\(--ff-color-primary\)\,var\(--ff-color-primary\)_8px\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,black\)_8px\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,black\)_16px\)\]{background:repeating-linear-gradient(-45deg,var(--ff-color-primary),var(--ff-color-primary)8px,var(--ff-color-primary)8px,var(--ff-color-primary)16px)}@supports (color:color-mix(in lab, red, red)){.ff\:\[background\:repeating-linear-gradient\(-45deg\,var\(--ff-color-primary\)\,var\(--ff-color-primary\)_8px\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,black\)_8px\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,black\)_16px\)\]{background:repeating-linear-gradient(-45deg,var(--ff-color-primary),var(--ff-color-primary)8px,color-mix(in oklch,var(--ff-color-primary)80%,black)8px,color-mix(in oklch,var(--ff-color-primary)80%,black)16px)}}.ff\:\[background\:repeating-linear-gradient\(-45deg\,var\(--ff-color-secondary\)\,var\(--ff-color-secondary\)_4px\,var\(--ff-color-surface\)_4px\,var\(--ff-color-surface\)_8px\)\]{background:repeating-linear-gradient(-45deg,var(--ff-color-secondary),var(--ff-color-secondary)4px,var(--ff-color-surface)4px,var(--ff-color-surface)8px)}.ff\:\[scrollbar-width\:none\]{scrollbar-width:none}.ff\:duration-100{animation-duration:.1s}.ff\:duration-150{animation-duration:.15s}.ff\:duration-200{animation-duration:.2s}.ff\:duration-300{animation-duration:.3s}.ff\:ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.ff\:peer-placeholder-shown\:translate-y-0:is(:where(.ff\:peer):placeholder-shown~*){--tw-translate-y:calc(var(--ff-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:peer-placeholder-shown\:scale-100:is(:where(.ff\:peer):placeholder-shown~*){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.ff\:peer-placeholder-shown\:font-normal:is(:where(.ff\:peer):placeholder-shown~*){--tw-font-weight:var(--ff-font-weight-normal);font-weight:var(--ff-font-weight-normal)}.ff\:peer-placeholder-shown\:text-muted:is(:where(.ff\:peer):placeholder-shown~*){color:var(--ff-color-muted)}.ff\:peer-focus\:-translate-y-2:is(:where(.ff\:peer):focus~*){--tw-translate-y:calc(var(--ff-spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:peer-focus\:scale-75:is(:where(.ff\:peer):focus~*){--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x)var(--tw-scale-y)}.ff\:peer-focus\:font-medium:is(:where(.ff\:peer):focus~*){--tw-font-weight:var(--ff-font-weight-medium);font-weight:var(--ff-font-weight-medium)}.ff\:peer-focus\:text-danger:is(:where(.ff\:peer):focus~*){color:var(--ff-color-danger)}.ff\:peer-focus\:text-primary:is(:where(.ff\:peer):focus~*){color:var(--ff-color-primary)}.ff\:peer-disabled\:text-muted:is(:where(.ff\:peer):disabled~*){color:var(--ff-color-muted)}.ff\:peer-disabled\:opacity-50:is(:where(.ff\:peer):disabled~*){opacity:.5}.ff\:placeholder\:text-muted::placeholder{color:var(--ff-color-muted)}.ff\:placeholder\:opacity-0::placeholder{opacity:0}.ff\:placeholder\:transition-opacity::placeholder{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--ff-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ff-default-transition-duration))}.ff\:placeholder\:duration-200::placeholder{--tw-duration:.2s;transition-duration:.2s;animation-duration:.2s}.ff\:last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.ff\:last\:pb-0:last-child{padding-bottom:calc(var(--ff-spacing)*0)}@media (hover:hover){.ff\:hover\:-translate-x-0\.5:hover{--tw-translate-x:calc(var(--ff-spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:hover\:translate-x-0:hover{--tw-translate-x:calc(var(--ff-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--ff-spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:hover\:translate-y-0:hover{--tw-translate-y:calc(var(--ff-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:hover\:border-foreground:hover{border-color:var(--ff-color-foreground)}.ff\:hover\:bg-secondary:hover{background-color:var(--ff-color-secondary)}.ff\:hover\:underline:hover{text-decoration-line:underline}.ff\:hover\:opacity-90:hover{opacity:.9}.ff\:hover\:shadow-\[0_4px_16px_-4px_rgba\(0\,0\,0\,0\.12\)\]:hover{--tw-shadow:0 4px 16px -4px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:hover\:shadow-\[4px_4px_0_var\(--ff-color-foreground\)\]:hover{--tw-shadow:4px 4px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:hover\:shadow-\[6px_6px_0_var\(--ff-color-foreground\)\]:hover{--tw-shadow:6px 6px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:hover\:shadow-none:hover{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.ff\:focus\:border-danger:focus,.ff\:focus\:border-danger\/50:focus{border-color:var(--ff-color-danger)}@supports (color:color-mix(in lab, red, red)){.ff\:focus\:border-danger\/50:focus{border-color:color-mix(in oklab,var(--ff-color-danger)50%,transparent)}}.ff\:focus\:border-primary:focus,.ff\:focus\:border-primary\/50:focus{border-color:var(--ff-color-primary)}@supports (color:color-mix(in lab, red, red)){.ff\:focus\:border-primary\/50:focus{border-color:color-mix(in oklab,var(--ff-color-primary)50%,transparent)}}.ff\:focus\:border-b-danger:focus{border-bottom-color:var(--ff-color-danger)}.ff\:focus\:border-b-primary:focus{border-bottom-color:var(--ff-color-primary)}.ff\:focus\:bg-background:focus{background-color:var(--ff-color-background)}.ff\:focus\:shadow-\[inset_0_1px_4px_-1px_rgba\(0\,0\,0\,0\.06\)\,0_0_0_3px_rgba\(var\(--ff-color-danger-rgb\)\,0\.12\)\]:focus{--tw-shadow:inset 0 1px 4px -1px var(--tw-shadow-color,#0000000f),0 0 0 3px var(--tw-shadow-color,rgba(var(--ff-color-danger-rgb),.12));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:shadow-\[inset_0_1px_4px_-1px_rgba\(0\,0\,0\,0\.06\)\,0_0_0_3px_rgba\(var\(--ff-color-primary-rgb\)\,0\.12\)\]:focus{--tw-shadow:inset 0 1px 4px -1px var(--tw-shadow-color,#0000000f),0 0 0 3px var(--tw-shadow-color,rgba(var(--ff-color-primary-rgb),.12));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:shadow-\[inset_2px_2px_0_var\(--ff-color-primary\)\]:focus{--tw-shadow:inset 2px 2px 0 var(--tw-shadow-color,var(--ff-color-primary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:shadow-\[inset_3px_3px_0_var\(--ff-color-primary\)\]:focus{--tw-shadow:inset 3px 3px 0 var(--tw-shadow-color,var(--ff-color-primary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:shadow-none:focus{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:ring-danger:focus,.ff\:focus\:ring-danger\/20:focus{--tw-ring-color:var(--ff-color-danger)}@supports (color:color-mix(in lab, red, red)){.ff\:focus\:ring-danger\/20:focus{--tw-ring-color:color-mix(in oklab,var(--ff-color-danger)20%,transparent)}}.ff\:focus\:ring-primary\/20:focus{--tw-ring-color:var(--ff-color-primary)}@supports (color:color-mix(in lab, red, red)){.ff\:focus\:ring-primary\/20:focus{--tw-ring-color:color-mix(in oklab,var(--ff-color-primary)20%,transparent)}}.ff\:focus\:placeholder\:opacity-100:focus::placeholder{opacity:1}.ff\:focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus-visible\:ring-border:focus-visible{--tw-ring-color:var(--ff-color-border)}.ff\:focus-visible\:ring-danger:focus-visible{--tw-ring-color:var(--ff-color-danger)}.ff\:focus-visible\:ring-primary:focus-visible{--tw-ring-color:var(--ff-color-primary)}.ff\:focus-visible\:ring-secondary:focus-visible{--tw-ring-color:var(--ff-color-secondary)}.ff\:focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.ff\:active\:translate-x-0:active{--tw-translate-x:calc(var(--ff-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:active\:translate-x-0\.5:active{--tw-translate-x:calc(var(--ff-spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:active\:translate-y-0:active{--tw-translate-y:calc(var(--ff-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:active\:translate-y-0\.5:active{--tw-translate-y:calc(var(--ff-spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:active\:shadow-\[2px_2px_0_var\(--ff-color-foreground\)\]:active{--tw-shadow:2px 2px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:active\:shadow-\[inset_0_2px_4px_rgba\(0\,0\,0\,0\.1\)\]:active{--tw-shadow:inset 0 2px 4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:active\:shadow-none:active{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:disabled\:pointer-events-none:disabled{pointer-events:none}.ff\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.ff\:disabled\:opacity-35:disabled{opacity:.35}.ff\:disabled\:opacity-50:disabled{opacity:.5}.ff\:\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.ff\:\[\&\>\*\]\:min-h-0>*{min-height:calc(var(--ff-spacing)*0)}.ff\:\[\&\>\*\]\:flex-1>*{flex:1}.fanfare-text-balance{text-wrap:balance}.fanfare-text-pretty{text-wrap:pretty}}[data-fanfare-variant=default]{--ff-variant:"default"}[data-fanfare-variant=retro]{--ff-variant:"retro";--ff-color-background:#f4f1ea;--ff-color-foreground:#000;--ff-color-muted:#444;--ff-color-muted-foreground:#444;--ff-color-border:#000;--ff-font-sans:"Inconsolata","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--ff-font-heading:"Inconsolata","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--ff-font-mono:"Inconsolata","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}[data-fanfare-variant=rounded]{--ff-variant:"rounded"}[data-fanfare-variant=clean]{--ff-variant:"clean";--ff-color-background:#fff;--ff-color-foreground:#0a0a0a;--ff-color-muted:#737373;--ff-color-muted-foreground:#737373;--ff-color-border:#e8e8e8;--ff-font-sans:"Figtree",system-ui,sans-serif;--ff-font-heading:"Figtree",system-ui,sans-serif;--ff-font-mono:"Inconsolata","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes slide-in{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-.5rem)}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes celebration-bounce{0%,to{transform:scale(1)}25%{transform:scale(1.2)}50%{transform:scale(.95)}75%{transform:scale(1.1)}}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-4px)}20%,40%,60%,80%{transform:translate(4px)}}@keyframes pulse-success{0%{box-shadow:0 0 0 0 var(--ff-color-success,#22c55e)}70%{box-shadow:0 0 0 10px #0000}to{box-shadow:0 0 #0000}}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-slide{0%{background-position:-100% 0}to{background-position:200% 0}}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--ff-font-sans:"Inter",system-ui,sans-serif;--ff-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ff-color-neutral-50:oklch(98.5% 0 0);--ff-color-neutral-200:oklch(92.2% 0 0);--ff-color-neutral-300:oklch(87% 0 0);--ff-color-neutral-500:oklch(55.6% 0 0);--ff-color-white:#fff;--ff-spacing:.25rem;--ff-container-sm:24rem;--ff-text-xs:.75rem;--ff-text-xs--line-height:calc(1/.75);--ff-text-sm:.875rem;--ff-text-sm--line-height:calc(1.25/.875);--ff-text-base:1rem;--ff-text-base--line-height:calc(1.5/1);--ff-text-lg:1.125rem;--ff-text-lg--line-height:calc(1.75/1.125);--ff-text-xl:1.25rem;--ff-text-xl--line-height:calc(1.75/1.25);--ff-text-2xl:1.5rem;--ff-text-2xl--line-height:calc(2/1.5);--ff-text-3xl:1.875rem;--ff-text-3xl--line-height:calc(2.25/1.875);--ff-text-4xl:2.25rem;--ff-text-4xl--line-height:calc(2.5/2.25);--ff-font-weight-extralight:200;--ff-font-weight-light:300;--ff-font-weight-normal:400;--ff-font-weight-medium:500;--ff-font-weight-semibold:600;--ff-font-weight-bold:700;--ff-font-weight-extrabold:800;--ff-font-weight-black:900;--ff-tracking-tight:-.025em;--ff-tracking-normal:0em;--ff-tracking-wide:.025em;--ff-tracking-wider:.05em;--ff-tracking-widest:.1em;--ff-leading-tight:1.25;--ff-radius-md:.375rem;--ff-radius-lg:.5rem;--ff-radius-xl:.75rem;--ff-radius-2xl:1rem;--ff-radius-3xl:1.5rem;--ff-ease-out:cubic-bezier(0,0,.2,1);--ff-animate-spin:spin 1s linear infinite;--ff-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--ff-default-transition-duration:.15s;--ff-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--ff-default-font-family:var(--ff-font-sans);--ff-default-mono-font-family:var(--ff-font-mono);--ff-color-primary:#1d1f27;--ff-color-primary-foreground:#fff;--ff-color-secondary:#f4f4f5;--ff-color-background:#fff;--ff-color-surface:transparent;--ff-color-surface-foreground:#1d1f27;--ff-color-foreground:#1d1f27;--ff-color-muted:#4b4e56cc;--ff-color-muted-foreground:#4b4e5699;--ff-color-border:#4b4e5666;--ff-color-success:oklch(77% .18 130);--ff-color-success-foreground:#111;--ff-color-warning:oklch(72% .18 65);--ff-color-warning-foreground:#111;--ff-color-danger:oklch(63% .24 25);--ff-color-danger-foreground:#fff;--ff-font-heading:"Inter",system-ui,sans-serif;--ff-text-xxs:.625rem;--ff-text-xxs--line-height:.875rem;--ff-animate-fade-in:fade-in .2s ease-out;--ff-animate-fade-out:fade-out .2s ease-out;--ff-animate-slide-in:slide-in .2s ease-out;--ff-animate-slide-out:slide-out .2s ease-out;--ff-animate-scale-in:scale-in .2s ease-out;--ff-animate-scale-out:scale-out .2s ease-out;--ff-animate-accordion-down:accordion-down .2s ease-out;--ff-animate-accordion-up:accordion-up .2s ease-out;--ff-animate-celebration:celebration-bounce .6s ease-out;--ff-animate-shake:shake .5s ease-out;--ff-animate-pulse-success:pulse-success 1s ease-out}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--ff-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--ff-default-font-feature-settings,normal);font-variation-settings:var(--ff-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--ff-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--ff-default-mono-font-feature-settings,normal);font-variation-settings:var(--ff-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.fanfare-themed{font-family:var(--ff-font-sans);color:var(--ff-color-foreground);background-color:var(--ff-color-surface)}.fanfare-themed *,.fanfare-themed :after,.fanfare-themed :before,.fanfare-themed ::backdrop{border-color:var(--ff-color-border);outline-color:var(--ff-color-border)}.fanfare-themed ::file-selector-button{border-color:var(--ff-color-border);outline-color:var(--ff-color-border)}.fanfare-themed button:not(:disabled),.fanfare-themed [role=button]:not(:disabled){cursor:pointer}.fanfare-themed :focus-visible{outline:2px solid var(--ff-color-primary);outline-offset:2px}@media (prefers-reduced-motion:reduce){.fanfare-themed *,.fanfare-themed :before,.fanfare-themed :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.fanfare-root{color:var(--ff-color-foreground);background-color:var(--ff-color-surface);font-family:var(--ff-font-sans)}.fanfare-root *,.fanfare-root :after,.fanfare-root :before,.fanfare-root ::backdrop{border-color:var(--ff-color-border);outline-color:var(--ff-color-border)}.fanfare-root ::file-selector-button{border-color:var(--ff-color-border);outline-color:var(--ff-color-border)}.fanfare-root button:not(:disabled),.fanfare-root [role=button]:not(:disabled){cursor:pointer}@media (prefers-reduced-motion:reduce){.fanfare-root *,.fanfare-root :before,.fanfare-root :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer components;@layer utilities{.ff\:pointer-events-none{pointer-events:none}.ff\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ff\:absolute{position:absolute}.ff\:relative{position:relative}.ff\:inset-0{inset:calc(var(--ff-spacing)*0)}.ff\:top-1\/2{top:50%}.ff\:top-3{top:calc(var(--ff-spacing)*3)}.ff\:right-2{right:calc(var(--ff-spacing)*2)}.ff\:left-3{left:calc(var(--ff-spacing)*3)}.ff\:z-10{z-index:10}.ff\:-mx-1{margin-inline:calc(var(--ff-spacing)*-1)}.ff\:mx-2{margin-inline:calc(var(--ff-spacing)*2)}.ff\:-mt-0\.5{margin-top:calc(var(--ff-spacing)*-.5)}.ff\:mt-0\.5{margin-top:calc(var(--ff-spacing)*.5)}.ff\:mt-1{margin-top:calc(var(--ff-spacing)*1)}.ff\:mt-3{margin-top:calc(var(--ff-spacing)*3)}.ff\:mt-4{margin-top:calc(var(--ff-spacing)*4)}.ff\:mt-auto{margin-top:auto}.ff\:mb-1\.5{margin-bottom:calc(var(--ff-spacing)*1.5)}.ff\:mb-2{margin-bottom:calc(var(--ff-spacing)*2)}.ff\:mb-4{margin-bottom:calc(var(--ff-spacing)*4)}.ff\:mb-6{margin-bottom:calc(var(--ff-spacing)*6)}.ff\:block{display:block}.ff\:flex{display:flex}.ff\:grid{display:grid}.ff\:inline-block{display:inline-block}.ff\:inline-flex{display:inline-flex}.ff\:size-1{width:calc(var(--ff-spacing)*1);height:calc(var(--ff-spacing)*1)}.ff\:size-1\.5{width:calc(var(--ff-spacing)*1.5);height:calc(var(--ff-spacing)*1.5)}.ff\:size-4{width:calc(var(--ff-spacing)*4);height:calc(var(--ff-spacing)*4)}.ff\:size-5{width:calc(var(--ff-spacing)*5);height:calc(var(--ff-spacing)*5)}.ff\:size-6{width:calc(var(--ff-spacing)*6);height:calc(var(--ff-spacing)*6)}.ff\:size-8{width:calc(var(--ff-spacing)*8);height:calc(var(--ff-spacing)*8)}.ff\:size-10{width:calc(var(--ff-spacing)*10);height:calc(var(--ff-spacing)*10)}.ff\:h-0\.5{height:calc(var(--ff-spacing)*.5)}.ff\:h-1{height:calc(var(--ff-spacing)*1)}.ff\:h-2{height:calc(var(--ff-spacing)*2)}.ff\:h-2\.5{height:calc(var(--ff-spacing)*2.5)}.ff\:h-3{height:calc(var(--ff-spacing)*3)}.ff\:h-4{height:calc(var(--ff-spacing)*4)}.ff\:h-4\.5{height:calc(var(--ff-spacing)*4.5)}.ff\:h-5{height:calc(var(--ff-spacing)*5)}.ff\:h-6{height:calc(var(--ff-spacing)*6)}.ff\:h-8{height:calc(var(--ff-spacing)*8)}.ff\:h-10{height:calc(var(--ff-spacing)*10)}.ff\:h-12{height:calc(var(--ff-spacing)*12)}.ff\:h-14{height:calc(var(--ff-spacing)*14)}.ff\:h-16{height:calc(var(--ff-spacing)*16)}.ff\:h-20{height:calc(var(--ff-spacing)*20)}.ff\:h-32{height:calc(var(--ff-spacing)*32)}.ff\:h-\[480px\]{height:480px}.ff\:h-auto{height:auto}.ff\:h-full{height:100%}.ff\:max-h-44{max-height:calc(var(--ff-spacing)*44)}.ff\:max-h-\[24rem\]{max-height:24rem}.ff\:min-h-10{min-height:calc(var(--ff-spacing)*10)}.ff\:w-1\/2{width:50%}.ff\:w-1\/3{width:33.3333%}.ff\:w-2\/3{width:66.6667%}.ff\:w-3\/4{width:75%}.ff\:w-5\/6{width:83.3333%}.ff\:w-6{width:calc(var(--ff-spacing)*6)}.ff\:w-9{width:calc(var(--ff-spacing)*9)}.ff\:w-10{width:calc(var(--ff-spacing)*10)}.ff\:w-12{width:calc(var(--ff-spacing)*12)}.ff\:w-14{width:calc(var(--ff-spacing)*14)}.ff\:w-16{width:calc(var(--ff-spacing)*16)}.ff\:w-20{width:calc(var(--ff-spacing)*20)}.ff\:w-40{width:calc(var(--ff-spacing)*40)}.ff\:w-72{width:calc(var(--ff-spacing)*72)}.ff\:w-80{width:calc(var(--ff-spacing)*80)}.ff\:w-auto{width:auto}.ff\:w-full{width:100%}.ff\:max-w-sm{max-width:var(--ff-container-sm)}.ff\:min-w-0{min-width:calc(var(--ff-spacing)*0)}.ff\:flex-1{flex:1}.ff\:shrink-0{flex-shrink:0}.ff\:origin-center{transform-origin:50%}.ff\:origin-top-left{transform-origin:0 0}.ff\:-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:-translate-y-2{--tw-translate-y:calc(var(--ff-spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x)var(--tw-scale-y)}.ff\:animate-\[skeleton-shimmer_2s_ease-in-out_infinite\]{animation:2s ease-in-out infinite skeleton-shimmer}.ff\:animate-\[skeleton-slide_2s_ease-in-out_infinite\]{animation:2s ease-in-out infinite skeleton-slide}.ff\:animate-\[spin_1\.2s_cubic-bezier\(0\.4\,0\,0\.6\,1\)_infinite\]{animation:1.2s cubic-bezier(.4,0,.6,1) infinite spin}.ff\:animate-\[spin_1\.8s_linear_infinite\]{animation:1.8s linear infinite spin}.ff\:animate-accordion-down{animation:var(--ff-animate-accordion-down)}.ff\:animate-accordion-up{animation:var(--ff-animate-accordion-up)}.ff\:animate-celebration{animation:var(--ff-animate-celebration)}.ff\:animate-fade-in{animation:var(--ff-animate-fade-in)}.ff\:animate-fade-out{animation:var(--ff-animate-fade-out)}.ff\:animate-none{animation:none}.ff\:animate-pulse{animation:var(--ff-animate-pulse)}.ff\:animate-pulse-success{animation:var(--ff-animate-pulse-success)}.ff\:animate-scale-in{animation:var(--ff-animate-scale-in)}.ff\:animate-scale-out{animation:var(--ff-animate-scale-out)}.ff\:animate-shake{animation:var(--ff-animate-shake)}.ff\:animate-slide-in{animation:var(--ff-animate-slide-in)}.ff\:animate-slide-out{animation:var(--ff-animate-slide-out)}.ff\:animate-spin{animation:var(--ff-animate-spin)}.ff\:cursor-not-allowed{cursor:not-allowed}.ff\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.ff\:flex-col{flex-direction:column}.ff\:flex-row{flex-direction:row}.ff\:flex-wrap{flex-wrap:wrap}.ff\:items-baseline{align-items:baseline}.ff\:items-center{align-items:center}.ff\:items-start{align-items:flex-start}.ff\:justify-between{justify-content:space-between}.ff\:justify-center{justify-content:center}.ff\:gap-0\.5{gap:calc(var(--ff-spacing)*.5)}.ff\:gap-1{gap:calc(var(--ff-spacing)*1)}.ff\:gap-1\.5{gap:calc(var(--ff-spacing)*1.5)}.ff\:gap-2{gap:calc(var(--ff-spacing)*2)}.ff\:gap-3{gap:calc(var(--ff-spacing)*3)}.ff\:gap-4{gap:calc(var(--ff-spacing)*4)}.ff\:gap-5{gap:calc(var(--ff-spacing)*5)}.ff\:gap-6{gap:calc(var(--ff-spacing)*6)}.ff\:gap-10{gap:calc(var(--ff-spacing)*10)}.ff\:gap-12{gap:calc(var(--ff-spacing)*12)}:where(.ff\:space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--ff-spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--ff-spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.ff\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--ff-spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--ff-spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.ff\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--ff-spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--ff-spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.ff\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--ff-spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--ff-spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.ff\:self-end{align-self:flex-end}.ff\:overflow-hidden{overflow:hidden}.ff\:overflow-visible{overflow:visible}.ff\:overflow-x-auto{overflow-x:auto}.ff\:overflow-y-auto{overflow-y:auto}.ff\:rounded{border-radius:.25rem}.ff\:rounded-2xl{border-radius:var(--ff-radius-2xl)}.ff\:rounded-3xl{border-radius:var(--ff-radius-3xl)}.ff\:rounded-\[8px\]{border-radius:8px}.ff\:rounded-\[10px\]{border-radius:10px}.ff\:rounded-\[14px\]{border-radius:14px}.ff\:rounded-full{border-radius:3.40282e38px}.ff\:rounded-lg{border-radius:var(--ff-radius-lg)}.ff\:rounded-md{border-radius:var(--ff-radius-md)}.ff\:rounded-none{border-radius:0}.ff\:rounded-xl{border-radius:var(--ff-radius-xl)}.ff\:border{border-style:var(--tw-border-style);border-width:1px}.ff\:border-0{border-style:var(--tw-border-style);border-width:0}.ff\:border-2{border-style:var(--tw-border-style);border-width:2px}.ff\:border-3{border-style:var(--tw-border-style);border-width:3px}.ff\:border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.ff\:border-\[2\.5px\]{border-style:var(--tw-border-style);border-width:2.5px}.ff\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.ff\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.ff\:border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.ff\:border-none{--tw-border-style:none;border-style:none}.ff\:border-border,.ff\:border-border\/40{border-color:var(--ff-color-border)}@supports (color:color-mix(in lab, red, red)){.ff\:border-border\/40{border-color:color-mix(in oklab,var(--ff-color-border)40%,transparent)}}.ff\:border-border\/50{border-color:var(--ff-color-border)}@supports (color:color-mix(in lab, red, red)){.ff\:border-border\/50{border-color:color-mix(in oklab,var(--ff-color-border)50%,transparent)}}.ff\:border-danger,.ff\:border-danger\/50{border-color:var(--ff-color-danger)}@supports (color:color-mix(in lab, red, red)){.ff\:border-danger\/50{border-color:color-mix(in oklab,var(--ff-color-danger)50%,transparent)}}.ff\:border-foreground,.ff\:border-foreground\/8{border-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:border-foreground\/8{border-color:color-mix(in oklab,var(--ff-color-foreground)8%,transparent)}}.ff\:border-foreground\/12{border-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:border-foreground\/12{border-color:color-mix(in oklab,var(--ff-color-foreground)12%,transparent)}}.ff\:border-foreground\/20{border-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:border-foreground\/20{border-color:color-mix(in oklab,var(--ff-color-foreground)20%,transparent)}}.ff\:border-foreground\/\[0\.08\]{border-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:border-foreground\/\[0\.08\]{border-color:color-mix(in oklab,var(--ff-color-foreground)8%,transparent)}}.ff\:border-neutral-200{border-color:var(--ff-color-neutral-200)}.ff\:border-primary{border-color:var(--ff-color-primary)}.ff\:border-transparent{border-color:#0000}.ff\:border-b-danger{border-bottom-color:var(--ff-color-danger)}.ff\:bg-\[\#ff3a00\]{background-color:#ff3a00}.ff\:bg-\[color-mix\(in_oklch\,var\(--ff-color-foreground\)_3\%\,var\(--ff-color-background\)\)\]{background-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-\[color-mix\(in_oklch\,var\(--ff-color-foreground\)_3\%\,var\(--ff-color-background\)\)\]{background-color:color-mix(in oklch,var(--ff-color-foreground)3%,var(--ff-color-background))}}.ff\:bg-background,.ff\:bg-background\/60{background-color:var(--ff-color-background)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-background\/60{background-color:color-mix(in oklab,var(--ff-color-background)60%,transparent)}}.ff\:bg-background\/70{background-color:var(--ff-color-background)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-background\/70{background-color:color-mix(in oklab,var(--ff-color-background)70%,transparent)}}.ff\:bg-danger,.ff\:bg-danger\/10{background-color:var(--ff-color-danger)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-danger\/10{background-color:color-mix(in oklab,var(--ff-color-danger)10%,transparent)}}.ff\:bg-foreground\/5{background-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-foreground\/5{background-color:color-mix(in oklab,var(--ff-color-foreground)5%,transparent)}}.ff\:bg-foreground\/40{background-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-foreground\/40{background-color:color-mix(in oklab,var(--ff-color-foreground)40%,transparent)}}.ff\:bg-foreground\/\[0\.1\]{background-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-foreground\/\[0\.1\]{background-color:color-mix(in oklab,var(--ff-color-foreground)10%,transparent)}}.ff\:bg-foreground\/\[0\.08\]{background-color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-foreground\/\[0\.08\]{background-color:color-mix(in oklab,var(--ff-color-foreground)8%,transparent)}}.ff\:bg-muted\/5{background-color:var(--ff-color-muted)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-muted\/5{background-color:color-mix(in oklab,var(--ff-color-muted)5%,transparent)}}.ff\:bg-neutral-50{background-color:var(--ff-color-neutral-50)}.ff\:bg-primary{background-color:var(--ff-color-primary)}.ff\:bg-primary-foreground{background-color:var(--ff-color-primary-foreground)}.ff\:bg-primary\/5{background-color:var(--ff-color-primary)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-primary\/5{background-color:color-mix(in oklab,var(--ff-color-primary)5%,transparent)}}.ff\:bg-secondary{background-color:var(--ff-color-secondary)}.ff\:bg-success,.ff\:bg-success\/10{background-color:var(--ff-color-success)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-success\/10{background-color:color-mix(in oklab,var(--ff-color-success)10%,transparent)}}.ff\:bg-transparent{background-color:#0000}.ff\:bg-warning,.ff\:bg-warning\/10{background-color:var(--ff-color-warning)}@supports (color:color-mix(in lab, red, red)){.ff\:bg-warning\/10{background-color:color-mix(in oklab,var(--ff-color-warning)10%,transparent)}}.ff\:bg-linear-to-b{--tw-gradient-position:to bottom}@supports (background-image:linear-gradient(in lab, red, red)){.ff\:bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.ff\:bg-linear-to-b{background-image:linear-gradient(var(--tw-gradient-stops))}.ff\:from-primary\/10{--tw-gradient-from:var(--ff-color-primary)}@supports (color:color-mix(in lab, red, red)){.ff\:from-primary\/10{--tw-gradient-from:color-mix(in oklab,var(--ff-color-primary)10%,transparent)}}.ff\:from-primary\/10{--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))}.ff\:to-primary\/5{--tw-gradient-to:var(--ff-color-primary)}@supports (color:color-mix(in lab, red, red)){.ff\:to-primary\/5{--tw-gradient-to:color-mix(in oklab,var(--ff-color-primary)5%,transparent)}}.ff\:to-primary\/5{--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))}.ff\:\[background-size\:200\%_100\%\]{background-size:200% 100%}.ff\:p-0{padding:calc(var(--ff-spacing)*0)}.ff\:p-4{padding:calc(var(--ff-spacing)*4)}.ff\:p-5{padding:calc(var(--ff-spacing)*5)}.ff\:p-6{padding:calc(var(--ff-spacing)*6)}.ff\:p-8{padding:calc(var(--ff-spacing)*8)}.ff\:px-0{padding-inline:calc(var(--ff-spacing)*0)}.ff\:px-2{padding-inline:calc(var(--ff-spacing)*2)}.ff\:px-2\.5{padding-inline:calc(var(--ff-spacing)*2.5)}.ff\:px-3{padding-inline:calc(var(--ff-spacing)*3)}.ff\:px-4{padding-inline:calc(var(--ff-spacing)*4)}.ff\:px-5{padding-inline:calc(var(--ff-spacing)*5)}.ff\:px-6{padding-inline:calc(var(--ff-spacing)*6)}.ff\:py-0\.5{padding-block:calc(var(--ff-spacing)*.5)}.ff\:py-1{padding-block:calc(var(--ff-spacing)*1)}.ff\:py-1\.5{padding-block:calc(var(--ff-spacing)*1.5)}.ff\:py-2{padding-block:calc(var(--ff-spacing)*2)}.ff\:py-2\.5{padding-block:calc(var(--ff-spacing)*2.5)}.ff\:py-3{padding-block:calc(var(--ff-spacing)*3)}.ff\:py-4{padding-block:calc(var(--ff-spacing)*4)}.ff\:py-12{padding-block:calc(var(--ff-spacing)*12)}.ff\:pt-2{padding-top:calc(var(--ff-spacing)*2)}.ff\:pt-3{padding-top:calc(var(--ff-spacing)*3)}.ff\:pt-5{padding-top:calc(var(--ff-spacing)*5)}.ff\:pb-0\.5{padding-bottom:calc(var(--ff-spacing)*.5)}.ff\:pb-1{padding-bottom:calc(var(--ff-spacing)*1)}.ff\:pb-2{padding-bottom:calc(var(--ff-spacing)*2)}.ff\:pb-8{padding-bottom:calc(var(--ff-spacing)*8)}.ff\:text-center{text-align:center}.ff\:text-right{text-align:right}.ff\:font-heading{font-family:var(--ff-font-heading)}.ff\:font-mono{font-family:var(--ff-font-mono)}.ff\:text-2xl{font-size:var(--ff-text-2xl);line-height:var(--tw-leading,var(--ff-text-2xl--line-height))}.ff\:text-3xl{font-size:var(--ff-text-3xl);line-height:var(--tw-leading,var(--ff-text-3xl--line-height))}.ff\:text-4xl{font-size:var(--ff-text-4xl);line-height:var(--tw-leading,var(--ff-text-4xl--line-height))}.ff\:text-base{font-size:var(--ff-text-base);line-height:var(--tw-leading,var(--ff-text-base--line-height))}.ff\:text-lg{font-size:var(--ff-text-lg);line-height:var(--tw-leading,var(--ff-text-lg--line-height))}.ff\:text-sm{font-size:var(--ff-text-sm);line-height:var(--tw-leading,var(--ff-text-sm--line-height))}.ff\:text-xl{font-size:var(--ff-text-xl);line-height:var(--tw-leading,var(--ff-text-xl--line-height))}.ff\:text-xs{font-size:var(--ff-text-xs);line-height:var(--tw-leading,var(--ff-text-xs--line-height))}.ff\:text-xxs{font-size:var(--ff-text-xxs);line-height:var(--tw-leading,var(--ff-text-xxs--line-height))}.ff\:text-\[2rem\]{font-size:2rem}.ff\:text-\[10\.5px\]{font-size:10.5px}.ff\:text-\[52px\]{font-size:52px}.ff\:leading-none{--tw-leading:1;line-height:1}.ff\:leading-tight{--tw-leading:var(--ff-leading-tight);line-height:var(--ff-leading-tight)}.ff\:font-black{--tw-font-weight:var(--ff-font-weight-black);font-weight:var(--ff-font-weight-black)}.ff\:font-bold{--tw-font-weight:var(--ff-font-weight-bold);font-weight:var(--ff-font-weight-bold)}.ff\:font-extrabold{--tw-font-weight:var(--ff-font-weight-extrabold);font-weight:var(--ff-font-weight-extrabold)}.ff\:font-extralight{--tw-font-weight:var(--ff-font-weight-extralight);font-weight:var(--ff-font-weight-extralight)}.ff\:font-light{--tw-font-weight:var(--ff-font-weight-light);font-weight:var(--ff-font-weight-light)}.ff\:font-medium{--tw-font-weight:var(--ff-font-weight-medium);font-weight:var(--ff-font-weight-medium)}.ff\:font-normal{--tw-font-weight:var(--ff-font-weight-normal);font-weight:var(--ff-font-weight-normal)}.ff\:font-semibold{--tw-font-weight:var(--ff-font-weight-semibold);font-weight:var(--ff-font-weight-semibold)}.ff\:tracking-\[-0\.025em\]{--tw-tracking:-.025em;letter-spacing:-.025em}.ff\:tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.ff\:tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.ff\:tracking-\[0\.15em\]{--tw-tracking:.15em;letter-spacing:.15em}.ff\:tracking-normal{--tw-tracking:var(--ff-tracking-normal);letter-spacing:var(--ff-tracking-normal)}.ff\:tracking-tight{--tw-tracking:var(--ff-tracking-tight);letter-spacing:var(--ff-tracking-tight)}.ff\:tracking-wide{--tw-tracking:var(--ff-tracking-wide);letter-spacing:var(--ff-tracking-wide)}.ff\:tracking-wider{--tw-tracking:var(--ff-tracking-wider);letter-spacing:var(--ff-tracking-wider)}.ff\:tracking-widest{--tw-tracking:var(--ff-tracking-widest);letter-spacing:var(--ff-tracking-widest)}.ff\:whitespace-nowrap{white-space:nowrap}.ff\:text-current{color:currentColor}.ff\:text-danger{color:var(--ff-color-danger)}.ff\:text-danger-foreground{color:var(--ff-color-danger-foreground)}.ff\:text-foreground,.ff\:text-foreground\/80{color:var(--ff-color-foreground)}@supports (color:color-mix(in lab, red, red)){.ff\:text-foreground\/80{color:color-mix(in oklab,var(--ff-color-foreground)80%,transparent)}}.ff\:text-muted{color:var(--ff-color-muted)}.ff\:text-muted-foreground{color:var(--ff-color-muted-foreground)}.ff\:text-muted\/60{color:var(--ff-color-muted)}@supports (color:color-mix(in lab, red, red)){.ff\:text-muted\/60{color:color-mix(in oklab,var(--ff-color-muted)60%,transparent)}}.ff\:text-neutral-300{color:var(--ff-color-neutral-300)}.ff\:text-neutral-500{color:var(--ff-color-neutral-500)}.ff\:text-primary{color:var(--ff-color-primary)}.ff\:text-primary-foreground{color:var(--ff-color-primary-foreground)}.ff\:text-success{color:var(--ff-color-success)}.ff\:text-success-foreground{color:var(--ff-color-success-foreground)}.ff\:text-warning{color:var(--ff-color-warning)}.ff\:text-warning-foreground{color:var(--ff-color-warning-foreground)}.ff\:text-white{color:var(--ff-color-white)}.ff\:uppercase{text-transform:uppercase}.ff\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ff\:accent-foreground{accent-color:var(--ff-color-foreground)}.ff\:opacity-0{opacity:0}.ff\:opacity-25{opacity:.25}.ff\:opacity-40{opacity:.4}.ff\:opacity-50{opacity:.5}.ff\:opacity-60{opacity:.6}.ff\:opacity-80{opacity:.8}.ff\:shadow-\[0_0_10px_-2px_var\(--ff-color-primary\)\]{--tw-shadow:0 0 10px -2px var(--tw-shadow-color,var(--ff-color-primary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[0_1px_3px_rgba\(0\,0\,0\,0\.04\)\,0_8px_24px_rgba\(0\,0\,0\,0\.06\)\]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#0000000a),0 8px 24px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[0_2px_12px_-3px_rgba\(0\,0\,0\,0\.08\)\,0_0_12px_-6px_var\(--ff-color-primary\)\]{--tw-shadow:0 2px 12px -3px var(--tw-shadow-color,#00000014),0 0 12px -6px var(--tw-shadow-color,var(--ff-color-primary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[0_2px_12px_-3px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 2px 12px -3px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[2px_2px_0_var\(--ff-color-foreground\)\]{--tw-shadow:2px 2px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[3px_3px_0_var\(--ff-color-foreground\)\]{--tw-shadow:3px 3px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[4px_4px_0_var\(--ff-color-foreground\)\]{--tw-shadow:4px 4px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[6px_6px_0_var\(--ff-color-foreground\)\]{--tw-shadow:6px 6px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[inset_0_-3px_0_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:inset 0 -3px 0 var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[inset_0_1px_4px_-1px_rgba\(0\,0\,0\,0\.06\)\]{--tw-shadow:inset 0 1px 4px -1px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[inset_0_2px_4px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:inset 0 2px 4px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[inset_2px_2px_0_var\(--ff-color-secondary\)\]{--tw-shadow:inset 2px 2px 0 var(--tw-shadow-color,var(--ff-color-secondary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-\[inset_3px_3px_0_var\(--ff-color-secondary\)\]{--tw-shadow:inset 3px 3px 0 var(--tw-shadow-color,var(--ff-color-secondary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--ff-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ff-default-transition-duration))}.ff\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--ff-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ff-default-transition-duration))}.ff\:transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--ff-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ff-default-transition-duration))}.ff\:duration-100{--tw-duration:.1s;transition-duration:.1s}.ff\:duration-150{--tw-duration:.15s;transition-duration:.15s}.ff\:duration-200{--tw-duration:.2s;transition-duration:.2s}.ff\:duration-300{--tw-duration:.3s;transition-duration:.3s}.ff\:ease-out{--tw-ease:var(--ff-ease-out);transition-timing-function:var(--ff-ease-out)}.ff\:outline-none{--tw-outline-style:none;outline-style:none}.ff\:select-none{-webkit-user-select:none;user-select:none}.ff\:\[background\:linear-gradient\(90deg\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_0\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_10\%\,transparent\)_50\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_100\%\)\]{background:linear-gradient(90deg,var(--ff-color-foreground)0%,var(--ff-color-foreground)50%,var(--ff-color-foreground)100%)}@supports (color:color-mix(in lab, red, red)){.ff\:\[background\:linear-gradient\(90deg\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_0\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_10\%\,transparent\)_50\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_100\%\)\]{background:linear-gradient(90deg,color-mix(in oklch,var(--ff-color-foreground)6%,transparent)0%,color-mix(in oklch,var(--ff-color-foreground)10%,transparent)50%,color-mix(in oklch,var(--ff-color-foreground)6%,transparent)100%)}}.ff\:\[background\:linear-gradient\(90deg\,transparent_0\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_20\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_80\%\,transparent_100\%\)\]{background:linear-gradient(90deg,transparent 0%,var(--ff-color-foreground)20%,var(--ff-color-foreground)80%,transparent 100%)}@supports (color:color-mix(in lab, red, red)){.ff\:\[background\:linear-gradient\(90deg\,transparent_0\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_20\%\,color-mix\(in_oklch\,var\(--ff-color-foreground\)_6\%\,transparent\)_80\%\,transparent_100\%\)\]{background:linear-gradient(90deg,transparent 0%,color-mix(in oklch,var(--ff-color-foreground)6%,transparent)20%,color-mix(in oklch,var(--ff-color-foreground)6%,transparent)80%,transparent 100%)}}.ff\:\[background\:linear-gradient\(90deg\,var\(--ff-color-primary\)\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,white\)\)\]{background:linear-gradient(90deg,var(--ff-color-primary),var(--ff-color-primary))}@supports (color:color-mix(in lab, red, red)){.ff\:\[background\:linear-gradient\(90deg\,var\(--ff-color-primary\)\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,white\)\)\]{background:linear-gradient(90deg,var(--ff-color-primary),color-mix(in oklch,var(--ff-color-primary)80%,white))}}.ff\:\[background\:repeating-linear-gradient\(-45deg\,var\(--ff-color-primary\)\,var\(--ff-color-primary\)_8px\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,black\)_8px\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,black\)_16px\)\]{background:repeating-linear-gradient(-45deg,var(--ff-color-primary),var(--ff-color-primary)8px,var(--ff-color-primary)8px,var(--ff-color-primary)16px)}@supports (color:color-mix(in lab, red, red)){.ff\:\[background\:repeating-linear-gradient\(-45deg\,var\(--ff-color-primary\)\,var\(--ff-color-primary\)_8px\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,black\)_8px\,color-mix\(in_oklch\,var\(--ff-color-primary\)_80\%\,black\)_16px\)\]{background:repeating-linear-gradient(-45deg,var(--ff-color-primary),var(--ff-color-primary)8px,color-mix(in oklch,var(--ff-color-primary)80%,black)8px,color-mix(in oklch,var(--ff-color-primary)80%,black)16px)}}.ff\:\[background\:repeating-linear-gradient\(-45deg\,var\(--ff-color-secondary\)\,var\(--ff-color-secondary\)_4px\,var\(--ff-color-surface\)_4px\,var\(--ff-color-surface\)_8px\)\]{background:repeating-linear-gradient(-45deg,var(--ff-color-secondary),var(--ff-color-secondary)4px,var(--ff-color-surface)4px,var(--ff-color-surface)8px)}.ff\:\[scrollbar-width\:none\]{scrollbar-width:none}.ff\:duration-100{animation-duration:.1s}.ff\:duration-150{animation-duration:.15s}.ff\:duration-200{animation-duration:.2s}.ff\:duration-300{animation-duration:.3s}.ff\:ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.ff\:peer-placeholder-shown\:translate-y-0:is(:where(.ff\:peer):placeholder-shown~*){--tw-translate-y:calc(var(--ff-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:peer-placeholder-shown\:scale-100:is(:where(.ff\:peer):placeholder-shown~*){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.ff\:peer-placeholder-shown\:font-normal:is(:where(.ff\:peer):placeholder-shown~*){--tw-font-weight:var(--ff-font-weight-normal);font-weight:var(--ff-font-weight-normal)}.ff\:peer-placeholder-shown\:text-muted:is(:where(.ff\:peer):placeholder-shown~*){color:var(--ff-color-muted)}.ff\:peer-focus\:-translate-y-2:is(:where(.ff\:peer):focus~*){--tw-translate-y:calc(var(--ff-spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:peer-focus\:scale-75:is(:where(.ff\:peer):focus~*){--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x)var(--tw-scale-y)}.ff\:peer-focus\:font-medium:is(:where(.ff\:peer):focus~*){--tw-font-weight:var(--ff-font-weight-medium);font-weight:var(--ff-font-weight-medium)}.ff\:peer-focus\:text-danger:is(:where(.ff\:peer):focus~*){color:var(--ff-color-danger)}.ff\:peer-focus\:text-primary:is(:where(.ff\:peer):focus~*){color:var(--ff-color-primary)}.ff\:peer-disabled\:text-muted:is(:where(.ff\:peer):disabled~*){color:var(--ff-color-muted)}.ff\:peer-disabled\:opacity-50:is(:where(.ff\:peer):disabled~*){opacity:.5}.ff\:placeholder\:text-muted::placeholder{color:var(--ff-color-muted)}.ff\:placeholder\:opacity-0::placeholder{opacity:0}.ff\:placeholder\:transition-opacity::placeholder{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--ff-default-transition-timing-function));transition-duration:var(--tw-duration,var(--ff-default-transition-duration))}.ff\:placeholder\:duration-200::placeholder{--tw-duration:.2s;transition-duration:.2s;animation-duration:.2s}.ff\:last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.ff\:last\:pb-0:last-child{padding-bottom:calc(var(--ff-spacing)*0)}@media (hover:hover){.ff\:hover\:-translate-x-0\.5:hover{--tw-translate-x:calc(var(--ff-spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:hover\:translate-x-0:hover{--tw-translate-x:calc(var(--ff-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--ff-spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:hover\:translate-y-0:hover{--tw-translate-y:calc(var(--ff-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:hover\:border-foreground:hover{border-color:var(--ff-color-foreground)}.ff\:hover\:bg-secondary:hover{background-color:var(--ff-color-secondary)}.ff\:hover\:underline:hover{text-decoration-line:underline}.ff\:hover\:opacity-90:hover{opacity:.9}.ff\:hover\:shadow-\[0_4px_16px_-4px_rgba\(0\,0\,0\,0\.12\)\]:hover{--tw-shadow:0 4px 16px -4px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:hover\:shadow-\[4px_4px_0_var\(--ff-color-foreground\)\]:hover{--tw-shadow:4px 4px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:hover\:shadow-\[6px_6px_0_var\(--ff-color-foreground\)\]:hover{--tw-shadow:6px 6px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:hover\:shadow-none:hover{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.ff\:focus\:border-danger:focus,.ff\:focus\:border-danger\/50:focus{border-color:var(--ff-color-danger)}@supports (color:color-mix(in lab, red, red)){.ff\:focus\:border-danger\/50:focus{border-color:color-mix(in oklab,var(--ff-color-danger)50%,transparent)}}.ff\:focus\:border-primary:focus,.ff\:focus\:border-primary\/50:focus{border-color:var(--ff-color-primary)}@supports (color:color-mix(in lab, red, red)){.ff\:focus\:border-primary\/50:focus{border-color:color-mix(in oklab,var(--ff-color-primary)50%,transparent)}}.ff\:focus\:border-b-danger:focus{border-bottom-color:var(--ff-color-danger)}.ff\:focus\:border-b-primary:focus{border-bottom-color:var(--ff-color-primary)}.ff\:focus\:bg-background:focus{background-color:var(--ff-color-background)}.ff\:focus\:shadow-\[inset_0_1px_4px_-1px_rgba\(0\,0\,0\,0\.06\)\,0_0_0_3px_rgba\(var\(--ff-color-danger-rgb\)\,0\.12\)\]:focus{--tw-shadow:inset 0 1px 4px -1px var(--tw-shadow-color,#0000000f),0 0 0 3px var(--tw-shadow-color,rgba(var(--ff-color-danger-rgb),.12));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:shadow-\[inset_0_1px_4px_-1px_rgba\(0\,0\,0\,0\.06\)\,0_0_0_3px_rgba\(var\(--ff-color-primary-rgb\)\,0\.12\)\]:focus{--tw-shadow:inset 0 1px 4px -1px var(--tw-shadow-color,#0000000f),0 0 0 3px var(--tw-shadow-color,rgba(var(--ff-color-primary-rgb),.12));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:shadow-\[inset_2px_2px_0_var\(--ff-color-primary\)\]:focus{--tw-shadow:inset 2px 2px 0 var(--tw-shadow-color,var(--ff-color-primary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:shadow-\[inset_3px_3px_0_var\(--ff-color-primary\)\]:focus{--tw-shadow:inset 3px 3px 0 var(--tw-shadow-color,var(--ff-color-primary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:shadow-none:focus{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus\:ring-danger:focus,.ff\:focus\:ring-danger\/20:focus{--tw-ring-color:var(--ff-color-danger)}@supports (color:color-mix(in lab, red, red)){.ff\:focus\:ring-danger\/20:focus{--tw-ring-color:color-mix(in oklab,var(--ff-color-danger)20%,transparent)}}.ff\:focus\:ring-primary\/20:focus{--tw-ring-color:var(--ff-color-primary)}@supports (color:color-mix(in lab, red, red)){.ff\:focus\:ring-primary\/20:focus{--tw-ring-color:color-mix(in oklab,var(--ff-color-primary)20%,transparent)}}.ff\:focus\:placeholder\:opacity-100:focus::placeholder{opacity:1}.ff\:focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:focus-visible\:ring-border:focus-visible{--tw-ring-color:var(--ff-color-border)}.ff\:focus-visible\:ring-danger:focus-visible{--tw-ring-color:var(--ff-color-danger)}.ff\:focus-visible\:ring-primary:focus-visible{--tw-ring-color:var(--ff-color-primary)}.ff\:focus-visible\:ring-secondary:focus-visible{--tw-ring-color:var(--ff-color-secondary)}.ff\:focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.ff\:active\:translate-x-0:active{--tw-translate-x:calc(var(--ff-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:active\:translate-x-0\.5:active{--tw-translate-x:calc(var(--ff-spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:active\:translate-y-0:active{--tw-translate-y:calc(var(--ff-spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:active\:translate-y-0\.5:active{--tw-translate-y:calc(var(--ff-spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.ff\:active\:shadow-\[2px_2px_0_var\(--ff-color-foreground\)\]:active{--tw-shadow:2px 2px 0 var(--tw-shadow-color,var(--ff-color-foreground));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:active\:shadow-\[inset_0_2px_4px_rgba\(0\,0\,0\,0\.1\)\]:active{--tw-shadow:inset 0 2px 4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:active\:shadow-none:active{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ff\:disabled\:pointer-events-none:disabled{pointer-events:none}.ff\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.ff\:disabled\:opacity-35:disabled{opacity:.35}.ff\:disabled\:opacity-50:disabled{opacity:.5}.ff\:\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.ff\:\[\&\>\*\]\:min-h-0>*{min-height:calc(var(--ff-spacing)*0)}.ff\:\[\&\>\*\]\:flex-1>*{flex:1}.fanfare-text-balance{text-wrap:balance}.fanfare-text-pretty{text-wrap:pretty}}[data-fanfare-variant=default]{--ff-variant:"default"}[data-fanfare-variant=retro]{--ff-variant:"retro";--ff-color-background:#f4f1ea;--ff-color-foreground:#000;--ff-color-muted:#444;--ff-color-muted-foreground:#444;--ff-color-border:#000;--ff-font-sans:"Inconsolata","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--ff-font-heading:"Inconsolata","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--ff-font-mono:"Inconsolata","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}[data-fanfare-variant=rounded]{--ff-variant:"rounded"}[data-fanfare-variant=clean]{--ff-variant:"clean";--ff-color-background:#fff;--ff-color-foreground:#0a0a0a;--ff-color-muted:#737373;--ff-color-muted-foreground:#737373;--ff-color-border:#e8e8e8;--ff-font-sans:"Figtree",system-ui,sans-serif;--ff-font-heading:"Figtree",system-ui,sans-serif;--ff-font-mono:"Inconsolata","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes slide-in{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-.5rem)}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes celebration-bounce{0%,to{transform:scale(1)}25%{transform:scale(1.2)}50%{transform:scale(.95)}75%{transform:scale(1.1)}}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-4px)}20%,40%,60%,80%{transform:translate(4px)}}@keyframes pulse-success{0%{box-shadow:0 0 0 0 var(--ff-color-success,#22c55e)}70%{box-shadow:0 0 0 10px #0000}to{box-shadow:0 0 #0000}}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-slide{0%{background-position:-100% 0}to{background-position:200% 0}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fanfare-io/fanfare-sdk-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "React adapter for Fanfare SDK",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org",
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"nanostores": "^1.1.0",
|
|
44
44
|
"tailwind-merge": "^2.6.0",
|
|
45
45
|
"valibot": "^1.1.0",
|
|
46
|
-
"@fanfare-io/fanfare-sdk-core": "0.
|
|
47
|
-
"@fanfare-io/fanfare-sdk-i18n": "0.
|
|
46
|
+
"@fanfare-io/fanfare-sdk-core": "0.12.0",
|
|
47
|
+
"@fanfare-io/fanfare-sdk-i18n": "0.12.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@iconify-json/heroicons": "^1.2.3",
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
"@storybook/addon-themes": "^10.4.0",
|
|
59
59
|
"@storybook/addon-vitest": "~10.2.16",
|
|
60
60
|
"@storybook/react-vite": "^10.4.0",
|
|
61
|
+
"@stripe/stripe-js": "^7.3.1",
|
|
61
62
|
"@tailwindcss/cli": "^4.1.16",
|
|
62
63
|
"@tailwindcss/vite": "^4.1.3",
|
|
63
64
|
"@testing-library/jest-dom": "^6.6.4",
|
|
@@ -67,11 +68,12 @@
|
|
|
67
68
|
"@types/react": "^18.0.0",
|
|
68
69
|
"@types/react-dom": "^18.0.0",
|
|
69
70
|
"@vitejs/plugin-react": "^5.0.2",
|
|
70
|
-
"@vitest/browser": "^
|
|
71
|
-
"@vitest/
|
|
71
|
+
"@vitest/browser": "^4.1.10",
|
|
72
|
+
"@vitest/browser-playwright": "^4.1.10",
|
|
73
|
+
"@vitest/ui": "^4.1.10",
|
|
72
74
|
"jsdom": "^26.1.0",
|
|
73
75
|
"motion": "^12.23.12",
|
|
74
|
-
"playwright": "
|
|
76
|
+
"playwright": "1.58.2",
|
|
75
77
|
"prettier": "^3.5.3",
|
|
76
78
|
"prettier-plugin-organize-imports": "^4.1.0",
|
|
77
79
|
"react": "^18.0.0",
|
|
@@ -83,13 +85,14 @@
|
|
|
83
85
|
"tailwindcss": "^4.1.3",
|
|
84
86
|
"tailwindcss-animate": "^1.0.7",
|
|
85
87
|
"typescript": "^5.9.2",
|
|
88
|
+
"typescript-native": "npm:typescript@^7.0.2",
|
|
86
89
|
"unplugin-icons": "^22.1.0",
|
|
87
90
|
"vite": "^7.3.5",
|
|
88
91
|
"vite-plugin-dts": "^4.5.4",
|
|
89
92
|
"vite-tsconfig-paths": "^5.1.4",
|
|
90
|
-
"vitest": "^
|
|
91
|
-
"@fanfare-io/fanfare-sdk-core": "0.
|
|
92
|
-
"@fanfare-io/fanfare-sdk-solid": "0.
|
|
93
|
+
"vitest": "^4.1.10",
|
|
94
|
+
"@fanfare-io/fanfare-sdk-core": "0.12.0",
|
|
95
|
+
"@fanfare-io/fanfare-sdk-solid": "0.12.0"
|
|
93
96
|
},
|
|
94
97
|
"sideEffects": [
|
|
95
98
|
"**/*.css"
|
|
@@ -107,7 +110,7 @@
|
|
|
107
110
|
{
|
|
108
111
|
"name": "React adapter",
|
|
109
112
|
"path": "dist/index.js",
|
|
110
|
-
"limit": "
|
|
113
|
+
"limit": "56 KB",
|
|
111
114
|
"ignore": [
|
|
112
115
|
"react",
|
|
113
116
|
"react-dom",
|
|
@@ -134,11 +137,12 @@
|
|
|
134
137
|
"lint:fix": "oxlint --fix src",
|
|
135
138
|
"size": "size-limit",
|
|
136
139
|
"storybook": "storybook dev -p 6006 --no-open",
|
|
137
|
-
"test": "vitest run --project unit",
|
|
140
|
+
"test": "vitest run --project unit --project components",
|
|
138
141
|
"test:browser": "vitest run --project storybook",
|
|
139
|
-
"test:watch": "vitest --project unit",
|
|
140
|
-
"test:unit": "vitest run --project unit --passWithNoTests",
|
|
141
|
-
"test:
|
|
142
|
-
"
|
|
142
|
+
"test:watch": "vitest --project unit --project components",
|
|
143
|
+
"test:unit": "vitest run --project unit --project ssr --passWithNoTests",
|
|
144
|
+
"test:ssr": "vitest run --project ssr --passWithNoTests",
|
|
145
|
+
"test:component": "vitest run --project components --passWithNoTests",
|
|
146
|
+
"typecheck": "./node_modules/typescript-native/bin/tsc --noEmit"
|
|
143
147
|
}
|
|
144
148
|
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DrawActions Component
|
|
3
|
-
*
|
|
4
|
-
* Action buttons for draw operations (enter, withdraw, share).
|
|
5
|
-
*/
|
|
6
|
-
export type DrawStatus = "open" | "entered" | "drawing" | "won" | "lost" | "ended";
|
|
7
|
-
export interface DrawActionsProps {
|
|
8
|
-
/** Current draw status */
|
|
9
|
-
status: DrawStatus;
|
|
10
|
-
/** Enter draw handler */
|
|
11
|
-
onEnter?: () => void;
|
|
12
|
-
/** Withdraw entry handler */
|
|
13
|
-
onWithdraw?: () => void;
|
|
14
|
-
/** Share entry handler */
|
|
15
|
-
onShare?: () => void;
|
|
16
|
-
/** Proceed to checkout handler (for won status) */
|
|
17
|
-
onProceed?: () => void;
|
|
18
|
-
/** Whether enter is in progress */
|
|
19
|
-
isEntering?: boolean;
|
|
20
|
-
/** Whether withdraw is in progress */
|
|
21
|
-
isWithdrawing?: boolean;
|
|
22
|
-
/** Enter button label */
|
|
23
|
-
enterLabel?: string;
|
|
24
|
-
/** Withdraw button label */
|
|
25
|
-
withdrawLabel?: string;
|
|
26
|
-
/** Share button label */
|
|
27
|
-
shareLabel?: string;
|
|
28
|
-
/** Proceed button label */
|
|
29
|
-
proceedLabel?: string;
|
|
30
|
-
/** Show share button */
|
|
31
|
-
showShare?: boolean;
|
|
32
|
-
/** Layout direction */
|
|
33
|
-
layout?: "horizontal" | "vertical";
|
|
34
|
-
/** Additional class name */
|
|
35
|
-
className?: string;
|
|
36
|
-
}
|
|
37
|
-
export declare function DrawActions({ status, onEnter, onWithdraw, onShare, onProceed, isEntering, isWithdrawing, enterLabel, withdrawLabel, shareLabel, proceedLabel, showShare, layout, className, }: DrawActionsProps): import("react/jsx-runtime").JSX.Element;
|
|
38
|
-
export declare namespace DrawActions {
|
|
39
|
-
var displayName: string;
|
|
40
|
-
}
|