@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.
Files changed (34) hide show
  1. package/dist/clock-context.d.ts +23 -0
  2. package/dist/components/checkout/checkout-processing-panel.d.ts +10 -0
  3. package/dist/components/checkout/index.d.ts +4 -0
  4. package/dist/components/checkout/payment-collection-panel.d.ts +18 -0
  5. package/dist/components/checkout/receipt-panel.d.ts +10 -0
  6. package/dist/components/checkout/reservation-checkout-panel.d.ts +18 -0
  7. package/dist/components/checkout/stripe-card-field.d.ts +29 -0
  8. package/dist/components/checkout/stripe-client.d.ts +71 -0
  9. package/dist/components/checkout/use-payment-challenge.d.ts +32 -0
  10. package/dist/components/checkout/use-payment-method-selection.d.ts +8 -0
  11. package/dist/components/module/index.d.ts +1 -1
  12. package/dist/components/module/outcome-reason.d.ts +10 -1
  13. package/dist/components/widgets/experience-widget.d.ts +78 -2
  14. package/dist/components/widgets/internal/upcoming-module.d.ts +1 -1
  15. package/dist/components/widgets/internal/waitlist-view.d.ts +1 -0
  16. package/dist/hooks/use-auth.d.ts +1 -0
  17. package/dist/hooks/use-beacon-tracker.d.ts +21 -0
  18. package/dist/hooks/use-fanfare-dom-bridge.d.ts +57 -0
  19. package/dist/hooks/use-gate-open.d.ts +3 -0
  20. package/dist/hooks/use-sdk-event.d.ts +20 -0
  21. package/dist/index-Ce5dVdo3.js +6053 -0
  22. package/dist/index.d.ts +5 -1
  23. package/dist/index.js +59 -5051
  24. package/dist/lib/currency.d.ts +10 -0
  25. package/dist/provider.d.ts +25 -1
  26. package/dist/stripe-card-field-D1b4Y7LK.js +170 -0
  27. package/dist/styles/base.css +1 -1
  28. package/package.json +19 -15
  29. package/dist/components/widgets/draw/draw-actions.d.ts +0 -40
  30. package/dist/components/widgets/draw/index.d.ts +0 -6
  31. package/dist/components/widgets/queue/index.d.ts +0 -6
  32. package/dist/components/widgets/queue/queue-actions.d.ts +0 -36
  33. package/dist/components/widgets/timed-release/index.d.ts +0 -6
  34. package/dist/components/widgets/timed-release/timed-release-actions.d.ts +0 -38
@@ -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;
@@ -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
+ };
@@ -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.10.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.10.0",
47
- "@fanfare-io/fanfare-sdk-i18n": "0.10.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": "^3.2.4",
71
- "@vitest/ui": "^3.2.4",
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": "^1.51.1",
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": "^3.2.4",
91
- "@fanfare-io/fanfare-sdk-core": "0.10.0",
92
- "@fanfare-io/fanfare-sdk-solid": "0.10.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": "50 KB",
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:component": "vitest run .test.tsx --passWithNoTests",
142
- "typecheck": "tsc --noEmit"
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
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Draw Widget Internal Components
3
- *
4
- * Building blocks for the DrawWidget.
5
- */
6
- export { DrawActions, type DrawActionsProps, type DrawStatus } from './draw-actions';
@@ -1,6 +0,0 @@
1
- /**
2
- * Queue Widget Internal Components
3
- *
4
- * Building blocks for the QueueWidget.
5
- */
6
- export { QueueActions, type QueueActionsProps, type QueueStatus } from './queue-actions';