@fanfare-io/fanfare-sdk-react 0.2.0 → 0.4.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.
@@ -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-2{margin-top:calc(var(--ff-spacing)*2)}.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>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--ff-spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--ff-spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}: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-3{padding:calc(var(--ff-spacing)*3)}.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\:pl-7{padding-left:calc(var(--ff-spacing)*7)}.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\: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}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fanfare-io/fanfare-sdk-react",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "React adapter for Fanfare SDK",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org",
@@ -17,7 +17,6 @@
17
17
  "type": "module",
18
18
  "files": [
19
19
  "dist/",
20
- "docs/",
21
20
  "README.md"
22
21
  ],
23
22
  "module": "./dist/index.js",
@@ -44,8 +43,8 @@
44
43
  "nanostores": "^1.1.0",
45
44
  "tailwind-merge": "^2.6.0",
46
45
  "valibot": "^1.1.0",
47
- "@fanfare-io/fanfare-sdk-core": "0.2.0",
48
- "@fanfare-io/fanfare-sdk-i18n": "0.2.0"
46
+ "@fanfare-io/fanfare-sdk-core": "0.4.0",
47
+ "@fanfare-io/fanfare-sdk-i18n": "0.4.0"
49
48
  },
50
49
  "devDependencies": {
51
50
  "@iconify-json/heroicons": "^1.2.3",
@@ -89,8 +88,8 @@
89
88
  "vite-plugin-dts": "^4.5.4",
90
89
  "vite-tsconfig-paths": "^5.1.4",
91
90
  "vitest": "^3.2.4",
92
- "@fanfare-io/fanfare-sdk-core": "0.2.0",
93
- "@fanfare-io/fanfare-sdk-solid": "0.2.0"
91
+ "@fanfare-io/fanfare-sdk-core": "0.4.0",
92
+ "@fanfare-io/fanfare-sdk-solid": "0.4.0"
94
93
  },
95
94
  "sideEffects": [
96
95
  "**/*.css"
@@ -1,38 +0,0 @@
1
- /**
2
- * AuctionActions Component
3
- *
4
- * Bid form and action buttons for auction operations.
5
- */
6
- export type AuctionStatus = "open" | "bidding" | "winning" | "outbid" | "won" | "lost" | "ended";
7
- export interface AuctionActionsProps {
8
- /** Current auction status */
9
- status: AuctionStatus;
10
- /** Current highest bid */
11
- currentBid: number;
12
- /** Minimum next bid */
13
- minNextBid: number;
14
- /** Bid increment */
15
- bidIncrement: number;
16
- /** Place bid handler */
17
- onBid?: (amount: number) => void;
18
- /** Proceed to checkout handler (for won status) */
19
- onProceed?: () => void;
20
- /** Whether bid is in progress */
21
- isBidding?: boolean;
22
- /** Bid button label */
23
- bidLabel?: string;
24
- /** Proceed button label */
25
- proceedLabel?: string;
26
- /** Currency code (ISO 4217). */
27
- currencyCode?: string;
28
- /** Locale used for formatting */
29
- locale?: string;
30
- /** Show quick bid buttons */
31
- showQuickBids?: boolean;
32
- /** Additional class name */
33
- className?: string;
34
- }
35
- export declare function AuctionActions({ status, currentBid, minNextBid, bidIncrement, onBid, onProceed, isBidding, bidLabel, proceedLabel, currencyCode, locale, showQuickBids, className, }: AuctionActionsProps): import("react/jsx-runtime").JSX.Element;
36
- export declare namespace AuctionActions {
37
- var displayName: string;
38
- }
@@ -1,35 +0,0 @@
1
- /**
2
- * AuctionBidDisplay Component
3
- *
4
- * Displays the current bid amount and auction status.
5
- */
6
- export interface AuctionBidDisplayProps {
7
- /** Current highest bid */
8
- currentBid: number;
9
- /** User's bid (if any) */
10
- myBid?: number | null;
11
- /** Minimum next bid */
12
- minNextBid: number;
13
- /** Bid increment */
14
- bidIncrement: number;
15
- /** Reserve price */
16
- reservePrice?: number;
17
- /** Whether reserve is met */
18
- reserveMet?: boolean;
19
- /** Total number of bids */
20
- bidCount?: number;
21
- /** Whether the user is winning */
22
- isWinning?: boolean;
23
- /** Currency code (ISO 4217). */
24
- currencyCode?: string;
25
- /** Locale used for formatting */
26
- locale?: string;
27
- /** Visual size */
28
- size?: "sm" | "md" | "lg";
29
- /** Additional class name */
30
- className?: string;
31
- }
32
- export declare function AuctionBidDisplay({ currentBid, myBid, minNextBid, bidIncrement, reservePrice, reserveMet, bidCount, isWinning, currencyCode, locale, size, className, }: AuctionBidDisplayProps): import("react/jsx-runtime").JSX.Element;
33
- export declare namespace AuctionBidDisplay {
34
- var displayName: string;
35
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Auction Widget Internal Components
3
- *
4
- * Building blocks for the AuctionWidget.
5
- */
6
- export { AuctionActions, type AuctionActionsProps, type AuctionStatus } from './auction-actions';
7
- export { AuctionBidDisplay, type AuctionBidDisplayProps } from './auction-bid-display';
@@ -1,40 +0,0 @@
1
- /**
2
- * WaitlistActions Component
3
- *
4
- * Action buttons for waitlist operations (enter, leave, share).
5
- */
6
- export type WaitlistStatus = "available" | "entered" | "opening" | "opened";
7
- export interface WaitlistActionsProps {
8
- /** Current waitlist status */
9
- status: WaitlistStatus;
10
- /** Enter waitlist handler */
11
- onEnter?: () => void;
12
- /** Leave waitlist handler */
13
- onLeave?: () => void;
14
- /** Share position handler */
15
- onShare?: () => void;
16
- /** Proceed handler (when opened) */
17
- onProceed?: () => void;
18
- /** Whether enter is in progress */
19
- isEntering?: boolean;
20
- /** Whether leave is in progress */
21
- isLeaving?: boolean;
22
- /** Enter button label */
23
- enterLabel?: string;
24
- /** Leave button label */
25
- leaveLabel?: 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 WaitlistActions({ status, onEnter, onLeave, onShare, onProceed, isEntering, isLeaving, enterLabel, leaveLabel, shareLabel, proceedLabel, showShare, layout, className, }: WaitlistActionsProps): import("react/jsx-runtime").JSX.Element;
38
- export declare namespace WaitlistActions {
39
- var displayName: string;
40
- }
package/docs/SLOTS.md DELETED
@@ -1,89 +0,0 @@
1
- # ExperienceWidget Slots
2
-
3
- `ExperienceWidget` slots are render props for targeted UI overrides. Each slot is called only when the matching journey or sequence state is active; all other states keep the default Fanfare UI.
4
-
5
- The slot surface is derived from the same model as `JourneyView`: `journeyStage` -> `sequence.phase` -> `sequence.mechanism`. Actions are not serialized as a separate source of truth, and the server stays authoritative over what is permitted.
6
-
7
- Use `children` or `useExperienceJourney` when you need to replace the full widget. Use `slots` when the default flow is correct and a specific state needs custom UI.
8
-
9
- ## Shared Props
10
-
11
- Every slot receives:
12
-
13
- - `snapshot`: the current `JourneySnapshot | null`.
14
- - `view`: the current `JourneyView | null`.
15
- - `error`: the current widget error string, or `null`.
16
-
17
- ## Journey Slots
18
-
19
- | Slot | Meaningful state | Extra props |
20
- | ------------ | ------------------------------------------------------------- | --------------------------------------------------------- |
21
- | `start` | `journeyStage: "ready"` | `onStart`, `isStarting` |
22
- | `loading` | `journeyStage: "routing"`, gated loading, or fallback loading | `message?` |
23
- | `auth` | `journeyStage: "gated"` with an auth gate | `onSubmit`, `onVerify`, `onSkip?` |
24
- | `accessCode` | `journeyStage: "gated"` with an access-code gate | `onSubmit`, `onSkip?` |
25
- | `challenge` | `journeyStage: "gated"` with a bot-check gate | `challenge`, `botMitigation?`, `onVerifyToken`, `onRetry` |
26
- | `error` | Widget action or loading error | `error`, `onRetry` |
27
-
28
- ## Routed Sequence Slots
29
-
30
- | Slot | Meaningful state | Mechanisms | Extra props |
31
- | --------------- | ----------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------ |
32
- | `upcoming` | `phase: "scheduled"` | `queue`, `draw`, `auction`, `timed_release`, `appointment` | `startsAt?`, `canEnter`, `onEnter`, `isEntering` |
33
- | `upcoming` | `phase: "enterable"` | `waitlist` | `startsAt?`, `canEnter`, `onEnter`, `isEntering` |
34
- | `waitlist` | `phase: "participating"` | `waitlist` | `startsAt?`, `onLeave`, `isLeaving` |
35
- | `enterable` | `phase: "enterable"` | `queue`, `draw`, `auction`, `timed_release`, `appointment` | `sequence`, `participationType` |
36
- | `participating` | `phase: "participating"` | `queue`, `draw`, `auction`, `timed_release`, `appointment` | `sequence`, `participationType`, `position?` |
37
- | `granted` | `phase: "granted"` | `queue`, `draw`, `auction`, `timed_release` | `sequence`, `grant?`, `expiresAt?` |
38
- | `expired` | `phase: "ended"` with `outcome.type: "expired"` | any ended mechanism | `reason`, `endedAt?` |
39
- | `ended` | `phase: "unavailable"` or `phase: "ended"` | any ended mechanism | `reason`, `endedAt?` |
40
-
41
- There is no slot for `phase: "settling"`; `draw` and `auction` render their default settling modules. There is no `granted` state for `appointment` or `waitlist`. The `ended` slot also renders `phase: "unavailable"` for convenience; `unavailable` is not a terminal phase.
42
-
43
- ## `slots.enterable`
44
-
45
- `slots.enterable` receives the typed `sequence` view. Call the method exposed for that exact `phase` and `mechanism`.
46
-
47
- ```tsx
48
- <ExperienceWidget
49
- experienceId="exp_123"
50
- slots={{
51
- enterable: ({ sequence, participationType }) => {
52
- if (sequence.mechanism === "auction") {
53
- return <button onClick={() => void sequence.bid("125.00")}>Bid</button>;
54
- }
55
- if (sequence.mechanism === "appointment") {
56
- return <button onClick={() => void sequence.book("slot_123")}>Book</button>;
57
- }
58
- return <button onClick={() => void sequence.enter()}>Enter {participationType}</button>;
59
- },
60
- }}
61
- />
62
- ```
63
-
64
- `participationType` is the slot prop carrying `sequence.mechanism` for the five non-waitlist mechanisms: `queue`, `draw`, `auction`, `timed_release`, or `appointment`. See the Mechanisms section of the core SDK `JOURNEY_MODEL.md`.
65
-
66
- ## `slots.participating`
67
-
68
- `slots.participating` receives the typed `sequence` view for `queue`, `draw`, `auction`, `timed_release`, and `appointment`.
69
-
70
- - `queue`, `draw`: `state$`, `leave()`.
71
- - `auction`: `state$`, `bid(amount)`, `leave()`.
72
- - `timed_release`: `state$`, `leave()`, `complete()`.
73
- - `appointment`: `state$`, `cancel(reason?)`, `reschedule(newSlotId, newLocationId?)`.
74
-
75
- `position` is populated when queue display state includes a queue position.
76
-
77
- ## Default Rendering
78
-
79
- Without a slot:
80
-
81
- - `ready` uses `StartView`.
82
- - `routing` and loading fallbacks use `LoadingView`.
83
- - `gated` uses `JourneyGate` or `ChallengeGate`.
84
- - `scheduled` and enterable `waitlist` use `UpcomingModule`.
85
- - participating `waitlist` uses `WaitlistView`.
86
- - `queue`, `draw`, `auction`, `timed_release`, and `appointment` use their default modules for supported phases.
87
- - `granted` uses the distribution module's granted panel.
88
- - `ended` uses the distribution module's outcome UI for `queue`, `draw`, `auction`, `timed_release`, and `appointment`; `unavailable` uses `EndedModule`.
89
- - ended `waitlist` can be handled with `slots.ended` or full custom rendering.
package/docs/STYLING.md DELETED
@@ -1,61 +0,0 @@
1
- # Styling Reference
2
-
3
- `@fanfare-io/fanfare-sdk-react` ships dressed components — `ExperienceWidget`, the
4
- sequence modules, and slot helpers — that read from a single theme context.
5
- Most customers should rely on the defaults, then override at four levels of
6
- increasing specificity:
7
-
8
- 1. `theme` for brand colors, typography, and imagery
9
- 2. `variant` for packaged presentation styles
10
- 3. `slots` for swapping specific journey or sequence states
11
- 4. `children` or `useExperienceJourney` for full custom rendering
12
-
13
- The rendered surface follows the SDK model: `journeyStage`, then
14
- `sequence.phase`, then `sequence.mechanism`. Styling changes presentation only;
15
- the server stays authoritative over which actions are permitted.
16
-
17
- ## Theme
18
-
19
- Pass a `BrandTheme` to `ThemeProvider` or directly to `ExperienceWidget`.
20
-
21
- ```tsx
22
- <ThemeProvider theme={{ primary: "#0f766e", fontHeading: "Instrument Serif, serif" }}>
23
- <ExperienceWidget experienceId="exp_123" />
24
- </ThemeProvider>
25
- ```
26
-
27
- Per-widget overrides are shallow-merged over the current theme.
28
-
29
- ## Variant
30
-
31
- `ExperienceWidget` supports packaged variants:
32
-
33
- - `default`
34
- - `retro`
35
- - `rounded`
36
- - `clean`
37
-
38
- Use variants for presentation differences, not for business logic.
39
-
40
- ## Slots
41
-
42
- Replace specific sections with slots — the slot's render prop is called when
43
- that state is active. All other states keep their default rendering.
44
-
45
- ```tsx
46
- <ExperienceWidget
47
- experienceId="exp_123"
48
- slots={{
49
- upcoming: ({ startsAt, onEnter }) => <YourUpcomingCard startsAt={startsAt} onCta={onEnter} />,
50
- }}
51
- />
52
- ```
53
-
54
- See [`docs/SLOTS.md`](./SLOTS.md) for the full slot inventory.
55
-
56
- ## Custom rendering
57
-
58
- For full control, pass `children` to `ExperienceWidget` (a render prop
59
- receiving `{ journey, view, snapshot, error, start, isStarting }`) or assemble
60
- your own UI from `useExperienceJourney`. This is the lowest-level integration
61
- and bypasses slots entirely.