@snapcall/stream-ui 1.41.3-beta.1 → 1.41.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/stream-ui.esm.js +1515 -18
- package/dist/stream-ui.js +1513 -16
- package/dist/types.d.ts +193 -1
- package/package.json +3 -3
package/dist/stream-ui.esm.js
CHANGED
|
@@ -3,11 +3,11 @@ import {createRoot as $3Sbms$createRoot} from "react-dom/client";
|
|
|
3
3
|
import {QueryClient as $3Sbms$QueryClient, QueryClientProvider as $3Sbms$QueryClientProvider, useQueryClient as $3Sbms$useQueryClient, useQuery as $3Sbms$useQuery, useMutation as $3Sbms$useMutation, queryOptions as $3Sbms$queryOptions} from "@tanstack/react-query";
|
|
4
4
|
import {I18nextProvider as $3Sbms$I18nextProvider, initReactI18next as $3Sbms$initReactI18next, useTranslation as $3Sbms$useTranslation, Trans as $3Sbms$Trans} from "react-i18next";
|
|
5
5
|
import {createInstance as $3Sbms$createInstance} from "i18next";
|
|
6
|
-
import {toast as $3Sbms$toast, useToast as $3Sbms$useToast, useDialogState as $3Sbms$useDialogState, ToastAction as $3Sbms$ToastAction, TooltipProvider as $3Sbms$TooltipProvider, Toaster as $3Sbms$Toaster, DropdownMenu as $3Sbms$DropdownMenu, DropdownMenuTrigger as $3Sbms$DropdownMenuTrigger, Button as $3Sbms$Button, DropdownMenuPortal as $3Sbms$DropdownMenuPortal, DropdownMenuContent as $3Sbms$DropdownMenuContent, DropdownMenuItem as $3Sbms$DropdownMenuItem, Tooltip as $3Sbms$Tooltip, TooltipTrigger as $3Sbms$TooltipTrigger, TooltipContent as $3Sbms$TooltipContent, Select as $3Sbms$Select, SelectTrigger as $3Sbms$SelectTrigger, SelectValue as $3Sbms$SelectValue, SelectContent as $3Sbms$SelectContent, SelectGroup as $3Sbms$SelectGroup, SelectItem as $3Sbms$SelectItem, Dialog as $3Sbms$Dialog, DialogContent as $3Sbms$DialogContent, DialogHeader as $3Sbms$DialogHeader, DialogTitle as $3Sbms$DialogTitle, Tabs as $3Sbms$Tabs, TabsList as $3Sbms$TabsList, TabsTrigger as $3Sbms$TabsTrigger, TabsContent as $3Sbms$TabsContent, Separator as $3Sbms$Separator, Input as $3Sbms$Input, CreatableSelect as $3Sbms$CreatableSelect, Textarea as $3Sbms$Textarea, DialogDescription as $3Sbms$DialogDescription, DialogFooter as $3Sbms$DialogFooter, AlertDialog as $3Sbms$AlertDialog, Sheet as $3Sbms$Sheet, DialogTrigger as $3Sbms$DialogTrigger, AlertDialogTrigger as $3Sbms$AlertDialogTrigger, SheetTrigger as $3Sbms$SheetTrigger, AlertDialogHeader as $3Sbms$AlertDialogHeader, SheetHeader as $3Sbms$SheetHeader, SheetClose as $3Sbms$SheetClose, AlertDialogContent as $3Sbms$AlertDialogContent, SheetContent as $3Sbms$SheetContent, AlertDialogTitle as $3Sbms$AlertDialogTitle, SheetTitle as $3Sbms$SheetTitle, AlertDialogDescription as $3Sbms$AlertDialogDescription, SheetDescription as $3Sbms$SheetDescription, Avatar as $3Sbms$Avatar, AlertDialogFooter as $3Sbms$AlertDialogFooter, AlertDialogCancel as $3Sbms$AlertDialogCancel, AlertDialogAction as $3Sbms$AlertDialogAction, DropdownMenuSeparator as $3Sbms$DropdownMenuSeparator, MediaCard as $3Sbms$MediaCard, Skeleton as $3Sbms$Skeleton} from "@snapcall/design-system";
|
|
6
|
+
import {toast as $3Sbms$toast, useToast as $3Sbms$useToast, useDialogState as $3Sbms$useDialogState, ToastAction as $3Sbms$ToastAction, TooltipProvider as $3Sbms$TooltipProvider, Toaster as $3Sbms$Toaster, DropdownMenu as $3Sbms$DropdownMenu, DropdownMenuTrigger as $3Sbms$DropdownMenuTrigger, Button as $3Sbms$Button, DropdownMenuPortal as $3Sbms$DropdownMenuPortal, DropdownMenuContent as $3Sbms$DropdownMenuContent, DropdownMenuItem as $3Sbms$DropdownMenuItem, Tooltip as $3Sbms$Tooltip, TooltipTrigger as $3Sbms$TooltipTrigger, TooltipContent as $3Sbms$TooltipContent, Select as $3Sbms$Select, SelectTrigger as $3Sbms$SelectTrigger, SelectValue as $3Sbms$SelectValue, SelectContent as $3Sbms$SelectContent, SelectGroup as $3Sbms$SelectGroup, SelectItem as $3Sbms$SelectItem, Dialog as $3Sbms$Dialog, DialogContent as $3Sbms$DialogContent, DialogHeader as $3Sbms$DialogHeader, DialogTitle as $3Sbms$DialogTitle, Tabs as $3Sbms$Tabs, TabsList as $3Sbms$TabsList, TabsTrigger as $3Sbms$TabsTrigger, TabsContent as $3Sbms$TabsContent, Separator as $3Sbms$Separator, Input as $3Sbms$Input, CreatableSelect as $3Sbms$CreatableSelect, Textarea as $3Sbms$Textarea, DialogDescription as $3Sbms$DialogDescription, DialogFooter as $3Sbms$DialogFooter, AlertDialog as $3Sbms$AlertDialog, Sheet as $3Sbms$Sheet, DialogTrigger as $3Sbms$DialogTrigger, AlertDialogTrigger as $3Sbms$AlertDialogTrigger, SheetTrigger as $3Sbms$SheetTrigger, AlertDialogHeader as $3Sbms$AlertDialogHeader, SheetHeader as $3Sbms$SheetHeader, SheetClose as $3Sbms$SheetClose, AlertDialogContent as $3Sbms$AlertDialogContent, SheetContent as $3Sbms$SheetContent, AlertDialogTitle as $3Sbms$AlertDialogTitle, SheetTitle as $3Sbms$SheetTitle, AlertDialogDescription as $3Sbms$AlertDialogDescription, SheetDescription as $3Sbms$SheetDescription, Avatar as $3Sbms$Avatar, AlertDialogFooter as $3Sbms$AlertDialogFooter, AlertDialogCancel as $3Sbms$AlertDialogCancel, AlertDialogAction as $3Sbms$AlertDialogAction, DropdownMenuSeparator as $3Sbms$DropdownMenuSeparator, Popover as $3Sbms$Popover, PopoverTrigger as $3Sbms$PopoverTrigger, PopoverContent as $3Sbms$PopoverContent, PopoverArrow as $3Sbms$PopoverArrow, MediaCard as $3Sbms$MediaCard, Skeleton as $3Sbms$Skeleton} from "@snapcall/design-system";
|
|
7
7
|
import {useRef as $3Sbms$useRef, useState as $3Sbms$useState, useCallback as $3Sbms$useCallback, useEffect as $3Sbms$useEffect, useContext as $3Sbms$useContext, useMemo as $3Sbms$useMemo, cloneElement as $3Sbms$cloneElement, createContext as $3Sbms$createContext, useReducer as $3Sbms$useReducer, Fragment as $3Sbms$Fragment1, useLayoutEffect as $3Sbms$useLayoutEffect, forwardRef as $3Sbms$forwardRef} from "react";
|
|
8
8
|
import $3Sbms$classnames from "classnames";
|
|
9
9
|
import "inobounce";
|
|
10
|
-
import {RecordIcon as $3Sbms$RecordIcon, InfoCircleIcon as $3Sbms$InfoCircleIcon, Speedometer4Icon as $3Sbms$Speedometer4Icon, Copy7Icon as $3Sbms$Copy7Icon, LinkExternal1Icon as $3Sbms$LinkExternal1Icon, QrCode1Icon as $3Sbms$QrCode1Icon, UserPlus1Icon as $3Sbms$UserPlus1Icon, XCloseIcon as $3Sbms$XCloseIcon, Settings1Icon as $3Sbms$Settings1Icon, Menu1Icon as $3Sbms$Menu1Icon, PhoneCall1Icon as $3Sbms$PhoneCall1Icon, VideoRecorderIcon as $3Sbms$VideoRecorderIcon, Recording2Icon as $3Sbms$Recording2Icon, Monitor2Icon as $3Sbms$Monitor2Icon, Camera2Icon as $3Sbms$Camera2Icon, Copy5Icon as $3Sbms$Copy5Icon, CheckIcon as $3Sbms$CheckIcon, XCircleIcon as $3Sbms$XCircleIcon, Send3Icon as $3Sbms$Send3Icon, AlertTriangleIcon as $3Sbms$AlertTriangleIcon, CopyIcon as $3Sbms$CopyIcon, Link1Icon as $3Sbms$Link1Icon, VolumeMaxIcon as $3Sbms$VolumeMaxIcon, Settings3Icon as $3Sbms$Settings3Icon, UserSquareIcon as $3Sbms$UserSquareIcon, Recording3Icon as $3Sbms$Recording3Icon, ArrowLeftIcon as $3Sbms$ArrowLeftIcon, HelpCircleIcon as $3Sbms$HelpCircleIcon, SpinnerIcon as $3Sbms$SpinnerIcon, User1Icon as $3Sbms$User1Icon, Microphone1Icon as $3Sbms$Microphone1Icon, MicrophoneOff1Icon as $3Sbms$MicrophoneOff1Icon, VideoRecorderOffIcon as $3Sbms$VideoRecorderOffIcon, CameraPlusIcon as $3Sbms$CameraPlusIcon, CursorBoxIcon as $3Sbms$CursorBoxIcon, Minimize1Icon as $3Sbms$Minimize1Icon, Maximize1Icon as $3Sbms$Maximize1Icon, CheckCircleIcon as $3Sbms$CheckCircleIcon, Download1Icon as $3Sbms$Download1Icon, ScreensharingIcon as $3Sbms$ScreensharingIcon, RefreshCcw2Icon as $3Sbms$RefreshCcw2Icon, DotsVerticalIcon as $3Sbms$DotsVerticalIcon, YoutubeIcon as $3Sbms$YoutubeIcon, Upload3Icon as $3Sbms$Upload3Icon, LogIn2Icon as $3Sbms$LogIn2Icon, FlipBackwardIcon as $3Sbms$FlipBackwardIcon, ArrowUpRightIcon as $3Sbms$ArrowUpRightIcon, Star1Icon as $3Sbms$Star1Icon, ImageXIcon as $3Sbms$ImageXIcon, AnnotationInfoIcon as $3Sbms$AnnotationInfoIcon, Upload1Icon as $3Sbms$Upload1Icon, RefreshCw3Icon as $3Sbms$RefreshCw3Icon, Camera1Icon as $3Sbms$Camera1Icon, File2Icon as $3Sbms$File2Icon, PlayIcon as $3Sbms$PlayIcon, FileQuestion3Icon as $3Sbms$FileQuestion3Icon, QrCodeIcon as $3Sbms$QrCodeIcon, MarkerPin4Icon as $3Sbms$MarkerPin4Icon, Edit5Icon as $3Sbms$Edit5Icon, UserCircleIcon as $3Sbms$UserCircleIcon, PlusCircleIcon as $3Sbms$PlusCircleIcon, Trash3Icon as $3Sbms$Trash3Icon, TrashIcon as $3Sbms$TrashIcon} from "@snapcall/design-system/icons";
|
|
10
|
+
import {RecordIcon as $3Sbms$RecordIcon, InfoCircleIcon as $3Sbms$InfoCircleIcon, Speedometer4Icon as $3Sbms$Speedometer4Icon, Copy7Icon as $3Sbms$Copy7Icon, LinkExternal1Icon as $3Sbms$LinkExternal1Icon, QrCode1Icon as $3Sbms$QrCode1Icon, UserPlus1Icon as $3Sbms$UserPlus1Icon, XCloseIcon as $3Sbms$XCloseIcon, Settings1Icon as $3Sbms$Settings1Icon, Menu1Icon as $3Sbms$Menu1Icon, PhoneCall1Icon as $3Sbms$PhoneCall1Icon, VideoRecorderIcon as $3Sbms$VideoRecorderIcon, Recording2Icon as $3Sbms$Recording2Icon, Monitor2Icon as $3Sbms$Monitor2Icon, Camera2Icon as $3Sbms$Camera2Icon, Copy5Icon as $3Sbms$Copy5Icon, CheckIcon as $3Sbms$CheckIcon, XCircleIcon as $3Sbms$XCircleIcon, Send3Icon as $3Sbms$Send3Icon, AlertTriangleIcon as $3Sbms$AlertTriangleIcon, CopyIcon as $3Sbms$CopyIcon, Link1Icon as $3Sbms$Link1Icon, VolumeMaxIcon as $3Sbms$VolumeMaxIcon, Settings3Icon as $3Sbms$Settings3Icon, UserSquareIcon as $3Sbms$UserSquareIcon, Recording3Icon as $3Sbms$Recording3Icon, ArrowLeftIcon as $3Sbms$ArrowLeftIcon, HelpCircleIcon as $3Sbms$HelpCircleIcon, SpinnerIcon as $3Sbms$SpinnerIcon, User1Icon as $3Sbms$User1Icon, Microphone1Icon as $3Sbms$Microphone1Icon, MicrophoneOff1Icon as $3Sbms$MicrophoneOff1Icon, VideoRecorderOffIcon as $3Sbms$VideoRecorderOffIcon, CameraPlusIcon as $3Sbms$CameraPlusIcon, CursorBoxIcon as $3Sbms$CursorBoxIcon, Minimize1Icon as $3Sbms$Minimize1Icon, Maximize1Icon as $3Sbms$Maximize1Icon, CheckCircleIcon as $3Sbms$CheckCircleIcon, Download1Icon as $3Sbms$Download1Icon, ScreensharingIcon as $3Sbms$ScreensharingIcon, RefreshCcw2Icon as $3Sbms$RefreshCcw2Icon, DotsVerticalIcon as $3Sbms$DotsVerticalIcon, YoutubeIcon as $3Sbms$YoutubeIcon, Upload3Icon as $3Sbms$Upload3Icon, LogIn2Icon as $3Sbms$LogIn2Icon, FlipBackwardIcon as $3Sbms$FlipBackwardIcon, ArrowUpRightIcon as $3Sbms$ArrowUpRightIcon, Star1Icon as $3Sbms$Star1Icon, ImageXIcon as $3Sbms$ImageXIcon, AnnotationInfoIcon as $3Sbms$AnnotationInfoIcon, Upload1Icon as $3Sbms$Upload1Icon, DotsHorizontalIcon as $3Sbms$DotsHorizontalIcon, RefreshCw3Icon as $3Sbms$RefreshCw3Icon, Camera1Icon as $3Sbms$Camera1Icon, File2Icon as $3Sbms$File2Icon, PlayIcon as $3Sbms$PlayIcon, FileQuestion3Icon as $3Sbms$FileQuestion3Icon, QrCodeIcon as $3Sbms$QrCodeIcon, MarkerPin4Icon as $3Sbms$MarkerPin4Icon, Edit5Icon as $3Sbms$Edit5Icon, UserCircleIcon as $3Sbms$UserCircleIcon, PlusCircleIcon as $3Sbms$PlusCircleIcon, Trash3Icon as $3Sbms$Trash3Icon, TrashIcon as $3Sbms$TrashIcon} from "@snapcall/design-system/icons";
|
|
11
11
|
import $3Sbms$bowser from "bowser";
|
|
12
12
|
import {v4 as $3Sbms$v4} from "uuid";
|
|
13
13
|
import {WebSocketTransport as $3Sbms$WebSocketTransport, Peer as $3Sbms$Peer} from "protoo-client";
|
|
@@ -879,6 +879,1278 @@ const $7a4afee3d30fe755$export$c30017717ce2168e = async (apiUrl, token, asset)=>
|
|
|
879
879
|
};
|
|
880
880
|
|
|
881
881
|
|
|
882
|
+
|
|
883
|
+
const $031bfaf8b266d819$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('LiveAIAgent/Helper/image');
|
|
884
|
+
const $031bfaf8b266d819$export$1ee2bff0dde4713b = async (imageUrl, maxSize = 720)=>{
|
|
885
|
+
// log.info('scaleImage:', imageUrl);
|
|
886
|
+
return new Promise((resolve, reject)=>{
|
|
887
|
+
const img = new Image();
|
|
888
|
+
img.crossOrigin = 'anonymous';
|
|
889
|
+
img.onload = ()=>{
|
|
890
|
+
try {
|
|
891
|
+
const canvas = document.createElement('canvas');
|
|
892
|
+
const ctx = canvas.getContext('2d');
|
|
893
|
+
if (!ctx) {
|
|
894
|
+
reject(new Error('Could not get canvas context'));
|
|
895
|
+
return;
|
|
896
|
+
}
|
|
897
|
+
let width = img.width;
|
|
898
|
+
let height = img.height;
|
|
899
|
+
if (width > height) {
|
|
900
|
+
if (width > maxSize) {
|
|
901
|
+
height = height * (maxSize / width);
|
|
902
|
+
width = maxSize;
|
|
903
|
+
}
|
|
904
|
+
} else if (height > maxSize) {
|
|
905
|
+
width = width * (maxSize / height);
|
|
906
|
+
height = maxSize;
|
|
907
|
+
}
|
|
908
|
+
// log.debug('width:', width, 'height:', height);
|
|
909
|
+
canvas.width = width;
|
|
910
|
+
canvas.height = height;
|
|
911
|
+
ctx.drawImage(img, 0, 0, width, height);
|
|
912
|
+
let quality = 1;
|
|
913
|
+
let dataUrl = canvas.toDataURL('image/jpeg', 1);
|
|
914
|
+
let size = Math.round(dataUrl.length * 6 / 8);
|
|
915
|
+
while(size > 200000){
|
|
916
|
+
$031bfaf8b266d819$var$log.debug('closed size:', size, 'quality:', quality);
|
|
917
|
+
quality -= 0.1;
|
|
918
|
+
dataUrl = canvas.toDataURL('image/jpeg', quality);
|
|
919
|
+
size = Math.round(dataUrl.length * 6 / 8);
|
|
920
|
+
}
|
|
921
|
+
// log.debug('closed size:', Math.round((dataUrl.length * 6) / 8), 'quality:', quality);
|
|
922
|
+
// log.debug('dataUrl:', dataUrl);
|
|
923
|
+
resolve(dataUrl);
|
|
924
|
+
return;
|
|
925
|
+
// const base64 = dataUrl.split(',')[1];
|
|
926
|
+
// resolve(base64);
|
|
927
|
+
} catch (error) {
|
|
928
|
+
reject(error);
|
|
929
|
+
}
|
|
930
|
+
};
|
|
931
|
+
img.onerror = ()=>{
|
|
932
|
+
reject(new Error('Failed to load image'));
|
|
933
|
+
};
|
|
934
|
+
img.src = imageUrl;
|
|
935
|
+
});
|
|
936
|
+
};
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
const $8b98e8a5771f5886$export$83af83298e0405cb = async (tools, options, requestInput = false)=>{
|
|
941
|
+
const audio = {
|
|
942
|
+
output: {
|
|
943
|
+
voice: options.voice
|
|
944
|
+
}
|
|
945
|
+
};
|
|
946
|
+
if (requestInput) audio.input = {
|
|
947
|
+
transcription: {
|
|
948
|
+
model: 'gpt-4o-transcribe'
|
|
949
|
+
}
|
|
950
|
+
};
|
|
951
|
+
const sessionConfig = JSON.stringify({
|
|
952
|
+
instructions: `
|
|
953
|
+
${options.instructions}
|
|
954
|
+
`,
|
|
955
|
+
tools: tools.list(),
|
|
956
|
+
audio: audio
|
|
957
|
+
});
|
|
958
|
+
const response = await fetch(`${(0, $c9e496369b59be7a$export$2f377c2162fd02b2).config.apiUrl}/public/streams/${(0, $c9e496369b59be7a$export$2f377c2162fd02b2).roomId}/live-agent`, {
|
|
959
|
+
method: 'POST',
|
|
960
|
+
headers: {
|
|
961
|
+
'Content-Type': 'application/json'
|
|
962
|
+
},
|
|
963
|
+
body: sessionConfig
|
|
964
|
+
});
|
|
965
|
+
const data = await response.json();
|
|
966
|
+
return data;
|
|
967
|
+
};
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
const $b10694cdbe7436a4$export$7a6ec380c1221521 = ()=>{
|
|
972
|
+
return (0, $3Sbms$v4)().replace(/-/g, '');
|
|
973
|
+
};
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
|
|
977
|
+
|
|
978
|
+
|
|
979
|
+
class $9479f834268e4c06$export$46bbf1c329ce020 {
|
|
980
|
+
addContent(text) {
|
|
981
|
+
this.content.push({
|
|
982
|
+
type: 'input_text',
|
|
983
|
+
text: text
|
|
984
|
+
});
|
|
985
|
+
}
|
|
986
|
+
addMediaContent(type, state) {
|
|
987
|
+
this.content.push({
|
|
988
|
+
type: 'input_text',
|
|
989
|
+
text: `[DEVICE_EVENT] {"type":"${type}","status":"${state}"}`
|
|
990
|
+
});
|
|
991
|
+
}
|
|
992
|
+
addAppContent(type, text) {
|
|
993
|
+
this.content.push({
|
|
994
|
+
type: 'input_text',
|
|
995
|
+
text: `[APP_EVENT] {"type":"${type}","text":"${text}"}`
|
|
996
|
+
});
|
|
997
|
+
}
|
|
998
|
+
addInstructionContent(instruction) {
|
|
999
|
+
this.content.push({
|
|
1000
|
+
type: 'input_text',
|
|
1001
|
+
text: `[INSTRUCTION] ${instruction}`
|
|
1002
|
+
});
|
|
1003
|
+
}
|
|
1004
|
+
async addImageContent(url) {
|
|
1005
|
+
const scaledImage = await (0, $031bfaf8b266d819$export$1ee2bff0dde4713b)(url);
|
|
1006
|
+
this.content.push({
|
|
1007
|
+
type: 'input_image',
|
|
1008
|
+
image_url: scaledImage
|
|
1009
|
+
});
|
|
1010
|
+
}
|
|
1011
|
+
build() {
|
|
1012
|
+
return {
|
|
1013
|
+
event_id: this.id,
|
|
1014
|
+
type: 'conversation.item.create',
|
|
1015
|
+
item: {
|
|
1016
|
+
id: this.id,
|
|
1017
|
+
type: 'message',
|
|
1018
|
+
role: 'user',
|
|
1019
|
+
content: this.content
|
|
1020
|
+
}
|
|
1021
|
+
};
|
|
1022
|
+
}
|
|
1023
|
+
constructor(){
|
|
1024
|
+
this.id = (0, $3Sbms$v4)().replace(/-/g, '');
|
|
1025
|
+
this.status = 'pending';
|
|
1026
|
+
this.content = [];
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
|
|
1030
|
+
|
|
1031
|
+
|
|
1032
|
+
class $37c469f7c496a04a$export$3ed9ee166c6e6ed3 {
|
|
1033
|
+
constructor(response_id){
|
|
1034
|
+
this.id = (0, $b10694cdbe7436a4$export$7a6ec380c1221521)();
|
|
1035
|
+
this.type = 'response.cancel';
|
|
1036
|
+
this.response_id = response_id;
|
|
1037
|
+
}
|
|
1038
|
+
build() {
|
|
1039
|
+
return {
|
|
1040
|
+
event_id: this.id,
|
|
1041
|
+
type: this.type,
|
|
1042
|
+
response_id: this.response_id
|
|
1043
|
+
};
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
class $194b1221c75af877$export$a144ab69971f4316 {
|
|
1051
|
+
static{
|
|
1052
|
+
this.internalIdCounter = 0;
|
|
1053
|
+
}
|
|
1054
|
+
constructor(initiator){
|
|
1055
|
+
this.terminated = false;
|
|
1056
|
+
this.canceled = false;
|
|
1057
|
+
this.initiator = initiator;
|
|
1058
|
+
this.id = (0, $b10694cdbe7436a4$export$7a6ec380c1221521)();
|
|
1059
|
+
}
|
|
1060
|
+
setResponseId(response_id) {
|
|
1061
|
+
this.responseId = response_id;
|
|
1062
|
+
}
|
|
1063
|
+
setTerminated() {
|
|
1064
|
+
this.terminated = true;
|
|
1065
|
+
}
|
|
1066
|
+
cancel() {
|
|
1067
|
+
if (!this.responseId || this.canceled) return undefined;
|
|
1068
|
+
this.canceled = true;
|
|
1069
|
+
return new (0, $37c469f7c496a04a$export$3ed9ee166c6e6ed3)(this.responseId);
|
|
1070
|
+
}
|
|
1071
|
+
build() {
|
|
1072
|
+
return {
|
|
1073
|
+
type: 'response.create',
|
|
1074
|
+
event_id: this.id,
|
|
1075
|
+
response: {
|
|
1076
|
+
output_modalities: [
|
|
1077
|
+
'audio'
|
|
1078
|
+
],
|
|
1079
|
+
metadata: {
|
|
1080
|
+
initial_event_id: this.id
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
};
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
|
|
1088
|
+
|
|
1089
|
+
|
|
1090
|
+
|
|
1091
|
+
|
|
1092
|
+
|
|
1093
|
+
const $abcb1ebea6899c97$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('LiveAIAgent/PeerConnection');
|
|
1094
|
+
class $abcb1ebea6899c97$export$d84cf184fade0488 {
|
|
1095
|
+
async init({ track: track, onMessage: onMessage, onReady: onReady }) {
|
|
1096
|
+
this.pc = new RTCPeerConnection();
|
|
1097
|
+
this.pc.addTransceiver('audio', {
|
|
1098
|
+
direction: 'sendrecv'
|
|
1099
|
+
});
|
|
1100
|
+
this.onMessage = onMessage;
|
|
1101
|
+
this.pc.addEventListener('close', ()=>{
|
|
1102
|
+
$abcb1ebea6899c97$var$log.info('PeerConnection closed');
|
|
1103
|
+
});
|
|
1104
|
+
this.audioRenderer = new (0, $82e31ca38889c079$export$2e2bcd8739ae039)({
|
|
1105
|
+
consumerId: 'live-ai-agent'
|
|
1106
|
+
});
|
|
1107
|
+
this.audioRenderer.play();
|
|
1108
|
+
this.pc.ontrack = (e)=>{
|
|
1109
|
+
console.log('ontrack', e);
|
|
1110
|
+
this.audioRenderer?.setSource(e.streams[0]);
|
|
1111
|
+
};
|
|
1112
|
+
if (track) this.pc.addTrack(track);
|
|
1113
|
+
else this.pc.addTransceiver('audio', {
|
|
1114
|
+
direction: 'sendrecv'
|
|
1115
|
+
});
|
|
1116
|
+
this.setDataChannel(onReady);
|
|
1117
|
+
const offer = await this.pc.createOffer();
|
|
1118
|
+
await this.pc.setLocalDescription(offer);
|
|
1119
|
+
return offer.sdp;
|
|
1120
|
+
}
|
|
1121
|
+
setTrack(track) {
|
|
1122
|
+
this.pc?.getTransceivers().forEach((transceiver)=>{
|
|
1123
|
+
transceiver.sender.replaceTrack(track);
|
|
1124
|
+
$abcb1ebea6899c97$var$log.debug('replaceTrack', track, transceiver);
|
|
1125
|
+
});
|
|
1126
|
+
}
|
|
1127
|
+
setDataChannel(onOpen) {
|
|
1128
|
+
if (this.pc) {
|
|
1129
|
+
this.dc = this.pc.createDataChannel('oai-events');
|
|
1130
|
+
this.dc.onmessage = (e)=>{
|
|
1131
|
+
const data = JSON.parse(e.data);
|
|
1132
|
+
if (data.type !== 'response.output_audio_transcript.delta') this.history.push({
|
|
1133
|
+
direction: 'receive',
|
|
1134
|
+
message: JSON.stringify(data)
|
|
1135
|
+
});
|
|
1136
|
+
if (data.type === 'response.created') {
|
|
1137
|
+
console.log(this.responseQueue);
|
|
1138
|
+
const message = this.responseQueue[data.response.metadata.initial_event_id];
|
|
1139
|
+
if (message) {
|
|
1140
|
+
message.resolve(data);
|
|
1141
|
+
delete this.responseQueue[data.response.metadata.initial_event_id];
|
|
1142
|
+
} else $abcb1ebea6899c97$var$log.error('Response not found in queue:', data.response.metadata.initial_event_id);
|
|
1143
|
+
}
|
|
1144
|
+
if (data.type === 'conversation.item.done') {
|
|
1145
|
+
const item = data.item;
|
|
1146
|
+
if (item.type === 'function_call') return;
|
|
1147
|
+
const message = this.messageQueue[item.id];
|
|
1148
|
+
if (item.type === 'function_call_output') {
|
|
1149
|
+
console.log(this.toolOutputQueue);
|
|
1150
|
+
const toolOutput = this.toolOutputQueue[item?.call_id];
|
|
1151
|
+
if (toolOutput) {
|
|
1152
|
+
toolOutput.resolve(data);
|
|
1153
|
+
delete this.toolOutputQueue[item?.call_id];
|
|
1154
|
+
return;
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
if (message) {
|
|
1158
|
+
message.resolve(data);
|
|
1159
|
+
delete this.messageQueue[item.id];
|
|
1160
|
+
} else $abcb1ebea6899c97$var$log.error('Message not found in queue:', item.id);
|
|
1161
|
+
} else if (data.type === 'error') {
|
|
1162
|
+
if (data.error?.event_id) {
|
|
1163
|
+
const message = this.messageQueue[data.error?.event_id];
|
|
1164
|
+
if (message) {
|
|
1165
|
+
message.reject(data.error);
|
|
1166
|
+
delete this.messageQueue[data.error?.event_id];
|
|
1167
|
+
} else $abcb1ebea6899c97$var$log.error('Message not found in queue:', data.event_id);
|
|
1168
|
+
}
|
|
1169
|
+
} else if (data.type === 'invalid_request_error') {
|
|
1170
|
+
const message = this.responseQueue[data.event_id];
|
|
1171
|
+
if (message) {
|
|
1172
|
+
message.reject(data);
|
|
1173
|
+
delete this.responseQueue[data.event_id];
|
|
1174
|
+
} else $abcb1ebea6899c97$var$log.error('Response not found in queue:', data.event_id);
|
|
1175
|
+
}
|
|
1176
|
+
const messsage = this.messageQueue[data.event_id];
|
|
1177
|
+
console.log('onmessage', data.event_id, messsage);
|
|
1178
|
+
if (messsage) {
|
|
1179
|
+
messsage.resolve(data);
|
|
1180
|
+
delete this.messageQueue[data.event_id];
|
|
1181
|
+
}
|
|
1182
|
+
this.onMessage?.(e.data);
|
|
1183
|
+
};
|
|
1184
|
+
this.dc.onopen = ()=>{
|
|
1185
|
+
onOpen();
|
|
1186
|
+
};
|
|
1187
|
+
this.dc.onclose = ()=>{
|
|
1188
|
+
$abcb1ebea6899c97$var$log.info('Data channel closed');
|
|
1189
|
+
if (!this.closed) this.setDataChannel(()=>{});
|
|
1190
|
+
};
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
async send(message) {
|
|
1194
|
+
return new Promise((resolve, reject)=>{
|
|
1195
|
+
if (!this.dc) {
|
|
1196
|
+
$abcb1ebea6899c97$var$log.error('Data channel not found');
|
|
1197
|
+
reject(new Error('Data channel not found'));
|
|
1198
|
+
}
|
|
1199
|
+
if (this.dc?.readyState !== 'open' && this.pc) reject(new Error('Data channel not open'));
|
|
1200
|
+
$abcb1ebea6899c97$var$log.debug('sending message:', message);
|
|
1201
|
+
const sent = JSON.stringify(message);
|
|
1202
|
+
this.messageQueue[message.event_id] = {
|
|
1203
|
+
message: message,
|
|
1204
|
+
resolve: resolve,
|
|
1205
|
+
reject: reject,
|
|
1206
|
+
timeout: 10000
|
|
1207
|
+
};
|
|
1208
|
+
this.history.push({
|
|
1209
|
+
direction: 'send',
|
|
1210
|
+
message: sent
|
|
1211
|
+
});
|
|
1212
|
+
this.dc?.send(sent);
|
|
1213
|
+
});
|
|
1214
|
+
}
|
|
1215
|
+
sendCreateResponse(message) {
|
|
1216
|
+
return new Promise(async (resolve, reject)=>{
|
|
1217
|
+
if (!this.dc) {
|
|
1218
|
+
$abcb1ebea6899c97$var$log.error('Data channel not found');
|
|
1219
|
+
reject(new Error('Data channel not found'));
|
|
1220
|
+
}
|
|
1221
|
+
if (this.dc?.readyState !== 'open' && this.pc) reject(new Error('Data channel not open'));
|
|
1222
|
+
const sent = JSON.stringify(message);
|
|
1223
|
+
this.responseQueue[message.response.metadata.initial_event_id] = {
|
|
1224
|
+
message: message,
|
|
1225
|
+
resolve: resolve,
|
|
1226
|
+
reject: reject
|
|
1227
|
+
};
|
|
1228
|
+
this.history.push({
|
|
1229
|
+
direction: 'send',
|
|
1230
|
+
message: sent
|
|
1231
|
+
});
|
|
1232
|
+
this.dc?.send(sent);
|
|
1233
|
+
});
|
|
1234
|
+
}
|
|
1235
|
+
sendCreateItem(item) {
|
|
1236
|
+
return new Promise(async (resolve, reject)=>{
|
|
1237
|
+
if (!this.dc) {
|
|
1238
|
+
$abcb1ebea6899c97$var$log.error('Data channel not found');
|
|
1239
|
+
reject(new Error('Data channel not found'));
|
|
1240
|
+
}
|
|
1241
|
+
if (this.dc?.readyState !== 'open' && this.pc) reject(new Error('Data channel not open'));
|
|
1242
|
+
const sent = JSON.stringify(item);
|
|
1243
|
+
this.messageQueue[item.event_id] = {
|
|
1244
|
+
message: item,
|
|
1245
|
+
resolve: resolve,
|
|
1246
|
+
reject: reject,
|
|
1247
|
+
timeout: 10000
|
|
1248
|
+
};
|
|
1249
|
+
this.history.push({
|
|
1250
|
+
direction: 'send',
|
|
1251
|
+
message: sent
|
|
1252
|
+
});
|
|
1253
|
+
this.dc?.send(sent);
|
|
1254
|
+
});
|
|
1255
|
+
}
|
|
1256
|
+
sendToolOutput(message) {
|
|
1257
|
+
return new Promise(async (resolve, reject)=>{
|
|
1258
|
+
if (!this.dc) {
|
|
1259
|
+
$abcb1ebea6899c97$var$log.error('Data channel not found');
|
|
1260
|
+
reject(new Error('Data channel not found'));
|
|
1261
|
+
}
|
|
1262
|
+
if (this.dc?.readyState !== 'open' && this.pc) reject(new Error('Data channel not open'));
|
|
1263
|
+
const sent = JSON.stringify(message);
|
|
1264
|
+
this.toolOutputQueue[message.item.call_id] = {
|
|
1265
|
+
message: message,
|
|
1266
|
+
resolve: resolve,
|
|
1267
|
+
reject: reject,
|
|
1268
|
+
timeout: 10000
|
|
1269
|
+
};
|
|
1270
|
+
this.history.push({
|
|
1271
|
+
direction: 'send',
|
|
1272
|
+
message: sent
|
|
1273
|
+
});
|
|
1274
|
+
this.dc?.send(sent);
|
|
1275
|
+
});
|
|
1276
|
+
}
|
|
1277
|
+
async answer(sdp) {
|
|
1278
|
+
const answer = new RTCSessionDescription({
|
|
1279
|
+
type: 'answer',
|
|
1280
|
+
sdp: sdp
|
|
1281
|
+
});
|
|
1282
|
+
await this.pc?.setRemoteDescription(answer);
|
|
1283
|
+
}
|
|
1284
|
+
stop() {
|
|
1285
|
+
if (!this.closed) {
|
|
1286
|
+
this.closed = true;
|
|
1287
|
+
this.pc?.close();
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1290
|
+
constructor(){
|
|
1291
|
+
this.responseQueue = {};
|
|
1292
|
+
this.messageQueue = {};
|
|
1293
|
+
this.toolOutputQueue = {};
|
|
1294
|
+
this.history = [];
|
|
1295
|
+
this.closed = false;
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1299
|
+
|
|
1300
|
+
|
|
1301
|
+
const $75812785bb101fee$export$784df5c7a561530 = (0, $3Sbms$createContext)({});
|
|
1302
|
+
let $75812785bb101fee$var$currentContext = null;
|
|
1303
|
+
const $75812785bb101fee$export$5b34301179acfbb5 = ()=>{
|
|
1304
|
+
return $75812785bb101fee$var$currentContext;
|
|
1305
|
+
};
|
|
1306
|
+
const $75812785bb101fee$export$2174f25d572f9f31 = ()=>{
|
|
1307
|
+
const context = (0, $3Sbms$useContext)($75812785bb101fee$export$784df5c7a561530);
|
|
1308
|
+
$75812785bb101fee$var$currentContext = context;
|
|
1309
|
+
return context;
|
|
1310
|
+
};
|
|
1311
|
+
|
|
1312
|
+
|
|
1313
|
+
|
|
1314
|
+
const $b4ab02c81733a9cf$var$takePhotoFromScreenShare = {
|
|
1315
|
+
active: false,
|
|
1316
|
+
name: 'take_photo_from_screen_share',
|
|
1317
|
+
description: 'Take a photo from screen share',
|
|
1318
|
+
function: async (args)=>{
|
|
1319
|
+
console.log('take_photo', args);
|
|
1320
|
+
const state = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getDevicesState();
|
|
1321
|
+
if (state.screenshare.enabled) await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).captureScreenShare();
|
|
1322
|
+
}
|
|
1323
|
+
};
|
|
1324
|
+
const $b4ab02c81733a9cf$var$takePhotoFromCamera = {
|
|
1325
|
+
active: false,
|
|
1326
|
+
name: 'take_photo_from_camera',
|
|
1327
|
+
description: 'Take a photo',
|
|
1328
|
+
function: async (args)=>{
|
|
1329
|
+
console.log('take_photo', args);
|
|
1330
|
+
const state = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getDevicesState();
|
|
1331
|
+
if (state.camera.enabled) await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).captureVideo();
|
|
1332
|
+
}
|
|
1333
|
+
};
|
|
1334
|
+
const $b4ab02c81733a9cf$var$terminateCall = {
|
|
1335
|
+
active: false,
|
|
1336
|
+
name: 'terminate_call',
|
|
1337
|
+
description: 'Terminate call',
|
|
1338
|
+
function: async (args)=>{
|
|
1339
|
+
console.log('terminate_call', args);
|
|
1340
|
+
await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).terminateRoom();
|
|
1341
|
+
}
|
|
1342
|
+
};
|
|
1343
|
+
const $b4ab02c81733a9cf$var$startCamera = {
|
|
1344
|
+
active: false,
|
|
1345
|
+
name: 'start_camera',
|
|
1346
|
+
description: 'Start camera',
|
|
1347
|
+
function: async (args)=>{
|
|
1348
|
+
console.log('start_camera', args);
|
|
1349
|
+
await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableVideo();
|
|
1350
|
+
}
|
|
1351
|
+
};
|
|
1352
|
+
const $b4ab02c81733a9cf$var$stopCamera = {
|
|
1353
|
+
active: false,
|
|
1354
|
+
name: 'stop_camera',
|
|
1355
|
+
description: 'Stop camera',
|
|
1356
|
+
function: async (args)=>{
|
|
1357
|
+
console.log('stop_camera', args);
|
|
1358
|
+
await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).disableVideo();
|
|
1359
|
+
}
|
|
1360
|
+
};
|
|
1361
|
+
const $b4ab02c81733a9cf$var$stopScreenShare = {
|
|
1362
|
+
active: false,
|
|
1363
|
+
name: 'stop_screen_share',
|
|
1364
|
+
description: 'Stop screen share',
|
|
1365
|
+
function: async (args)=>{
|
|
1366
|
+
console.log('stop_screen_share', args);
|
|
1367
|
+
await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).disableScreenshare();
|
|
1368
|
+
}
|
|
1369
|
+
};
|
|
1370
|
+
const $b4ab02c81733a9cf$var$startRecord = {
|
|
1371
|
+
active: false,
|
|
1372
|
+
name: 'start_record',
|
|
1373
|
+
description: 'Start record',
|
|
1374
|
+
function: async (args)=>{
|
|
1375
|
+
console.log('start_record', args);
|
|
1376
|
+
await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).startRecord();
|
|
1377
|
+
}
|
|
1378
|
+
};
|
|
1379
|
+
const $b4ab02c81733a9cf$var$stopRecord = {
|
|
1380
|
+
active: false,
|
|
1381
|
+
name: 'stop_record',
|
|
1382
|
+
description: 'Stop record',
|
|
1383
|
+
function: async (args)=>{
|
|
1384
|
+
console.log('stop_record', args);
|
|
1385
|
+
await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).stopRecord();
|
|
1386
|
+
}
|
|
1387
|
+
};
|
|
1388
|
+
const $b4ab02c81733a9cf$var$rotateCamera = {
|
|
1389
|
+
active: false,
|
|
1390
|
+
name: 'rotate_camera',
|
|
1391
|
+
description: 'Rotate camera',
|
|
1392
|
+
function: async (args)=>{
|
|
1393
|
+
console.log('rotate_camera', args);
|
|
1394
|
+
await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).rotateVideo();
|
|
1395
|
+
}
|
|
1396
|
+
};
|
|
1397
|
+
const $b4ab02c81733a9cf$var$openDashboard = {
|
|
1398
|
+
active: false,
|
|
1399
|
+
name: 'open_dashboard',
|
|
1400
|
+
description: 'Open the dashboard',
|
|
1401
|
+
function: async (args)=>{
|
|
1402
|
+
console.log('open_dashboard', args);
|
|
1403
|
+
window.open('https://app.snapcall.io/', '_blank');
|
|
1404
|
+
window.focus();
|
|
1405
|
+
}
|
|
1406
|
+
};
|
|
1407
|
+
const $b4ab02c81733a9cf$var$startScreenShare = {
|
|
1408
|
+
active: false,
|
|
1409
|
+
name: 'start_screen_share',
|
|
1410
|
+
description: 'Start screen share ',
|
|
1411
|
+
function: async (args)=>{
|
|
1412
|
+
console.log('start_screen_share', args);
|
|
1413
|
+
await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableScreenshare();
|
|
1414
|
+
}
|
|
1415
|
+
};
|
|
1416
|
+
const $b4ab02c81733a9cf$var$verifyMedia = {
|
|
1417
|
+
active: true,
|
|
1418
|
+
answer: true,
|
|
1419
|
+
name: 'verify_media',
|
|
1420
|
+
description: 'Call this to Verify already sent media type and number by step, it return a json with the media count',
|
|
1421
|
+
function: async (args)=>{
|
|
1422
|
+
console.log('verify_mediaTool', args);
|
|
1423
|
+
const context = (0, $75812785bb101fee$export$5b34301179acfbb5)();
|
|
1424
|
+
const output = {};
|
|
1425
|
+
const steps = {};
|
|
1426
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).streamInfo?.flow?.steps.forEach((step, index)=>{
|
|
1427
|
+
steps[step.token] = {
|
|
1428
|
+
...step,
|
|
1429
|
+
index: index + 1
|
|
1430
|
+
};
|
|
1431
|
+
output[`step: ${index + 1}`] = {};
|
|
1432
|
+
});
|
|
1433
|
+
context?.assets.forEach((media)=>{
|
|
1434
|
+
const s = steps[media.stepToken];
|
|
1435
|
+
if (!output[`step: ${s.index}`][media.mode]) output[`step: ${s.index}`][media.mode] = 0;
|
|
1436
|
+
output[`step: ${s.index}`][media.mode]++;
|
|
1437
|
+
});
|
|
1438
|
+
if ($b4ab02c81733a9cf$var$verifyMedia.answer) {
|
|
1439
|
+
$b4ab02c81733a9cf$var$verifyMedia.answer = false;
|
|
1440
|
+
return {
|
|
1441
|
+
output: JSON.stringify(output),
|
|
1442
|
+
answer: true
|
|
1443
|
+
};
|
|
1444
|
+
}
|
|
1445
|
+
console.log('answer:', output);
|
|
1446
|
+
return {
|
|
1447
|
+
output: JSON.stringify(output),
|
|
1448
|
+
answer: false
|
|
1449
|
+
};
|
|
1450
|
+
}
|
|
1451
|
+
};
|
|
1452
|
+
const $b4ab02c81733a9cf$var$displayMessage = {
|
|
1453
|
+
active: false,
|
|
1454
|
+
name: 'display_message',
|
|
1455
|
+
description: 'Allow to display a message to the user',
|
|
1456
|
+
parameters: {
|
|
1457
|
+
type: 'object',
|
|
1458
|
+
strict: true,
|
|
1459
|
+
properties: {
|
|
1460
|
+
text: {
|
|
1461
|
+
type: 'string',
|
|
1462
|
+
description: 'The text to display to the user'
|
|
1463
|
+
}
|
|
1464
|
+
},
|
|
1465
|
+
required: [
|
|
1466
|
+
'text'
|
|
1467
|
+
]
|
|
1468
|
+
},
|
|
1469
|
+
function: async (args)=>{
|
|
1470
|
+
console.log('display_message', args);
|
|
1471
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).dispatchEvent(new CustomEvent('aiDisplayMessage', {
|
|
1472
|
+
detail: {
|
|
1473
|
+
text: args.text
|
|
1474
|
+
}
|
|
1475
|
+
}));
|
|
1476
|
+
}
|
|
1477
|
+
};
|
|
1478
|
+
const $b4ab02c81733a9cf$var$goToStep = {
|
|
1479
|
+
active: false,
|
|
1480
|
+
name: 'go_to_step',
|
|
1481
|
+
description: 'Go to one step in the flow, always call it to got to the next step',
|
|
1482
|
+
arguments: 'the step number (1-based)',
|
|
1483
|
+
parameters: {
|
|
1484
|
+
type: 'object',
|
|
1485
|
+
strict: true,
|
|
1486
|
+
properties: {
|
|
1487
|
+
step: {
|
|
1488
|
+
type: 'number',
|
|
1489
|
+
description: 'The step number (1-based)'
|
|
1490
|
+
}
|
|
1491
|
+
},
|
|
1492
|
+
required: [
|
|
1493
|
+
'step'
|
|
1494
|
+
]
|
|
1495
|
+
},
|
|
1496
|
+
function: async (args)=>{
|
|
1497
|
+
const { step: stepNumber } = args;
|
|
1498
|
+
const context = (0, $75812785bb101fee$export$5b34301179acfbb5)();
|
|
1499
|
+
if (stepNumber > ((0, $c9e496369b59be7a$export$2f377c2162fd02b2).streamInfo?.flow?.steps?.length || 0)) return {
|
|
1500
|
+
answer: false,
|
|
1501
|
+
output: 'already at the last step'
|
|
1502
|
+
};
|
|
1503
|
+
const step = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).streamInfo?.flow?.steps[Number(stepNumber) - 1];
|
|
1504
|
+
if (context) context.setCurrentStep(step || null);
|
|
1505
|
+
}
|
|
1506
|
+
};
|
|
1507
|
+
class $b4ab02c81733a9cf$export$390d11d353c16e49 {
|
|
1508
|
+
static{
|
|
1509
|
+
this.instance = new $b4ab02c81733a9cf$export$390d11d353c16e49();
|
|
1510
|
+
}
|
|
1511
|
+
list() {
|
|
1512
|
+
return this.tools.map((tool)=>({
|
|
1513
|
+
type: 'function',
|
|
1514
|
+
name: tool.name,
|
|
1515
|
+
description: tool.description,
|
|
1516
|
+
parameters: tool.parameters
|
|
1517
|
+
}));
|
|
1518
|
+
}
|
|
1519
|
+
async onToolCall(toolOutput) {
|
|
1520
|
+
const tool = this.tools.find((tool)=>tool.name === toolOutput.name);
|
|
1521
|
+
if (tool) try {
|
|
1522
|
+
let parsedArgs;
|
|
1523
|
+
try {
|
|
1524
|
+
parsedArgs = JSON.parse(toolOutput.arg);
|
|
1525
|
+
} catch (error) {
|
|
1526
|
+
console.error('JSON.parse error', error);
|
|
1527
|
+
parsedArgs = toolOutput.arg;
|
|
1528
|
+
}
|
|
1529
|
+
const result = await tool.function(parsedArgs);
|
|
1530
|
+
toolOutput.answer = result?.answer || false;
|
|
1531
|
+
toolOutput.setOutput(result?.output || 'done');
|
|
1532
|
+
return toolOutput;
|
|
1533
|
+
} catch (error) {
|
|
1534
|
+
toolOutput.setOutput('error');
|
|
1535
|
+
console.error('tool.function error', error);
|
|
1536
|
+
return toolOutput;
|
|
1537
|
+
}
|
|
1538
|
+
return toolOutput;
|
|
1539
|
+
}
|
|
1540
|
+
constructor(){
|
|
1541
|
+
this.tools = [
|
|
1542
|
+
$b4ab02c81733a9cf$var$goToStep,
|
|
1543
|
+
$b4ab02c81733a9cf$var$verifyMedia,
|
|
1544
|
+
$b4ab02c81733a9cf$var$displayMessage,
|
|
1545
|
+
$b4ab02c81733a9cf$var$takePhotoFromScreenShare,
|
|
1546
|
+
$b4ab02c81733a9cf$var$takePhotoFromCamera,
|
|
1547
|
+
$b4ab02c81733a9cf$var$openDashboard,
|
|
1548
|
+
$b4ab02c81733a9cf$var$startScreenShare,
|
|
1549
|
+
$b4ab02c81733a9cf$var$startCamera,
|
|
1550
|
+
$b4ab02c81733a9cf$var$stopCamera,
|
|
1551
|
+
$b4ab02c81733a9cf$var$stopScreenShare,
|
|
1552
|
+
$b4ab02c81733a9cf$var$startRecord,
|
|
1553
|
+
$b4ab02c81733a9cf$var$stopRecord,
|
|
1554
|
+
$b4ab02c81733a9cf$var$rotateCamera,
|
|
1555
|
+
$b4ab02c81733a9cf$var$terminateCall
|
|
1556
|
+
].filter((tool)=>tool.active);
|
|
1557
|
+
this.call = {};
|
|
1558
|
+
}
|
|
1559
|
+
}
|
|
1560
|
+
|
|
1561
|
+
|
|
1562
|
+
|
|
1563
|
+
|
|
1564
|
+
|
|
1565
|
+
|
|
1566
|
+
class $6261a3c4fcd80f00$export$c30f1113934f199 {
|
|
1567
|
+
constructor(initMessage){
|
|
1568
|
+
this.output = '';
|
|
1569
|
+
this.answer = true;
|
|
1570
|
+
this.id = (0, $b10694cdbe7436a4$export$7a6ec380c1221521)();
|
|
1571
|
+
this.callId = initMessage.call_id;
|
|
1572
|
+
this.arg = initMessage.arguments;
|
|
1573
|
+
this.name = initMessage.name;
|
|
1574
|
+
}
|
|
1575
|
+
setOutput(output) {
|
|
1576
|
+
this.output = output;
|
|
1577
|
+
}
|
|
1578
|
+
build() {
|
|
1579
|
+
const message = {
|
|
1580
|
+
type: 'conversation.item.create',
|
|
1581
|
+
event_id: this.id,
|
|
1582
|
+
item: {
|
|
1583
|
+
id: this.id,
|
|
1584
|
+
type: 'function_call_output',
|
|
1585
|
+
output: this.output,
|
|
1586
|
+
call_id: this.callId
|
|
1587
|
+
}
|
|
1588
|
+
};
|
|
1589
|
+
return message;
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
const $1d3572d7f385cb6f$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('LiveAIAgent');
|
|
1595
|
+
const $1d3572d7f385cb6f$export$d713d143d88e7fb = [
|
|
1596
|
+
'alloy',
|
|
1597
|
+
'ash',
|
|
1598
|
+
'ballad',
|
|
1599
|
+
'cedar',
|
|
1600
|
+
'coral',
|
|
1601
|
+
'echo',
|
|
1602
|
+
'marin',
|
|
1603
|
+
'sage',
|
|
1604
|
+
'shimmer',
|
|
1605
|
+
'verse'
|
|
1606
|
+
];
|
|
1607
|
+
class $1d3572d7f385cb6f$export$771b825376631bd6 {
|
|
1608
|
+
constructor(listener){
|
|
1609
|
+
this.responses = {};
|
|
1610
|
+
this.userMessages = {};
|
|
1611
|
+
this.tools = (0, $b4ab02c81733a9cf$export$390d11d353c16e49).instance;
|
|
1612
|
+
this.userDelta = [];
|
|
1613
|
+
this.delta = '';
|
|
1614
|
+
this.talking = false;
|
|
1615
|
+
this.options = {
|
|
1616
|
+
voice: 'marin',
|
|
1617
|
+
instructions: ''
|
|
1618
|
+
};
|
|
1619
|
+
this.listener = listener;
|
|
1620
|
+
window.liveAIAgent = this;
|
|
1621
|
+
}
|
|
1622
|
+
mute() {
|
|
1623
|
+
if (this.track) this.track.enabled = false;
|
|
1624
|
+
}
|
|
1625
|
+
unmute() {
|
|
1626
|
+
if (this.track) this.track.enabled = true;
|
|
1627
|
+
}
|
|
1628
|
+
sendUserMessage(message) {
|
|
1629
|
+
this.userMessages[message.id] = message;
|
|
1630
|
+
return this.peerConnection?.sendCreateItem(message.build());
|
|
1631
|
+
}
|
|
1632
|
+
setTrack(track) {
|
|
1633
|
+
this.track = track.clone();
|
|
1634
|
+
this.track.enabled = false;
|
|
1635
|
+
this.peerConnection?.setTrack(this.track);
|
|
1636
|
+
}
|
|
1637
|
+
async init({ instructions: instructions, voice: voice, track: track }) {
|
|
1638
|
+
this.options = {
|
|
1639
|
+
instructions: instructions,
|
|
1640
|
+
voice: voice
|
|
1641
|
+
};
|
|
1642
|
+
const token = await (0, $8b98e8a5771f5886$export$83af83298e0405cb)(this.tools, this.options);
|
|
1643
|
+
const peerConnection = new (0, $abcb1ebea6899c97$export$d84cf184fade0488)();
|
|
1644
|
+
this.peerConnection = peerConnection;
|
|
1645
|
+
const sdp = await peerConnection.init({
|
|
1646
|
+
track: this.track,
|
|
1647
|
+
onMessage: this.onMessage.bind(this),
|
|
1648
|
+
onReady: async ()=>{}
|
|
1649
|
+
});
|
|
1650
|
+
if (!sdp) throw new Error('can not get SDP');
|
|
1651
|
+
const baseUrl = 'https://api.openai.com/v1/realtime/calls';
|
|
1652
|
+
const model = 'gpt-realtime';
|
|
1653
|
+
const sdpResponse = await fetch(`${baseUrl}?model=${model}`, {
|
|
1654
|
+
method: 'POST',
|
|
1655
|
+
body: sdp,
|
|
1656
|
+
headers: {
|
|
1657
|
+
Authorization: `Bearer ${token.value}`,
|
|
1658
|
+
'Content-Type': 'application/sdp'
|
|
1659
|
+
}
|
|
1660
|
+
});
|
|
1661
|
+
const answer = await sdpResponse.text();
|
|
1662
|
+
await peerConnection.answer(answer);
|
|
1663
|
+
if (track) this.setTrack(track);
|
|
1664
|
+
}
|
|
1665
|
+
async stopResponse() {
|
|
1666
|
+
console.log('stopResponse', this.currentResponse);
|
|
1667
|
+
if (this.currentResponse?.canceled) return;
|
|
1668
|
+
const response = this.currentResponse;
|
|
1669
|
+
const cancel = response?.cancel();
|
|
1670
|
+
console.log('startResponse stopResponse cancel', cancel);
|
|
1671
|
+
if (cancel) {
|
|
1672
|
+
const result = await this.peerConnection?.send(cancel.build()).catch((err)=>{
|
|
1673
|
+
console.error('stopResponse error', err);
|
|
1674
|
+
});
|
|
1675
|
+
/*if (!result && this.talking) {
|
|
1676
|
+
console.log('startResponse output_audio_buffer.clear', this.currentResponse?.responseId);
|
|
1677
|
+
const rq = await this.peerConnection?.send({
|
|
1678
|
+
type: 'output_audio_buffer.clear',
|
|
1679
|
+
event_id: getMessageId(),
|
|
1680
|
+
response_id: this.currentResponse?.responseId,
|
|
1681
|
+
})
|
|
1682
|
+
console.log('startResponse output_audio_buffer.clear', rq);
|
|
1683
|
+
console.log('startResponse waiting for talking to finish');
|
|
1684
|
+
|
|
1685
|
+
}/*/ console.log('startResponse stopResponse', result);
|
|
1686
|
+
}
|
|
1687
|
+
}
|
|
1688
|
+
async startResponse(origin) {
|
|
1689
|
+
const response = new (0, $194b1221c75af877$export$a144ab69971f4316)('client');
|
|
1690
|
+
console.log('startResponse', origin, this.currentResponse);
|
|
1691
|
+
if (this.currentResponse) {
|
|
1692
|
+
if (this.currentResponse.responseId) await this.stopResponse();
|
|
1693
|
+
}
|
|
1694
|
+
if (this.talking) {
|
|
1695
|
+
this.waitTalking = ()=>{
|
|
1696
|
+
this.startResponse(origin);
|
|
1697
|
+
};
|
|
1698
|
+
return;
|
|
1699
|
+
}
|
|
1700
|
+
this.currentResponse = response;
|
|
1701
|
+
const result = await this.peerConnection?.sendCreateResponse(response.build());
|
|
1702
|
+
console.log('startResponse', response);
|
|
1703
|
+
if (result?.response?.id) this.currentResponse.setResponseId(result?.response?.id);
|
|
1704
|
+
return response;
|
|
1705
|
+
}
|
|
1706
|
+
async onMessage(msg) {
|
|
1707
|
+
const data = JSON.parse(msg);
|
|
1708
|
+
const { type: type, delta: delta, id: id } = data;
|
|
1709
|
+
// log.debug(JSON.stringify(data, null, 2));
|
|
1710
|
+
if (type === 'session.created') this.listener.onStart();
|
|
1711
|
+
else if (type === 'response.done') {
|
|
1712
|
+
console.log('response.done:', this.currentResponse);
|
|
1713
|
+
console.log('response.stopped:', data);
|
|
1714
|
+
} else if (type === 'response.created') {
|
|
1715
|
+
if (!this.currentResponse) this.currentResponse = new (0, $194b1221c75af877$export$a144ab69971f4316)('server');
|
|
1716
|
+
this.delta = '';
|
|
1717
|
+
this.listener.onAssistantMessage(this.delta);
|
|
1718
|
+
} else if (type === 'session.updated') ;
|
|
1719
|
+
else if (type === 'conversation.item.input_audio_transcription.delta') this.userDelta[this.userDelta.length - 1] += delta;
|
|
1720
|
+
else if (type === 'conversation.item.input_audio_transcription.completed') this.userDelta.push('');
|
|
1721
|
+
else if (type === 'response.output_item.added') data.item.role;
|
|
1722
|
+
else if (type === 'output_audio_buffer.started') {
|
|
1723
|
+
this.talking = true;
|
|
1724
|
+
this.listener.onAudioAssistant('started');
|
|
1725
|
+
} else if (type === 'output_audio_buffer.stopped') {
|
|
1726
|
+
this.talking = false;
|
|
1727
|
+
if (this.waitTalking) {
|
|
1728
|
+
this.waitTalking();
|
|
1729
|
+
this.waitTalking = undefined;
|
|
1730
|
+
}
|
|
1731
|
+
console.log('output_audio_buffer.stopped:', data);
|
|
1732
|
+
this.currentResponse?.setTerminated();
|
|
1733
|
+
this.currentResponse = undefined;
|
|
1734
|
+
this.listener.onAudioAssistant('stopped');
|
|
1735
|
+
} else if (type === 'response.function_call_arguments.delta') ;
|
|
1736
|
+
else if (type === 'rate_limits.updated') $1d3572d7f385cb6f$var$log.debug('rate_limits.updated:', data.name, data.remaining);
|
|
1737
|
+
else if (type === 'response.output_audio_transcript.delta') {
|
|
1738
|
+
$1d3572d7f385cb6f$var$log.debug(id, delta);
|
|
1739
|
+
this.delta += delta;
|
|
1740
|
+
$1d3572d7f385cb6f$var$log.debug('delta:', id, this.delta);
|
|
1741
|
+
this.listener.onAssistantPartialMessage(this.delta);
|
|
1742
|
+
} else if (type === 'response.function_call_arguments.done') {
|
|
1743
|
+
$1d3572d7f385cb6f$var$log.debug('call:', data);
|
|
1744
|
+
const toolOutput = new (0, $6261a3c4fcd80f00$export$c30f1113934f199)(data);
|
|
1745
|
+
const result = await this.tools.onToolCall(toolOutput);
|
|
1746
|
+
await this.sendToolOutput(result);
|
|
1747
|
+
} else if (type === 'conversation.item.truncated') console.log('conversation.item.truncated:', data);
|
|
1748
|
+
else if (type === 'error') $1d3572d7f385cb6f$var$log.error('error:', data);
|
|
1749
|
+
else $1d3572d7f385cb6f$var$log.debug('onMessage:', JSON.stringify(data, null, 2));
|
|
1750
|
+
}
|
|
1751
|
+
async sendToolOutput(toolOutput) {
|
|
1752
|
+
const message = toolOutput.build();
|
|
1753
|
+
console.log('sendToolOutput:', message);
|
|
1754
|
+
await this.peerConnection?.sendToolOutput(message);
|
|
1755
|
+
console.log('sendToolOutput done:', message);
|
|
1756
|
+
if (toolOutput.answer) this.startResponse(toolOutput.name);
|
|
1757
|
+
return message;
|
|
1758
|
+
}
|
|
1759
|
+
stop() {
|
|
1760
|
+
this.peerConnection?.stop();
|
|
1761
|
+
}
|
|
1762
|
+
dumpHistory() {
|
|
1763
|
+
console.log('messageHistory:', JSON.stringify(this.peerConnection?.history, null, 2));
|
|
1764
|
+
}
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1767
|
+
|
|
1768
|
+
|
|
1769
|
+
|
|
1770
|
+
const $e5f91b6f0b24f44b$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('LiveAIAgent/Instruction');
|
|
1771
|
+
const $e5f91b6f0b24f44b$var$safe = (s)=>(s ?? '').trim() || "\u2014";
|
|
1772
|
+
const $e5f91b6f0b24f44b$var$listSteps = (flow)=>{
|
|
1773
|
+
if (!flow?.steps?.length) return '(no steps defined)';
|
|
1774
|
+
return flow.steps.map((step, index)=>{
|
|
1775
|
+
const types = Array.isArray(step.types) ? step.types.join(', ') : "\u2014";
|
|
1776
|
+
return `\n ${index + 1} -${$e5f91b6f0b24f44b$var$safe(step.title)}: ${$e5f91b6f0b24f44b$var$safe(step.config?.description)}, requested mode: ${types}, default mode: ${step.default_type || ''}`;
|
|
1777
|
+
}).join(',\n');
|
|
1778
|
+
};
|
|
1779
|
+
const $e5f91b6f0b24f44b$var$prepare = (instructionParams)=>{
|
|
1780
|
+
const flow = instructionParams.flow;
|
|
1781
|
+
const unbuild = {
|
|
1782
|
+
role: `
|
|
1783
|
+
You are ${$e5f91b6f0b24f44b$var$safe(instructionParams.name)} a ${$e5f91b6f0b24f44b$var$safe(instructionParams.language)} speaker.
|
|
1784
|
+
You are a customer support agent for ${$e5f91b6f0b24f44b$var$safe(instructionParams.companyName)}.
|
|
1785
|
+
You guide the user in a recorder application.
|
|
1786
|
+
Follow the Flow described in Context. A Flow is an ordered list of Steps.
|
|
1787
|
+
At each Step, collect at least one media of the requested types. Always verify the media sent before talking about the current media.
|
|
1788
|
+
`.trim(),
|
|
1789
|
+
personality: `
|
|
1790
|
+
You are friendly, patient, and helpful.
|
|
1791
|
+
Keep replies short and clear for voice.
|
|
1792
|
+
Prefer ${$e5f91b6f0b24f44b$var$safe(instructionParams.language) || 'English'} answers.
|
|
1793
|
+
`.trim(),
|
|
1794
|
+
context: `
|
|
1795
|
+
You are connected to an application that can share screen, take photos, and receive uploads.
|
|
1796
|
+
A preview of the interface will be displayed to you in the first message.
|
|
1797
|
+
The title of the flow is: ${$e5f91b6f0b24f44b$var$safe(flow?.name)}
|
|
1798
|
+
The flow is described as: ${$e5f91b6f0b24f44b$var$safe(flow?.config?.description)}
|
|
1799
|
+
Steps are:
|
|
1800
|
+
${$e5f91b6f0b24f44b$var$listSteps(flow)}
|
|
1801
|
+
Before Starting the flow the user has no enable is media, microphone or camera.
|
|
1802
|
+
`.trim(),
|
|
1803
|
+
reference_pronunciations: ``.trim(),
|
|
1804
|
+
tools: `${instructionParams.tools.map((tool)=>`- ${tool.name}: ${tool.description}`).join('\n')}
|
|
1805
|
+
|
|
1806
|
+
`.trim(),
|
|
1807
|
+
instructions: `
|
|
1808
|
+
### EVENT INTERPRETATION
|
|
1809
|
+
Messages starting with \u{201C}[APP_EVENT]\u{201D} or \u{201C}[DEVICE_EVENT]\u{201D} are NOT spoken by the user.
|
|
1810
|
+
They are authoritative system events. You must TRUST them.
|
|
1811
|
+
|
|
1812
|
+
### DEVICE EVENTS
|
|
1813
|
+
DEVICE_EVENT always contains JSON. Example:
|
|
1814
|
+
[DEVICE_EVENT] {"type":"microphone_state","status":"active"}
|
|
1815
|
+
|
|
1816
|
+
### INSTRUCTION EVENTS
|
|
1817
|
+
INSTRUCTION indicate which action to take.
|
|
1818
|
+
|
|
1819
|
+
Supported types:
|
|
1820
|
+
- camera_state: {status: "active" | "inactive"}
|
|
1821
|
+
- microphone_state: {status: "active" | "inactive"}
|
|
1822
|
+
|
|
1823
|
+
The latest DEVICE_EVENT fully overrides previous assumptions.
|
|
1824
|
+
|
|
1825
|
+
### MICROPHONE / CAMERA LOGIC
|
|
1826
|
+
- Never talk about hearing the user
|
|
1827
|
+
- Only talk about the permissions of the camera as the user can't proceed without it.
|
|
1828
|
+
- If the latest microphone_state or camera_state is "active", NEVER claim the mic is off, muted, unavailable, or not working.
|
|
1829
|
+
- If the latest microphone_state or camera_state is "inactive", guide the user to activate it.
|
|
1830
|
+
- If permission is inactive, say it must be enabled from the popup or from the browser search bar.
|
|
1831
|
+
|
|
1832
|
+
### FLOW RULES
|
|
1833
|
+
This conversation is a strict media-collection flow.
|
|
1834
|
+
- If there is no media yet, don't mention media or say "No media has been taken yet".
|
|
1835
|
+
- Stay in context. For anything unrelated:
|
|
1836
|
+
\u{201C}I can only help you with media collection in this flow.\u{201D}
|
|
1837
|
+
- Verify media before starting the flow using the verify_media tool. If there is already a media propose to click on "next" or "add more".
|
|
1838
|
+
- Announce when media is already collected. Propose to click on the continue button.
|
|
1839
|
+
- Do not announce next step until receiving the setStep APP_EVENT.
|
|
1840
|
+
- Ask for only one media type at a time.
|
|
1841
|
+
- If multiple media types are allowed, encourage the user to choose one.
|
|
1842
|
+
- Do not judge media content; only confirm reception.
|
|
1843
|
+
- Confirm media **only** when receiving:
|
|
1844
|
+
\u{201C}[APP_EVENT] the user has taken a media\u{201D}
|
|
1845
|
+
- After receiving any allowed media, ask if the user is ready for the next step.
|
|
1846
|
+
- The next step can only be confirmed via the UI button (blue modal button).
|
|
1847
|
+
- Always re-verify previously collected media before proceeding.
|
|
1848
|
+
- Offer the option to go back to add more media at any time.
|
|
1849
|
+
|
|
1850
|
+
### RESPONSE RULES
|
|
1851
|
+
- Limit responses to **30 words maximum**.
|
|
1852
|
+
`.trim(),
|
|
1853
|
+
conversation_flow: `
|
|
1854
|
+
You will receive step descriptions and requested media types.
|
|
1855
|
+
For each step:
|
|
1856
|
+
1) You must verify media before starting the flow calling the verify_media tool, and announce media already taken.
|
|
1857
|
+
2) Do not say "No media has been taken yet" or something similar.
|
|
1858
|
+
3) You must not announce or discuss any step of the flow until the microphone is fully enabled. If the microphone is not active, the bot must focus only on helping the user enable it.
|
|
1859
|
+
4) Announce the step briefly and request one allowed media type.
|
|
1860
|
+
5) On media received: acknowledge ("Received. Thank you.").
|
|
1861
|
+
6) List accepted types for the step and suggest the default one only if there is only many allowed type.
|
|
1862
|
+
7) If the user has not taken any media, ask the user to take a media.
|
|
1863
|
+
8) After loading a step, clearly tell the user that to start recording or to take a photo, they must click on the round button at the bottom of the interface.
|
|
1864
|
+
9) You must not use phrases implying you will notify the user later, such as "I'll let you know when it's ready." You should only give direct, immediate instructions.
|
|
1865
|
+
10) On out-of-scope question: decline and restate the current step request.
|
|
1866
|
+
11) On completion: confirm the process is done and provide a short recap. open send model and request the user to click send button.
|
|
1867
|
+
`.trim(),
|
|
1868
|
+
safety_and_escalation: `
|
|
1869
|
+
Do not request or store sensitive personal data unrelated to the Flow.
|
|
1870
|
+
If the user shares such data, acknowledge and continue the Flow without repeating it.
|
|
1871
|
+
`.trim()
|
|
1872
|
+
};
|
|
1873
|
+
return unbuild;
|
|
1874
|
+
};
|
|
1875
|
+
const $e5f91b6f0b24f44b$export$c9df4e1f27f016e5 = (streamInfo, tools, language)=>{
|
|
1876
|
+
console.log('language', language);
|
|
1877
|
+
const flow = streamInfo.flow;
|
|
1878
|
+
const instructionParams = {
|
|
1879
|
+
name: 'Jean-Didier',
|
|
1880
|
+
language: language,
|
|
1881
|
+
companyName: 'Snapcall',
|
|
1882
|
+
flow: flow,
|
|
1883
|
+
tools: tools.list()
|
|
1884
|
+
};
|
|
1885
|
+
const unbuild = $e5f91b6f0b24f44b$var$prepare(instructionParams);
|
|
1886
|
+
const instruction = `
|
|
1887
|
+
# Role & Objective
|
|
1888
|
+
${unbuild.role}
|
|
1889
|
+
|
|
1890
|
+
# Personality & Tone
|
|
1891
|
+
${unbuild.personality}
|
|
1892
|
+
|
|
1893
|
+
# Context
|
|
1894
|
+
${unbuild.context}
|
|
1895
|
+
|
|
1896
|
+
# Reference Pronunciations
|
|
1897
|
+
${unbuild.reference_pronunciations}
|
|
1898
|
+
|
|
1899
|
+
# Tools
|
|
1900
|
+
${unbuild.tools}
|
|
1901
|
+
|
|
1902
|
+
# Instructions / Rules
|
|
1903
|
+
${unbuild.instructions}
|
|
1904
|
+
|
|
1905
|
+
# Conversation Flow
|
|
1906
|
+
${unbuild.conversation_flow}
|
|
1907
|
+
|
|
1908
|
+
# Safety & Escalation
|
|
1909
|
+
${unbuild.safety_and_escalation}
|
|
1910
|
+
`.trim();
|
|
1911
|
+
$e5f91b6f0b24f44b$var$log.debug('getInstructions', instruction);
|
|
1912
|
+
return instruction;
|
|
1913
|
+
};
|
|
1914
|
+
|
|
1915
|
+
|
|
1916
|
+
|
|
1917
|
+
|
|
1918
|
+
class $94dc317d964bfa69$export$53479bc84d79bdc2 {
|
|
1919
|
+
constructor(){
|
|
1920
|
+
this.ready = false;
|
|
1921
|
+
this.initialized = false;
|
|
1922
|
+
this.initialeMessageSent = false;
|
|
1923
|
+
this.startRequested = false;
|
|
1924
|
+
this.agent = new (0, $1d3572d7f385cb6f$export$771b825376631bd6)(this);
|
|
1925
|
+
this.tools = (0, $b4ab02c81733a9cf$export$390d11d353c16e49).instance;
|
|
1926
|
+
$94dc317d964bfa69$export$53479bc84d79bdc2.instance = this;
|
|
1927
|
+
}
|
|
1928
|
+
async init(options, streamInfo, track) {
|
|
1929
|
+
const instructions = (0, $e5f91b6f0b24f44b$export$c9df4e1f27f016e5)(streamInfo, this.tools, options.language);
|
|
1930
|
+
await this.agent.init({
|
|
1931
|
+
instructions: instructions,
|
|
1932
|
+
voice: options.voice,
|
|
1933
|
+
track: track
|
|
1934
|
+
});
|
|
1935
|
+
this.initialized = true;
|
|
1936
|
+
}
|
|
1937
|
+
setTrack(track) {
|
|
1938
|
+
this.agent.setTrack(track);
|
|
1939
|
+
}
|
|
1940
|
+
async addScriptedMessage(script) {
|
|
1941
|
+
if (!this.ready || !this.startRequested || !this.initialized) return;
|
|
1942
|
+
return this.agent.sendUserMessage(script.message);
|
|
1943
|
+
}
|
|
1944
|
+
async addVideoImage(image) {
|
|
1945
|
+
try {
|
|
1946
|
+
const msg = new (0, $9479f834268e4c06$export$46bbf1c329ce020)();
|
|
1947
|
+
await msg.addImageContent(image);
|
|
1948
|
+
await this.agent.sendUserMessage(msg);
|
|
1949
|
+
} catch (error) {
|
|
1950
|
+
console.error('addVideoImage error', error);
|
|
1951
|
+
}
|
|
1952
|
+
}
|
|
1953
|
+
async analyzeVideo() {
|
|
1954
|
+
try {
|
|
1955
|
+
const msg = new (0, $9479f834268e4c06$export$46bbf1c329ce020)();
|
|
1956
|
+
msg.addInstructionContent(`
|
|
1957
|
+
You are granted the ability to check the content of the image for this answer only.
|
|
1958
|
+
check the content of the images you just receive for this video and tell me if the image is conform to the steps requirements if not propose to take an other one.
|
|
1959
|
+
Do not give a feedback of the order like ""
|
|
1960
|
+
You have a 40 words limit for that answer.
|
|
1961
|
+
`);
|
|
1962
|
+
msg.addContent('please review all the images and give your feedback.');
|
|
1963
|
+
await this.agent.sendUserMessage(msg);
|
|
1964
|
+
await this.startResponse('analyzeImageResult');
|
|
1965
|
+
} catch (error) {
|
|
1966
|
+
console.error('analyzeVideo error', error);
|
|
1967
|
+
}
|
|
1968
|
+
}
|
|
1969
|
+
async analyzeImageResult(image) {
|
|
1970
|
+
try {
|
|
1971
|
+
const msg = new (0, $9479f834268e4c06$export$46bbf1c329ce020)();
|
|
1972
|
+
await msg.addImageContent(image);
|
|
1973
|
+
msg.addInstructionContent(`
|
|
1974
|
+
You are granted the ability to check the content of the image for this answer only.
|
|
1975
|
+
check the content of the image you just receive and tell me if the image is conform to the steps requirements if not propose to take an other one.
|
|
1976
|
+
You have a 40 words limit for that answer.
|
|
1977
|
+
`);
|
|
1978
|
+
msg.addContent('please review the image and give your feedback.');
|
|
1979
|
+
await this.agent.sendUserMessage(msg);
|
|
1980
|
+
await this.startResponse('analyzeImageResult');
|
|
1981
|
+
} catch (error) {
|
|
1982
|
+
console.error('analyzeImageResult error', error);
|
|
1983
|
+
}
|
|
1984
|
+
}
|
|
1985
|
+
async onStart() {
|
|
1986
|
+
this.ready = true;
|
|
1987
|
+
if (this.startRequested) await this.sendInitialMessage();
|
|
1988
|
+
}
|
|
1989
|
+
async sendInitialMessage() {
|
|
1990
|
+
console.log('sendInitialMessage', this.initialeMessageSent, this.ready);
|
|
1991
|
+
this.startRequested = true;
|
|
1992
|
+
if (!this.ready) return;
|
|
1993
|
+
if (this.initialeMessageSent) return;
|
|
1994
|
+
this.initialeMessageSent = true;
|
|
1995
|
+
const msg = new (0, $9479f834268e4c06$export$46bbf1c329ce020)();
|
|
1996
|
+
const videoTrack = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).tracksHandler.video.track;
|
|
1997
|
+
const audioTrack = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).tracksHandler.audio.track;
|
|
1998
|
+
msg.addMediaContent('camera', videoTrack ? 'active' : 'inactive');
|
|
1999
|
+
msg.addMediaContent('microphone', audioTrack ? 'active' : 'inactive');
|
|
2000
|
+
msg.addAppContent('event', `setStep: ${(0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance?.getData().previousStepNumber ?? 1}`);
|
|
2001
|
+
await this.agent.sendUserMessage(msg);
|
|
2002
|
+
const response = await this.startResponse('initial');
|
|
2003
|
+
console.log('response', response);
|
|
2004
|
+
}
|
|
2005
|
+
startResponse(origin) {
|
|
2006
|
+
if (!this.startRequested || !this.ready) return;
|
|
2007
|
+
return this.agent.startResponse(origin);
|
|
2008
|
+
}
|
|
2009
|
+
onAssistantPartialMessage(text) {
|
|
2010
|
+
console.log('onAssistantPartialMessage', text);
|
|
2011
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).dispatchEvent(new CustomEvent('aiTextMessage', {
|
|
2012
|
+
detail: {
|
|
2013
|
+
text: text
|
|
2014
|
+
}
|
|
2015
|
+
}));
|
|
2016
|
+
}
|
|
2017
|
+
onAssistantMessage(text) {
|
|
2018
|
+
console.log('onAssistantMessage', text);
|
|
2019
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).dispatchEvent(new CustomEvent('aiTextMessage', {
|
|
2020
|
+
detail: {
|
|
2021
|
+
text: text
|
|
2022
|
+
}
|
|
2023
|
+
}));
|
|
2024
|
+
}
|
|
2025
|
+
onAudioAssistant(state) {
|
|
2026
|
+
console.log('onAudioAssistant', state);
|
|
2027
|
+
if (state === 'started') (0, $c9e496369b59be7a$export$2f377c2162fd02b2).dispatchEvent(new CustomEvent('aiStarted', {
|
|
2028
|
+
detail: {
|
|
2029
|
+
text: ''
|
|
2030
|
+
}
|
|
2031
|
+
}));
|
|
2032
|
+
else (0, $c9e496369b59be7a$export$2f377c2162fd02b2).dispatchEvent(new CustomEvent('aiStopped', {
|
|
2033
|
+
detail: {
|
|
2034
|
+
text: ''
|
|
2035
|
+
}
|
|
2036
|
+
}));
|
|
2037
|
+
}
|
|
2038
|
+
}
|
|
2039
|
+
|
|
2040
|
+
|
|
2041
|
+
const $e5b92ac5fb47bd8c$var$saveData = {
|
|
2042
|
+
mediaAccessGranted: false,
|
|
2043
|
+
previousStepNumber: undefined
|
|
2044
|
+
};
|
|
2045
|
+
const $e5b92ac5fb47bd8c$var$script = {
|
|
2046
|
+
mediaAccessGranted: (message, arg)=>{
|
|
2047
|
+
console.log('state', arg);
|
|
2048
|
+
if (arg?.audio) message.addMediaContent('microphone', arg?.audio ? 'active' : 'inactive');
|
|
2049
|
+
if (arg?.video) message.addMediaContent('camera', arg?.video ? 'active' : 'inactive');
|
|
2050
|
+
let answer = false;
|
|
2051
|
+
if (!$e5b92ac5fb47bd8c$var$saveData.mediaAccessGranted && Boolean(arg?.audio || arg?.video)) {
|
|
2052
|
+
$e5b92ac5fb47bd8c$var$saveData.mediaAccessGranted = true;
|
|
2053
|
+
answer = true;
|
|
2054
|
+
}
|
|
2055
|
+
console.log('mediaAccessGranted', $e5b92ac5fb47bd8c$var$saveData.mediaAccessGranted, message.content);
|
|
2056
|
+
return {
|
|
2057
|
+
message: message,
|
|
2058
|
+
response: answer
|
|
2059
|
+
};
|
|
2060
|
+
},
|
|
2061
|
+
setStep: (message, arg)=>{
|
|
2062
|
+
message.addAppContent('event', `setStep: ${arg?.['stepIndex']}`);
|
|
2063
|
+
if ($e5b92ac5fb47bd8c$var$saveData.previousStepNumber === arg?.['stepIndex']) {
|
|
2064
|
+
$e5b92ac5fb47bd8c$var$saveData.previousStepNumber = arg?.['stepIndex'];
|
|
2065
|
+
return {
|
|
2066
|
+
message: message,
|
|
2067
|
+
response: false
|
|
2068
|
+
};
|
|
2069
|
+
}
|
|
2070
|
+
return {
|
|
2071
|
+
message: message,
|
|
2072
|
+
response: false
|
|
2073
|
+
};
|
|
2074
|
+
},
|
|
2075
|
+
startStep: (message, arg)=>{
|
|
2076
|
+
message.addAppContent('event', `startStep: ${arg?.['stepIndex']}`);
|
|
2077
|
+
message.addInstructionContent(`explain that the user need to click on the record round button to start recording or take the photo`);
|
|
2078
|
+
return {
|
|
2079
|
+
message: message,
|
|
2080
|
+
response: true
|
|
2081
|
+
};
|
|
2082
|
+
},
|
|
2083
|
+
photoTaken: (message)=>{
|
|
2084
|
+
message.addAppContent('event', 'photoTaken');
|
|
2085
|
+
return {
|
|
2086
|
+
message: message,
|
|
2087
|
+
response: false
|
|
2088
|
+
};
|
|
2089
|
+
},
|
|
2090
|
+
startRecord: (message)=>{
|
|
2091
|
+
message.addAppContent('event', 'startRecord');
|
|
2092
|
+
return {
|
|
2093
|
+
message: message,
|
|
2094
|
+
response: false
|
|
2095
|
+
};
|
|
2096
|
+
},
|
|
2097
|
+
videoTaken: (message)=>{
|
|
2098
|
+
message.addAppContent('event', 'videoTaken');
|
|
2099
|
+
return {
|
|
2100
|
+
message: message,
|
|
2101
|
+
response: false
|
|
2102
|
+
};
|
|
2103
|
+
},
|
|
2104
|
+
submissionStep: (message)=>{
|
|
2105
|
+
message.addAppContent('event', 'submissionStep open');
|
|
2106
|
+
message.addContent('request to click the send button to submit the assets');
|
|
2107
|
+
return {
|
|
2108
|
+
message: message,
|
|
2109
|
+
response: true
|
|
2110
|
+
};
|
|
2111
|
+
},
|
|
2112
|
+
sendAssetSuccess: (message)=>{
|
|
2113
|
+
message.addAppContent('event', 'sendAssetSuccess');
|
|
2114
|
+
message.addInstructionContent('simply say thank you and confirm assets have been uploaded.');
|
|
2115
|
+
return {
|
|
2116
|
+
message: message,
|
|
2117
|
+
response: true
|
|
2118
|
+
};
|
|
2119
|
+
},
|
|
2120
|
+
upload: (message, arg)=>{
|
|
2121
|
+
message.addAppContent('event', `uploaded: ${arg?.['type']}`);
|
|
2122
|
+
return {
|
|
2123
|
+
message: message,
|
|
2124
|
+
response: true
|
|
2125
|
+
};
|
|
2126
|
+
}
|
|
2127
|
+
};
|
|
2128
|
+
class $e5b92ac5fb47bd8c$export$2f8b47a141e57afc {
|
|
2129
|
+
static{
|
|
2130
|
+
this.instance = new $e5b92ac5fb47bd8c$export$2f8b47a141e57afc();
|
|
2131
|
+
}
|
|
2132
|
+
getData() {
|
|
2133
|
+
return $e5b92ac5fb47bd8c$var$saveData;
|
|
2134
|
+
}
|
|
2135
|
+
async event(event, arg) {
|
|
2136
|
+
try {
|
|
2137
|
+
const msg = new (0, $9479f834268e4c06$export$46bbf1c329ce020)();
|
|
2138
|
+
const scripted = $e5b92ac5fb47bd8c$var$script[event];
|
|
2139
|
+
console.log('script.event', event);
|
|
2140
|
+
if (scripted) {
|
|
2141
|
+
let content = scripted(msg, arg);
|
|
2142
|
+
console.log('script.event', content);
|
|
2143
|
+
const result = await (0, $94dc317d964bfa69$export$53479bc84d79bdc2).instance?.addScriptedMessage(content);
|
|
2144
|
+
console.log('result', result);
|
|
2145
|
+
if (content?.response) await (0, $94dc317d964bfa69$export$53479bc84d79bdc2).instance?.startResponse(event);
|
|
2146
|
+
} else console.log('script not found', event);
|
|
2147
|
+
} catch (error) {
|
|
2148
|
+
console.error('script.event error', error);
|
|
2149
|
+
}
|
|
2150
|
+
}
|
|
2151
|
+
}
|
|
2152
|
+
|
|
2153
|
+
|
|
882
2154
|
const $ab40fd7a219a4259$var$defaultConstraints = {
|
|
883
2155
|
video: {
|
|
884
2156
|
facingMode: 'user',
|
|
@@ -900,14 +2172,18 @@ const $ab40fd7a219a4259$var$defaultConstraints = {
|
|
|
900
2172
|
async function $ab40fd7a219a4259$export$9b072140089cdb1b(constraints = $ab40fd7a219a4259$var$defaultConstraints) {
|
|
901
2173
|
console.log('askTracks', 'constraints', constraints);
|
|
902
2174
|
const mediaStream = await navigator.mediaDevices.getUserMedia(constraints).catch(async (err)=>{
|
|
903
|
-
console.
|
|
2175
|
+
console.log(err);
|
|
904
2176
|
return undefined;
|
|
905
2177
|
});
|
|
906
|
-
|
|
907
|
-
return {
|
|
2178
|
+
const result = {
|
|
908
2179
|
audioTrack: mediaStream?.getAudioTracks()[0] || undefined,
|
|
909
2180
|
videoTrack: mediaStream?.getVideoTracks()[0] || undefined
|
|
910
2181
|
};
|
|
2182
|
+
const aiMessage = {};
|
|
2183
|
+
if (result.audioTrack) aiMessage.audio = 'true';
|
|
2184
|
+
if (result.videoTrack) aiMessage.video = 'true';
|
|
2185
|
+
(0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance?.event('mediaAccessGranted', aiMessage);
|
|
2186
|
+
return result;
|
|
911
2187
|
}
|
|
912
2188
|
async function $ab40fd7a219a4259$export$b4d1f928a50d3a7e() {
|
|
913
2189
|
let hasWebcam = false;
|
|
@@ -1893,6 +3169,8 @@ class $f1b448a7dd8f8e1c$export$79f141de891a5fed {
|
|
|
1893
3169
|
|
|
1894
3170
|
|
|
1895
3171
|
|
|
3172
|
+
|
|
3173
|
+
|
|
1896
3174
|
const $c31e3fb4360572af$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('StreamerClient');
|
|
1897
3175
|
$c31e3fb4360572af$var$log.info('StreamerClient', 'test');
|
|
1898
3176
|
const $c31e3fb4360572af$export$103bedf43ba882db = {
|
|
@@ -2077,6 +3355,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
|
|
|
2077
3355
|
}
|
|
2078
3356
|
async init(room, streamInfo, options = this.joinOptions) {
|
|
2079
3357
|
this.roomId = room;
|
|
3358
|
+
this.streamInfo = streamInfo;
|
|
2080
3359
|
this.peerId = (0, $3Sbms$v4)();
|
|
2081
3360
|
this.recordingGroup = options.recordingGroup;
|
|
2082
3361
|
this.joinOptions = options;
|
|
@@ -2725,6 +4004,14 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
|
|
|
2725
4004
|
detail: {}
|
|
2726
4005
|
});
|
|
2727
4006
|
this.dispatchEvent(event);
|
|
4007
|
+
this.liveAIAgent?.setTrack(track);
|
|
4008
|
+
}
|
|
4009
|
+
initLiveAIAgent(options) {
|
|
4010
|
+
if (!this.streamInfo) throw new Error('streamInfo not initialized');
|
|
4011
|
+
if (this.liveAIAgent) return this.liveAIAgent;
|
|
4012
|
+
this.liveAIAgent = new (0, $94dc317d964bfa69$export$53479bc84d79bdc2)();
|
|
4013
|
+
this.liveAIAgent?.init(options, this.streamInfo);
|
|
4014
|
+
return this.liveAIAgent;
|
|
2728
4015
|
}
|
|
2729
4016
|
muteMicrophone() {
|
|
2730
4017
|
if (this.micProducer) {
|
|
@@ -2794,6 +4081,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
|
|
|
2794
4081
|
this.tracksHandler.cleanAllStreams();
|
|
2795
4082
|
}
|
|
2796
4083
|
endCall() {
|
|
4084
|
+
this.liveAIAgent?.agent.stop();
|
|
2797
4085
|
this.release();
|
|
2798
4086
|
const event = new $c31e3fb4360572af$export$da085ff0f511c609('leaveRoom', {
|
|
2799
4087
|
detail: {}
|
|
@@ -3124,6 +4412,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
|
|
|
3124
4412
|
this.screenshare.error = error;
|
|
3125
4413
|
throw error;
|
|
3126
4414
|
});
|
|
4415
|
+
(0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance?.event('startScreenShare');
|
|
3127
4416
|
this.screenshare.error = undefined;
|
|
3128
4417
|
}
|
|
3129
4418
|
async _enableScreenshare(options = {
|
|
@@ -3193,6 +4482,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
|
|
|
3193
4482
|
this.dispatchEvent(event);
|
|
3194
4483
|
}
|
|
3195
4484
|
async disableScreenshare() {
|
|
4485
|
+
(0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance?.event('stopScreenShare');
|
|
3196
4486
|
if (this.screenshareVideoProducer) {
|
|
3197
4487
|
this.screenshareVideoProducer.close();
|
|
3198
4488
|
if (this.protoo?.connected) await this.protoo.request('closeProducer', {
|
|
@@ -3250,11 +4540,12 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
|
|
|
3250
4540
|
} else $c31e3fb4360572af$var$log.error('requestVideo', `Video consumer ${consumer} not found`);
|
|
3251
4541
|
}
|
|
3252
4542
|
async saveCapture(base64Image) {
|
|
3253
|
-
|
|
4543
|
+
const snapshot = await (0, $2114f1d49575b676$export$bfc52a1c1f84ba66)(this.config.apiUrl, {
|
|
3254
4544
|
token: this.roomId,
|
|
3255
4545
|
base64Image: base64Image,
|
|
3256
4546
|
recordingGroup: this.recordingGroup
|
|
3257
4547
|
});
|
|
4548
|
+
return snapshot;
|
|
3258
4549
|
}
|
|
3259
4550
|
async uploadAsset(file, type) {
|
|
3260
4551
|
return (0, $07e4bc01ab825269$export$6ad2c48011488f7)(this.config.apiUrl, {
|
|
@@ -3296,6 +4587,16 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
|
|
|
3296
4587
|
if (videoElement) image = await (0, $15ddac3121cc3a5d$export$674c90a250a8b2c5)(videoElement, this.camera);
|
|
3297
4588
|
else if (this.webcamProducer && this.webcamProducer.track) image = await (0, $15ddac3121cc3a5d$export$4a210166cc9cb64b)(this.webcamProducer.track);
|
|
3298
4589
|
else throw new Error('no video to capture');
|
|
4590
|
+
//this.liveAIAgent?.appImage(image);
|
|
4591
|
+
return image;
|
|
4592
|
+
} else throw new Error('feature not allowed');
|
|
4593
|
+
}
|
|
4594
|
+
async captureScreenShare() {
|
|
4595
|
+
if (this.permissions.find((permission)=>permission === 'instant_picture')) {
|
|
4596
|
+
let image;
|
|
4597
|
+
if (this.screenshareVideoProducer && this.screenshareVideoProducer.track) image = await (0, $15ddac3121cc3a5d$export$4a210166cc9cb64b)(this.screenshareVideoProducer.track);
|
|
4598
|
+
else throw new Error('no video to capture');
|
|
4599
|
+
//this.liveAIAgent?.appImage(image);
|
|
3299
4600
|
return image;
|
|
3300
4601
|
} else throw new Error('feature not allowed');
|
|
3301
4602
|
}
|
|
@@ -3704,6 +5005,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
|
|
|
3704
5005
|
}
|
|
3705
5006
|
|
|
3706
5007
|
|
|
5008
|
+
|
|
3707
5009
|
const $c9e496369b59be7a$export$2f377c2162fd02b2 = new (0, $c31e3fb4360572af$export$2e2bcd8739ae039)();
|
|
3708
5010
|
|
|
3709
5011
|
|
|
@@ -5304,7 +6606,7 @@ const $5df4888ed259ef8a$export$3e37751cffc31fd8 = [
|
|
|
5304
6606
|
|
|
5305
6607
|
|
|
5306
6608
|
|
|
5307
|
-
const $2a1d7886742be527$var$mixpanelToken =
|
|
6609
|
+
const $2a1d7886742be527$var$mixpanelToken = "04fc31be9916734b6834a6a8560fe3ca";
|
|
5308
6610
|
const $2a1d7886742be527$export$18c6473b5b45bda1 = $2a1d7886742be527$var$mixpanelToken ? (0, $3Sbms$mixpanelbrowsersrcloadersloadermodulecore).init($2a1d7886742be527$var$mixpanelToken, {
|
|
5309
6611
|
track_pageview: false,
|
|
5310
6612
|
autocapture: false
|
|
@@ -9478,13 +10780,6 @@ const $15a01b611391c1e7$export$494039379563c94d = async (options)=>{
|
|
|
9478
10780
|
|
|
9479
10781
|
|
|
9480
10782
|
|
|
9481
|
-
const $75812785bb101fee$export$784df5c7a561530 = (0, $3Sbms$createContext)({});
|
|
9482
|
-
const $75812785bb101fee$export$2174f25d572f9f31 = ()=>{
|
|
9483
|
-
const context = (0, $3Sbms$useContext)($75812785bb101fee$export$784df5c7a561530);
|
|
9484
|
-
return context;
|
|
9485
|
-
};
|
|
9486
|
-
|
|
9487
|
-
|
|
9488
10783
|
|
|
9489
10784
|
|
|
9490
10785
|
|
|
@@ -9564,6 +10859,9 @@ const $a646b6b865932ef4$export$1cdb0c90ced085 = ({ children: children, fileInput
|
|
|
9564
10859
|
networkIssue: false,
|
|
9565
10860
|
isUploaded: true
|
|
9566
10861
|
});
|
|
10862
|
+
(0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance.event('upload', {
|
|
10863
|
+
type: type
|
|
10864
|
+
});
|
|
9567
10865
|
flowStepsState.open();
|
|
9568
10866
|
} catch (error) {
|
|
9569
10867
|
reportError({
|
|
@@ -9674,10 +10972,147 @@ const $0ec22322fcf8a874$export$a6c85b7a72deaeef = ()=>{
|
|
|
9674
10972
|
|
|
9675
10973
|
|
|
9676
10974
|
|
|
10975
|
+
|
|
10976
|
+
|
|
10977
|
+
|
|
10978
|
+
|
|
10979
|
+
|
|
10980
|
+
|
|
10981
|
+
const $c44648bb74fe2fd0$export$18ae0c9fd28c991e = ({ color: color = 'white' })=>{
|
|
10982
|
+
return /*#__PURE__*/ (0, $3Sbms$jsxs)("svg", {
|
|
10983
|
+
width: "24",
|
|
10984
|
+
height: "25",
|
|
10985
|
+
viewBox: "0 0 24 25",
|
|
10986
|
+
fill: "none",
|
|
10987
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
10988
|
+
children: [
|
|
10989
|
+
/*#__PURE__*/ (0, $3Sbms$jsx)("path", {
|
|
10990
|
+
d: "M8.84204 3.15789C8.84204 0.557368 9.39941 0 11.9999 0C14.6005 0 15.1578 0.557368 15.1578 3.15789C15.1578 5.75842 14.6005 6.31579 11.9999 6.31579C9.39941 6.31579 8.84204 5.75842 8.84204 3.15789Z",
|
|
10991
|
+
fill: "#121212"
|
|
10992
|
+
}),
|
|
10993
|
+
/*#__PURE__*/ (0, $3Sbms$jsx)("rect", {
|
|
10994
|
+
x: "10.7368",
|
|
10995
|
+
y: "3.15771",
|
|
10996
|
+
width: "2.52632",
|
|
10997
|
+
height: "5.05263",
|
|
10998
|
+
fill: "#121212"
|
|
10999
|
+
}),
|
|
11000
|
+
/*#__PURE__*/ (0, $3Sbms$jsx)("path", {
|
|
11001
|
+
fillRule: "evenodd",
|
|
11002
|
+
clipRule: "evenodd",
|
|
11003
|
+
d: "M12 7.5791C2.118 7.5791 0 9.02826 0 15.7896C0 22.551 2.118 24.0002 12 24.0002C21.882 24.0002 24 22.551 24 15.7896C24 9.02826 21.882 7.5791 12 7.5791ZM12 10.1054C4.29136 10.1054 2.63917 11.38 2.63917 15.7896C2.63917 20.1992 4.29136 21.4738 12 21.4738C19.7086 21.4738 21.3608 20.1992 21.3608 15.7896C21.3608 11.38 19.7086 10.1054 12 10.1054Z",
|
|
11004
|
+
fill: "#121212"
|
|
11005
|
+
}),
|
|
11006
|
+
/*#__PURE__*/ (0, $3Sbms$jsx)("path", {
|
|
11007
|
+
d: "M2.52637 15.7897C2.52637 11.1087 4.19847 10.1055 12.0001 10.1055C19.8016 10.1055 21.4737 11.1087 21.4737 15.7897C21.4737 20.4706 19.8016 21.4739 12.0001 21.4739C4.19847 21.4739 2.52637 20.4706 2.52637 15.7897Z",
|
|
11008
|
+
fill: color
|
|
11009
|
+
}),
|
|
11010
|
+
/*#__PURE__*/ (0, $3Sbms$jsx)("ellipse", {
|
|
11011
|
+
cx: "7.89462",
|
|
11012
|
+
cy: "15.7895",
|
|
11013
|
+
rx: "1.57895",
|
|
11014
|
+
ry: "2.52632",
|
|
11015
|
+
fill: "#121212"
|
|
11016
|
+
}),
|
|
11017
|
+
/*#__PURE__*/ (0, $3Sbms$jsx)("ellipse", {
|
|
11018
|
+
cx: "16.1053",
|
|
11019
|
+
cy: "15.7895",
|
|
11020
|
+
rx: "1.57895",
|
|
11021
|
+
ry: "2.52632",
|
|
11022
|
+
fill: "#121212"
|
|
11023
|
+
})
|
|
11024
|
+
]
|
|
11025
|
+
});
|
|
11026
|
+
};
|
|
11027
|
+
|
|
11028
|
+
|
|
11029
|
+
|
|
11030
|
+
|
|
11031
|
+
|
|
11032
|
+
const $27cd2372f8d32f4c$var$browser = (0, $3Sbms$bowser).parse(window.navigator.userAgent);
|
|
11033
|
+
const $27cd2372f8d32f4c$export$e3cee2ebbbe23463 = ()=>{
|
|
11034
|
+
const [talking, setTalking] = (0, $3Sbms$useState)(false);
|
|
11035
|
+
const isDesktop = $27cd2372f8d32f4c$var$browser.platform.type === 'desktop';
|
|
11036
|
+
const onAIStarted = (event)=>{
|
|
11037
|
+
console.log('onAIStarted:', event);
|
|
11038
|
+
setTalking(true);
|
|
11039
|
+
};
|
|
11040
|
+
const onAIStopped = (event)=>{
|
|
11041
|
+
console.log('onAIStopped:', event);
|
|
11042
|
+
setTalking(false);
|
|
11043
|
+
};
|
|
11044
|
+
(0, $3Sbms$useEffect)(()=>{
|
|
11045
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener('aiStarted', onAIStarted);
|
|
11046
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener('aiStopped', onAIStopped);
|
|
11047
|
+
return ()=>{
|
|
11048
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener('aiStarted', onAIStarted);
|
|
11049
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener('aiStopped', onAIStopped);
|
|
11050
|
+
};
|
|
11051
|
+
}, []);
|
|
11052
|
+
const [aiMessage, setAiMessage] = (0, $3Sbms$useState)('');
|
|
11053
|
+
const onAITextMessage = (0, $3Sbms$useCallback)((event)=>{
|
|
11054
|
+
setAiMessage(event.detail.text);
|
|
11055
|
+
}, [
|
|
11056
|
+
setAiMessage
|
|
11057
|
+
]);
|
|
11058
|
+
(0, $3Sbms$useEffect)(()=>{
|
|
11059
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener('aiTextMessage', onAITextMessage);
|
|
11060
|
+
return ()=>{
|
|
11061
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener('aiTextMessage', onAITextMessage);
|
|
11062
|
+
};
|
|
11063
|
+
}, [
|
|
11064
|
+
onAITextMessage
|
|
11065
|
+
]);
|
|
11066
|
+
return /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Popover), {
|
|
11067
|
+
open: aiMessage !== '',
|
|
11068
|
+
onOpenChange: ()=>{
|
|
11069
|
+
console.log('onClick');
|
|
11070
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).captureVideo().catch(console.error);
|
|
11071
|
+
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).captureScreenShare().catch(console.error);
|
|
11072
|
+
},
|
|
11073
|
+
children: [
|
|
11074
|
+
/*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$PopoverTrigger), {
|
|
11075
|
+
className: "relative w-10 h-10 p-2 rounded-full bg-black shadow-sm z-98",
|
|
11076
|
+
children: [
|
|
11077
|
+
talking && /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
|
|
11078
|
+
className: "absolute top-0 right-0 p-[2px] rounded-full bg-blue-700",
|
|
11079
|
+
children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$DotsHorizontalIcon), {
|
|
11080
|
+
size: 12,
|
|
11081
|
+
className: "text-black"
|
|
11082
|
+
})
|
|
11083
|
+
}),
|
|
11084
|
+
/*#__PURE__*/ (0, $3Sbms$jsx)((0, $c44648bb74fe2fd0$export$18ae0c9fd28c991e), {})
|
|
11085
|
+
]
|
|
11086
|
+
}),
|
|
11087
|
+
/*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$PopoverContent), {
|
|
11088
|
+
side: "bottom",
|
|
11089
|
+
sideOffset: 13,
|
|
11090
|
+
className: (0, $3Sbms$classnames)('flex flex-col border-0 rounded-2xl w-fit max-w-[540px] max-h-[75dvh] z-100', {
|
|
11091
|
+
'max-w-[90vw]': !isDesktop
|
|
11092
|
+
}),
|
|
11093
|
+
onInteractOutside: (e)=>e.preventDefault(),
|
|
11094
|
+
onOpenAutoFocus: (e)=>e.preventDefault(),
|
|
11095
|
+
children: [
|
|
11096
|
+
/*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$PopoverArrow), {
|
|
11097
|
+
className: "fill-white"
|
|
11098
|
+
}),
|
|
11099
|
+
/*#__PURE__*/ (0, $3Sbms$jsx)("div", {
|
|
11100
|
+
className: "text-black-1000",
|
|
11101
|
+
children: aiMessage
|
|
11102
|
+
})
|
|
11103
|
+
]
|
|
11104
|
+
})
|
|
11105
|
+
]
|
|
11106
|
+
});
|
|
11107
|
+
};
|
|
11108
|
+
|
|
11109
|
+
|
|
11110
|
+
|
|
9677
11111
|
const $b4057e63640314b7$var$browser = (0, $3Sbms$bowser).parse(window.navigator.userAgent);
|
|
9678
11112
|
const $b4057e63640314b7$export$aa00db7a33d4c484 = ()=>{
|
|
9679
11113
|
const { t: t } = (0, $3Sbms$useTranslation)();
|
|
9680
11114
|
const { isRecording: isRecording, openQRCodeModal: openQRCodeModal, flowStepsState: flowStepsState } = (0, $75812785bb101fee$export$2174f25d572f9f31)();
|
|
11115
|
+
const { streamInfo: streamInfo } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
|
|
9681
11116
|
const settingsDialogState = (0, $3Sbms$useDialogState)();
|
|
9682
11117
|
const isMedium = window.matchMedia('(min-width: 768px)').matches;
|
|
9683
11118
|
const isDesktop = $b4057e63640314b7$var$browser.platform.type === 'desktop';
|
|
@@ -9705,7 +11140,8 @@ const $b4057e63640314b7$export$aa00db7a33d4c484 = ()=>{
|
|
|
9705
11140
|
})
|
|
9706
11141
|
}),
|
|
9707
11142
|
/*#__PURE__*/ (0, $3Sbms$jsx)("div", {
|
|
9708
|
-
className: "flex justify-center flex-1"
|
|
11143
|
+
className: "flex justify-center flex-1",
|
|
11144
|
+
children: streamInfo.flow.config?.real_time_assistant && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $27cd2372f8d32f4c$export$e3cee2ebbbe23463), {})
|
|
9709
11145
|
}),
|
|
9710
11146
|
/*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
|
|
9711
11147
|
className: "flex justify-end gap-2 flex-1 z-30",
|
|
@@ -10278,6 +11714,8 @@ const $a5dd8f67439dd9eb$export$931d641a2a152cf = ()=>{
|
|
|
10278
11714
|
|
|
10279
11715
|
|
|
10280
11716
|
|
|
11717
|
+
|
|
11718
|
+
let $24e31aa1532c4049$var$recordInterval = undefined;
|
|
10281
11719
|
const $24e31aa1532c4049$export$f9da3144ae2525a3 = ()=>{
|
|
10282
11720
|
const { streamUIContainerRef: streamUIContainerRef } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
|
|
10283
11721
|
const { t: t } = (0, $3Sbms$useTranslation)();
|
|
@@ -10303,6 +11741,8 @@ const $24e31aa1532c4049$export$f9da3144ae2525a3 = ()=>{
|
|
|
10303
11741
|
flowStepsState.open();
|
|
10304
11742
|
try {
|
|
10305
11743
|
const image = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).captureVideo(videoElementRef.current);
|
|
11744
|
+
await (0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance.event('photoTaken');
|
|
11745
|
+
await (0, $94dc317d964bfa69$export$53479bc84d79bdc2).instance?.analyzeImageResult(image);
|
|
10306
11746
|
const { url: url, filename: filename } = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).saveCapture(image);
|
|
10307
11747
|
addAsset({
|
|
10308
11748
|
stepToken: currentStep.token,
|
|
@@ -10334,6 +11774,10 @@ const $24e31aa1532c4049$export$f9da3144ae2525a3 = ()=>{
|
|
|
10334
11774
|
mode: mode,
|
|
10335
11775
|
action: 'stop'
|
|
10336
11776
|
});
|
|
11777
|
+
if (mode !== 'audio') {
|
|
11778
|
+
clearInterval($24e31aa1532c4049$var$recordInterval);
|
|
11779
|
+
(0, $94dc317d964bfa69$export$53479bc84d79bdc2).instance?.analyzeVideo();
|
|
11780
|
+
}
|
|
10337
11781
|
try {
|
|
10338
11782
|
await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).stopRecord();
|
|
10339
11783
|
if (mode === 'screen') (0, $c9e496369b59be7a$export$2f377c2162fd02b2).disableScreenshare().catch((error)=>{
|
|
@@ -10372,6 +11816,7 @@ const $24e31aa1532c4049$export$f9da3144ae2525a3 = ()=>{
|
|
|
10372
11816
|
const onCountdownFinish = async ()=>{
|
|
10373
11817
|
try {
|
|
10374
11818
|
isVideoBotEnabled;
|
|
11819
|
+
(0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance.event('startRecord');
|
|
10375
11820
|
await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).startRecord();
|
|
10376
11821
|
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).audioLevel?.startAverageAnalysis();
|
|
10377
11822
|
setShowCountdown(false);
|
|
@@ -10386,6 +11831,16 @@ const $24e31aa1532c4049$export$f9da3144ae2525a3 = ()=>{
|
|
|
10386
11831
|
} catch (err) {
|
|
10387
11832
|
console.warn("Couldn't capture video for thumbnail", err);
|
|
10388
11833
|
}
|
|
11834
|
+
if (mode !== 'audio') $24e31aa1532c4049$var$recordInterval = window.setInterval(()=>{
|
|
11835
|
+
const addImage = async ()=>{
|
|
11836
|
+
let image = undefined;
|
|
11837
|
+
console.log(mode);
|
|
11838
|
+
if (mode === 'screen') image = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).captureScreenShare().catch(console.error);
|
|
11839
|
+
else image = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).captureVideo(undefined).catch(console.error);
|
|
11840
|
+
if (image) await (0, $94dc317d964bfa69$export$53479bc84d79bdc2).instance?.addVideoImage(image);
|
|
11841
|
+
};
|
|
11842
|
+
addImage();
|
|
11843
|
+
}, 2000);
|
|
10389
11844
|
setIncomingAsset({
|
|
10390
11845
|
mode: mode,
|
|
10391
11846
|
thumbnailUrl: thumbnail || undefined,
|
|
@@ -11259,6 +12714,8 @@ const $c17ed5e6f3ec1094$export$60c4050edc47776a = ({ streamToken: streamToken, o
|
|
|
11259
12714
|
};
|
|
11260
12715
|
|
|
11261
12716
|
|
|
12717
|
+
|
|
12718
|
+
|
|
11262
12719
|
const $59f1fdae22c68b94$export$423b43901b3e0d2e = ({ currentStep: currentStep, onNextClick: onNextClick })=>{
|
|
11263
12720
|
const { t: t } = (0, $3Sbms$useTranslation)();
|
|
11264
12721
|
const { streamInfo: streamInfo, options: options } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
|
|
@@ -11357,6 +12814,10 @@ const $59f1fdae22c68b94$export$423b43901b3e0d2e = ({ currentStep: currentStep, o
|
|
|
11357
12814
|
variant: "secondary",
|
|
11358
12815
|
onClick: ()=>{
|
|
11359
12816
|
flowStepsState.close();
|
|
12817
|
+
(0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance?.event('startStep', {
|
|
12818
|
+
stepIndex: `${currentStepIndex + 1}`
|
|
12819
|
+
});
|
|
12820
|
+
(0, $94dc317d964bfa69$export$53479bc84d79bdc2).instance?.sendInitialMessage();
|
|
11360
12821
|
(0, $2a1d7886742be527$export$18c6473b5b45bda1)?.track('Add new clip', {
|
|
11361
12822
|
alreadySent: false
|
|
11362
12823
|
}, {
|
|
@@ -11373,6 +12834,11 @@ const $59f1fdae22c68b94$export$423b43901b3e0d2e = ({ currentStep: currentStep, o
|
|
|
11373
12834
|
}),
|
|
11374
12835
|
/*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Button), {
|
|
11375
12836
|
onClick: ()=>{
|
|
12837
|
+
const n = streamInfo.flow.steps.findIndex((step)=>step.token === currentStep.token);
|
|
12838
|
+
(0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance?.event('startStep', {
|
|
12839
|
+
stepIndex: `${n + 1}`
|
|
12840
|
+
});
|
|
12841
|
+
(0, $94dc317d964bfa69$export$53479bc84d79bdc2).instance?.sendInitialMessage();
|
|
11376
12842
|
if (currentStep.token === 'kyc') setShowKycSubStep(true);
|
|
11377
12843
|
else onNextClick();
|
|
11378
12844
|
},
|
|
@@ -11493,6 +12959,7 @@ const $e7cb1b9cf7f73f20$export$ce05094b93c0f011 = ()=>{
|
|
|
11493
12959
|
return results;
|
|
11494
12960
|
},
|
|
11495
12961
|
onSuccess: ()=>{
|
|
12962
|
+
(0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance?.event('sendAssetSuccess');
|
|
11496
12963
|
(0, $c9e496369b59be7a$export$2f377c2162fd02b2).release();
|
|
11497
12964
|
flowSourceAction.onRecorderEnd();
|
|
11498
12965
|
},
|
|
@@ -11571,6 +13038,7 @@ const $e20a0174cf9bf8da$export$16028ed4f0100bfc = ({ asset: asset, url: url })=>
|
|
|
11571
13038
|
|
|
11572
13039
|
|
|
11573
13040
|
|
|
13041
|
+
|
|
11574
13042
|
const $c4f41e7ef04fee7d$export$5433a7b0165240b6 = ()=>{
|
|
11575
13043
|
const { streamInfo: streamInfo } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
|
|
11576
13044
|
const { isRecording: isRecording, currentStep: currentStep, flowStepsState: flowStepsState, assets: assets, setCurrentStep: setCurrentStep, openedAsset: openedAsset } = (0, $75812785bb101fee$export$2174f25d572f9f31)();
|
|
@@ -11590,6 +13058,11 @@ const $c4f41e7ef04fee7d$export$5433a7b0165240b6 = ()=>{
|
|
|
11590
13058
|
const currentStepAssets = assets.filter((asset)=>asset.stepToken === currentStep?.token);
|
|
11591
13059
|
const nextStep = streamInfo.flow.steps[currentStepIndex + 1];
|
|
11592
13060
|
const isMedium = window.matchMedia('(min-width: 768px)').matches;
|
|
13061
|
+
(0, $3Sbms$useEffect)(()=>{
|
|
13062
|
+
if (showSubmissionStep) (0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance.event('submissionStep');
|
|
13063
|
+
}, [
|
|
13064
|
+
showSubmissionStep
|
|
13065
|
+
]);
|
|
11593
13066
|
return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $79bae5c9904f9029$export$56d72fe406945300), {
|
|
11594
13067
|
type: isMedium ? 'alert-dialog' : 'sheet',
|
|
11595
13068
|
showClose: false,
|
|
@@ -11653,7 +13126,7 @@ const $c4f41e7ef04fee7d$export$5433a7b0165240b6 = ()=>{
|
|
|
11653
13126
|
|
|
11654
13127
|
const $d6943d128e6c8399$var$browser = (0, $3Sbms$bowser).parse(window.navigator.userAgent);
|
|
11655
13128
|
const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
|
|
11656
|
-
const { streamInfo: streamInfo } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
|
|
13129
|
+
const { streamInfo: streamInfo, language: language } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
|
|
11657
13130
|
const [currentStep, setCurrentStep] = (0, $3Sbms$useState)(streamInfo.flow?.steps[0] || null);
|
|
11658
13131
|
const [mode, setMode] = (0, $3Sbms$useState)(currentStep?.default_type || 'video');
|
|
11659
13132
|
const [assets, setAssets] = (0, $3Sbms$useState)([]);
|
|
@@ -11676,6 +13149,16 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
|
|
|
11676
13149
|
const switchToMobileModalState = (0, $3Sbms$useDialogState)({
|
|
11677
13150
|
defaultOpen: showSwitchToMobileModal
|
|
11678
13151
|
});
|
|
13152
|
+
(0, $3Sbms$useEffect)(()=>{
|
|
13153
|
+
if (streamInfo?.flow?.config?.real_time_assistant) (0, $c9e496369b59be7a$export$2f377c2162fd02b2).initLiveAIAgent({
|
|
13154
|
+
language: language,
|
|
13155
|
+
voice: 'alloy'
|
|
13156
|
+
});
|
|
13157
|
+
}, [
|
|
13158
|
+
showSwitchToMobileModal,
|
|
13159
|
+
language,
|
|
13160
|
+
streamInfo?.flow?.config?.real_time_assistant
|
|
13161
|
+
]);
|
|
11679
13162
|
const { t: t } = (0, $3Sbms$useTranslation)();
|
|
11680
13163
|
const reportError = (0, $b57f32aadf2afba1$export$5a5695b638d078e7)();
|
|
11681
13164
|
const devicesState = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getDevicesState();
|
|
@@ -11761,6 +13244,7 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
|
|
|
11761
13244
|
networkIssue: networkIssue,
|
|
11762
13245
|
isUploaded: false
|
|
11763
13246
|
});
|
|
13247
|
+
(0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance.event('videoTaken');
|
|
11764
13248
|
}
|
|
11765
13249
|
setNetworkIssue(false);
|
|
11766
13250
|
};
|
|
@@ -11803,6 +13287,17 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
|
|
|
11803
13287
|
reportError,
|
|
11804
13288
|
t
|
|
11805
13289
|
]);
|
|
13290
|
+
(0, $3Sbms$useEffect)(()=>{
|
|
13291
|
+
if (currentStep) {
|
|
13292
|
+
const n = streamInfo.flow.steps.findIndex((step)=>step.token === currentStep.token);
|
|
13293
|
+
(0, $e5b92ac5fb47bd8c$export$2f8b47a141e57afc).instance?.event('setStep', {
|
|
13294
|
+
stepIndex: `${n + 1}`
|
|
13295
|
+
});
|
|
13296
|
+
}
|
|
13297
|
+
}, [
|
|
13298
|
+
currentStep,
|
|
13299
|
+
streamInfo.flow.steps
|
|
13300
|
+
]);
|
|
11806
13301
|
return /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
|
|
11807
13302
|
className: "flex flex-col justify-between w-full h-full gap-6 p-6 bg-gray-25 max-sm:gap-4 max-sm:p-4",
|
|
11808
13303
|
children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $75812785bb101fee$export$784df5c7a561530).Provider, {
|
|
@@ -11836,7 +13331,9 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
|
|
|
11836
13331
|
children: [
|
|
11837
13332
|
/*#__PURE__*/ (0, $3Sbms$jsx)((0, $cdbb2eb5311c616f$export$f9d8408fefd786da), {
|
|
11838
13333
|
state: switchToMobileModalState,
|
|
11839
|
-
onClose: ()=>
|
|
13334
|
+
onClose: ()=>{
|
|
13335
|
+
flowStepsState.open();
|
|
13336
|
+
}
|
|
11840
13337
|
}),
|
|
11841
13338
|
/*#__PURE__*/ (0, $3Sbms$jsx)((0, $c4f41e7ef04fee7d$export$5433a7b0165240b6), {}),
|
|
11842
13339
|
/*#__PURE__*/ (0, $3Sbms$jsx)((0, $b4057e63640314b7$export$aa00db7a33d4c484), {}),
|
|
@@ -12820,7 +14317,7 @@ var $26ed036cbc17809a$export$2e2bcd8739ae039 = $26ed036cbc17809a$var$StreamUI;
|
|
|
12820
14317
|
|
|
12821
14318
|
|
|
12822
14319
|
var $1e2747ca72d0ab49$exports = {};
|
|
12823
|
-
$1e2747ca72d0ab49$exports = "/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */\n@layer properties {\n @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {\n *, :before, :after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-divide-x-reverse: 0;\n --tw-border-style: solid;\n --tw-divide-y-reverse: 0;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --spacing: .25rem;\n --container-xs: 20rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-sm: .25rem;\n --radius-md: .375rem;\n --radius-lg: .5rem;\n --radius-xl: .75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --ease-in-out: cubic-bezier(.4, 0, .2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;\n --blur-xs: 4px;\n --blur-lg: 16px;\n --default-transition-duration: .15s;\n --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --text-xs: 12px;\n --text-xs--line-height: 16px;\n --text-xs--letter-spacing: -.02em;\n --text-sm: 14px;\n --text-sm--line-height: 20px;\n --text-sm--letter-spacing: -.02em;\n --text-md: 16px;\n --text-md--line-height: 20px;\n --text-md--letter-spacing: -.02em;\n --text-lg: 18px;\n --text-lg--line-height: 22px;\n --text-lg--letter-spacing: -.02em;\n --text-xl: 20px;\n --text-xl--line-height: 24px;\n --text-xl--letter-spacing: -.02em;\n --text-2xl: 24px;\n --text-2xl--line-height: 32px;\n --text-2xl--letter-spacing: -.02em;\n --text-3xl: 30px;\n --text-3xl--line-height: 38px;\n --text-3xl--letter-spacing: -.02em;\n --text-4xl: 36px;\n --text-4xl--line-height: 44px;\n --text-4xl--letter-spacing: -.02em;\n --text-5xl: 48px;\n --text-5xl--line-height: 60px;\n --text-5xl--letter-spacing: -.02em;\n --text-6xl: 60px;\n --text-6xl--line-height: 72px;\n --text-6xl--letter-spacing: -.02em;\n --text-7xl: 72px;\n --text-7xl--line-height: 90px;\n --text-7xl--letter-spacing: -.02em;\n --animate-accordion-down: accordion-down .2s ease-out;\n --animate-accordion-up: accordion-up .2s ease-out;\n --color-black: var(--color-black);\n --color-white: var(--color-white);\n --color-gray-25: var(--color-gray-25);\n --color-gray-50: var(--color-gray-50);\n --color-gray-100: var(--color-gray-100);\n --color-gray-200: var(--color-gray-200);\n --color-gray-300: var(--color-gray-300);\n --color-gray-400: var(--color-gray-400);\n --color-gray-500: var(--color-gray-500);\n --color-gray-600: var(--color-gray-600);\n --color-gray-700: var(--color-gray-700);\n --color-gray-800: var(--color-gray-800);\n --color-gray-900: var(--color-gray-900);\n --color-gray-1000: var(--color-gray-1000);\n --color-blue-25: var(--color-blue-25);\n --color-blue-50: var(--color-blue-50);\n --color-blue-100: var(--color-blue-100);\n --color-blue-200: var(--color-blue-200);\n --color-blue-300: var(--color-blue-300);\n --color-blue-400: var(--color-blue-400);\n --color-blue-500: var(--color-blue-500);\n --color-blue-600: var(--color-blue-600);\n --color-blue-700: var(--color-blue-700);\n --color-blue-800: var(--color-blue-800);\n --color-blue-900: var(--color-blue-900);\n --color-blue-1000: var(--color-blue-1000);\n --color-red-25: var(--color-red-25);\n --color-red-50: var(--color-red-50);\n --color-red-100: var(--color-red-100);\n --color-red-200: var(--color-red-200);\n --color-red-300: var(--color-red-300);\n --color-red-400: var(--color-red-400);\n --color-red-500: var(--color-red-500);\n --color-red-600: var(--color-red-600);\n --color-red-700: var(--color-red-700);\n --color-red-800: var(--color-red-800);\n --color-red-900: var(--color-red-900);\n --color-red-1000: var(--color-red-1000);\n --color-amber-25: var(--color-amber-25);\n --color-amber-50: var(--color-amber-50);\n --color-amber-100: var(--color-amber-100);\n --color-amber-200: var(--color-amber-200);\n --color-amber-300: var(--color-amber-300);\n --color-amber-400: var(--color-amber-400);\n --color-amber-500: var(--color-amber-500);\n --color-amber-600: var(--color-amber-600);\n --color-amber-700: var(--color-amber-700);\n --color-amber-800: var(--color-amber-800);\n --color-amber-900: var(--color-amber-900);\n --color-amber-1000: var(--color-amber-1000);\n --color-green-25: var(--color-green-25);\n --color-green-50: var(--color-green-50);\n --color-green-100: var(--color-green-100);\n --color-green-200: var(--color-green-200);\n --color-green-300: var(--color-green-300);\n --color-green-400: var(--color-green-400);\n --color-green-500: var(--color-green-500);\n --color-green-600: var(--color-green-600);\n --color-green-700: var(--color-green-700);\n --color-green-800: var(--color-green-800);\n --color-green-900: var(--color-green-900);\n --color-green-1000: var(--color-green-1000);\n --color-tomato-25: var(--color-tomato-25);\n --color-tomato-50: var(--color-tomato-50);\n --color-tomato-100: var(--color-tomato-100);\n --color-tomato-200: var(--color-tomato-200);\n --color-tomato-300: var(--color-tomato-300);\n --color-tomato-400: var(--color-tomato-400);\n --color-tomato-500: var(--color-tomato-500);\n --color-tomato-600: var(--color-tomato-600);\n --color-tomato-700: var(--color-tomato-700);\n --color-tomato-800: var(--color-tomato-800);\n --color-tomato-900: var(--color-tomato-900);\n --color-tomato-1000: var(--color-tomato-1000);\n --color-crimson-25: var(--color-crimson-25);\n --color-crimson-50: var(--color-crimson-50);\n --color-crimson-100: var(--color-crimson-100);\n --color-crimson-200: var(--color-crimson-200);\n --color-crimson-300: var(--color-crimson-300);\n --color-crimson-400: var(--color-crimson-400);\n --color-crimson-500: var(--color-crimson-500);\n --color-crimson-600: var(--color-crimson-600);\n --color-crimson-700: var(--color-crimson-700);\n --color-crimson-800: var(--color-crimson-800);\n --color-crimson-900: var(--color-crimson-900);\n --color-crimson-1000: var(--color-crimson-1000);\n --color-pink-25: var(--color-pink-25);\n --color-pink-50: var(--color-pink-50);\n --color-pink-100: var(--color-pink-100);\n --color-pink-200: var(--color-pink-200);\n --color-pink-300: var(--color-pink-300);\n --color-pink-400: var(--color-pink-400);\n --color-pink-500: var(--color-pink-500);\n --color-pink-600: var(--color-pink-600);\n --color-pink-700: var(--color-pink-700);\n --color-pink-800: var(--color-pink-800);\n --color-pink-900: var(--color-pink-900);\n --color-pink-1000: var(--color-pink-1000);\n --color-plum-25: var(--color-plum-25);\n --color-plum-50: var(--color-plum-50);\n --color-plum-100: var(--color-plum-100);\n --color-plum-200: var(--color-plum-200);\n --color-plum-300: var(--color-plum-300);\n --color-plum-400: var(--color-plum-400);\n --color-plum-500: var(--color-plum-500);\n --color-plum-600: var(--color-plum-600);\n --color-plum-700: var(--color-plum-700);\n --color-plum-800: var(--color-plum-800);\n --color-plum-900: var(--color-plum-900);\n --color-plum-1000: var(--color-plum-1000);\n --color-purple-25: var(--color-purple-25);\n --color-purple-50: var(--color-purple-50);\n --color-purple-100: var(--color-purple-100);\n --color-purple-200: var(--color-purple-200);\n --color-purple-300: var(--color-purple-300);\n --color-purple-400: var(--color-purple-400);\n --color-purple-500: var(--color-purple-500);\n --color-purple-600: var(--color-purple-600);\n --color-purple-700: var(--color-purple-700);\n --color-purple-800: var(--color-purple-800);\n --color-purple-900: var(--color-purple-900);\n --color-purple-1000: var(--color-purple-1000);\n --color-violet-25: var(--color-violet-25);\n --color-violet-50: var(--color-violet-50);\n --color-violet-100: var(--color-violet-100);\n --color-violet-200: var(--color-violet-200);\n --color-violet-300: var(--color-violet-300);\n --color-violet-400: var(--color-violet-400);\n --color-violet-500: var(--color-violet-500);\n --color-violet-600: var(--color-violet-600);\n --color-violet-700: var(--color-violet-700);\n --color-violet-800: var(--color-violet-800);\n --color-violet-900: var(--color-violet-900);\n --color-violet-1000: var(--color-violet-1000);\n --color-indigo-25: var(--color-indigo-25);\n --color-indigo-50: var(--color-indigo-50);\n --color-indigo-100: var(--color-indigo-100);\n --color-indigo-200: var(--color-indigo-200);\n --color-indigo-300: var(--color-indigo-300);\n --color-indigo-400: var(--color-indigo-400);\n --color-indigo-500: var(--color-indigo-500);\n --color-indigo-600: var(--color-indigo-600);\n --color-indigo-700: var(--color-indigo-700);\n --color-indigo-800: var(--color-indigo-800);\n --color-indigo-900: var(--color-indigo-900);\n --color-indigo-1000: var(--color-indigo-1000);\n --color-cyan-25: var(--color-cyan-25);\n --color-cyan-50: var(--color-cyan-50);\n --color-cyan-100: var(--color-cyan-100);\n --color-cyan-200: var(--color-cyan-200);\n --color-cyan-300: var(--color-cyan-300);\n --color-cyan-400: var(--color-cyan-400);\n --color-cyan-500: var(--color-cyan-500);\n --color-cyan-600: var(--color-cyan-600);\n --color-cyan-700: var(--color-cyan-700);\n --color-cyan-800: var(--color-cyan-800);\n --color-cyan-900: var(--color-cyan-900);\n --color-cyan-1000: var(--color-cyan-1000);\n --color-teal-25: var(--color-teal-25);\n --color-teal-50: var(--color-teal-50);\n --color-teal-100: var(--color-teal-100);\n --color-teal-200: var(--color-teal-200);\n --color-teal-300: var(--color-teal-300);\n --color-teal-400: var(--color-teal-400);\n --color-teal-500: var(--color-teal-500);\n --color-teal-600: var(--color-teal-600);\n --color-teal-700: var(--color-teal-700);\n --color-teal-800: var(--color-teal-800);\n --color-teal-900: var(--color-teal-900);\n --color-teal-1000: var(--color-teal-1000);\n --color-grass-25: var(--color-grass-25);\n --color-grass-50: var(--color-grass-50);\n --color-grass-100: var(--color-grass-100);\n --color-grass-200: var(--color-grass-200);\n --color-grass-300: var(--color-grass-300);\n --color-grass-400: var(--color-grass-400);\n --color-grass-500: var(--color-grass-500);\n --color-grass-600: var(--color-grass-600);\n --color-grass-700: var(--color-grass-700);\n --color-grass-800: var(--color-grass-800);\n --color-grass-900: var(--color-grass-900);\n --color-grass-1000: var(--color-grass-1000);\n --color-brown-25: var(--color-brown-25);\n --color-brown-50: var(--color-brown-50);\n --color-brown-100: var(--color-brown-100);\n --color-brown-200: var(--color-brown-200);\n --color-brown-300: var(--color-brown-300);\n --color-brown-400: var(--color-brown-400);\n --color-brown-500: var(--color-brown-500);\n --color-brown-600: var(--color-brown-600);\n --color-brown-700: var(--color-brown-700);\n --color-brown-800: var(--color-brown-800);\n --color-brown-900: var(--color-brown-900);\n --color-brown-1000: var(--color-brown-1000);\n --color-orange-25: var(--color-orange-25);\n --color-orange-50: var(--color-orange-50);\n --color-orange-100: var(--color-orange-100);\n --color-orange-200: var(--color-orange-200);\n --color-orange-300: var(--color-orange-300);\n --color-orange-400: var(--color-orange-400);\n --color-orange-500: var(--color-orange-500);\n --color-orange-600: var(--color-orange-600);\n --color-orange-700: var(--color-orange-700);\n --color-orange-800: var(--color-orange-800);\n --color-orange-900: var(--color-orange-900);\n --color-orange-1000: var(--color-orange-1000);\n --color-sky-25: var(--color-sky-25);\n --color-sky-50: var(--color-sky-50);\n --color-sky-100: var(--color-sky-100);\n --color-sky-200: var(--color-sky-200);\n --color-sky-300: var(--color-sky-300);\n --color-sky-400: var(--color-sky-400);\n --color-sky-500: var(--color-sky-500);\n --color-sky-600: var(--color-sky-600);\n --color-sky-700: var(--color-sky-700);\n --color-sky-800: var(--color-sky-800);\n --color-sky-900: var(--color-sky-900);\n --color-sky-1000: var(--color-sky-1000);\n --color-mint-25: var(--color-mint-25);\n --color-mint-50: var(--color-mint-50);\n --color-mint-100: var(--color-mint-100);\n --color-mint-200: var(--color-mint-200);\n --color-mint-300: var(--color-mint-300);\n --color-mint-400: var(--color-mint-400);\n --color-mint-500: var(--color-mint-500);\n --color-mint-600: var(--color-mint-600);\n --color-mint-700: var(--color-mint-700);\n --color-mint-800: var(--color-mint-800);\n --color-mint-900: var(--color-mint-900);\n --color-mint-1000: var(--color-mint-1000);\n --color-lime-25: var(--color-lime-25);\n --color-lime-50: var(--color-lime-50);\n --color-lime-100: var(--color-lime-100);\n --color-lime-200: var(--color-lime-200);\n --color-lime-300: var(--color-lime-300);\n --color-lime-400: var(--color-lime-400);\n --color-lime-500: var(--color-lime-500);\n --color-lime-600: var(--color-lime-600);\n --color-lime-700: var(--color-lime-700);\n --color-lime-800: var(--color-lime-800);\n --color-lime-900: var(--color-lime-900);\n --color-lime-1000: var(--color-lime-1000);\n --color-yellow-25: var(--color-yellow-25);\n --color-yellow-50: var(--color-yellow-50);\n --color-yellow-100: var(--color-yellow-100);\n --color-yellow-200: var(--color-yellow-200);\n --color-yellow-300: var(--color-yellow-300);\n --color-yellow-400: var(--color-yellow-400);\n --color-yellow-500: var(--color-yellow-500);\n --color-yellow-600: var(--color-yellow-600);\n --color-yellow-700: var(--color-yellow-700);\n --color-yellow-800: var(--color-yellow-800);\n --color-yellow-900: var(--color-yellow-900);\n --color-yellow-1000: var(--color-yellow-1000);\n --color-gold-25: var(--color-gold-25);\n --color-gold-50: var(--color-gold-50);\n --color-gold-100: var(--color-gold-100);\n --color-gold-200: var(--color-gold-200);\n --color-gold-300: var(--color-gold-300);\n --color-gold-400: var(--color-gold-400);\n --color-gold-500: var(--color-gold-500);\n --color-gold-600: var(--color-gold-600);\n --color-gold-700: var(--color-gold-700);\n --color-gold-800: var(--color-gold-800);\n --color-gold-900: var(--color-gold-900);\n --color-gold-1000: var(--color-gold-1000);\n --color-bronze-25: var(--color-bronze-25);\n --color-bronze-50: var(--color-bronze-50);\n --color-bronze-100: var(--color-bronze-100);\n --color-bronze-200: var(--color-bronze-200);\n --color-bronze-300: var(--color-bronze-300);\n --color-bronze-400: var(--color-bronze-400);\n --color-bronze-500: var(--color-bronze-500);\n --color-bronze-600: var(--color-bronze-600);\n --color-bronze-700: var(--color-bronze-700);\n --color-bronze-800: var(--color-bronze-800);\n --color-bronze-900: var(--color-bronze-900);\n --color-bronze-1000: var(--color-bronze-1000);\n --animate-flash: flash .8s forwards;\n --background-image-pattern: linear-gradient(180deg, transparent 0%, #fff 100%), linear-gradient(0deg, transparent 0%, #ffffffbf 100%), url(\"data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M40 40V41H41V40H40ZM39 0V40H41V0H39ZM40 39H0V41H40V39Z' fill='%23E8E8E8' mask='url(%23path-1-inside-1_124_242)'/%3E%3C/svg%3E\");\n }\n}\n\n@layer base {\n *, :after, :before, ::backdrop {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n ::file-selector-button {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n html, :host {\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n line-height: 1.5;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n\n abbr:where([title]) {\n text-decoration: underline dotted;\n }\n\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n\n b, strong {\n font-weight: bolder;\n }\n\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n\n small {\n font-size: 80%;\n }\n\n sub, sup {\n vertical-align: baseline;\n font-size: 75%;\n line-height: 0;\n position: relative;\n }\n\n sub {\n bottom: -.25em;\n }\n\n sup {\n top: -.5em;\n }\n\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n\n :-moz-focusring {\n outline: auto;\n }\n\n progress {\n vertical-align: baseline;\n }\n\n summary {\n display: list-item;\n }\n\n ol, ul, menu {\n list-style: none;\n }\n\n img, svg, video, canvas, audio, iframe, embed, object {\n vertical-align: middle;\n display: block;\n }\n\n img, video {\n max-width: 100%;\n height: auto;\n }\n\n button, input, select, optgroup, textarea {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n\n ::placeholder {\n opacity: 1;\n }\n\n @supports (not ((-webkit-appearance: -apple-pay-button))) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentColor;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n ::placeholder {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n\n textarea {\n resize: vertical;\n }\n\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n\n ::-webkit-datetime-edit {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-year-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-month-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-day-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-hour-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-minute-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-second-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-millisecond-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n\n :-moz-ui-invalid {\n box-shadow: none;\n }\n\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]) {\n appearance: button;\n }\n\n ::file-selector-button {\n appearance: button;\n }\n\n ::-webkit-inner-spin-button {\n height: auto;\n }\n\n ::-webkit-outer-spin-button {\n height: auto;\n }\n\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n\n button:not(:disabled), [role=\"button\"]:not(:disabled) {\n cursor: pointer;\n }\n}\n\n@layer components;\n\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n\n .pointer-events-none {\n pointer-events: none;\n }\n\n .invisible {\n visibility: hidden;\n }\n\n .visible {\n visibility: visible;\n }\n\n .sr-only {\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n }\n\n .absolute {\n position: absolute;\n }\n\n .fixed {\n position: fixed;\n }\n\n .relative {\n position: relative;\n }\n\n .static {\n position: static;\n }\n\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n\n .inset-x-0 {\n inset-inline: calc(var(--spacing) * 0);\n }\n\n .inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n\n .-top-12 {\n top: calc(var(--spacing) * -12);\n }\n\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n\n .top-1\\/2 {\n top: 50%;\n }\n\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n\n .top-6 {\n top: calc(var(--spacing) * 6);\n }\n\n .top-8 {\n top: calc(var(--spacing) * 8);\n }\n\n .top-\\[50\\%\\] {\n top: 50%;\n }\n\n .top-auto {\n top: auto;\n }\n\n .-right-12 {\n right: calc(var(--spacing) * -12);\n }\n\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n\n .right-1 {\n right: calc(var(--spacing) * 1);\n }\n\n .right-6 {\n right: calc(var(--spacing) * 6);\n }\n\n .-bottom-12 {\n bottom: calc(var(--spacing) * -12);\n }\n\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n\n .bottom-\\[-15px\\] {\n bottom: -15px;\n }\n\n .bottom-\\[1px\\] {\n bottom: 1px;\n }\n\n .-left-12 {\n left: calc(var(--spacing) * -12);\n }\n\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n\n .left-1 {\n left: calc(var(--spacing) * 1);\n }\n\n .left-1\\/2, .left-\\[50\\%\\] {\n left: 50%;\n }\n\n .z-10 {\n z-index: 10;\n }\n\n .z-16 {\n z-index: 16;\n }\n\n .z-20 {\n z-index: 20;\n }\n\n .z-30 {\n z-index: 30;\n }\n\n .z-50 {\n z-index: 50;\n }\n\n .z-100 {\n z-index: 100;\n }\n\n .z-150 {\n z-index: 150;\n }\n\n .z-\\[15\\] {\n z-index: 15;\n }\n\n .z-\\[21\\] {\n z-index: 21;\n }\n\n .container {\n width: 100%;\n }\n\n @media (width >= 40rem) {\n .container {\n max-width: 40rem;\n }\n }\n\n @media (width >= 48rem) {\n .container {\n max-width: 48rem;\n }\n }\n\n @media (width >= 64rem) {\n .container {\n max-width: 64rem;\n }\n }\n\n @media (width >= 80rem) {\n .container {\n max-width: 80rem;\n }\n }\n\n @media (width >= 96rem) {\n .container {\n max-width: 96rem;\n }\n }\n\n .m-auto {\n margin: auto;\n }\n\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n\n .mx-1 {\n margin-inline: calc(var(--spacing) * 1);\n }\n\n .mx-auto {\n margin-inline: auto;\n }\n\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n\n .-mt-4 {\n margin-top: calc(var(--spacing) * -4);\n }\n\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n\n .mt-\\[14px\\] {\n margin-top: 14px;\n }\n\n .mt-auto {\n margin-top: auto;\n }\n\n .-mr-2 {\n margin-right: calc(var(--spacing) * -2);\n }\n\n .mr-2\\.5 {\n margin-right: calc(var(--spacing) * 2.5);\n }\n\n .mr-7 {\n margin-right: calc(var(--spacing) * 7);\n }\n\n .mr-9 {\n margin-right: calc(var(--spacing) * 9);\n }\n\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n\n .-ml-4 {\n margin-left: calc(var(--spacing) * -4);\n }\n\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n\n .box-border {\n box-sizing: border-box;\n }\n\n .block {\n display: block;\n }\n\n .contents {\n display: contents;\n }\n\n .flex {\n display: flex;\n }\n\n .grid {\n display: grid;\n }\n\n .hidden {\n display: none;\n }\n\n .inline-block {\n display: inline-block;\n }\n\n .inline-flex {\n display: inline-flex;\n }\n\n .table {\n display: table;\n }\n\n .aspect-square {\n aspect-ratio: 1;\n }\n\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n\n .h-1\\/2 {\n height: 50%;\n }\n\n .h-1\\/3 {\n height: 33.3333%;\n }\n\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n\n .h-\\[1px\\] {\n height: 1px;\n }\n\n .h-\\[8px\\] {\n height: 8px;\n }\n\n .h-\\[16px\\] {\n height: 16px;\n }\n\n .h-\\[24px\\] {\n height: 24px;\n }\n\n .h-\\[36px\\] {\n height: 36px;\n }\n\n .h-\\[45px\\] {\n height: 45px;\n }\n\n .h-\\[52px\\] {\n height: 52px;\n }\n\n .h-\\[54px\\] {\n height: 54px;\n }\n\n .h-\\[56px\\] {\n height: 56px;\n }\n\n .h-\\[70px\\] {\n height: 70px;\n }\n\n .h-\\[72px\\] {\n height: 72px;\n }\n\n .h-\\[163px\\] {\n height: 163px;\n }\n\n .h-\\[184px\\] {\n height: 184px;\n }\n\n .h-\\[200px\\] {\n height: 200px;\n }\n\n .h-\\[250px\\] {\n height: 250px;\n }\n\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n\n .h-auto {\n height: auto;\n }\n\n .h-auto\\! {\n height: auto !important;\n }\n\n .h-dvh {\n height: 100dvh;\n }\n\n .h-full {\n height: 100%;\n }\n\n .h-px {\n height: 1px;\n }\n\n .max-h-\\[70px\\] {\n max-height: 70px;\n }\n\n .max-h-\\[90dvh\\] {\n max-height: 90dvh;\n }\n\n .max-h-\\[90vh\\] {\n max-height: 90vh;\n }\n\n .max-h-\\[180px\\] {\n max-height: 180px;\n }\n\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n\n .max-h-full {\n max-height: 100%;\n }\n\n .max-h-screen {\n max-height: 100vh;\n }\n\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n\n .min-h-9 {\n min-height: calc(var(--spacing) * 9);\n }\n\n .min-h-\\[80px\\] {\n min-height: 80px;\n }\n\n .w-1\\/3 {\n width: 33.3333%;\n }\n\n .w-1\\/4 {\n width: 25%;\n }\n\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n\n .w-3\\/4 {\n width: 75%;\n }\n\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n\n .w-4\\/5 {\n width: 80%;\n }\n\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n\n .w-14 {\n width: calc(var(--spacing) * 14);\n }\n\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n\n .w-\\[1px\\] {\n width: 1px;\n }\n\n .w-\\[8px\\] {\n width: 8px;\n }\n\n .w-\\[16px\\] {\n width: 16px;\n }\n\n .w-\\[24px\\] {\n width: 24px;\n }\n\n .w-\\[36px\\] {\n width: 36px;\n }\n\n .w-\\[42px\\] {\n width: 42px;\n }\n\n .w-\\[45px\\] {\n width: 45px;\n }\n\n .w-\\[54px\\] {\n width: 54px;\n }\n\n .w-\\[56px\\] {\n width: 56px;\n }\n\n .w-\\[70px\\] {\n width: 70px;\n }\n\n .w-\\[72px\\] {\n width: 72px;\n }\n\n .w-\\[232px\\] {\n width: 232px;\n }\n\n .w-\\[240px\\] {\n width: 240px;\n }\n\n .w-\\[250px\\] {\n width: 250px;\n }\n\n .w-auto {\n width: auto;\n }\n\n .w-dvh {\n width: 100dvh;\n }\n\n .w-fit {\n width: fit-content;\n }\n\n .w-full {\n width: 100%;\n }\n\n .w-max {\n width: max-content;\n }\n\n .max-w-\\[70px\\] {\n max-width: 70px;\n }\n\n .max-w-\\[90vw\\] {\n max-width: 90vw;\n }\n\n .max-w-\\[400px\\] {\n max-width: 400px;\n }\n\n .max-w-\\[416px\\] {\n max-width: 416px;\n }\n\n .max-w-\\[500px\\] {\n max-width: 500px;\n }\n\n .max-w-full {\n max-width: 100%;\n }\n\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n\n .min-w-\\[144px\\] {\n min-width: 144px;\n }\n\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n\n .flex-1 {\n flex: 1;\n }\n\n .shrink-0 {\n flex-shrink: 0;\n }\n\n .grow {\n flex-grow: 1;\n }\n\n .grow-0 {\n flex-grow: 0;\n }\n\n .basis-full {\n flex-basis: 100%;\n }\n\n .caption-bottom {\n caption-side: bottom;\n }\n\n .border-collapse {\n border-collapse: collapse;\n }\n\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .translate-x-0\\.5 {\n --tw-translate-x: calc(var(--spacing) * .5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .scale-x-\\[-1\\] {\n --tw-scale-x: -1;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n\n .transform {\n transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );\n }\n\n .animate-\\[flash_0\\.8s_forwards\\] {\n animation: .8s forwards flash;\n }\n\n .animate-flash {\n animation: var(--animate-flash);\n }\n\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n\n .animate-spin {\n animation: var(--animate-spin);\n }\n\n .cursor-default {\n cursor: default;\n }\n\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n\n .cursor-pointer {\n cursor: pointer;\n }\n\n .list-outside {\n list-style-position: outside;\n }\n\n .list-disc {\n list-style-type: disc;\n }\n\n .appearance-none {\n appearance: none;\n }\n\n .flex-col {\n flex-direction: column;\n }\n\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n\n .flex-row {\n flex-direction: row;\n }\n\n .flex-row-reverse {\n flex-direction: row-reverse;\n }\n\n .flex-wrap {\n flex-wrap: wrap;\n }\n\n .content-center {\n align-content: center;\n }\n\n .items-center {\n align-items: center;\n }\n\n .items-start {\n align-items: flex-start;\n }\n\n .justify-between {\n justify-content: space-between;\n }\n\n .justify-center {\n justify-content: center;\n }\n\n .justify-end {\n justify-content: flex-end;\n }\n\n .justify-start {\n justify-content: flex-start;\n }\n\n .gap-0\\.5 {\n gap: calc(var(--spacing) * .5);\n }\n\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n\n .gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n\n .gap-\\[15px\\] {\n gap: 15px;\n }\n\n .gap-\\[inherit\\] {\n gap: inherit;\n }\n\n :where(.space-y-1 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-1\\.5 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-4 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-5 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-6 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-x-1 > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)));\n }\n\n :where(.divide-x > :not(:last-child)) {\n --tw-divide-x-reverse: 0;\n border-inline-style: var(--tw-border-style);\n border-inline-start-width: calc(1px * var(--tw-divide-x-reverse));\n border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));\n }\n\n :where(.divide-y > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n\n :where(.divide-gray-200 > :not(:last-child)) {\n border-color: var(--color-gray-200);\n }\n\n .self-center {\n align-self: center;\n }\n\n .self-end {\n align-self: flex-end;\n }\n\n .self-start {\n align-self: flex-start;\n }\n\n .justify-self-center {\n justify-self: center;\n }\n\n .truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n .overflow-auto {\n overflow: auto;\n }\n\n .overflow-hidden {\n overflow: hidden;\n }\n\n .overflow-scroll {\n overflow: scroll;\n }\n\n .overflow-visible {\n overflow: visible;\n }\n\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n\n .overflow-y-auto {\n overflow-y: auto;\n }\n\n .overflow-y-scroll {\n overflow-y: scroll;\n }\n\n .overscroll-y-none {\n overscroll-behavior-y: none;\n }\n\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n\n .rounded-3xl {\n border-radius: var(--radius-3xl);\n }\n\n .rounded-\\[3px\\] {\n border-radius: 3px;\n }\n\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n\n .rounded-\\[6px\\] {\n border-radius: 6px;\n }\n\n .rounded-\\[8px\\] {\n border-radius: 8px;\n }\n\n .rounded-\\[10px\\] {\n border-radius: 10px;\n }\n\n .rounded-\\[14px\\] {\n border-radius: 14px;\n }\n\n .rounded-\\[inherit\\] {\n border-radius: inherit;\n }\n\n .rounded-full {\n border-radius: 3.40282e38px;\n }\n\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n\n .rounded-md {\n border-radius: var(--radius-md);\n }\n\n .rounded-none {\n border-radius: 0;\n }\n\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n\n .rounded-t-3xl {\n border-top-left-radius: var(--radius-3xl);\n border-top-right-radius: var(--radius-3xl);\n }\n\n .rounded-b-3xl {\n border-bottom-right-radius: var(--radius-3xl);\n border-bottom-left-radius: var(--radius-3xl);\n }\n\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n\n .border-amber-700 {\n border-color: var(--color-amber-700);\n }\n\n .border-black\\/10 {\n border-color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .border-black\\/10 {\n border-color: color-mix(in oklab, var(--color-black) 10%, transparent);\n }\n }\n\n .border-blue-700 {\n border-color: var(--color-blue-700);\n }\n\n .border-gray-100 {\n border-color: var(--color-gray-100);\n }\n\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n\n .border-gray-300 {\n border-color: var(--color-gray-300);\n }\n\n .border-gray-400 {\n border-color: var(--color-gray-400);\n }\n\n .border-gray-600 {\n border-color: var(--color-gray-600);\n }\n\n .border-red-700 {\n border-color: var(--color-red-700);\n }\n\n .border-transparent {\n border-color: #0000;\n }\n\n .border-white\\/10 {\n border-color: var(--color-white);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .border-white\\/10 {\n border-color: color-mix(in oklab, var(--color-white) 10%, transparent);\n }\n }\n\n .bg-amber-100 {\n background-color: var(--color-amber-100);\n }\n\n .bg-amber-200 {\n background-color: var(--color-amber-200);\n }\n\n .bg-amber-700 {\n background-color: var(--color-amber-700);\n }\n\n .bg-black, .bg-black\\/25 {\n background-color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-black\\/25 {\n background-color: color-mix(in oklab, var(--color-black) 25%, transparent);\n }\n }\n\n .bg-black\\/50 {\n background-color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-black\\/50 {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n\n .bg-black\\/80 {\n background-color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-black\\/80 {\n background-color: color-mix(in oklab, var(--color-black) 80%, transparent);\n }\n }\n\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n\n .bg-blue-300 {\n background-color: var(--color-blue-300);\n }\n\n .bg-blue-700 {\n background-color: var(--color-blue-700);\n }\n\n .bg-bronze-300 {\n background-color: var(--color-bronze-300);\n }\n\n .bg-brown-100 {\n background-color: var(--color-brown-100);\n }\n\n .bg-brown-300 {\n background-color: var(--color-brown-300);\n }\n\n .bg-brown-700 {\n background-color: var(--color-brown-700);\n }\n\n .bg-crimson-100 {\n background-color: var(--color-crimson-100);\n }\n\n .bg-crimson-300 {\n background-color: var(--color-crimson-300);\n }\n\n .bg-crimson-700 {\n background-color: var(--color-crimson-700);\n }\n\n .bg-cyan-100 {\n background-color: var(--color-cyan-100);\n }\n\n .bg-cyan-300 {\n background-color: var(--color-cyan-300);\n }\n\n .bg-cyan-700 {\n background-color: var(--color-cyan-700);\n }\n\n .bg-gold-300 {\n background-color: var(--color-gold-300);\n }\n\n .bg-grass-300 {\n background-color: var(--color-grass-300);\n }\n\n .bg-gray-25, .bg-gray-25\\/50 {\n background-color: var(--color-gray-25);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-gray-25\\/50 {\n background-color: color-mix(in oklab, var(--color-gray-25) 50%, transparent);\n }\n }\n\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n\n .bg-gray-100, .bg-gray-100\\/50 {\n background-color: var(--color-gray-100);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-gray-100\\/50 {\n background-color: color-mix(in oklab, var(--color-gray-100) 50%, transparent);\n }\n }\n\n .bg-gray-200 {\n background-color: var(--color-gray-200);\n }\n\n .bg-gray-300 {\n background-color: var(--color-gray-300);\n }\n\n .bg-gray-600 {\n background-color: var(--color-gray-600);\n }\n\n .bg-gray-800\\/60 {\n background-color: var(--color-gray-800);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-gray-800\\/60 {\n background-color: color-mix(in oklab, var(--color-gray-800) 60%, transparent);\n }\n }\n\n .bg-gray-900 {\n background-color: var(--color-gray-900);\n }\n\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n\n .bg-green-300 {\n background-color: var(--color-green-300);\n }\n\n .bg-green-700 {\n background-color: var(--color-green-700);\n }\n\n .bg-indigo-300 {\n background-color: var(--color-indigo-300);\n }\n\n .bg-inherit {\n background-color: inherit;\n }\n\n .bg-lime-300 {\n background-color: var(--color-lime-300);\n }\n\n .bg-orange-100 {\n background-color: var(--color-orange-100);\n }\n\n .bg-orange-700 {\n background-color: var(--color-orange-700);\n }\n\n .bg-plum-300 {\n background-color: var(--color-plum-300);\n }\n\n .bg-purple-300 {\n background-color: var(--color-purple-300);\n }\n\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n\n .bg-red-300 {\n background-color: var(--color-red-300);\n }\n\n .bg-red-700, .bg-red-700\\/60 {\n background-color: var(--color-red-700);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-red-700\\/60 {\n background-color: color-mix(in oklab, var(--color-red-700) 60%, transparent);\n }\n }\n\n .bg-teal-100 {\n background-color: var(--color-teal-100);\n }\n\n .bg-teal-300 {\n background-color: var(--color-teal-300);\n }\n\n .bg-teal-700 {\n background-color: var(--color-teal-700);\n }\n\n .bg-transparent {\n background-color: #0000;\n }\n\n .bg-violet-100 {\n background-color: var(--color-violet-100);\n }\n\n .bg-violet-300 {\n background-color: var(--color-violet-300);\n }\n\n .bg-violet-700 {\n background-color: var(--color-violet-700);\n }\n\n .bg-white, .bg-white\\/60 {\n background-color: var(--color-white);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-white\\/60 {\n background-color: color-mix(in oklab, var(--color-white) 60%, transparent);\n }\n }\n\n .bg-yellow-300 {\n background-color: var(--color-yellow-300);\n }\n\n .bg-cover {\n background-size: cover;\n }\n\n .bg-no-repeat {\n background-repeat: no-repeat;\n }\n\n .fill-\\[inherit\\] {\n fill: inherit;\n }\n\n .fill-gray-400 {\n fill: var(--color-gray-400);\n }\n\n .fill-white {\n fill: var(--color-white);\n }\n\n .object-contain {\n object-fit: contain;\n }\n\n .object-cover {\n object-fit: cover;\n }\n\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n\n .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n\n .p-\\[11px\\] {\n padding: 11px;\n }\n\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n\n .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n\n .px-3\\.5 {\n padding-inline: calc(var(--spacing) * 3.5);\n }\n\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * .5);\n }\n\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n\n .py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n\n .pt-1 {\n padding-top: calc(var(--spacing) * 1);\n }\n\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n\n .pr-1 {\n padding-right: calc(var(--spacing) * 1);\n }\n\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n\n .pr-2\\.5 {\n padding-right: calc(var(--spacing) * 2.5);\n }\n\n .pr-3\\.5 {\n padding-right: calc(var(--spacing) * 3.5);\n }\n\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n\n .pb-2\\.5 {\n padding-bottom: calc(var(--spacing) * 2.5);\n }\n\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n\n .text-center {\n text-align: center;\n }\n\n .text-left {\n text-align: left;\n }\n\n .align-middle {\n vertical-align: middle;\n }\n\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n letter-spacing: var(--tw-tracking, var(--text-2xl--letter-spacing));\n }\n\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n letter-spacing: var(--tw-tracking, var(--text-4xl--letter-spacing));\n }\n\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n letter-spacing: var(--tw-tracking, var(--text-lg--letter-spacing));\n }\n\n .text-md {\n font-size: var(--text-md);\n line-height: var(--tw-leading, var(--text-md--line-height));\n letter-spacing: var(--tw-tracking, var(--text-md--letter-spacing));\n }\n\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n letter-spacing: var(--tw-tracking, var(--text-sm--letter-spacing));\n }\n\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n letter-spacing: var(--tw-tracking, var(--text-xl--letter-spacing));\n }\n\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n letter-spacing: var(--tw-tracking, var(--text-xs--letter-spacing));\n }\n\n .text-\\[10px\\] {\n font-size: 10px;\n }\n\n .text-\\[30px\\] {\n font-size: 30px;\n }\n\n .text-\\[96px\\] {\n font-size: 96px;\n }\n\n .leading-4 {\n --tw-leading: calc(var(--spacing) * 4);\n line-height: calc(var(--spacing) * 4);\n }\n\n .leading-\\[15px\\] {\n --tw-leading: 15px;\n line-height: 15px;\n }\n\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n\n .font-light {\n --tw-font-weight: var(--font-weight-light);\n font-weight: var(--font-weight-light);\n }\n\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n\n .break-words {\n overflow-wrap: break-word;\n }\n\n .wrap-anywhere {\n overflow-wrap: anywhere;\n }\n\n .whitespace-normal {\n white-space: normal;\n }\n\n .whitespace-nowrap {\n white-space: nowrap;\n }\n\n .whitespace-pre-line {\n white-space: pre-line;\n }\n\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n\n .text-\\[inherit\\] {\n color: inherit;\n }\n\n .text-amber-700 {\n color: var(--color-amber-700);\n }\n\n .text-black, .text-black\\/50 {\n color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .text-black\\/50 {\n color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n\n .text-bronze-700 {\n color: var(--color-bronze-700);\n }\n\n .text-brown-700 {\n color: var(--color-brown-700);\n }\n\n .text-crimson-700 {\n color: var(--color-crimson-700);\n }\n\n .text-current {\n color: currentColor;\n }\n\n .text-cyan-700 {\n color: var(--color-cyan-700);\n }\n\n .text-gold-700 {\n color: var(--color-gold-700);\n }\n\n .text-grass-700 {\n color: var(--color-grass-700);\n }\n\n .text-gray-200 {\n color: var(--color-gray-200);\n }\n\n .text-gray-400 {\n color: var(--color-gray-400);\n }\n\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n\n .text-gray-900 {\n color: var(--color-gray-900);\n }\n\n .text-gray-1000 {\n color: var(--color-gray-1000);\n }\n\n .text-green-700 {\n color: var(--color-green-700);\n }\n\n .text-indigo-700 {\n color: var(--color-indigo-700);\n }\n\n .text-inherit {\n color: inherit;\n }\n\n .text-lime-700 {\n color: var(--color-lime-700);\n }\n\n .text-orange-700 {\n color: var(--color-orange-700);\n }\n\n .text-plum-700 {\n color: var(--color-plum-700);\n }\n\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n\n .text-red-600 {\n color: var(--color-red-600);\n }\n\n .text-red-700 {\n color: var(--color-red-700);\n }\n\n .text-teal-700 {\n color: var(--color-teal-700);\n }\n\n .text-violet-700 {\n color: var(--color-violet-700);\n }\n\n .text-white {\n color: var(--color-white);\n }\n\n .text-yellow-700 {\n color: var(--color-yellow-700);\n }\n\n .underline {\n text-decoration-line: underline;\n }\n\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n .opacity-40 {\n opacity: .4;\n }\n\n .opacity-50 {\n opacity: .5;\n }\n\n .opacity-60 {\n opacity: .6;\n }\n\n .shadow-dropdown-sm {\n --tw-shadow: 0px 1px 2px 0px var(--tw-shadow-color, #1018280f), 0px 1px 3px 0px var(--tw-shadow-color, #1018281a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, #0000001a), 0 2px 4px -2px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, #0000000d);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .ring-\\[3px\\] {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .ring-amber-300 {\n --tw-ring-color: var(--color-amber-300);\n }\n\n .ring-amber-700 {\n --tw-ring-color: var(--color-amber-700);\n }\n\n .ring-black {\n --tw-ring-color: var(--color-black);\n }\n\n .ring-blue-300 {\n --tw-ring-color: var(--color-blue-300);\n }\n\n .ring-blue-700 {\n --tw-ring-color: var(--color-blue-700);\n }\n\n .ring-brown-300 {\n --tw-ring-color: var(--color-brown-300);\n }\n\n .ring-crimson-300 {\n --tw-ring-color: var(--color-crimson-300);\n }\n\n .ring-cyan-300 {\n --tw-ring-color: var(--color-cyan-300);\n }\n\n .ring-gray-100 {\n --tw-ring-color: var(--color-gray-100);\n }\n\n .ring-gray-200 {\n --tw-ring-color: var(--color-gray-200);\n }\n\n .ring-gray-400 {\n --tw-ring-color: var(--color-gray-400);\n }\n\n .ring-green-300 {\n --tw-ring-color: var(--color-green-300);\n }\n\n .ring-green-700 {\n --tw-ring-color: var(--color-green-700);\n }\n\n .ring-orange-300 {\n --tw-ring-color: var(--color-orange-300);\n }\n\n .ring-red-300 {\n --tw-ring-color: var(--color-red-300);\n }\n\n .ring-red-700 {\n --tw-ring-color: var(--color-red-700);\n }\n\n .ring-teal-300 {\n --tw-ring-color: var(--color-teal-300);\n }\n\n .ring-violet-300 {\n --tw-ring-color: var(--color-violet-300);\n }\n\n .ring-offset-0 {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n\n .ring-offset-white {\n --tw-ring-offset-color: var(--color-white);\n }\n\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n }\n\n @media (forced-colors: active) {\n .outline-hidden {\n outline-offset: 2px;\n outline: 2px solid #0000;\n }\n }\n\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n\n .blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );\n }\n\n .filter {\n filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );\n }\n\n .backdrop-blur-\\[20px\\] {\n --tw-backdrop-blur: blur(20px);\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .backdrop-blur-\\[180px\\] {\n --tw-backdrop-blur: blur(180px);\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .backdrop-blur-lg {\n --tw-backdrop-blur: blur(var(--blur-lg));\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .backdrop-blur-xs {\n --tw-backdrop-blur: blur(var(--blur-xs));\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .duration-200 {\n --tw-duration: .2s;\n transition-duration: .2s;\n }\n\n .duration-300 {\n --tw-duration: .3s;\n transition-duration: .3s;\n }\n\n .duration-500 {\n --tw-duration: .5s;\n transition-duration: .5s;\n }\n\n .duration-700 {\n --tw-duration: .7s;\n transition-duration: .7s;\n }\n\n .ease-\\[cubic-bezier\\(0\\.075\\,0\\.82\\,0\\.165\\,1\\)\\] {\n --tw-ease: cubic-bezier(.075, .82, .165, 1);\n transition-timing-function: cubic-bezier(.075, .82, .165, 1);\n }\n\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n\n .ease-linear {\n --tw-ease: linear;\n transition-timing-function: linear;\n }\n\n .will-change-transform {\n will-change: transform;\n }\n\n .animate-in {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n }\n\n .select-none {\n user-select: none;\n }\n\n .duration-200 {\n animation-duration: .2s;\n }\n\n .duration-300 {\n animation-duration: .3s;\n }\n\n .duration-500 {\n animation-duration: .5s;\n }\n\n .duration-700 {\n animation-duration: .7s;\n }\n\n .ease-\\[cubic-bezier\\(0\\.075\\,0\\.82\\,0\\.165\\,1\\)\\] {\n animation-timing-function: cubic-bezier(.075, .82, .165, 1);\n }\n\n .ease-in-out {\n animation-timing-function: cubic-bezier(.4, 0, .2, 1);\n }\n\n .ease-linear {\n animation-timing-function: linear;\n }\n\n .fade-in-0 {\n --tw-enter-opacity: 0;\n }\n\n .paused {\n animation-play-state: paused;\n }\n\n .ring-inset {\n --tw-ring-inset: inset;\n }\n\n .running {\n animation-play-state: running;\n }\n\n .zoom-in-95 {\n --tw-enter-scale: .95;\n }\n\n :is(.\\*\\:h-full > *) {\n height: 100%;\n }\n\n :is(.\\*\\:w-full > *) {\n width: 100%;\n }\n\n :is(.\\*\\:rounded-\\[14px\\] > *) {\n border-radius: 14px;\n }\n\n :is(.\\*\\:bg-blue-700 > *) {\n background-color: var(--color-blue-700);\n }\n\n :is(.\\*\\:fill-black > *) {\n fill: var(--color-black);\n }\n\n :is(.\\*\\:text-gray-700 > *) {\n color: var(--color-gray-700);\n }\n\n :is(.\\*\\:text-white > *) {\n color: var(--color-white);\n }\n\n :is(.\\*\\:opacity-100 > *) {\n opacity: 1;\n }\n\n :is(.\\*\\*\\:items-center *) {\n align-items: center;\n }\n\n :is(.\\*\\*\\:rounded-lg *) {\n border-radius: var(--radius-lg);\n }\n\n .group-focus-within\\:bg-gray-100:is(:where(.group):focus-within *) {\n background-color: var(--color-gray-100);\n }\n\n .group-focus-within\\/mediacard\\:visible:is(:where(.group\\/mediacard):focus-within *) {\n visibility: visible;\n }\n\n @media (hover: hover) {\n .group-hover\\:visible:is(:where(.group):hover *) {\n visibility: visible;\n }\n\n .group-hover\\:flex:is(:where(.group):hover *) {\n display: flex;\n }\n\n .group-hover\\:bg-gray-50:is(:where(.group):hover *) {\n background-color: var(--color-gray-50);\n }\n\n .group-hover\\/mediacard\\:visible:is(:where(.group\\/mediacard):hover *) {\n visibility: visible;\n }\n }\n\n .group-active\\:bg-gray-100:is(:where(.group):active *) {\n background-color: var(--color-gray-100);\n }\n\n .group-data-disabled\\:cursor-not-allowed:is(:where(.group)[data-disabled] *) {\n cursor: not-allowed;\n }\n\n .group-data-disabled\\:opacity-50:is(:where(.group)[data-disabled] *) {\n opacity: .5;\n }\n\n .group-data-\\[state\\=checked\\]\\:bg-gray-50:is(:where(.group)[data-state=\"checked\"] *) {\n background-color: var(--color-gray-50);\n }\n\n .group-data-\\[state\\=off\\]\\:bg-transparent:is(:where(.group)[data-state=\"off\"] *) {\n background-color: #0000;\n }\n\n .group-data-\\[state\\=off\\]\\:text-transparent:is(:where(.group)[data-state=\"off\"] *) {\n color: #0000;\n }\n\n .group-data-\\[state\\=on\\]\\:border-blue-700:is(:where(.group)[data-state=\"on\"] *) {\n border-color: var(--color-blue-700);\n }\n\n .group-data-\\[state\\=open\\]\\:rotate-180:is(:where(.group)[data-state=\"open\"] *) {\n rotate: 180deg;\n }\n\n @media (hover: hover) {\n .peer-hover\\:fill-amber-700:is(:where(.peer):hover ~ *) {\n fill: var(--color-amber-700);\n }\n\n .peer-hover\\:text-amber-700:is(:where(.peer):hover ~ *) {\n color: var(--color-amber-700);\n }\n }\n\n .peer-disabled\\:cursor-not-allowed:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n\n .peer-disabled\\:opacity-70:is(:where(.peer):disabled ~ *) {\n opacity: .7;\n }\n\n .placeholder\\:text-gray-700::placeholder {\n color: var(--color-gray-700);\n }\n\n .placeholder\\:text-gray-900::placeholder {\n color: var(--color-gray-900);\n }\n\n .last\\:pb-0:last-child {\n padding-bottom: calc(var(--spacing) * 0);\n }\n\n .focus-within\\:relative:focus-within {\n position: relative;\n }\n\n .focus-within\\:z-20:focus-within {\n z-index: 20;\n }\n\n .focus-within\\:border-gray-200:focus-within {\n border-color: var(--color-gray-200);\n }\n\n .focus-within\\:bg-gray-100:focus-within {\n background-color: var(--color-gray-100);\n }\n\n .focus-within\\:outline:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n\n .focus-within\\:outline-\\[2px\\]:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 2px;\n }\n\n .focus-within\\:outline-offset-\\[2px\\]:focus-within {\n outline-offset: 2px;\n }\n\n .focus-within\\:outline-blue-300:focus-within {\n outline-color: var(--color-blue-300);\n }\n\n .focus-within\\:outline-red-700:focus-within {\n outline-color: var(--color-red-700);\n }\n\n @media (hover: hover) {\n .hover\\:border-blue-900:hover {\n border-color: var(--color-blue-900);\n }\n\n .hover\\:border-gray-600:hover {\n border-color: var(--color-gray-600);\n }\n\n .hover\\:border-red-900:hover {\n border-color: var(--color-red-900);\n }\n\n .hover\\:bg-black\\/5:hover {\n background-color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .hover\\:bg-black\\/5:hover {\n background-color: color-mix(in oklab, var(--color-black) 5%, transparent);\n }\n }\n\n .hover\\:bg-blue-50:hover {\n background-color: var(--color-blue-50);\n }\n\n .hover\\:bg-blue-100:hover {\n background-color: var(--color-blue-100);\n }\n\n .hover\\:bg-blue-800:hover {\n background-color: var(--color-blue-800);\n }\n\n .hover\\:bg-gray-25:hover {\n background-color: var(--color-gray-25);\n }\n\n .hover\\:bg-gray-50:hover {\n background-color: var(--color-gray-50);\n }\n\n .hover\\:bg-gray-100:hover, .hover\\:bg-gray-100\\/75:hover {\n background-color: var(--color-gray-100);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .hover\\:bg-gray-100\\/75:hover {\n background-color: color-mix(in oklab, var(--color-gray-100) 75%, transparent);\n }\n }\n\n .hover\\:bg-gray-200:hover {\n background-color: var(--color-gray-200);\n }\n\n .hover\\:bg-red-100:hover {\n background-color: var(--color-red-100);\n }\n\n .hover\\:bg-red-800:hover {\n background-color: var(--color-red-800);\n }\n\n .hover\\:fill-amber-700:hover {\n fill: var(--color-amber-700);\n }\n\n .hover\\:text-amber-700:hover {\n color: var(--color-amber-700);\n }\n\n .hover\\:text-black:hover {\n color: var(--color-black);\n }\n\n .hover\\:underline:hover {\n text-decoration-line: underline;\n }\n\n .hover\\:opacity-100:hover {\n opacity: 1;\n }\n\n :is(.hover\\:\\*\\:bg-blue-700:hover > *) {\n background-color: var(--color-blue-700);\n }\n\n :is(.hover\\:\\*\\:text-white:hover > *) {\n color: var(--color-white);\n }\n }\n\n .focus\\:bg-gray-100:focus {\n background-color: var(--color-gray-100);\n }\n\n .focus\\:ring-1:focus {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .focus\\:ring-2:focus {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n\n .focus\\:outline-hidden:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n\n @media (forced-colors: active) {\n .focus\\:outline-hidden:focus {\n outline-offset: 2px;\n outline: 2px solid #0000;\n }\n }\n\n :is(.focus\\:\\*\\:bg-blue-700:focus > *) {\n background-color: var(--color-blue-700);\n }\n\n :is(.focus\\:\\*\\:text-white:focus > *) {\n color: var(--color-white);\n }\n\n .focus-visible\\:ring-2:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .focus-visible\\:ring-black:focus-visible {\n --tw-ring-color: var(--color-black);\n }\n\n .focus-visible\\:ring-blue-300:focus-visible {\n --tw-ring-color: var(--color-blue-300);\n }\n\n .focus-visible\\:ring-blue-700:focus-visible {\n --tw-ring-color: var(--color-blue-700);\n }\n\n .focus-visible\\:ring-blue-1000:focus-visible {\n --tw-ring-color: var(--color-blue-1000);\n }\n\n .focus-visible\\:ring-red-700:focus-visible {\n --tw-ring-color: var(--color-red-700);\n }\n\n .focus-visible\\:ring-red-1000:focus-visible {\n --tw-ring-color: var(--color-red-1000);\n }\n\n .focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n\n .focus-visible\\:outline-hidden:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n\n @media (forced-colors: active) {\n .focus-visible\\:outline-hidden:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #0000;\n }\n }\n\n .active\\:bg-blue-200:active {\n background-color: var(--color-blue-200);\n }\n\n .active\\:bg-blue-900:active {\n background-color: var(--color-blue-900);\n }\n\n .active\\:bg-gray-50:active {\n background-color: var(--color-gray-50);\n }\n\n .active\\:bg-gray-100:active {\n background-color: var(--color-gray-100);\n }\n\n .active\\:bg-gray-200:active {\n background-color: var(--color-gray-200);\n }\n\n .active\\:bg-gray-300:active {\n background-color: var(--color-gray-300);\n }\n\n .active\\:bg-gray-500:active {\n background-color: var(--color-gray-500);\n }\n\n .active\\:bg-red-200:active {\n background-color: var(--color-red-200);\n }\n\n .active\\:bg-red-800:active {\n background-color: var(--color-red-800);\n }\n\n .active\\:bg-red-900:active {\n background-color: var(--color-red-900);\n }\n\n .active\\:text-blue-900:active {\n color: var(--color-blue-900);\n }\n\n .disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n }\n\n .disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n }\n\n .disabled\\:opacity-40:disabled {\n opacity: .4;\n }\n\n .disabled\\:opacity-50:disabled {\n opacity: .5;\n }\n\n .disabled\\:select-none:disabled {\n user-select: none;\n }\n\n :where(.dark-theme) .in-\\[\\.dark-theme\\]\\:bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n\n .aria-selected\\:rounded-md[aria-selected=\"true\"] {\n border-radius: var(--radius-md);\n }\n\n .aria-selected\\:bg-blue-100[aria-selected=\"true\"], :is(.aria-selected\\:\\*\\:bg-blue-100[aria-selected=\"true\"] > *) {\n background-color: var(--color-blue-100);\n }\n\n :is(.aria-selected\\:\\*\\:text-blue-700[aria-selected=\"true\"] > *) {\n color: var(--color-blue-700);\n }\n\n .first\\:aria-selected\\:rounded-l-md:first-child[aria-selected=\"true\"] {\n border-top-left-radius: var(--radius-md);\n border-bottom-left-radius: var(--radius-md);\n }\n\n .last\\:aria-selected\\:rounded-r-md:last-child[aria-selected=\"true\"] {\n border-top-right-radius: var(--radius-md);\n border-bottom-right-radius: var(--radius-md);\n }\n\n .data-disabled\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n }\n\n .data-disabled\\:cursor-not-allowed[data-disabled] {\n cursor: not-allowed;\n }\n\n .data-disabled\\:opacity-40[data-disabled] {\n opacity: .4;\n }\n\n .data-disabled\\:opacity-50[data-disabled] {\n opacity: .5;\n }\n\n .data-\\[disabled\\=true\\]\\:cursor-not-allowed[data-disabled=\"true\"] {\n cursor: not-allowed;\n }\n\n .data-\\[disabled\\=true\\]\\:opacity-50[data-disabled=\"true\"] {\n opacity: .5;\n }\n\n .data-\\[selected\\=true\\]\\:bg-gray-50[data-selected=\"true\"] {\n background-color: var(--color-gray-50);\n }\n\n .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=\"bottom\"] {\n --tw-enter-translate-y: -.5rem;\n }\n\n .data-\\[side\\=left\\]\\:-translate-x-1[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=\"left\"] {\n --tw-enter-translate-x: .5rem;\n }\n\n .data-\\[side\\=right\\]\\:translate-x-1[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=\"right\"] {\n --tw-enter-translate-x: -.5rem;\n }\n\n .data-\\[side\\=top\\]\\:-translate-y-1[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=\"top\"] {\n --tw-enter-translate-y: .5rem;\n }\n\n .data-\\[size\\=xxs\\]\\:bg-amber-700[data-size=\"xxs\"] {\n background-color: var(--color-amber-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-blue-700[data-size=\"xxs\"] {\n background-color: var(--color-blue-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-bronze-700[data-size=\"xxs\"] {\n background-color: var(--color-bronze-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-brown-700[data-size=\"xxs\"] {\n background-color: var(--color-brown-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-crimson-700[data-size=\"xxs\"] {\n background-color: var(--color-crimson-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-cyan-700[data-size=\"xxs\"] {\n background-color: var(--color-cyan-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-gold-700[data-size=\"xxs\"] {\n background-color: var(--color-gold-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-grass-700[data-size=\"xxs\"] {\n background-color: var(--color-grass-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-gray-700[data-size=\"xxs\"] {\n background-color: var(--color-gray-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-green-700[data-size=\"xxs\"] {\n background-color: var(--color-green-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-indigo-700[data-size=\"xxs\"] {\n background-color: var(--color-indigo-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-lime-700[data-size=\"xxs\"] {\n background-color: var(--color-lime-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-plum-700[data-size=\"xxs\"] {\n background-color: var(--color-plum-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-purple-700[data-size=\"xxs\"] {\n background-color: var(--color-purple-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-red-700[data-size=\"xxs\"] {\n background-color: var(--color-red-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-teal-700[data-size=\"xxs\"] {\n background-color: var(--color-teal-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-violet-700[data-size=\"xxs\"] {\n background-color: var(--color-violet-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-yellow-700[data-size=\"xxs\"] {\n background-color: var(--color-yellow-700);\n }\n\n .data-\\[state\\=active\\]\\:bg-black[data-state=\"active\"] {\n background-color: var(--color-black);\n }\n\n .data-\\[state\\=active\\]\\:bg-white[data-state=\"active\"] {\n background-color: var(--color-white);\n }\n\n .data-\\[state\\=active\\]\\:text-blue-700[data-state=\"active\"] {\n color: var(--color-blue-700);\n }\n\n .data-\\[state\\=active\\]\\:shadow-xs[data-state=\"active\"] {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, #0000000d);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .data-\\[state\\=checked\\]\\:translate-x-5[data-state=\"checked\"] {\n --tw-translate-x: calc(var(--spacing) * 5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[state\\=checked\\]\\:border-blue-700[data-state=\"checked\"] {\n border-color: var(--color-blue-700);\n }\n\n .data-\\[state\\=checked\\]\\:bg-blue-700[data-state=\"checked\"] {\n background-color: var(--color-blue-700);\n }\n\n .data-\\[state\\=checked\\]\\:bg-gray-50[data-state=\"checked\"] {\n background-color: var(--color-gray-50);\n }\n\n .data-\\[state\\=checked\\]\\:bg-white[data-state=\"checked\"] {\n background-color: var(--color-white);\n }\n\n .data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=\"closed\"] {\n animation: var(--animate-accordion-up);\n }\n\n .data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n --tw-duration: .3s;\n transition-duration: .3s;\n }\n\n .data-\\[state\\=closed\\]\\:animate-out[data-state=\"closed\"] {\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n animation-name: exit;\n animation-duration: .15s;\n }\n\n .data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n animation-duration: .3s;\n }\n\n .data-\\[state\\=closed\\]\\:fade-out[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:fade-out-0[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n }\n\n .data-\\[state\\=closed\\]\\:fade-out-80[data-state=\"closed\"] {\n --tw-exit-opacity: .8;\n }\n\n .data-\\[state\\=closed\\]\\:slide-out-to-bottom[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-bottom-\\[100\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n }\n\n .data-\\[state\\=closed\\]\\:slide-out-to-left[data-state=\"closed\"] {\n --tw-exit-translate-x: -100%;\n }\n\n .data-\\[state\\=closed\\]\\:slide-out-to-right[data-state=\"closed\"] {\n --tw-exit-translate-x: 100%;\n }\n\n .data-\\[state\\=closed\\]\\:slide-out-to-top[data-state=\"closed\"] {\n --tw-exit-translate-y: -100%;\n }\n\n .data-\\[state\\=closed\\]\\:zoom-out-95[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n }\n\n .data-\\[state\\=on\\]\\:border-blue-700[data-state=\"on\"] {\n border-color: var(--color-blue-700);\n }\n\n .data-\\[state\\=open\\]\\:animate-accordion-down[data-state=\"open\"] {\n animation: var(--animate-accordion-down);\n }\n\n .data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n --tw-duration: .5s;\n transition-duration: .5s;\n }\n\n .data-\\[state\\=open\\]\\:animate-in[data-state=\"open\"] {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n }\n\n .data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n animation-duration: .5s;\n }\n\n .data-\\[state\\=open\\]\\:fade-in-0[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n }\n\n .data-\\[state\\=open\\]\\:slide-in-from-bottom[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-bottom-\\[100\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n\n .data-\\[state\\=open\\]\\:slide-in-from-left[data-state=\"open\"] {\n --tw-enter-translate-x: -100%;\n }\n\n .data-\\[state\\=open\\]\\:slide-in-from-right[data-state=\"open\"] {\n --tw-enter-translate-x: 100%;\n }\n\n .data-\\[state\\=open\\]\\:slide-in-from-top[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n }\n\n .data-\\[state\\=open\\]\\:zoom-in-95[data-state=\"open\"] {\n --tw-enter-scale: .95;\n }\n\n .data-\\[state\\=selected\\]\\:bg-gray-50[data-state=\"selected\"] {\n background-color: var(--color-gray-50);\n }\n\n .data-disabled\\:data-\\[state\\=unchecked\\]\\:bg-gray-300[data-disabled][data-state=\"unchecked\"] {\n background-color: var(--color-gray-300);\n }\n\n .data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=\"cancel\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=\"end\"] {\n --tw-translate-x: var(--radix-toast-swipe-end-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[swipe\\=end\\]\\:animate-out[data-swipe=\"end\"] {\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n animation-name: exit;\n animation-duration: .15s;\n }\n\n .data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=\"move\"] {\n --tw-translate-x: var(--radix-toast-swipe-move-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[swipe\\=move\\]\\:transition-none[data-swipe=\"move\"] {\n transition-property: none;\n }\n\n @media not all and (width >= 64rem) {\n .max-lg\\:hidden {\n display: none;\n }\n }\n\n @media not all and (width >= 40rem) {\n .max-sm\\:gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n\n .max-sm\\:p-4 {\n padding: calc(var(--spacing) * 4);\n }\n }\n\n @media (width >= 40rem) {\n .sm\\:mt-0 {\n margin-top: calc(var(--spacing) * 0);\n }\n\n .sm\\:max-w-md {\n max-width: var(--container-md);\n }\n\n .sm\\:max-w-sm {\n max-width: var(--container-sm);\n }\n\n .sm\\:flex-col {\n flex-direction: column;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n :where(.sm\\:space-x-2 > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:data-\\[state\\=open\\]\\:slide-in-from-bottom-full[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n }\n\n @media (width >= 48rem) {\n .md\\:block {\n display: block;\n }\n\n .md\\:h-\\[550px\\] {\n height: 550px;\n }\n\n .md\\:w-\\[300px\\] {\n width: 300px;\n }\n\n .md\\:w-\\[326px\\] {\n width: 326px;\n }\n\n .md\\:w-\\[1000px\\] {\n width: 1000px;\n }\n\n .md\\:w-auto {\n width: auto;\n }\n\n .md\\:w-fit {\n width: fit-content;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:max-w-\\[90vw\\] {\n max-width: 90vw;\n }\n\n .md\\:max-w-\\[420px\\] {\n max-width: 420px;\n }\n\n .md\\:min-w-\\[500px\\] {\n min-width: 500px;\n }\n\n .md\\:flex-row {\n flex-direction: row;\n }\n\n .md\\:items-center {\n align-items: center;\n }\n\n .md\\:justify-start {\n justify-content: flex-start;\n }\n\n .md\\:gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n\n .md\\:gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n\n .md\\:gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n\n .md\\:gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n\n :where(.md\\:divide-y > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n\n .md\\:border-0 {\n border-style: var(--tw-border-style);\n border-width: 0;\n }\n\n .md\\:bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n\n .md\\:bg-transparent {\n background-color: #0000;\n }\n\n .md\\:p-0 {\n padding: calc(var(--spacing) * 0);\n }\n\n .md\\:p-4 {\n padding: calc(var(--spacing) * 4);\n }\n\n .md\\:p-6 {\n padding: calc(var(--spacing) * 6);\n }\n\n .md\\:p-8 {\n padding: calc(var(--spacing) * 8);\n }\n }\n\n @media (width >= 64rem) {\n .lg\\:h-14 {\n height: calc(var(--spacing) * 14);\n }\n\n .lg\\:w-14 {\n width: calc(var(--spacing) * 14);\n }\n\n .lg\\:flex-row {\n flex-direction: row;\n }\n\n .lg\\:gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n\n .lg\\:gap-16 {\n gap: calc(var(--spacing) * 16);\n }\n\n .lg\\:bg-pattern {\n background-image: var(--background-image-pattern);\n }\n\n .lg\\:p-20 {\n padding: calc(var(--spacing) * 20);\n }\n\n .lg\\:text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n letter-spacing: var(--tw-tracking, var(--text-4xl--letter-spacing));\n }\n\n .lg\\:text-md {\n font-size: var(--text-md);\n line-height: var(--tw-leading, var(--text-md--line-height));\n letter-spacing: var(--tw-tracking, var(--text-md--letter-spacing));\n }\n }\n\n @media (width >= 80rem) {\n .xl\\:rounded-none {\n border-radius: 0;\n }\n }\n\n .dark\\:bg-white\\/50:where(.dark-theme, .dark-theme *) {\n background-color: var(--color-white);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .dark\\:bg-white\\/50:where(.dark-theme, .dark-theme *) {\n background-color: color-mix(in oklab, var(--color-white) 50%, transparent);\n }\n }\n\n .dark\\:fill-black:where(.dark-theme, .dark-theme *) {\n fill: var(--color-black);\n }\n\n .dark\\:text-black:where(.dark-theme, .dark-theme *), :is(.dark\\:\\*\\:text-black:where(.dark-theme, .dark-theme *) > *) {\n color: var(--color-black);\n }\n\n @media (hover: hover) {\n :is(.dark\\:hover\\:\\*\\:text-black:where(.dark-theme, .dark-theme *):hover > *) {\n color: var(--color-black);\n }\n }\n\n :is(.dark\\:focus\\:\\*\\:text-black:where(.dark-theme, .dark-theme *):focus > *), .dark\\:data-\\[state\\=active\\]\\:text-black:where(.dark-theme, .dark-theme *)[data-state=\"active\"] {\n color: var(--color-black);\n }\n\n .dark\\:data-\\[state\\=active\\]\\:text-white:where(.dark-theme, .dark-theme *)[data-state=\"active\"] {\n color: var(--color-white);\n }\n\n .dark\\:data-\\[state\\=checked\\]\\:bg-black:where(.dark-theme, .dark-theme *)[data-state=\"checked\"] {\n background-color: var(--color-black);\n }\n\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-inline: calc(var(--spacing) * 2);\n }\n\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-block: calc(var(--spacing) * 1.5);\n }\n\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-sm [cmdk-group-heading] {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n letter-spacing: var(--tw-tracking, var(--text-sm--letter-spacing));\n }\n\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-black [cmdk-group-heading] {\n color: var(--color-black);\n }\n\n .\\[\\&_tr\\]\\:border-b tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n\n .\\[\\&_tr\\:active\\]\\:bg-gray-50 tr:active {\n background-color: var(--color-gray-50);\n }\n\n .\\[\\&_tr\\:hover\\]\\:bg-gray-25 tr:hover {\n background-color: var(--color-gray-25);\n }\n\n .\\[\\&_tr\\:hover\\:active\\]\\:bg-gray-50 tr:hover:active {\n background-color: var(--color-gray-50);\n }\n\n .\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child {\n border-style: var(--tw-border-style);\n border-width: 0;\n }\n\n .aria-selected\\:\\[\\&\\.day-outside\\]\\:bg-blue-100\\/50[aria-selected=\"true\"].day-outside {\n background-color: var(--color-blue-100);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .aria-selected\\:\\[\\&\\.day-outside\\]\\:bg-blue-100\\/50[aria-selected=\"true\"].day-outside {\n background-color: color-mix(in oklab, var(--color-blue-100) 50%, transparent);\n }\n }\n\n .\\[\\&\\.day-range-end\\]\\:rounded-r-md.day-range-end, .aria-selected\\:\\[\\&\\.day-range-end\\]\\:rounded-r-md[aria-selected=\"true\"].day-range-end {\n border-top-right-radius: var(--radius-md);\n border-bottom-right-radius: var(--radius-md);\n }\n\n .\\[\\&\\.day-range-start\\]\\:rounded-l-md.day-range-start {\n border-top-left-radius: var(--radius-md);\n border-bottom-left-radius: var(--radius-md);\n }\n\n .\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=\"checkbox\"]) {\n padding-right: calc(var(--spacing) * 0);\n }\n\n .\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] > [role=\"checkbox\"] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .\\[\\&\\>button\\]\\:w-full > button {\n width: 100%;\n }\n\n .\\[\\&\\>div\\]\\:h-\\[72px\\] > div {\n height: 72px;\n }\n\n .\\[\\&\\>div\\]\\:w-full > div {\n width: 100%;\n }\n\n .\\[\\&\\>svg\\]\\:h-4 > svg {\n height: calc(var(--spacing) * 4);\n }\n\n .\\[\\&\\>svg\\]\\:w-auto > svg {\n width: auto;\n }\n\n .\\[\\&\\>svg\\]\\:text-black > svg {\n color: var(--color-black);\n }\n\n .\\[\\&\\>svg\\]\\:text-blue-700 > svg {\n color: var(--color-blue-700);\n }\n\n .\\[\\&\\>svg\\]\\:text-current > svg {\n color: currentColor;\n }\n\n .\\[\\&\\>svg\\]\\:text-gray-700 > svg {\n color: var(--color-gray-700);\n }\n\n .\\[\\&\\>svg\\]\\:text-red-700 > svg {\n color: var(--color-red-700);\n }\n\n .\\[\\&\\>svg\\]\\:text-white > svg {\n color: var(--color-white);\n }\n\n @media (hover: hover) {\n .hover\\:\\[\\&\\>svg\\]\\:text-black:hover > svg {\n color: var(--color-black);\n }\n }\n\n .dark\\:\\[\\&\\>svg\\]\\:text-black:where(.dark-theme, .dark-theme *) > svg {\n color: var(--color-black);\n }\n}\n\n* {\n box-sizing: border-box;\n -webkit-font-smoothing: antialiased;\n}\n\n:root, .light-theme {\n --color-white: #fff;\n --color-black: #121212;\n --color-gray-25: #fcfcfc;\n --color-gray-50: #f7f7f7;\n --color-gray-100: #f2f2f2;\n --color-gray-200: #ededed;\n --color-gray-300: #e8e8e8;\n --color-gray-400: #e3e3e3;\n --color-gray-500: #dbdbdb;\n --color-gray-600: #c7c7c7;\n --color-gray-700: #8f8f8f;\n --color-gray-800: #858585;\n --color-gray-900: #707070;\n --color-gray-1000: #171717;\n --color-blue-25: #fafcff;\n --color-blue-50: #f5f9ff;\n --color-blue-100: #f0f6ff;\n --color-blue-200: #d7e7fe;\n --color-blue-300: #c7deff;\n --color-blue-400: #b8d5ff;\n --color-blue-500: #85b8ff;\n --color-blue-600: #579dff;\n --color-blue-700: #006aff;\n --color-blue-800: #005bdb;\n --color-blue-900: #004db8;\n --color-blue-1000: #002252;\n --color-red-25: snow;\n --color-red-50: snow;\n --color-red-100: #fff0f0;\n --color-red-200: #ffe5e5;\n --color-red-300: #fdd8d8;\n --color-red-400: #f9c8c8;\n --color-red-500: #f3afb0;\n --color-red-600: #ea8f90;\n --color-red-700: #e5484d;\n --color-red-800: #db3d42;\n --color-red-900: #ce2c31;\n --color-red-1000: #391417;\n --color-amber-25: #fffcf6;\n --color-amber-50: #fffaf2;\n --color-amber-100: #fff9ed;\n --color-amber-200: #fff3de;\n --color-amber-300: #ffefd1;\n --color-amber-400: #ffe8bd;\n --color-amber-500: #ffdd9f;\n --color-amber-600: #ffcf77;\n --color-amber-700: #ffb224;\n --color-amber-800: #f9a710;\n --color-amber-900: #e4980c;\n --color-amber-1000: #4e2009;\n --color-green-25: #fbfefc;\n --color-green-50: #f3fcf5;\n --color-green-100: #ebfaf0;\n --color-green-200: #ddf3e4;\n --color-green-300: #ccebd7;\n --color-green-400: #b4dfc4;\n --color-green-500: #92ceac;\n --color-green-600: #5bb98b;\n --color-green-700: #30a66d;\n --color-green-800: #2a9865;\n --color-green-900: #18774c;\n --color-green-1000: #153226;\n --color-tomato-25: snow;\n --color-tomato-50: #fff6f5;\n --color-tomato-100: #fff1f0;\n --color-tomato-200: #ffe4e0;\n --color-tomato-300: #fdd8d3;\n --color-tomato-400: #fac6bd;\n --color-tomato-500: #f3aea0;\n --color-tomato-600: #ea9280;\n --color-tomato-700: #e54d2e;\n --color-tomato-800: #db4224;\n --color-tomato-900: #cc3314;\n --color-tomato-1000: #361811;\n --color-crimson-25: #fffafc;\n --color-crimson-50: #fff5fa;\n --color-crimson-100: #fef1f7;\n --color-crimson-200: #fce4ef;\n --color-crimson-300: #f9d7e6;\n --color-crimson-400: #f4c7dc;\n --color-crimson-500: #edabc7;\n --color-crimson-600: #e58fb2;\n --color-crimson-700: #ea3e83;\n --color-crimson-800: #e13378;\n --color-crimson-900: #d21e66;\n --color-crimson-1000: #3f0d1e;\n --color-pink-25: #fffafd;\n --color-pink-50: #fff5fb;\n --color-pink-100: #feecf7;\n --color-pink-200: #fce4f3;\n --color-pink-300: #f9d7eb;\n --color-pink-400: #f3c4e1;\n --color-pink-500: #ecacd3;\n --color-pink-600: #e28dc2;\n --color-pink-700: #d742a0;\n --color-pink-800: #d23297;\n --color-pink-900: #cd1d8d;\n --color-pink-1000: #3d0a2b;\n --color-plum-25: #fdfaff;\n --color-plum-50: #fffaff;\n --color-plum-100: #fceefc;\n --color-plum-200: #f9e6f9;\n --color-plum-300: #f3d7f4;\n --color-plum-400: #ecc9ee;\n --color-plum-500: #dfb0e3;\n --color-plum-600: #cf92d9;\n --color-plum-700: #ab4aba;\n --color-plum-800: #a43cb4;\n --color-plum-900: #9a2bab;\n --color-plum-1000: #340c3b;\n --color-purple-25: #fefbfe;\n --color-purple-50: #fdfaff;\n --color-purple-100: #f9f1fe;\n --color-purple-200: #f4e8fc;\n --color-purple-300: #eddcf9;\n --color-purple-400: #e4cdf4;\n --color-purple-500: #d4b5ed;\n --color-purple-600: #bf95e4;\n --color-purple-700: #8e4ec6;\n --color-purple-800: #8344bb;\n --color-purple-900: #793bb0;\n --color-purple-1000: #2b0e44;\n --color-violet-25: #fcfbfe;\n --color-violet-50: #fbfaff;\n --color-violet-100: #f3f0ff;\n --color-violet-200: #ebe7fe;\n --color-violet-300: #e4defc;\n --color-violet-400: #d5cdf9;\n --color-violet-500: #c5b9f3;\n --color-violet-600: #a898ec;\n --color-violet-700: #6d54cf;\n --color-violet-800: #634ec1;\n --color-violet-900: #5746af;\n --color-violet-1000: #1f1249;\n --color-indigo-25: #fcfcfd;\n --color-indigo-50: #fafbff;\n --color-indigo-100: #f0f4ff;\n --color-indigo-200: #e7edfe;\n --color-indigo-300: #d9e2fc;\n --color-indigo-400: #c8d5f9;\n --color-indigo-500: #adbff5;\n --color-indigo-600: #8fa6ef;\n --color-indigo-700: #3c61dd;\n --color-indigo-800: #385bcc;\n --color-indigo-900: #3451b2;\n --color-indigo-1000: #101d47;\n --color-cyan-25: #fbfdfe;\n --color-cyan-50: #f2fcfd;\n --color-cyan-100: #e9f9fb;\n --color-cyan-200: #daf4f7;\n --color-cyan-300: #c3e9ef;\n --color-cyan-400: #a8dee6;\n --color-cyan-500: #85cedb;\n --color-cyan-600: #3fb9cf;\n --color-cyan-700: #05a2c2;\n --color-cyan-800: #0895b4;\n --color-cyan-900: #0c7792;\n --color-cyan-1000: #04323e;\n --color-teal-25: #fbfefd;\n --color-teal-50: #f2fcfa;\n --color-teal-100: #e7f9f5;\n --color-teal-200: #d8f3ed;\n --color-teal-300: #c7ebe5;\n --color-teal-400: #afdfd7;\n --color-teal-500: #8dcec3;\n --color-teal-600: #55b9ac;\n --color-teal-700: #12a594;\n --color-teal-800: #0e9a8a;\n --color-teal-900: #067a6e;\n --color-teal-1000: #11322d;\n --color-grass-25: #fbfefb;\n --color-grass-50: #f3fcf3;\n --color-grass-100: #ebf9eb;\n --color-grass-200: #def2de;\n --color-grass-300: #cceacd;\n --color-grass-400: #b9dfbc;\n --color-grass-500: #96cf9b;\n --color-grass-600: #64b974;\n --color-grass-700: #45a557;\n --color-grass-800: #3d994f;\n --color-grass-900: #297a3a;\n --color-grass-1000: #1b311e;\n --color-brown-25: #fefcfb;\n --color-brown-50: #fcfaf7;\n --color-brown-100: #f9f2ec;\n --color-brown-200: #f4e8dc;\n --color-brown-300: #efddcd;\n --color-brown-400: #e8cdb5;\n --color-brown-500: #ddb997;\n --color-brown-600: #d09e71;\n --color-brown-700: #ad7f58;\n --color-brown-800: #a27653;\n --color-brown-900: #886349;\n --color-brown-1000: #3f2c22;\n --color-orange-25: #fefcfb;\n --color-orange-50: #fef9f6;\n --color-orange-100: #fff0e5;\n --color-orange-200: #ffe8d6;\n --color-orange-300: #ffdbc2;\n --color-orange-400: #ffcca8;\n --color-orange-500: #ffb280;\n --color-orange-600: #fa924c;\n --color-orange-700: #f76808;\n --color-orange-800: #eb5e00;\n --color-orange-900: #bd4b00;\n --color-orange-1000: #451e11;\n --color-sky-25: #fafeff;\n --color-sky-50: #f0fcff;\n --color-sky-100: #e5f9ff;\n --color-sky-200: #d3f3fd;\n --color-sky-300: #c3ecf9;\n --color-sky-400: #a2def1;\n --color-sky-500: #7bd0ea;\n --color-sky-600: #2ebee5;\n --color-sky-700: #68ddfd;\n --color-sky-800: #5dd3f4;\n --color-sky-900: #007aa3;\n --color-sky-1000: #003242;\n --color-mint-25: #fbfefe;\n --color-mint-50: #f1fefa;\n --color-mint-100: #e0fbf3;\n --color-mint-200: #d4f7ee;\n --color-mint-300: #c2efe4;\n --color-mint-400: #a5e4d4;\n --color-mint-500: #7dd4bf;\n --color-mint-600: #40c4aa;\n --color-mint-700: #70e1c8;\n --color-mint-800: #68d9c1;\n --color-mint-900: #147b6d;\n --color-mint-1000: #09342e;\n --color-lime-25: #fdfefb;\n --color-lime-50: #f6fcee;\n --color-lime-100: #eefadb;\n --color-lime-200: #e3f7c5;\n --color-lime-300: #d7f2b0;\n --color-lime-400: #cae996;\n --color-lime-500: #b1d16b;\n --color-lime-600: #94ba2c;\n --color-lime-700: #99d52a;\n --color-lime-800: #93c926;\n --color-lime-900: #5d770d;\n --color-lime-1000: #273409;\n --color-yellow-25: #fcfcf7;\n --color-yellow-50: #fffce5;\n --color-yellow-100: #fffbd1;\n --color-yellow-200: #fff8bd;\n --color-yellow-300: #fef2a4;\n --color-yellow-400: #f9e78b;\n --color-yellow-500: #efd26c;\n --color-yellow-600: #f5d90a;\n --color-yellow-700: #ebbc00;\n --color-yellow-800: #f5cc00;\n --color-yellow-900: #946800;\n --color-yellow-1000: #34280f;\n --color-gold-25: #fdfdfc;\n --color-gold-50: #fbfaf3;\n --color-gold-100: #f6f3ea;\n --color-gold-200: #eeeadd;\n --color-gold-300: #e6e0d1;\n --color-gold-400: #dad1be;\n --color-gold-500: #cbbda4;\n --color-gold-600: #b8a384;\n --color-gold-700: #968264;\n --color-gold-800: #8d7a5e;\n --color-gold-900: #776750;\n --color-gold-1000: #3b352b;\n --color-bronze-25: #fdfcfc;\n --color-bronze-50: #fdf8f7;\n --color-bronze-100: #f8f0ed;\n --color-bronze-200: #f2e8e3;\n --color-bronze-300: #eaddd7;\n --color-bronze-400: #e0cec7;\n --color-bronze-500: #d0b8af;\n --color-bronze-600: #be9f93;\n --color-bronze-700: #a18072;\n --color-bronze-800: #967669;\n --color-bronze-900: #846358;\n --color-bronze-1000: #44312c;\n}\n\n.dark-theme {\n --color-white: #121212;\n --color-black: #fff;\n --color-gray-25: #171717;\n --color-gray-50: #1c1c1c;\n --color-gray-100: #242424;\n --color-gray-200: #292929;\n --color-gray-300: #2e2e2e;\n --color-gray-400: #333;\n --color-gray-500: #3d3d3d;\n --color-gray-600: #4f4f4f;\n --color-gray-700: #707070;\n --color-gray-800: #7d7d7d;\n --color-gray-900: #a1a1a1;\n --color-gray-1000: #ededed;\n --color-blue-25: #0f161f;\n --color-blue-50: #0f1c2e;\n --color-blue-100: #10233d;\n --color-blue-200: #102a4c;\n --color-blue-300: #0f2f57;\n --color-blue-400: #0d3868;\n --color-blue-500: #0a4380;\n --color-blue-600: #0954a5;\n --color-blue-700: #0091ff;\n --color-blue-800: #389fff;\n --color-blue-900: #52a8ff;\n --color-blue-1000: #ebf6ff;\n --color-red-25: #201315;\n --color-red-50: #291415;\n --color-red-100: #3a1719;\n --color-red-200: #471a1d;\n --color-red-300: #551b1f;\n --color-red-400: #671e21;\n --color-red-500: #832126;\n --color-red-600: #a82428;\n --color-red-700: #e5484d;\n --color-red-800: #f2545a;\n --color-red-900: #ff6166;\n --color-red-1000: #feecee;\n --color-amber-25: #1f1300;\n --color-amber-50: #291800;\n --color-amber-100: #331b00;\n --color-amber-200: #3d2100;\n --color-amber-300: #4d2a00;\n --color-amber-400: #573300;\n --color-amber-500: #6b4105;\n --color-amber-600: #804d00;\n --color-amber-700: #ffb224;\n --color-amber-800: #ffbb3d;\n --color-amber-900: #ffc457;\n --color-amber-1000: #fef3dc;\n --color-green-25: #0c1811;\n --color-green-50: #0b1d16;\n --color-green-100: #0f291e;\n --color-green-200: #113123;\n --color-green-300: #133929;\n --color-green-400: #164531;\n --color-green-500: #1b553b;\n --color-green-600: #226d49;\n --color-green-700: #30a66d;\n --color-green-800: #3caf77;\n --color-green-900: #4bc389;\n --color-green-1000: #e5fbea;\n --color-tomato-25: #1c1412;\n --color-tomato-50: #29130f;\n --color-tomato-100: #3a1713;\n --color-tomato-200: #481a14;\n --color-tomato-300: #561d15;\n --color-tomato-400: #642016;\n --color-tomato-500: #7f2315;\n --color-tomato-600: #a52b12;\n --color-tomato-700: #e54d2e;\n --color-tomato-800: #ec5d41;\n --color-tomato-900: #f16b50;\n --color-tomato-1000: #feefec;\n --color-crimson-25: #1e1519;\n --color-crimson-50: #28151d;\n --color-crimson-100: #3a1726;\n --color-crimson-200: #471a2d;\n --color-crimson-300: #551b33;\n --color-crimson-400: #631d3a;\n --color-crimson-500: #811d45;\n --color-crimson-600: #ae1955;\n --color-crimson-700: #ea3e83;\n --color-crimson-800: #f05189;\n --color-crimson-900: #f75f8f;\n --color-crimson-1000: #feecf4;\n --color-pink-25: #20131c;\n --color-pink-50: #281522;\n --color-pink-100: #3a182f;\n --color-pink-200: #461b38;\n --color-pink-300: #501b3f;\n --color-pink-400: #621d4a;\n --color-pink-500: #7c1d5b;\n --color-pink-600: #a51871;\n --color-pink-700: #d742a0;\n --color-pink-800: #e34aa8;\n --color-pink-900: #f65ab5;\n --color-pink-1000: #feecf7;\n --color-plum-25: #1c121c;\n --color-plum-50: #241424;\n --color-plum-100: #331a33;\n --color-plum-200: #3e1c3f;\n --color-plum-300: #48214a;\n --color-plum-400: #552659;\n --color-plum-500: #6b2e70;\n --color-plum-600: #883894;\n --color-plum-700: #ab4aba;\n --color-plum-800: #bc53c6;\n --color-plum-900: #d864d8;\n --color-plum-1000: #fbedfc;\n --color-purple-25: #1c151e;\n --color-purple-50: #231528;\n --color-purple-100: #2e1938;\n --color-purple-200: #3a1e48;\n --color-purple-300: #422154;\n --color-purple-400: #4f2768;\n --color-purple-500: #5f2e85;\n --color-purple-600: #7938b2;\n --color-purple-700: #8e4ec6;\n --color-purple-800: #9c5bd2;\n --color-purple-900: #bf7af0;\n --color-purple-1000: #f8edfc;\n --color-violet-25: #17151e;\n --color-violet-50: #1c172b;\n --color-violet-100: #241d3e;\n --color-violet-200: #2b224f;\n --color-violet-300: #32265e;\n --color-violet-400: #392c72;\n --color-violet-500: #443592;\n --color-violet-600: #5741c3;\n --color-violet-700: #6d54cf;\n --color-violet-800: #7b65dc;\n --color-violet-900: #9f8dfc;\n --color-violet-1000: #efecfe;\n --color-indigo-25: #131620;\n --color-indigo-50: #15192d;\n --color-indigo-100: #18203e;\n --color-indigo-200: #1c274f;\n --color-indigo-300: #1f2c5c;\n --color-indigo-400: #22336d;\n --color-indigo-500: #273f8b;\n --color-indigo-600: #2f4db1;\n --color-indigo-700: #3c61dd;\n --color-indigo-800: #5474e8;\n --color-indigo-900: #859dff;\n --color-indigo-1000: #edf0fd;\n --color-cyan-25: #07191d;\n --color-cyan-50: #061d23;\n --color-cyan-100: #072931;\n --color-cyan-200: #07303b;\n --color-cyan-300: #073945;\n --color-cyan-400: #064251;\n --color-cyan-500: #044f62;\n --color-cyan-600: #006680;\n --color-cyan-700: #05a2c2;\n --color-cyan-800: #00b1cc;\n --color-cyan-900: #00c1d6;\n --color-cyan-1000: #e0f8fa;\n --color-teal-25: #091a16;\n --color-teal-50: #04201b;\n --color-teal-100: #062822;\n --color-teal-200: #07312b;\n --color-teal-300: #083a33;\n --color-teal-400: #09443c;\n --color-teal-500: #0b564c;\n --color-teal-600: #0c6e63;\n --color-teal-700: #12a594;\n --color-teal-800: #10b2a2;\n --color-teal-900: #0ac7b4;\n --color-teal-1000: #e0faf4;\n --color-grass-25: #0c1811;\n --color-grass-50: #0f1f13;\n --color-grass-100: #142a1a;\n --color-grass-200: #16311e;\n --color-grass-300: #193921;\n --color-grass-400: #1d4427;\n --color-grass-500: #255631;\n --color-grass-600: #2f6f3b;\n --color-grass-700: #45a557;\n --color-grass-800: #55b466;\n --color-grass-900: #62c073;\n --color-grass-1000: #e5fbea;\n --color-brown-25: #1a1614;\n --color-brown-50: #211712;\n --color-brown-100: #2e201a;\n --color-brown-200: #35251d;\n --color-brown-300: #3f2c22;\n --color-brown-400: #483528;\n --color-brown-500: #5d4332;\n --color-brown-600: #775940;\n --color-brown-700: #ad7f58;\n --color-brown-800: #bd8c61;\n --color-brown-900: #dba270;\n --color-brown-1000: #faf0e5;\n --color-orange-25: #1e1106;\n --color-orange-50: #291300;\n --color-orange-100: #3a1b03;\n --color-orange-200: #431e04;\n --color-orange-300: #4d2205;\n --color-orange-400: #602a06;\n --color-orange-500: #763205;\n --color-orange-600: #943e00;\n --color-orange-700: #f76808;\n --color-orange-800: #ff7e29;\n --color-orange-900: #ff8b3d;\n --color-orange-1000: #feeadc;\n --color-sky-25: #0d1921;\n --color-sky-50: #071e2c;\n --color-sky-100: #082535;\n --color-sky-200: #082c40;\n --color-sky-300: #08344a;\n --color-sky-400: #083e59;\n --color-sky-500: #064a6a;\n --color-sky-600: #005d85;\n --color-sky-700: #68ddfd;\n --color-sky-800: #8ae8ff;\n --color-sky-900: #2fc8ee;\n --color-sky-1000: #ebf8ff;\n --color-mint-25: #071715;\n --color-mint-50: #051f1d;\n --color-mint-100: #052926;\n --color-mint-200: #042f2a;\n --color-mint-300: #033a34;\n --color-mint-400: #01463e;\n --color-mint-500: #00574b;\n --color-mint-600: #006b59;\n --color-mint-700: #70e1c8;\n --color-mint-800: #95f3d9;\n --color-mint-900: #25d0ab;\n --color-mint-1000: #e8fcf8;\n --color-lime-25: #141807;\n --color-lime-50: #171c08;\n --color-lime-100: #1e260d;\n --color-lime-200: #252e0f;\n --color-lime-300: #2b3711;\n --color-lime-400: #354314;\n --color-lime-500: #405115;\n --color-lime-600: #546916;\n --color-lime-700: #99d52a;\n --color-lime-800: #c4f042;\n --color-lime-900: #88bf22;\n --color-lime-1000: #f0fbdf;\n --color-yellow-25: #1a1300;\n --color-yellow-50: #241b00;\n --color-yellow-100: #2e2200;\n --color-yellow-200: #332600;\n --color-yellow-300: #3d2f00;\n --color-yellow-400: #473a00;\n --color-yellow-500: #574805;\n --color-yellow-600: #705e00;\n --color-yellow-700: #f5d90a;\n --color-yellow-800: #ffef5c;\n --color-yellow-900: #f0c000;\n --color-yellow-1000: #fffad1;\n --color-gold-25: #161512;\n --color-gold-50: #1d1b16;\n --color-gold-100: #26231c;\n --color-gold-200: #2c2920;\n --color-gold-300: #353027;\n --color-gold-400: #3f392c;\n --color-gold-500: #4f4636;\n --color-gold-600: #6b5d47;\n --color-gold-700: #968264;\n --color-gold-800: #a59173;\n --color-gold-900: #bfa888;\n --color-gold-1000: #f7f5e8;\n --color-bronze-25: #191514;\n --color-bronze-50: #201a18;\n --color-bronze-100: #29201e;\n --color-bronze-200: #332824;\n --color-bronze-300: #3c2f2a;\n --color-bronze-400: #453530;\n --color-bronze-500: #57443d;\n --color-bronze-600: #74594e;\n --color-bronze-700: #a18072;\n --color-bronze-800: #b08c7d;\n --color-bronze-900: #cca494;\n --color-bronze-1000: #f9ede7;\n}\n\n.inter {\n font-family: Inter, sans-serif;\n}\n\n@supports (font-variation-settings: normal) {\n .inter {\n font-family: Inter var, sans-serif;\n }\n}\n\n.pulse-red-700 {\n animation: 2s infinite pulse-red-700;\n transform: scale(1);\n box-shadow: 0 0 #e5484d;\n}\n\n@keyframes pulse-red-700 {\n 0% {\n transform: scale(.95);\n box-shadow: 0 0 #e5484db3;\n }\n\n 70% {\n transform: scale(1);\n box-shadow: 0 0 0 6px #e5484d00;\n }\n\n to {\n transform: scale(.95);\n box-shadow: 0 0 #e5484d00;\n }\n}\n\n::-webkit-scrollbar {\n width: 0;\n height: 0;\n display: none;\n}\n\n@keyframes enter {\n 0% {\n opacity: var(--tw-enter-opacity, 1);\n 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));\n }\n}\n\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n 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));\n }\n}\n\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-divide-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-leading {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n\n@property --tw-blur {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-invert {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-duration {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ease {\n syntax: \"*\";\n inherits: false\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@keyframes accordion-down {\n 0% {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n\n@keyframes accordion-up {\n 0% {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n\n@keyframes flash {\n 0% {\n opacity: .9;\n }\n\n to {\n opacity: 0;\n }\n}\n";
|
|
14320
|
+
$1e2747ca72d0ab49$exports = "/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */\n@layer properties {\n @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {\n *, :before, :after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-divide-x-reverse: 0;\n --tw-border-style: solid;\n --tw-divide-y-reverse: 0;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --spacing: .25rem;\n --container-xs: 20rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-sm: .25rem;\n --radius-md: .375rem;\n --radius-lg: .5rem;\n --radius-xl: .75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --ease-in-out: cubic-bezier(.4, 0, .2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;\n --blur-xs: 4px;\n --blur-lg: 16px;\n --default-transition-duration: .15s;\n --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --text-xs: 12px;\n --text-xs--line-height: 16px;\n --text-xs--letter-spacing: -.02em;\n --text-sm: 14px;\n --text-sm--line-height: 20px;\n --text-sm--letter-spacing: -.02em;\n --text-md: 16px;\n --text-md--line-height: 20px;\n --text-md--letter-spacing: -.02em;\n --text-lg: 18px;\n --text-lg--line-height: 22px;\n --text-lg--letter-spacing: -.02em;\n --text-xl: 20px;\n --text-xl--line-height: 24px;\n --text-xl--letter-spacing: -.02em;\n --text-2xl: 24px;\n --text-2xl--line-height: 32px;\n --text-2xl--letter-spacing: -.02em;\n --text-3xl: 30px;\n --text-3xl--line-height: 38px;\n --text-3xl--letter-spacing: -.02em;\n --text-4xl: 36px;\n --text-4xl--line-height: 44px;\n --text-4xl--letter-spacing: -.02em;\n --text-5xl: 48px;\n --text-5xl--line-height: 60px;\n --text-5xl--letter-spacing: -.02em;\n --text-6xl: 60px;\n --text-6xl--line-height: 72px;\n --text-6xl--letter-spacing: -.02em;\n --text-7xl: 72px;\n --text-7xl--line-height: 90px;\n --text-7xl--letter-spacing: -.02em;\n --animate-accordion-down: accordion-down .2s ease-out;\n --animate-accordion-up: accordion-up .2s ease-out;\n --color-black: var(--color-black);\n --color-white: var(--color-white);\n --color-gray-25: var(--color-gray-25);\n --color-gray-50: var(--color-gray-50);\n --color-gray-100: var(--color-gray-100);\n --color-gray-200: var(--color-gray-200);\n --color-gray-300: var(--color-gray-300);\n --color-gray-400: var(--color-gray-400);\n --color-gray-500: var(--color-gray-500);\n --color-gray-600: var(--color-gray-600);\n --color-gray-700: var(--color-gray-700);\n --color-gray-800: var(--color-gray-800);\n --color-gray-900: var(--color-gray-900);\n --color-gray-1000: var(--color-gray-1000);\n --color-blue-25: var(--color-blue-25);\n --color-blue-50: var(--color-blue-50);\n --color-blue-100: var(--color-blue-100);\n --color-blue-200: var(--color-blue-200);\n --color-blue-300: var(--color-blue-300);\n --color-blue-400: var(--color-blue-400);\n --color-blue-500: var(--color-blue-500);\n --color-blue-600: var(--color-blue-600);\n --color-blue-700: var(--color-blue-700);\n --color-blue-800: var(--color-blue-800);\n --color-blue-900: var(--color-blue-900);\n --color-blue-1000: var(--color-blue-1000);\n --color-red-25: var(--color-red-25);\n --color-red-50: var(--color-red-50);\n --color-red-100: var(--color-red-100);\n --color-red-200: var(--color-red-200);\n --color-red-300: var(--color-red-300);\n --color-red-400: var(--color-red-400);\n --color-red-500: var(--color-red-500);\n --color-red-600: var(--color-red-600);\n --color-red-700: var(--color-red-700);\n --color-red-800: var(--color-red-800);\n --color-red-900: var(--color-red-900);\n --color-red-1000: var(--color-red-1000);\n --color-amber-25: var(--color-amber-25);\n --color-amber-50: var(--color-amber-50);\n --color-amber-100: var(--color-amber-100);\n --color-amber-200: var(--color-amber-200);\n --color-amber-300: var(--color-amber-300);\n --color-amber-400: var(--color-amber-400);\n --color-amber-500: var(--color-amber-500);\n --color-amber-600: var(--color-amber-600);\n --color-amber-700: var(--color-amber-700);\n --color-amber-800: var(--color-amber-800);\n --color-amber-900: var(--color-amber-900);\n --color-amber-1000: var(--color-amber-1000);\n --color-green-25: var(--color-green-25);\n --color-green-50: var(--color-green-50);\n --color-green-100: var(--color-green-100);\n --color-green-200: var(--color-green-200);\n --color-green-300: var(--color-green-300);\n --color-green-400: var(--color-green-400);\n --color-green-500: var(--color-green-500);\n --color-green-600: var(--color-green-600);\n --color-green-700: var(--color-green-700);\n --color-green-800: var(--color-green-800);\n --color-green-900: var(--color-green-900);\n --color-green-1000: var(--color-green-1000);\n --color-tomato-25: var(--color-tomato-25);\n --color-tomato-50: var(--color-tomato-50);\n --color-tomato-100: var(--color-tomato-100);\n --color-tomato-200: var(--color-tomato-200);\n --color-tomato-300: var(--color-tomato-300);\n --color-tomato-400: var(--color-tomato-400);\n --color-tomato-500: var(--color-tomato-500);\n --color-tomato-600: var(--color-tomato-600);\n --color-tomato-700: var(--color-tomato-700);\n --color-tomato-800: var(--color-tomato-800);\n --color-tomato-900: var(--color-tomato-900);\n --color-tomato-1000: var(--color-tomato-1000);\n --color-crimson-25: var(--color-crimson-25);\n --color-crimson-50: var(--color-crimson-50);\n --color-crimson-100: var(--color-crimson-100);\n --color-crimson-200: var(--color-crimson-200);\n --color-crimson-300: var(--color-crimson-300);\n --color-crimson-400: var(--color-crimson-400);\n --color-crimson-500: var(--color-crimson-500);\n --color-crimson-600: var(--color-crimson-600);\n --color-crimson-700: var(--color-crimson-700);\n --color-crimson-800: var(--color-crimson-800);\n --color-crimson-900: var(--color-crimson-900);\n --color-crimson-1000: var(--color-crimson-1000);\n --color-pink-25: var(--color-pink-25);\n --color-pink-50: var(--color-pink-50);\n --color-pink-100: var(--color-pink-100);\n --color-pink-200: var(--color-pink-200);\n --color-pink-300: var(--color-pink-300);\n --color-pink-400: var(--color-pink-400);\n --color-pink-500: var(--color-pink-500);\n --color-pink-600: var(--color-pink-600);\n --color-pink-700: var(--color-pink-700);\n --color-pink-800: var(--color-pink-800);\n --color-pink-900: var(--color-pink-900);\n --color-pink-1000: var(--color-pink-1000);\n --color-plum-25: var(--color-plum-25);\n --color-plum-50: var(--color-plum-50);\n --color-plum-100: var(--color-plum-100);\n --color-plum-200: var(--color-plum-200);\n --color-plum-300: var(--color-plum-300);\n --color-plum-400: var(--color-plum-400);\n --color-plum-500: var(--color-plum-500);\n --color-plum-600: var(--color-plum-600);\n --color-plum-700: var(--color-plum-700);\n --color-plum-800: var(--color-plum-800);\n --color-plum-900: var(--color-plum-900);\n --color-plum-1000: var(--color-plum-1000);\n --color-purple-25: var(--color-purple-25);\n --color-purple-50: var(--color-purple-50);\n --color-purple-100: var(--color-purple-100);\n --color-purple-200: var(--color-purple-200);\n --color-purple-300: var(--color-purple-300);\n --color-purple-400: var(--color-purple-400);\n --color-purple-500: var(--color-purple-500);\n --color-purple-600: var(--color-purple-600);\n --color-purple-700: var(--color-purple-700);\n --color-purple-800: var(--color-purple-800);\n --color-purple-900: var(--color-purple-900);\n --color-purple-1000: var(--color-purple-1000);\n --color-violet-25: var(--color-violet-25);\n --color-violet-50: var(--color-violet-50);\n --color-violet-100: var(--color-violet-100);\n --color-violet-200: var(--color-violet-200);\n --color-violet-300: var(--color-violet-300);\n --color-violet-400: var(--color-violet-400);\n --color-violet-500: var(--color-violet-500);\n --color-violet-600: var(--color-violet-600);\n --color-violet-700: var(--color-violet-700);\n --color-violet-800: var(--color-violet-800);\n --color-violet-900: var(--color-violet-900);\n --color-violet-1000: var(--color-violet-1000);\n --color-indigo-25: var(--color-indigo-25);\n --color-indigo-50: var(--color-indigo-50);\n --color-indigo-100: var(--color-indigo-100);\n --color-indigo-200: var(--color-indigo-200);\n --color-indigo-300: var(--color-indigo-300);\n --color-indigo-400: var(--color-indigo-400);\n --color-indigo-500: var(--color-indigo-500);\n --color-indigo-600: var(--color-indigo-600);\n --color-indigo-700: var(--color-indigo-700);\n --color-indigo-800: var(--color-indigo-800);\n --color-indigo-900: var(--color-indigo-900);\n --color-indigo-1000: var(--color-indigo-1000);\n --color-cyan-25: var(--color-cyan-25);\n --color-cyan-50: var(--color-cyan-50);\n --color-cyan-100: var(--color-cyan-100);\n --color-cyan-200: var(--color-cyan-200);\n --color-cyan-300: var(--color-cyan-300);\n --color-cyan-400: var(--color-cyan-400);\n --color-cyan-500: var(--color-cyan-500);\n --color-cyan-600: var(--color-cyan-600);\n --color-cyan-700: var(--color-cyan-700);\n --color-cyan-800: var(--color-cyan-800);\n --color-cyan-900: var(--color-cyan-900);\n --color-cyan-1000: var(--color-cyan-1000);\n --color-teal-25: var(--color-teal-25);\n --color-teal-50: var(--color-teal-50);\n --color-teal-100: var(--color-teal-100);\n --color-teal-200: var(--color-teal-200);\n --color-teal-300: var(--color-teal-300);\n --color-teal-400: var(--color-teal-400);\n --color-teal-500: var(--color-teal-500);\n --color-teal-600: var(--color-teal-600);\n --color-teal-700: var(--color-teal-700);\n --color-teal-800: var(--color-teal-800);\n --color-teal-900: var(--color-teal-900);\n --color-teal-1000: var(--color-teal-1000);\n --color-grass-25: var(--color-grass-25);\n --color-grass-50: var(--color-grass-50);\n --color-grass-100: var(--color-grass-100);\n --color-grass-200: var(--color-grass-200);\n --color-grass-300: var(--color-grass-300);\n --color-grass-400: var(--color-grass-400);\n --color-grass-500: var(--color-grass-500);\n --color-grass-600: var(--color-grass-600);\n --color-grass-700: var(--color-grass-700);\n --color-grass-800: var(--color-grass-800);\n --color-grass-900: var(--color-grass-900);\n --color-grass-1000: var(--color-grass-1000);\n --color-brown-25: var(--color-brown-25);\n --color-brown-50: var(--color-brown-50);\n --color-brown-100: var(--color-brown-100);\n --color-brown-200: var(--color-brown-200);\n --color-brown-300: var(--color-brown-300);\n --color-brown-400: var(--color-brown-400);\n --color-brown-500: var(--color-brown-500);\n --color-brown-600: var(--color-brown-600);\n --color-brown-700: var(--color-brown-700);\n --color-brown-800: var(--color-brown-800);\n --color-brown-900: var(--color-brown-900);\n --color-brown-1000: var(--color-brown-1000);\n --color-orange-25: var(--color-orange-25);\n --color-orange-50: var(--color-orange-50);\n --color-orange-100: var(--color-orange-100);\n --color-orange-200: var(--color-orange-200);\n --color-orange-300: var(--color-orange-300);\n --color-orange-400: var(--color-orange-400);\n --color-orange-500: var(--color-orange-500);\n --color-orange-600: var(--color-orange-600);\n --color-orange-700: var(--color-orange-700);\n --color-orange-800: var(--color-orange-800);\n --color-orange-900: var(--color-orange-900);\n --color-orange-1000: var(--color-orange-1000);\n --color-sky-25: var(--color-sky-25);\n --color-sky-50: var(--color-sky-50);\n --color-sky-100: var(--color-sky-100);\n --color-sky-200: var(--color-sky-200);\n --color-sky-300: var(--color-sky-300);\n --color-sky-400: var(--color-sky-400);\n --color-sky-500: var(--color-sky-500);\n --color-sky-600: var(--color-sky-600);\n --color-sky-700: var(--color-sky-700);\n --color-sky-800: var(--color-sky-800);\n --color-sky-900: var(--color-sky-900);\n --color-sky-1000: var(--color-sky-1000);\n --color-mint-25: var(--color-mint-25);\n --color-mint-50: var(--color-mint-50);\n --color-mint-100: var(--color-mint-100);\n --color-mint-200: var(--color-mint-200);\n --color-mint-300: var(--color-mint-300);\n --color-mint-400: var(--color-mint-400);\n --color-mint-500: var(--color-mint-500);\n --color-mint-600: var(--color-mint-600);\n --color-mint-700: var(--color-mint-700);\n --color-mint-800: var(--color-mint-800);\n --color-mint-900: var(--color-mint-900);\n --color-mint-1000: var(--color-mint-1000);\n --color-lime-25: var(--color-lime-25);\n --color-lime-50: var(--color-lime-50);\n --color-lime-100: var(--color-lime-100);\n --color-lime-200: var(--color-lime-200);\n --color-lime-300: var(--color-lime-300);\n --color-lime-400: var(--color-lime-400);\n --color-lime-500: var(--color-lime-500);\n --color-lime-600: var(--color-lime-600);\n --color-lime-700: var(--color-lime-700);\n --color-lime-800: var(--color-lime-800);\n --color-lime-900: var(--color-lime-900);\n --color-lime-1000: var(--color-lime-1000);\n --color-yellow-25: var(--color-yellow-25);\n --color-yellow-50: var(--color-yellow-50);\n --color-yellow-100: var(--color-yellow-100);\n --color-yellow-200: var(--color-yellow-200);\n --color-yellow-300: var(--color-yellow-300);\n --color-yellow-400: var(--color-yellow-400);\n --color-yellow-500: var(--color-yellow-500);\n --color-yellow-600: var(--color-yellow-600);\n --color-yellow-700: var(--color-yellow-700);\n --color-yellow-800: var(--color-yellow-800);\n --color-yellow-900: var(--color-yellow-900);\n --color-yellow-1000: var(--color-yellow-1000);\n --color-gold-25: var(--color-gold-25);\n --color-gold-50: var(--color-gold-50);\n --color-gold-100: var(--color-gold-100);\n --color-gold-200: var(--color-gold-200);\n --color-gold-300: var(--color-gold-300);\n --color-gold-400: var(--color-gold-400);\n --color-gold-500: var(--color-gold-500);\n --color-gold-600: var(--color-gold-600);\n --color-gold-700: var(--color-gold-700);\n --color-gold-800: var(--color-gold-800);\n --color-gold-900: var(--color-gold-900);\n --color-gold-1000: var(--color-gold-1000);\n --color-bronze-25: var(--color-bronze-25);\n --color-bronze-50: var(--color-bronze-50);\n --color-bronze-100: var(--color-bronze-100);\n --color-bronze-200: var(--color-bronze-200);\n --color-bronze-300: var(--color-bronze-300);\n --color-bronze-400: var(--color-bronze-400);\n --color-bronze-500: var(--color-bronze-500);\n --color-bronze-600: var(--color-bronze-600);\n --color-bronze-700: var(--color-bronze-700);\n --color-bronze-800: var(--color-bronze-800);\n --color-bronze-900: var(--color-bronze-900);\n --color-bronze-1000: var(--color-bronze-1000);\n --animate-flash: flash .8s forwards;\n --background-image-pattern: linear-gradient(180deg, transparent 0%, #fff 100%), linear-gradient(0deg, transparent 0%, #ffffffbf 100%), url(\"data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M40 40V41H41V40H40ZM39 0V40H41V0H39ZM40 39H0V41H40V39Z' fill='%23E8E8E8' mask='url(%23path-1-inside-1_124_242)'/%3E%3C/svg%3E\");\n }\n}\n\n@layer base {\n *, :after, :before, ::backdrop {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n ::file-selector-button {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n html, :host {\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n line-height: 1.5;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n\n abbr:where([title]) {\n text-decoration: underline dotted;\n }\n\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n\n b, strong {\n font-weight: bolder;\n }\n\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n\n small {\n font-size: 80%;\n }\n\n sub, sup {\n vertical-align: baseline;\n font-size: 75%;\n line-height: 0;\n position: relative;\n }\n\n sub {\n bottom: -.25em;\n }\n\n sup {\n top: -.5em;\n }\n\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n\n :-moz-focusring {\n outline: auto;\n }\n\n progress {\n vertical-align: baseline;\n }\n\n summary {\n display: list-item;\n }\n\n ol, ul, menu {\n list-style: none;\n }\n\n img, svg, video, canvas, audio, iframe, embed, object {\n vertical-align: middle;\n display: block;\n }\n\n img, video {\n max-width: 100%;\n height: auto;\n }\n\n button, input, select, optgroup, textarea {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n\n ::placeholder {\n opacity: 1;\n }\n\n @supports (not ((-webkit-appearance: -apple-pay-button))) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentColor;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n ::placeholder {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n\n textarea {\n resize: vertical;\n }\n\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n\n ::-webkit-datetime-edit {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-year-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-month-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-day-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-hour-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-minute-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-second-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-millisecond-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n\n :-moz-ui-invalid {\n box-shadow: none;\n }\n\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]) {\n appearance: button;\n }\n\n ::file-selector-button {\n appearance: button;\n }\n\n ::-webkit-inner-spin-button {\n height: auto;\n }\n\n ::-webkit-outer-spin-button {\n height: auto;\n }\n\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n\n button:not(:disabled), [role=\"button\"]:not(:disabled) {\n cursor: pointer;\n }\n}\n\n@layer components;\n\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n\n .pointer-events-none {\n pointer-events: none;\n }\n\n .invisible {\n visibility: hidden;\n }\n\n .visible {\n visibility: visible;\n }\n\n .sr-only {\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n }\n\n .absolute {\n position: absolute;\n }\n\n .fixed {\n position: fixed;\n }\n\n .relative {\n position: relative;\n }\n\n .static {\n position: static;\n }\n\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n\n .inset-x-0 {\n inset-inline: calc(var(--spacing) * 0);\n }\n\n .inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n\n .-top-12 {\n top: calc(var(--spacing) * -12);\n }\n\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n\n .top-1\\/2 {\n top: 50%;\n }\n\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n\n .top-6 {\n top: calc(var(--spacing) * 6);\n }\n\n .top-8 {\n top: calc(var(--spacing) * 8);\n }\n\n .top-\\[50\\%\\] {\n top: 50%;\n }\n\n .top-auto {\n top: auto;\n }\n\n .-right-12 {\n right: calc(var(--spacing) * -12);\n }\n\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n\n .right-1 {\n right: calc(var(--spacing) * 1);\n }\n\n .right-6 {\n right: calc(var(--spacing) * 6);\n }\n\n .-bottom-12 {\n bottom: calc(var(--spacing) * -12);\n }\n\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n\n .bottom-\\[-15px\\] {\n bottom: -15px;\n }\n\n .bottom-\\[1px\\] {\n bottom: 1px;\n }\n\n .-left-12 {\n left: calc(var(--spacing) * -12);\n }\n\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n\n .left-1 {\n left: calc(var(--spacing) * 1);\n }\n\n .left-1\\/2, .left-\\[50\\%\\] {\n left: 50%;\n }\n\n .z-10 {\n z-index: 10;\n }\n\n .z-16 {\n z-index: 16;\n }\n\n .z-20 {\n z-index: 20;\n }\n\n .z-30 {\n z-index: 30;\n }\n\n .z-50 {\n z-index: 50;\n }\n\n .z-98 {\n z-index: 98;\n }\n\n .z-100 {\n z-index: 100;\n }\n\n .z-150 {\n z-index: 150;\n }\n\n .z-\\[15\\] {\n z-index: 15;\n }\n\n .z-\\[21\\] {\n z-index: 21;\n }\n\n .container {\n width: 100%;\n }\n\n @media (width >= 40rem) {\n .container {\n max-width: 40rem;\n }\n }\n\n @media (width >= 48rem) {\n .container {\n max-width: 48rem;\n }\n }\n\n @media (width >= 64rem) {\n .container {\n max-width: 64rem;\n }\n }\n\n @media (width >= 80rem) {\n .container {\n max-width: 80rem;\n }\n }\n\n @media (width >= 96rem) {\n .container {\n max-width: 96rem;\n }\n }\n\n .m-auto {\n margin: auto;\n }\n\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n\n .mx-1 {\n margin-inline: calc(var(--spacing) * 1);\n }\n\n .mx-auto {\n margin-inline: auto;\n }\n\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n\n .-mt-4 {\n margin-top: calc(var(--spacing) * -4);\n }\n\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n\n .mt-\\[14px\\] {\n margin-top: 14px;\n }\n\n .mt-auto {\n margin-top: auto;\n }\n\n .-mr-2 {\n margin-right: calc(var(--spacing) * -2);\n }\n\n .mr-2\\.5 {\n margin-right: calc(var(--spacing) * 2.5);\n }\n\n .mr-7 {\n margin-right: calc(var(--spacing) * 7);\n }\n\n .mr-9 {\n margin-right: calc(var(--spacing) * 9);\n }\n\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n\n .-ml-4 {\n margin-left: calc(var(--spacing) * -4);\n }\n\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n\n .box-border {\n box-sizing: border-box;\n }\n\n .block {\n display: block;\n }\n\n .contents {\n display: contents;\n }\n\n .flex {\n display: flex;\n }\n\n .grid {\n display: grid;\n }\n\n .hidden {\n display: none;\n }\n\n .inline-block {\n display: inline-block;\n }\n\n .inline-flex {\n display: inline-flex;\n }\n\n .table {\n display: table;\n }\n\n .aspect-square {\n aspect-ratio: 1;\n }\n\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n\n .h-1\\/2 {\n height: 50%;\n }\n\n .h-1\\/3 {\n height: 33.3333%;\n }\n\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n\n .h-\\[1px\\] {\n height: 1px;\n }\n\n .h-\\[8px\\] {\n height: 8px;\n }\n\n .h-\\[16px\\] {\n height: 16px;\n }\n\n .h-\\[24px\\] {\n height: 24px;\n }\n\n .h-\\[36px\\] {\n height: 36px;\n }\n\n .h-\\[45px\\] {\n height: 45px;\n }\n\n .h-\\[52px\\] {\n height: 52px;\n }\n\n .h-\\[54px\\] {\n height: 54px;\n }\n\n .h-\\[56px\\] {\n height: 56px;\n }\n\n .h-\\[70px\\] {\n height: 70px;\n }\n\n .h-\\[72px\\] {\n height: 72px;\n }\n\n .h-\\[163px\\] {\n height: 163px;\n }\n\n .h-\\[184px\\] {\n height: 184px;\n }\n\n .h-\\[200px\\] {\n height: 200px;\n }\n\n .h-\\[250px\\] {\n height: 250px;\n }\n\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n\n .h-auto {\n height: auto;\n }\n\n .h-auto\\! {\n height: auto !important;\n }\n\n .h-dvh {\n height: 100dvh;\n }\n\n .h-full {\n height: 100%;\n }\n\n .h-px {\n height: 1px;\n }\n\n .max-h-\\[70px\\] {\n max-height: 70px;\n }\n\n .max-h-\\[75dvh\\] {\n max-height: 75dvh;\n }\n\n .max-h-\\[90dvh\\] {\n max-height: 90dvh;\n }\n\n .max-h-\\[90vh\\] {\n max-height: 90vh;\n }\n\n .max-h-\\[180px\\] {\n max-height: 180px;\n }\n\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n\n .max-h-full {\n max-height: 100%;\n }\n\n .max-h-screen {\n max-height: 100vh;\n }\n\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n\n .min-h-9 {\n min-height: calc(var(--spacing) * 9);\n }\n\n .min-h-\\[80px\\] {\n min-height: 80px;\n }\n\n .w-1\\/3 {\n width: 33.3333%;\n }\n\n .w-1\\/4 {\n width: 25%;\n }\n\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n\n .w-3\\/4 {\n width: 75%;\n }\n\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n\n .w-4\\/5 {\n width: 80%;\n }\n\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n\n .w-14 {\n width: calc(var(--spacing) * 14);\n }\n\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n\n .w-\\[1px\\] {\n width: 1px;\n }\n\n .w-\\[8px\\] {\n width: 8px;\n }\n\n .w-\\[16px\\] {\n width: 16px;\n }\n\n .w-\\[24px\\] {\n width: 24px;\n }\n\n .w-\\[36px\\] {\n width: 36px;\n }\n\n .w-\\[42px\\] {\n width: 42px;\n }\n\n .w-\\[45px\\] {\n width: 45px;\n }\n\n .w-\\[54px\\] {\n width: 54px;\n }\n\n .w-\\[56px\\] {\n width: 56px;\n }\n\n .w-\\[70px\\] {\n width: 70px;\n }\n\n .w-\\[72px\\] {\n width: 72px;\n }\n\n .w-\\[232px\\] {\n width: 232px;\n }\n\n .w-\\[240px\\] {\n width: 240px;\n }\n\n .w-\\[250px\\] {\n width: 250px;\n }\n\n .w-auto {\n width: auto;\n }\n\n .w-dvh {\n width: 100dvh;\n }\n\n .w-fit {\n width: fit-content;\n }\n\n .w-full {\n width: 100%;\n }\n\n .w-max {\n width: max-content;\n }\n\n .max-w-\\[70px\\] {\n max-width: 70px;\n }\n\n .max-w-\\[90vw\\] {\n max-width: 90vw;\n }\n\n .max-w-\\[400px\\] {\n max-width: 400px;\n }\n\n .max-w-\\[416px\\] {\n max-width: 416px;\n }\n\n .max-w-\\[500px\\] {\n max-width: 500px;\n }\n\n .max-w-\\[540px\\] {\n max-width: 540px;\n }\n\n .max-w-full {\n max-width: 100%;\n }\n\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n\n .min-w-\\[144px\\] {\n min-width: 144px;\n }\n\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n\n .flex-1 {\n flex: 1;\n }\n\n .shrink-0 {\n flex-shrink: 0;\n }\n\n .grow {\n flex-grow: 1;\n }\n\n .grow-0 {\n flex-grow: 0;\n }\n\n .basis-full {\n flex-basis: 100%;\n }\n\n .caption-bottom {\n caption-side: bottom;\n }\n\n .border-collapse {\n border-collapse: collapse;\n }\n\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .translate-x-0\\.5 {\n --tw-translate-x: calc(var(--spacing) * .5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .scale-x-\\[-1\\] {\n --tw-scale-x: -1;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n\n .transform {\n transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );\n }\n\n .animate-\\[flash_0\\.8s_forwards\\] {\n animation: .8s forwards flash;\n }\n\n .animate-flash {\n animation: var(--animate-flash);\n }\n\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n\n .animate-spin {\n animation: var(--animate-spin);\n }\n\n .cursor-default {\n cursor: default;\n }\n\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n\n .cursor-pointer {\n cursor: pointer;\n }\n\n .list-outside {\n list-style-position: outside;\n }\n\n .list-disc {\n list-style-type: disc;\n }\n\n .appearance-none {\n appearance: none;\n }\n\n .flex-col {\n flex-direction: column;\n }\n\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n\n .flex-row {\n flex-direction: row;\n }\n\n .flex-row-reverse {\n flex-direction: row-reverse;\n }\n\n .flex-wrap {\n flex-wrap: wrap;\n }\n\n .content-center {\n align-content: center;\n }\n\n .items-center {\n align-items: center;\n }\n\n .items-start {\n align-items: flex-start;\n }\n\n .justify-between {\n justify-content: space-between;\n }\n\n .justify-center {\n justify-content: center;\n }\n\n .justify-end {\n justify-content: flex-end;\n }\n\n .justify-start {\n justify-content: flex-start;\n }\n\n .gap-0\\.5 {\n gap: calc(var(--spacing) * .5);\n }\n\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n\n .gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n\n .gap-\\[15px\\] {\n gap: 15px;\n }\n\n .gap-\\[inherit\\] {\n gap: inherit;\n }\n\n :where(.space-y-1 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-1\\.5 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-4 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-5 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-6 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-x-1 > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)));\n }\n\n :where(.divide-x > :not(:last-child)) {\n --tw-divide-x-reverse: 0;\n border-inline-style: var(--tw-border-style);\n border-inline-start-width: calc(1px * var(--tw-divide-x-reverse));\n border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));\n }\n\n :where(.divide-y > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n\n :where(.divide-gray-200 > :not(:last-child)) {\n border-color: var(--color-gray-200);\n }\n\n .self-center {\n align-self: center;\n }\n\n .self-end {\n align-self: flex-end;\n }\n\n .self-start {\n align-self: flex-start;\n }\n\n .justify-self-center {\n justify-self: center;\n }\n\n .truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n .overflow-auto {\n overflow: auto;\n }\n\n .overflow-hidden {\n overflow: hidden;\n }\n\n .overflow-scroll {\n overflow: scroll;\n }\n\n .overflow-visible {\n overflow: visible;\n }\n\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n\n .overflow-y-auto {\n overflow-y: auto;\n }\n\n .overflow-y-scroll {\n overflow-y: scroll;\n }\n\n .overscroll-y-none {\n overscroll-behavior-y: none;\n }\n\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n\n .rounded-3xl {\n border-radius: var(--radius-3xl);\n }\n\n .rounded-\\[3px\\] {\n border-radius: 3px;\n }\n\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n\n .rounded-\\[6px\\] {\n border-radius: 6px;\n }\n\n .rounded-\\[8px\\] {\n border-radius: 8px;\n }\n\n .rounded-\\[10px\\] {\n border-radius: 10px;\n }\n\n .rounded-\\[14px\\] {\n border-radius: 14px;\n }\n\n .rounded-\\[inherit\\] {\n border-radius: inherit;\n }\n\n .rounded-full {\n border-radius: 3.40282e38px;\n }\n\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n\n .rounded-md {\n border-radius: var(--radius-md);\n }\n\n .rounded-none {\n border-radius: 0;\n }\n\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n\n .rounded-t-3xl {\n border-top-left-radius: var(--radius-3xl);\n border-top-right-radius: var(--radius-3xl);\n }\n\n .rounded-b-3xl {\n border-bottom-right-radius: var(--radius-3xl);\n border-bottom-left-radius: var(--radius-3xl);\n }\n\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0;\n }\n\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n\n .border-amber-700 {\n border-color: var(--color-amber-700);\n }\n\n .border-black\\/10 {\n border-color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .border-black\\/10 {\n border-color: color-mix(in oklab, var(--color-black) 10%, transparent);\n }\n }\n\n .border-blue-700 {\n border-color: var(--color-blue-700);\n }\n\n .border-gray-100 {\n border-color: var(--color-gray-100);\n }\n\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n\n .border-gray-300 {\n border-color: var(--color-gray-300);\n }\n\n .border-gray-400 {\n border-color: var(--color-gray-400);\n }\n\n .border-gray-600 {\n border-color: var(--color-gray-600);\n }\n\n .border-red-700 {\n border-color: var(--color-red-700);\n }\n\n .border-transparent {\n border-color: #0000;\n }\n\n .border-white\\/10 {\n border-color: var(--color-white);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .border-white\\/10 {\n border-color: color-mix(in oklab, var(--color-white) 10%, transparent);\n }\n }\n\n .bg-amber-100 {\n background-color: var(--color-amber-100);\n }\n\n .bg-amber-200 {\n background-color: var(--color-amber-200);\n }\n\n .bg-amber-700 {\n background-color: var(--color-amber-700);\n }\n\n .bg-black, .bg-black\\/25 {\n background-color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-black\\/25 {\n background-color: color-mix(in oklab, var(--color-black) 25%, transparent);\n }\n }\n\n .bg-black\\/50 {\n background-color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-black\\/50 {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n\n .bg-black\\/80 {\n background-color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-black\\/80 {\n background-color: color-mix(in oklab, var(--color-black) 80%, transparent);\n }\n }\n\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n\n .bg-blue-300 {\n background-color: var(--color-blue-300);\n }\n\n .bg-blue-700 {\n background-color: var(--color-blue-700);\n }\n\n .bg-bronze-300 {\n background-color: var(--color-bronze-300);\n }\n\n .bg-brown-100 {\n background-color: var(--color-brown-100);\n }\n\n .bg-brown-300 {\n background-color: var(--color-brown-300);\n }\n\n .bg-brown-700 {\n background-color: var(--color-brown-700);\n }\n\n .bg-crimson-100 {\n background-color: var(--color-crimson-100);\n }\n\n .bg-crimson-300 {\n background-color: var(--color-crimson-300);\n }\n\n .bg-crimson-700 {\n background-color: var(--color-crimson-700);\n }\n\n .bg-cyan-100 {\n background-color: var(--color-cyan-100);\n }\n\n .bg-cyan-300 {\n background-color: var(--color-cyan-300);\n }\n\n .bg-cyan-700 {\n background-color: var(--color-cyan-700);\n }\n\n .bg-gold-300 {\n background-color: var(--color-gold-300);\n }\n\n .bg-grass-300 {\n background-color: var(--color-grass-300);\n }\n\n .bg-gray-25, .bg-gray-25\\/50 {\n background-color: var(--color-gray-25);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-gray-25\\/50 {\n background-color: color-mix(in oklab, var(--color-gray-25) 50%, transparent);\n }\n }\n\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n\n .bg-gray-100, .bg-gray-100\\/50 {\n background-color: var(--color-gray-100);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-gray-100\\/50 {\n background-color: color-mix(in oklab, var(--color-gray-100) 50%, transparent);\n }\n }\n\n .bg-gray-200 {\n background-color: var(--color-gray-200);\n }\n\n .bg-gray-300 {\n background-color: var(--color-gray-300);\n }\n\n .bg-gray-600 {\n background-color: var(--color-gray-600);\n }\n\n .bg-gray-800\\/60 {\n background-color: var(--color-gray-800);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-gray-800\\/60 {\n background-color: color-mix(in oklab, var(--color-gray-800) 60%, transparent);\n }\n }\n\n .bg-gray-900 {\n background-color: var(--color-gray-900);\n }\n\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n\n .bg-green-300 {\n background-color: var(--color-green-300);\n }\n\n .bg-green-700 {\n background-color: var(--color-green-700);\n }\n\n .bg-indigo-300 {\n background-color: var(--color-indigo-300);\n }\n\n .bg-inherit {\n background-color: inherit;\n }\n\n .bg-lime-300 {\n background-color: var(--color-lime-300);\n }\n\n .bg-orange-100 {\n background-color: var(--color-orange-100);\n }\n\n .bg-orange-700 {\n background-color: var(--color-orange-700);\n }\n\n .bg-plum-300 {\n background-color: var(--color-plum-300);\n }\n\n .bg-purple-300 {\n background-color: var(--color-purple-300);\n }\n\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n\n .bg-red-300 {\n background-color: var(--color-red-300);\n }\n\n .bg-red-700, .bg-red-700\\/60 {\n background-color: var(--color-red-700);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-red-700\\/60 {\n background-color: color-mix(in oklab, var(--color-red-700) 60%, transparent);\n }\n }\n\n .bg-teal-100 {\n background-color: var(--color-teal-100);\n }\n\n .bg-teal-300 {\n background-color: var(--color-teal-300);\n }\n\n .bg-teal-700 {\n background-color: var(--color-teal-700);\n }\n\n .bg-transparent {\n background-color: #0000;\n }\n\n .bg-violet-100 {\n background-color: var(--color-violet-100);\n }\n\n .bg-violet-300 {\n background-color: var(--color-violet-300);\n }\n\n .bg-violet-700 {\n background-color: var(--color-violet-700);\n }\n\n .bg-white, .bg-white\\/60 {\n background-color: var(--color-white);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-white\\/60 {\n background-color: color-mix(in oklab, var(--color-white) 60%, transparent);\n }\n }\n\n .bg-yellow-300 {\n background-color: var(--color-yellow-300);\n }\n\n .bg-cover {\n background-size: cover;\n }\n\n .bg-no-repeat {\n background-repeat: no-repeat;\n }\n\n .fill-\\[inherit\\] {\n fill: inherit;\n }\n\n .fill-gray-400 {\n fill: var(--color-gray-400);\n }\n\n .fill-white {\n fill: var(--color-white);\n }\n\n .object-contain {\n object-fit: contain;\n }\n\n .object-cover {\n object-fit: cover;\n }\n\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n\n .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n\n .p-\\[2px\\] {\n padding: 2px;\n }\n\n .p-\\[11px\\] {\n padding: 11px;\n }\n\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n\n .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n\n .px-3\\.5 {\n padding-inline: calc(var(--spacing) * 3.5);\n }\n\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * .5);\n }\n\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n\n .py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n\n .pt-1 {\n padding-top: calc(var(--spacing) * 1);\n }\n\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n\n .pr-1 {\n padding-right: calc(var(--spacing) * 1);\n }\n\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n\n .pr-2\\.5 {\n padding-right: calc(var(--spacing) * 2.5);\n }\n\n .pr-3\\.5 {\n padding-right: calc(var(--spacing) * 3.5);\n }\n\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n\n .pb-2\\.5 {\n padding-bottom: calc(var(--spacing) * 2.5);\n }\n\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n\n .text-center {\n text-align: center;\n }\n\n .text-left {\n text-align: left;\n }\n\n .align-middle {\n vertical-align: middle;\n }\n\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n letter-spacing: var(--tw-tracking, var(--text-2xl--letter-spacing));\n }\n\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n letter-spacing: var(--tw-tracking, var(--text-4xl--letter-spacing));\n }\n\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n letter-spacing: var(--tw-tracking, var(--text-lg--letter-spacing));\n }\n\n .text-md {\n font-size: var(--text-md);\n line-height: var(--tw-leading, var(--text-md--line-height));\n letter-spacing: var(--tw-tracking, var(--text-md--letter-spacing));\n }\n\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n letter-spacing: var(--tw-tracking, var(--text-sm--letter-spacing));\n }\n\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n letter-spacing: var(--tw-tracking, var(--text-xl--letter-spacing));\n }\n\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n letter-spacing: var(--tw-tracking, var(--text-xs--letter-spacing));\n }\n\n .text-\\[10px\\] {\n font-size: 10px;\n }\n\n .text-\\[30px\\] {\n font-size: 30px;\n }\n\n .text-\\[96px\\] {\n font-size: 96px;\n }\n\n .leading-4 {\n --tw-leading: calc(var(--spacing) * 4);\n line-height: calc(var(--spacing) * 4);\n }\n\n .leading-\\[15px\\] {\n --tw-leading: 15px;\n line-height: 15px;\n }\n\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n\n .font-light {\n --tw-font-weight: var(--font-weight-light);\n font-weight: var(--font-weight-light);\n }\n\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n\n .break-words {\n overflow-wrap: break-word;\n }\n\n .wrap-anywhere {\n overflow-wrap: anywhere;\n }\n\n .whitespace-normal {\n white-space: normal;\n }\n\n .whitespace-nowrap {\n white-space: nowrap;\n }\n\n .whitespace-pre-line {\n white-space: pre-line;\n }\n\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n\n .text-\\[inherit\\] {\n color: inherit;\n }\n\n .text-amber-700 {\n color: var(--color-amber-700);\n }\n\n .text-black, .text-black\\/50 {\n color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .text-black\\/50 {\n color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n\n .text-bronze-700 {\n color: var(--color-bronze-700);\n }\n\n .text-brown-700 {\n color: var(--color-brown-700);\n }\n\n .text-crimson-700 {\n color: var(--color-crimson-700);\n }\n\n .text-current {\n color: currentColor;\n }\n\n .text-cyan-700 {\n color: var(--color-cyan-700);\n }\n\n .text-gold-700 {\n color: var(--color-gold-700);\n }\n\n .text-grass-700 {\n color: var(--color-grass-700);\n }\n\n .text-gray-200 {\n color: var(--color-gray-200);\n }\n\n .text-gray-400 {\n color: var(--color-gray-400);\n }\n\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n\n .text-gray-900 {\n color: var(--color-gray-900);\n }\n\n .text-gray-1000 {\n color: var(--color-gray-1000);\n }\n\n .text-green-700 {\n color: var(--color-green-700);\n }\n\n .text-indigo-700 {\n color: var(--color-indigo-700);\n }\n\n .text-inherit {\n color: inherit;\n }\n\n .text-lime-700 {\n color: var(--color-lime-700);\n }\n\n .text-orange-700 {\n color: var(--color-orange-700);\n }\n\n .text-plum-700 {\n color: var(--color-plum-700);\n }\n\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n\n .text-red-600 {\n color: var(--color-red-600);\n }\n\n .text-red-700 {\n color: var(--color-red-700);\n }\n\n .text-teal-700 {\n color: var(--color-teal-700);\n }\n\n .text-violet-700 {\n color: var(--color-violet-700);\n }\n\n .text-white {\n color: var(--color-white);\n }\n\n .text-yellow-700 {\n color: var(--color-yellow-700);\n }\n\n .underline {\n text-decoration-line: underline;\n }\n\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n .opacity-40 {\n opacity: .4;\n }\n\n .opacity-50 {\n opacity: .5;\n }\n\n .opacity-60 {\n opacity: .6;\n }\n\n .shadow-dropdown-sm {\n --tw-shadow: 0px 1px 2px 0px var(--tw-shadow-color, #1018280f), 0px 1px 3px 0px var(--tw-shadow-color, #1018281a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, #0000001a), 0 2px 4px -2px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, #0000000d);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .ring-\\[3px\\] {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .ring-amber-300 {\n --tw-ring-color: var(--color-amber-300);\n }\n\n .ring-amber-700 {\n --tw-ring-color: var(--color-amber-700);\n }\n\n .ring-black {\n --tw-ring-color: var(--color-black);\n }\n\n .ring-blue-300 {\n --tw-ring-color: var(--color-blue-300);\n }\n\n .ring-blue-700 {\n --tw-ring-color: var(--color-blue-700);\n }\n\n .ring-brown-300 {\n --tw-ring-color: var(--color-brown-300);\n }\n\n .ring-crimson-300 {\n --tw-ring-color: var(--color-crimson-300);\n }\n\n .ring-cyan-300 {\n --tw-ring-color: var(--color-cyan-300);\n }\n\n .ring-gray-100 {\n --tw-ring-color: var(--color-gray-100);\n }\n\n .ring-gray-200 {\n --tw-ring-color: var(--color-gray-200);\n }\n\n .ring-gray-400 {\n --tw-ring-color: var(--color-gray-400);\n }\n\n .ring-green-300 {\n --tw-ring-color: var(--color-green-300);\n }\n\n .ring-green-700 {\n --tw-ring-color: var(--color-green-700);\n }\n\n .ring-orange-300 {\n --tw-ring-color: var(--color-orange-300);\n }\n\n .ring-red-300 {\n --tw-ring-color: var(--color-red-300);\n }\n\n .ring-red-700 {\n --tw-ring-color: var(--color-red-700);\n }\n\n .ring-teal-300 {\n --tw-ring-color: var(--color-teal-300);\n }\n\n .ring-violet-300 {\n --tw-ring-color: var(--color-violet-300);\n }\n\n .ring-offset-0 {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n\n .ring-offset-white {\n --tw-ring-offset-color: var(--color-white);\n }\n\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n }\n\n @media (forced-colors: active) {\n .outline-hidden {\n outline-offset: 2px;\n outline: 2px solid #0000;\n }\n }\n\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n\n .blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );\n }\n\n .filter {\n filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );\n }\n\n .backdrop-blur-\\[20px\\] {\n --tw-backdrop-blur: blur(20px);\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .backdrop-blur-\\[180px\\] {\n --tw-backdrop-blur: blur(180px);\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .backdrop-blur-lg {\n --tw-backdrop-blur: blur(var(--blur-lg));\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .backdrop-blur-xs {\n --tw-backdrop-blur: blur(var(--blur-xs));\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .duration-200 {\n --tw-duration: .2s;\n transition-duration: .2s;\n }\n\n .duration-300 {\n --tw-duration: .3s;\n transition-duration: .3s;\n }\n\n .duration-500 {\n --tw-duration: .5s;\n transition-duration: .5s;\n }\n\n .duration-700 {\n --tw-duration: .7s;\n transition-duration: .7s;\n }\n\n .ease-\\[cubic-bezier\\(0\\.075\\,0\\.82\\,0\\.165\\,1\\)\\] {\n --tw-ease: cubic-bezier(.075, .82, .165, 1);\n transition-timing-function: cubic-bezier(.075, .82, .165, 1);\n }\n\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n\n .ease-linear {\n --tw-ease: linear;\n transition-timing-function: linear;\n }\n\n .will-change-transform {\n will-change: transform;\n }\n\n .animate-in {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n }\n\n .select-none {\n user-select: none;\n }\n\n .duration-200 {\n animation-duration: .2s;\n }\n\n .duration-300 {\n animation-duration: .3s;\n }\n\n .duration-500 {\n animation-duration: .5s;\n }\n\n .duration-700 {\n animation-duration: .7s;\n }\n\n .ease-\\[cubic-bezier\\(0\\.075\\,0\\.82\\,0\\.165\\,1\\)\\] {\n animation-timing-function: cubic-bezier(.075, .82, .165, 1);\n }\n\n .ease-in-out {\n animation-timing-function: cubic-bezier(.4, 0, .2, 1);\n }\n\n .ease-linear {\n animation-timing-function: linear;\n }\n\n .fade-in-0 {\n --tw-enter-opacity: 0;\n }\n\n .paused {\n animation-play-state: paused;\n }\n\n .ring-inset {\n --tw-ring-inset: inset;\n }\n\n .running {\n animation-play-state: running;\n }\n\n .zoom-in-95 {\n --tw-enter-scale: .95;\n }\n\n :is(.\\*\\:h-full > *) {\n height: 100%;\n }\n\n :is(.\\*\\:w-full > *) {\n width: 100%;\n }\n\n :is(.\\*\\:rounded-\\[14px\\] > *) {\n border-radius: 14px;\n }\n\n :is(.\\*\\:bg-blue-700 > *) {\n background-color: var(--color-blue-700);\n }\n\n :is(.\\*\\:fill-black > *) {\n fill: var(--color-black);\n }\n\n :is(.\\*\\:text-gray-700 > *) {\n color: var(--color-gray-700);\n }\n\n :is(.\\*\\:text-white > *) {\n color: var(--color-white);\n }\n\n :is(.\\*\\:opacity-100 > *) {\n opacity: 1;\n }\n\n :is(.\\*\\*\\:items-center *) {\n align-items: center;\n }\n\n :is(.\\*\\*\\:rounded-lg *) {\n border-radius: var(--radius-lg);\n }\n\n .group-focus-within\\:bg-gray-100:is(:where(.group):focus-within *) {\n background-color: var(--color-gray-100);\n }\n\n .group-focus-within\\/mediacard\\:visible:is(:where(.group\\/mediacard):focus-within *) {\n visibility: visible;\n }\n\n @media (hover: hover) {\n .group-hover\\:visible:is(:where(.group):hover *) {\n visibility: visible;\n }\n\n .group-hover\\:flex:is(:where(.group):hover *) {\n display: flex;\n }\n\n .group-hover\\:bg-gray-50:is(:where(.group):hover *) {\n background-color: var(--color-gray-50);\n }\n\n .group-hover\\/mediacard\\:visible:is(:where(.group\\/mediacard):hover *) {\n visibility: visible;\n }\n }\n\n .group-active\\:bg-gray-100:is(:where(.group):active *) {\n background-color: var(--color-gray-100);\n }\n\n .group-data-disabled\\:cursor-not-allowed:is(:where(.group)[data-disabled] *) {\n cursor: not-allowed;\n }\n\n .group-data-disabled\\:opacity-50:is(:where(.group)[data-disabled] *) {\n opacity: .5;\n }\n\n .group-data-\\[state\\=checked\\]\\:bg-gray-50:is(:where(.group)[data-state=\"checked\"] *) {\n background-color: var(--color-gray-50);\n }\n\n .group-data-\\[state\\=off\\]\\:bg-transparent:is(:where(.group)[data-state=\"off\"] *) {\n background-color: #0000;\n }\n\n .group-data-\\[state\\=off\\]\\:text-transparent:is(:where(.group)[data-state=\"off\"] *) {\n color: #0000;\n }\n\n .group-data-\\[state\\=on\\]\\:border-blue-700:is(:where(.group)[data-state=\"on\"] *) {\n border-color: var(--color-blue-700);\n }\n\n .group-data-\\[state\\=open\\]\\:rotate-180:is(:where(.group)[data-state=\"open\"] *) {\n rotate: 180deg;\n }\n\n @media (hover: hover) {\n .peer-hover\\:fill-amber-700:is(:where(.peer):hover ~ *) {\n fill: var(--color-amber-700);\n }\n\n .peer-hover\\:text-amber-700:is(:where(.peer):hover ~ *) {\n color: var(--color-amber-700);\n }\n }\n\n .peer-disabled\\:cursor-not-allowed:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n\n .peer-disabled\\:opacity-70:is(:where(.peer):disabled ~ *) {\n opacity: .7;\n }\n\n .placeholder\\:text-gray-700::placeholder {\n color: var(--color-gray-700);\n }\n\n .placeholder\\:text-gray-900::placeholder {\n color: var(--color-gray-900);\n }\n\n .last\\:pb-0:last-child {\n padding-bottom: calc(var(--spacing) * 0);\n }\n\n .focus-within\\:relative:focus-within {\n position: relative;\n }\n\n .focus-within\\:z-20:focus-within {\n z-index: 20;\n }\n\n .focus-within\\:border-gray-200:focus-within {\n border-color: var(--color-gray-200);\n }\n\n .focus-within\\:bg-gray-100:focus-within {\n background-color: var(--color-gray-100);\n }\n\n .focus-within\\:outline:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n\n .focus-within\\:outline-\\[2px\\]:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 2px;\n }\n\n .focus-within\\:outline-offset-\\[2px\\]:focus-within {\n outline-offset: 2px;\n }\n\n .focus-within\\:outline-blue-300:focus-within {\n outline-color: var(--color-blue-300);\n }\n\n .focus-within\\:outline-red-700:focus-within {\n outline-color: var(--color-red-700);\n }\n\n @media (hover: hover) {\n .hover\\:border-blue-900:hover {\n border-color: var(--color-blue-900);\n }\n\n .hover\\:border-gray-600:hover {\n border-color: var(--color-gray-600);\n }\n\n .hover\\:border-red-900:hover {\n border-color: var(--color-red-900);\n }\n\n .hover\\:bg-black\\/5:hover {\n background-color: var(--color-black);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .hover\\:bg-black\\/5:hover {\n background-color: color-mix(in oklab, var(--color-black) 5%, transparent);\n }\n }\n\n .hover\\:bg-blue-50:hover {\n background-color: var(--color-blue-50);\n }\n\n .hover\\:bg-blue-100:hover {\n background-color: var(--color-blue-100);\n }\n\n .hover\\:bg-blue-800:hover {\n background-color: var(--color-blue-800);\n }\n\n .hover\\:bg-gray-25:hover {\n background-color: var(--color-gray-25);\n }\n\n .hover\\:bg-gray-50:hover {\n background-color: var(--color-gray-50);\n }\n\n .hover\\:bg-gray-100:hover, .hover\\:bg-gray-100\\/75:hover {\n background-color: var(--color-gray-100);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .hover\\:bg-gray-100\\/75:hover {\n background-color: color-mix(in oklab, var(--color-gray-100) 75%, transparent);\n }\n }\n\n .hover\\:bg-gray-200:hover {\n background-color: var(--color-gray-200);\n }\n\n .hover\\:bg-red-100:hover {\n background-color: var(--color-red-100);\n }\n\n .hover\\:bg-red-800:hover {\n background-color: var(--color-red-800);\n }\n\n .hover\\:fill-amber-700:hover {\n fill: var(--color-amber-700);\n }\n\n .hover\\:text-amber-700:hover {\n color: var(--color-amber-700);\n }\n\n .hover\\:text-black:hover {\n color: var(--color-black);\n }\n\n .hover\\:underline:hover {\n text-decoration-line: underline;\n }\n\n .hover\\:opacity-100:hover {\n opacity: 1;\n }\n\n :is(.hover\\:\\*\\:bg-blue-700:hover > *) {\n background-color: var(--color-blue-700);\n }\n\n :is(.hover\\:\\*\\:text-white:hover > *) {\n color: var(--color-white);\n }\n }\n\n .focus\\:bg-gray-100:focus {\n background-color: var(--color-gray-100);\n }\n\n .focus\\:ring-1:focus {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .focus\\:ring-2:focus {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n\n .focus\\:outline-hidden:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n\n @media (forced-colors: active) {\n .focus\\:outline-hidden:focus {\n outline-offset: 2px;\n outline: 2px solid #0000;\n }\n }\n\n :is(.focus\\:\\*\\:bg-blue-700:focus > *) {\n background-color: var(--color-blue-700);\n }\n\n :is(.focus\\:\\*\\:text-white:focus > *) {\n color: var(--color-white);\n }\n\n .focus-visible\\:ring-2:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .focus-visible\\:ring-black:focus-visible {\n --tw-ring-color: var(--color-black);\n }\n\n .focus-visible\\:ring-blue-300:focus-visible {\n --tw-ring-color: var(--color-blue-300);\n }\n\n .focus-visible\\:ring-blue-700:focus-visible {\n --tw-ring-color: var(--color-blue-700);\n }\n\n .focus-visible\\:ring-blue-1000:focus-visible {\n --tw-ring-color: var(--color-blue-1000);\n }\n\n .focus-visible\\:ring-red-700:focus-visible {\n --tw-ring-color: var(--color-red-700);\n }\n\n .focus-visible\\:ring-red-1000:focus-visible {\n --tw-ring-color: var(--color-red-1000);\n }\n\n .focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n\n .focus-visible\\:outline-hidden:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n\n @media (forced-colors: active) {\n .focus-visible\\:outline-hidden:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #0000;\n }\n }\n\n .active\\:bg-blue-200:active {\n background-color: var(--color-blue-200);\n }\n\n .active\\:bg-blue-900:active {\n background-color: var(--color-blue-900);\n }\n\n .active\\:bg-gray-50:active {\n background-color: var(--color-gray-50);\n }\n\n .active\\:bg-gray-100:active {\n background-color: var(--color-gray-100);\n }\n\n .active\\:bg-gray-200:active {\n background-color: var(--color-gray-200);\n }\n\n .active\\:bg-gray-300:active {\n background-color: var(--color-gray-300);\n }\n\n .active\\:bg-gray-500:active {\n background-color: var(--color-gray-500);\n }\n\n .active\\:bg-red-200:active {\n background-color: var(--color-red-200);\n }\n\n .active\\:bg-red-800:active {\n background-color: var(--color-red-800);\n }\n\n .active\\:bg-red-900:active {\n background-color: var(--color-red-900);\n }\n\n .active\\:text-blue-900:active {\n color: var(--color-blue-900);\n }\n\n .disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n }\n\n .disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n }\n\n .disabled\\:opacity-40:disabled {\n opacity: .4;\n }\n\n .disabled\\:opacity-50:disabled {\n opacity: .5;\n }\n\n .disabled\\:select-none:disabled {\n user-select: none;\n }\n\n :where(.dark-theme) .in-\\[\\.dark-theme\\]\\:bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n\n .aria-selected\\:rounded-md[aria-selected=\"true\"] {\n border-radius: var(--radius-md);\n }\n\n .aria-selected\\:bg-blue-100[aria-selected=\"true\"], :is(.aria-selected\\:\\*\\:bg-blue-100[aria-selected=\"true\"] > *) {\n background-color: var(--color-blue-100);\n }\n\n :is(.aria-selected\\:\\*\\:text-blue-700[aria-selected=\"true\"] > *) {\n color: var(--color-blue-700);\n }\n\n .first\\:aria-selected\\:rounded-l-md:first-child[aria-selected=\"true\"] {\n border-top-left-radius: var(--radius-md);\n border-bottom-left-radius: var(--radius-md);\n }\n\n .last\\:aria-selected\\:rounded-r-md:last-child[aria-selected=\"true\"] {\n border-top-right-radius: var(--radius-md);\n border-bottom-right-radius: var(--radius-md);\n }\n\n .data-disabled\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n }\n\n .data-disabled\\:cursor-not-allowed[data-disabled] {\n cursor: not-allowed;\n }\n\n .data-disabled\\:opacity-40[data-disabled] {\n opacity: .4;\n }\n\n .data-disabled\\:opacity-50[data-disabled] {\n opacity: .5;\n }\n\n .data-\\[disabled\\=true\\]\\:cursor-not-allowed[data-disabled=\"true\"] {\n cursor: not-allowed;\n }\n\n .data-\\[disabled\\=true\\]\\:opacity-50[data-disabled=\"true\"] {\n opacity: .5;\n }\n\n .data-\\[selected\\=true\\]\\:bg-gray-50[data-selected=\"true\"] {\n background-color: var(--color-gray-50);\n }\n\n .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=\"bottom\"] {\n --tw-enter-translate-y: -.5rem;\n }\n\n .data-\\[side\\=left\\]\\:-translate-x-1[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=\"left\"] {\n --tw-enter-translate-x: .5rem;\n }\n\n .data-\\[side\\=right\\]\\:translate-x-1[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=\"right\"] {\n --tw-enter-translate-x: -.5rem;\n }\n\n .data-\\[side\\=top\\]\\:-translate-y-1[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=\"top\"] {\n --tw-enter-translate-y: .5rem;\n }\n\n .data-\\[size\\=xxs\\]\\:bg-amber-700[data-size=\"xxs\"] {\n background-color: var(--color-amber-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-blue-700[data-size=\"xxs\"] {\n background-color: var(--color-blue-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-bronze-700[data-size=\"xxs\"] {\n background-color: var(--color-bronze-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-brown-700[data-size=\"xxs\"] {\n background-color: var(--color-brown-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-crimson-700[data-size=\"xxs\"] {\n background-color: var(--color-crimson-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-cyan-700[data-size=\"xxs\"] {\n background-color: var(--color-cyan-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-gold-700[data-size=\"xxs\"] {\n background-color: var(--color-gold-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-grass-700[data-size=\"xxs\"] {\n background-color: var(--color-grass-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-gray-700[data-size=\"xxs\"] {\n background-color: var(--color-gray-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-green-700[data-size=\"xxs\"] {\n background-color: var(--color-green-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-indigo-700[data-size=\"xxs\"] {\n background-color: var(--color-indigo-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-lime-700[data-size=\"xxs\"] {\n background-color: var(--color-lime-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-plum-700[data-size=\"xxs\"] {\n background-color: var(--color-plum-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-purple-700[data-size=\"xxs\"] {\n background-color: var(--color-purple-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-red-700[data-size=\"xxs\"] {\n background-color: var(--color-red-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-teal-700[data-size=\"xxs\"] {\n background-color: var(--color-teal-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-violet-700[data-size=\"xxs\"] {\n background-color: var(--color-violet-700);\n }\n\n .data-\\[size\\=xxs\\]\\:bg-yellow-700[data-size=\"xxs\"] {\n background-color: var(--color-yellow-700);\n }\n\n .data-\\[state\\=active\\]\\:bg-black[data-state=\"active\"] {\n background-color: var(--color-black);\n }\n\n .data-\\[state\\=active\\]\\:bg-white[data-state=\"active\"] {\n background-color: var(--color-white);\n }\n\n .data-\\[state\\=active\\]\\:text-blue-700[data-state=\"active\"] {\n color: var(--color-blue-700);\n }\n\n .data-\\[state\\=active\\]\\:shadow-xs[data-state=\"active\"] {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, #0000000d);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .data-\\[state\\=checked\\]\\:translate-x-5[data-state=\"checked\"] {\n --tw-translate-x: calc(var(--spacing) * 5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[state\\=checked\\]\\:border-blue-700[data-state=\"checked\"] {\n border-color: var(--color-blue-700);\n }\n\n .data-\\[state\\=checked\\]\\:bg-blue-700[data-state=\"checked\"] {\n background-color: var(--color-blue-700);\n }\n\n .data-\\[state\\=checked\\]\\:bg-gray-50[data-state=\"checked\"] {\n background-color: var(--color-gray-50);\n }\n\n .data-\\[state\\=checked\\]\\:bg-white[data-state=\"checked\"] {\n background-color: var(--color-white);\n }\n\n .data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=\"closed\"] {\n animation: var(--animate-accordion-up);\n }\n\n .data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n --tw-duration: .3s;\n transition-duration: .3s;\n }\n\n .data-\\[state\\=closed\\]\\:animate-out[data-state=\"closed\"] {\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n animation-name: exit;\n animation-duration: .15s;\n }\n\n .data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n animation-duration: .3s;\n }\n\n .data-\\[state\\=closed\\]\\:fade-out[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:fade-out-0[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n }\n\n .data-\\[state\\=closed\\]\\:fade-out-80[data-state=\"closed\"] {\n --tw-exit-opacity: .8;\n }\n\n .data-\\[state\\=closed\\]\\:slide-out-to-bottom[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-bottom-\\[100\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n }\n\n .data-\\[state\\=closed\\]\\:slide-out-to-left[data-state=\"closed\"] {\n --tw-exit-translate-x: -100%;\n }\n\n .data-\\[state\\=closed\\]\\:slide-out-to-right[data-state=\"closed\"] {\n --tw-exit-translate-x: 100%;\n }\n\n .data-\\[state\\=closed\\]\\:slide-out-to-top[data-state=\"closed\"] {\n --tw-exit-translate-y: -100%;\n }\n\n .data-\\[state\\=closed\\]\\:zoom-out-95[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n }\n\n .data-\\[state\\=on\\]\\:border-blue-700[data-state=\"on\"] {\n border-color: var(--color-blue-700);\n }\n\n .data-\\[state\\=open\\]\\:animate-accordion-down[data-state=\"open\"] {\n animation: var(--animate-accordion-down);\n }\n\n .data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n --tw-duration: .5s;\n transition-duration: .5s;\n }\n\n .data-\\[state\\=open\\]\\:animate-in[data-state=\"open\"] {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n }\n\n .data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n animation-duration: .5s;\n }\n\n .data-\\[state\\=open\\]\\:fade-in-0[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n }\n\n .data-\\[state\\=open\\]\\:slide-in-from-bottom[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-bottom-\\[100\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n\n .data-\\[state\\=open\\]\\:slide-in-from-left[data-state=\"open\"] {\n --tw-enter-translate-x: -100%;\n }\n\n .data-\\[state\\=open\\]\\:slide-in-from-right[data-state=\"open\"] {\n --tw-enter-translate-x: 100%;\n }\n\n .data-\\[state\\=open\\]\\:slide-in-from-top[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n }\n\n .data-\\[state\\=open\\]\\:zoom-in-95[data-state=\"open\"] {\n --tw-enter-scale: .95;\n }\n\n .data-\\[state\\=selected\\]\\:bg-gray-50[data-state=\"selected\"] {\n background-color: var(--color-gray-50);\n }\n\n .data-disabled\\:data-\\[state\\=unchecked\\]\\:bg-gray-300[data-disabled][data-state=\"unchecked\"] {\n background-color: var(--color-gray-300);\n }\n\n .data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=\"cancel\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=\"end\"] {\n --tw-translate-x: var(--radix-toast-swipe-end-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[swipe\\=end\\]\\:animate-out[data-swipe=\"end\"] {\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n animation-name: exit;\n animation-duration: .15s;\n }\n\n .data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=\"move\"] {\n --tw-translate-x: var(--radix-toast-swipe-move-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .data-\\[swipe\\=move\\]\\:transition-none[data-swipe=\"move\"] {\n transition-property: none;\n }\n\n @media not all and (width >= 64rem) {\n .max-lg\\:hidden {\n display: none;\n }\n }\n\n @media not all and (width >= 40rem) {\n .max-sm\\:gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n\n .max-sm\\:p-4 {\n padding: calc(var(--spacing) * 4);\n }\n }\n\n @media (width >= 40rem) {\n .sm\\:mt-0 {\n margin-top: calc(var(--spacing) * 0);\n }\n\n .sm\\:max-w-md {\n max-width: var(--container-md);\n }\n\n .sm\\:max-w-sm {\n max-width: var(--container-sm);\n }\n\n .sm\\:flex-col {\n flex-direction: column;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n :where(.sm\\:space-x-2 > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:data-\\[state\\=open\\]\\:slide-in-from-bottom-full[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n }\n\n @media (width >= 48rem) {\n .md\\:block {\n display: block;\n }\n\n .md\\:h-\\[550px\\] {\n height: 550px;\n }\n\n .md\\:w-\\[300px\\] {\n width: 300px;\n }\n\n .md\\:w-\\[326px\\] {\n width: 326px;\n }\n\n .md\\:w-\\[1000px\\] {\n width: 1000px;\n }\n\n .md\\:w-auto {\n width: auto;\n }\n\n .md\\:w-fit {\n width: fit-content;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:max-w-\\[90vw\\] {\n max-width: 90vw;\n }\n\n .md\\:max-w-\\[420px\\] {\n max-width: 420px;\n }\n\n .md\\:min-w-\\[500px\\] {\n min-width: 500px;\n }\n\n .md\\:flex-row {\n flex-direction: row;\n }\n\n .md\\:items-center {\n align-items: center;\n }\n\n .md\\:justify-start {\n justify-content: flex-start;\n }\n\n .md\\:gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n\n .md\\:gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n\n .md\\:gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n\n .md\\:gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n\n :where(.md\\:divide-y > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n\n .md\\:border-0 {\n border-style: var(--tw-border-style);\n border-width: 0;\n }\n\n .md\\:bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n\n .md\\:bg-transparent {\n background-color: #0000;\n }\n\n .md\\:p-0 {\n padding: calc(var(--spacing) * 0);\n }\n\n .md\\:p-4 {\n padding: calc(var(--spacing) * 4);\n }\n\n .md\\:p-6 {\n padding: calc(var(--spacing) * 6);\n }\n\n .md\\:p-8 {\n padding: calc(var(--spacing) * 8);\n }\n }\n\n @media (width >= 64rem) {\n .lg\\:h-14 {\n height: calc(var(--spacing) * 14);\n }\n\n .lg\\:w-14 {\n width: calc(var(--spacing) * 14);\n }\n\n .lg\\:flex-row {\n flex-direction: row;\n }\n\n .lg\\:gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n\n .lg\\:gap-16 {\n gap: calc(var(--spacing) * 16);\n }\n\n .lg\\:bg-pattern {\n background-image: var(--background-image-pattern);\n }\n\n .lg\\:p-20 {\n padding: calc(var(--spacing) * 20);\n }\n\n .lg\\:text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n letter-spacing: var(--tw-tracking, var(--text-4xl--letter-spacing));\n }\n\n .lg\\:text-md {\n font-size: var(--text-md);\n line-height: var(--tw-leading, var(--text-md--line-height));\n letter-spacing: var(--tw-tracking, var(--text-md--letter-spacing));\n }\n }\n\n @media (width >= 80rem) {\n .xl\\:rounded-none {\n border-radius: 0;\n }\n }\n\n .dark\\:bg-white\\/50:where(.dark-theme, .dark-theme *) {\n background-color: var(--color-white);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .dark\\:bg-white\\/50:where(.dark-theme, .dark-theme *) {\n background-color: color-mix(in oklab, var(--color-white) 50%, transparent);\n }\n }\n\n .dark\\:fill-black:where(.dark-theme, .dark-theme *) {\n fill: var(--color-black);\n }\n\n .dark\\:text-black:where(.dark-theme, .dark-theme *), :is(.dark\\:\\*\\:text-black:where(.dark-theme, .dark-theme *) > *) {\n color: var(--color-black);\n }\n\n @media (hover: hover) {\n :is(.dark\\:hover\\:\\*\\:text-black:where(.dark-theme, .dark-theme *):hover > *) {\n color: var(--color-black);\n }\n }\n\n :is(.dark\\:focus\\:\\*\\:text-black:where(.dark-theme, .dark-theme *):focus > *), .dark\\:data-\\[state\\=active\\]\\:text-black:where(.dark-theme, .dark-theme *)[data-state=\"active\"] {\n color: var(--color-black);\n }\n\n .dark\\:data-\\[state\\=active\\]\\:text-white:where(.dark-theme, .dark-theme *)[data-state=\"active\"] {\n color: var(--color-white);\n }\n\n .dark\\:data-\\[state\\=checked\\]\\:bg-black:where(.dark-theme, .dark-theme *)[data-state=\"checked\"] {\n background-color: var(--color-black);\n }\n\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-inline: calc(var(--spacing) * 2);\n }\n\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-block: calc(var(--spacing) * 1.5);\n }\n\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-sm [cmdk-group-heading] {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n letter-spacing: var(--tw-tracking, var(--text-sm--letter-spacing));\n }\n\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-black [cmdk-group-heading] {\n color: var(--color-black);\n }\n\n .\\[\\&_tr\\]\\:border-b tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n\n .\\[\\&_tr\\:active\\]\\:bg-gray-50 tr:active {\n background-color: var(--color-gray-50);\n }\n\n .\\[\\&_tr\\:hover\\]\\:bg-gray-25 tr:hover {\n background-color: var(--color-gray-25);\n }\n\n .\\[\\&_tr\\:hover\\:active\\]\\:bg-gray-50 tr:hover:active {\n background-color: var(--color-gray-50);\n }\n\n .\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child {\n border-style: var(--tw-border-style);\n border-width: 0;\n }\n\n .aria-selected\\:\\[\\&\\.day-outside\\]\\:bg-blue-100\\/50[aria-selected=\"true\"].day-outside {\n background-color: var(--color-blue-100);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .aria-selected\\:\\[\\&\\.day-outside\\]\\:bg-blue-100\\/50[aria-selected=\"true\"].day-outside {\n background-color: color-mix(in oklab, var(--color-blue-100) 50%, transparent);\n }\n }\n\n .\\[\\&\\.day-range-end\\]\\:rounded-r-md.day-range-end, .aria-selected\\:\\[\\&\\.day-range-end\\]\\:rounded-r-md[aria-selected=\"true\"].day-range-end {\n border-top-right-radius: var(--radius-md);\n border-bottom-right-radius: var(--radius-md);\n }\n\n .\\[\\&\\.day-range-start\\]\\:rounded-l-md.day-range-start {\n border-top-left-radius: var(--radius-md);\n border-bottom-left-radius: var(--radius-md);\n }\n\n .\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=\"checkbox\"]) {\n padding-right: calc(var(--spacing) * 0);\n }\n\n .\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] > [role=\"checkbox\"] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .\\[\\&\\>button\\]\\:w-full > button {\n width: 100%;\n }\n\n .\\[\\&\\>div\\]\\:h-\\[72px\\] > div {\n height: 72px;\n }\n\n .\\[\\&\\>div\\]\\:w-full > div {\n width: 100%;\n }\n\n .\\[\\&\\>svg\\]\\:h-4 > svg {\n height: calc(var(--spacing) * 4);\n }\n\n .\\[\\&\\>svg\\]\\:w-auto > svg {\n width: auto;\n }\n\n .\\[\\&\\>svg\\]\\:text-black > svg {\n color: var(--color-black);\n }\n\n .\\[\\&\\>svg\\]\\:text-blue-700 > svg {\n color: var(--color-blue-700);\n }\n\n .\\[\\&\\>svg\\]\\:text-current > svg {\n color: currentColor;\n }\n\n .\\[\\&\\>svg\\]\\:text-gray-700 > svg {\n color: var(--color-gray-700);\n }\n\n .\\[\\&\\>svg\\]\\:text-red-700 > svg {\n color: var(--color-red-700);\n }\n\n .\\[\\&\\>svg\\]\\:text-white > svg {\n color: var(--color-white);\n }\n\n @media (hover: hover) {\n .hover\\:\\[\\&\\>svg\\]\\:text-black:hover > svg {\n color: var(--color-black);\n }\n }\n\n .dark\\:\\[\\&\\>svg\\]\\:text-black:where(.dark-theme, .dark-theme *) > svg {\n color: var(--color-black);\n }\n}\n\n* {\n box-sizing: border-box;\n -webkit-font-smoothing: antialiased;\n}\n\n:root, .light-theme {\n --color-white: #fff;\n --color-black: #121212;\n --color-gray-25: #fcfcfc;\n --color-gray-50: #f7f7f7;\n --color-gray-100: #f2f2f2;\n --color-gray-200: #ededed;\n --color-gray-300: #e8e8e8;\n --color-gray-400: #e3e3e3;\n --color-gray-500: #dbdbdb;\n --color-gray-600: #c7c7c7;\n --color-gray-700: #8f8f8f;\n --color-gray-800: #858585;\n --color-gray-900: #707070;\n --color-gray-1000: #171717;\n --color-blue-25: #fafcff;\n --color-blue-50: #f5f9ff;\n --color-blue-100: #f0f6ff;\n --color-blue-200: #d7e7fe;\n --color-blue-300: #c7deff;\n --color-blue-400: #b8d5ff;\n --color-blue-500: #85b8ff;\n --color-blue-600: #579dff;\n --color-blue-700: #006aff;\n --color-blue-800: #005bdb;\n --color-blue-900: #004db8;\n --color-blue-1000: #002252;\n --color-red-25: snow;\n --color-red-50: snow;\n --color-red-100: #fff0f0;\n --color-red-200: #ffe5e5;\n --color-red-300: #fdd8d8;\n --color-red-400: #f9c8c8;\n --color-red-500: #f3afb0;\n --color-red-600: #ea8f90;\n --color-red-700: #e5484d;\n --color-red-800: #db3d42;\n --color-red-900: #ce2c31;\n --color-red-1000: #391417;\n --color-amber-25: #fffcf6;\n --color-amber-50: #fffaf2;\n --color-amber-100: #fff9ed;\n --color-amber-200: #fff3de;\n --color-amber-300: #ffefd1;\n --color-amber-400: #ffe8bd;\n --color-amber-500: #ffdd9f;\n --color-amber-600: #ffcf77;\n --color-amber-700: #ffb224;\n --color-amber-800: #f9a710;\n --color-amber-900: #e4980c;\n --color-amber-1000: #4e2009;\n --color-green-25: #fbfefc;\n --color-green-50: #f3fcf5;\n --color-green-100: #ebfaf0;\n --color-green-200: #ddf3e4;\n --color-green-300: #ccebd7;\n --color-green-400: #b4dfc4;\n --color-green-500: #92ceac;\n --color-green-600: #5bb98b;\n --color-green-700: #30a66d;\n --color-green-800: #2a9865;\n --color-green-900: #18774c;\n --color-green-1000: #153226;\n --color-tomato-25: snow;\n --color-tomato-50: #fff6f5;\n --color-tomato-100: #fff1f0;\n --color-tomato-200: #ffe4e0;\n --color-tomato-300: #fdd8d3;\n --color-tomato-400: #fac6bd;\n --color-tomato-500: #f3aea0;\n --color-tomato-600: #ea9280;\n --color-tomato-700: #e54d2e;\n --color-tomato-800: #db4224;\n --color-tomato-900: #cc3314;\n --color-tomato-1000: #361811;\n --color-crimson-25: #fffafc;\n --color-crimson-50: #fff5fa;\n --color-crimson-100: #fef1f7;\n --color-crimson-200: #fce4ef;\n --color-crimson-300: #f9d7e6;\n --color-crimson-400: #f4c7dc;\n --color-crimson-500: #edabc7;\n --color-crimson-600: #e58fb2;\n --color-crimson-700: #ea3e83;\n --color-crimson-800: #e13378;\n --color-crimson-900: #d21e66;\n --color-crimson-1000: #3f0d1e;\n --color-pink-25: #fffafd;\n --color-pink-50: #fff5fb;\n --color-pink-100: #feecf7;\n --color-pink-200: #fce4f3;\n --color-pink-300: #f9d7eb;\n --color-pink-400: #f3c4e1;\n --color-pink-500: #ecacd3;\n --color-pink-600: #e28dc2;\n --color-pink-700: #d742a0;\n --color-pink-800: #d23297;\n --color-pink-900: #cd1d8d;\n --color-pink-1000: #3d0a2b;\n --color-plum-25: #fdfaff;\n --color-plum-50: #fffaff;\n --color-plum-100: #fceefc;\n --color-plum-200: #f9e6f9;\n --color-plum-300: #f3d7f4;\n --color-plum-400: #ecc9ee;\n --color-plum-500: #dfb0e3;\n --color-plum-600: #cf92d9;\n --color-plum-700: #ab4aba;\n --color-plum-800: #a43cb4;\n --color-plum-900: #9a2bab;\n --color-plum-1000: #340c3b;\n --color-purple-25: #fefbfe;\n --color-purple-50: #fdfaff;\n --color-purple-100: #f9f1fe;\n --color-purple-200: #f4e8fc;\n --color-purple-300: #eddcf9;\n --color-purple-400: #e4cdf4;\n --color-purple-500: #d4b5ed;\n --color-purple-600: #bf95e4;\n --color-purple-700: #8e4ec6;\n --color-purple-800: #8344bb;\n --color-purple-900: #793bb0;\n --color-purple-1000: #2b0e44;\n --color-violet-25: #fcfbfe;\n --color-violet-50: #fbfaff;\n --color-violet-100: #f3f0ff;\n --color-violet-200: #ebe7fe;\n --color-violet-300: #e4defc;\n --color-violet-400: #d5cdf9;\n --color-violet-500: #c5b9f3;\n --color-violet-600: #a898ec;\n --color-violet-700: #6d54cf;\n --color-violet-800: #634ec1;\n --color-violet-900: #5746af;\n --color-violet-1000: #1f1249;\n --color-indigo-25: #fcfcfd;\n --color-indigo-50: #fafbff;\n --color-indigo-100: #f0f4ff;\n --color-indigo-200: #e7edfe;\n --color-indigo-300: #d9e2fc;\n --color-indigo-400: #c8d5f9;\n --color-indigo-500: #adbff5;\n --color-indigo-600: #8fa6ef;\n --color-indigo-700: #3c61dd;\n --color-indigo-800: #385bcc;\n --color-indigo-900: #3451b2;\n --color-indigo-1000: #101d47;\n --color-cyan-25: #fbfdfe;\n --color-cyan-50: #f2fcfd;\n --color-cyan-100: #e9f9fb;\n --color-cyan-200: #daf4f7;\n --color-cyan-300: #c3e9ef;\n --color-cyan-400: #a8dee6;\n --color-cyan-500: #85cedb;\n --color-cyan-600: #3fb9cf;\n --color-cyan-700: #05a2c2;\n --color-cyan-800: #0895b4;\n --color-cyan-900: #0c7792;\n --color-cyan-1000: #04323e;\n --color-teal-25: #fbfefd;\n --color-teal-50: #f2fcfa;\n --color-teal-100: #e7f9f5;\n --color-teal-200: #d8f3ed;\n --color-teal-300: #c7ebe5;\n --color-teal-400: #afdfd7;\n --color-teal-500: #8dcec3;\n --color-teal-600: #55b9ac;\n --color-teal-700: #12a594;\n --color-teal-800: #0e9a8a;\n --color-teal-900: #067a6e;\n --color-teal-1000: #11322d;\n --color-grass-25: #fbfefb;\n --color-grass-50: #f3fcf3;\n --color-grass-100: #ebf9eb;\n --color-grass-200: #def2de;\n --color-grass-300: #cceacd;\n --color-grass-400: #b9dfbc;\n --color-grass-500: #96cf9b;\n --color-grass-600: #64b974;\n --color-grass-700: #45a557;\n --color-grass-800: #3d994f;\n --color-grass-900: #297a3a;\n --color-grass-1000: #1b311e;\n --color-brown-25: #fefcfb;\n --color-brown-50: #fcfaf7;\n --color-brown-100: #f9f2ec;\n --color-brown-200: #f4e8dc;\n --color-brown-300: #efddcd;\n --color-brown-400: #e8cdb5;\n --color-brown-500: #ddb997;\n --color-brown-600: #d09e71;\n --color-brown-700: #ad7f58;\n --color-brown-800: #a27653;\n --color-brown-900: #886349;\n --color-brown-1000: #3f2c22;\n --color-orange-25: #fefcfb;\n --color-orange-50: #fef9f6;\n --color-orange-100: #fff0e5;\n --color-orange-200: #ffe8d6;\n --color-orange-300: #ffdbc2;\n --color-orange-400: #ffcca8;\n --color-orange-500: #ffb280;\n --color-orange-600: #fa924c;\n --color-orange-700: #f76808;\n --color-orange-800: #eb5e00;\n --color-orange-900: #bd4b00;\n --color-orange-1000: #451e11;\n --color-sky-25: #fafeff;\n --color-sky-50: #f0fcff;\n --color-sky-100: #e5f9ff;\n --color-sky-200: #d3f3fd;\n --color-sky-300: #c3ecf9;\n --color-sky-400: #a2def1;\n --color-sky-500: #7bd0ea;\n --color-sky-600: #2ebee5;\n --color-sky-700: #68ddfd;\n --color-sky-800: #5dd3f4;\n --color-sky-900: #007aa3;\n --color-sky-1000: #003242;\n --color-mint-25: #fbfefe;\n --color-mint-50: #f1fefa;\n --color-mint-100: #e0fbf3;\n --color-mint-200: #d4f7ee;\n --color-mint-300: #c2efe4;\n --color-mint-400: #a5e4d4;\n --color-mint-500: #7dd4bf;\n --color-mint-600: #40c4aa;\n --color-mint-700: #70e1c8;\n --color-mint-800: #68d9c1;\n --color-mint-900: #147b6d;\n --color-mint-1000: #09342e;\n --color-lime-25: #fdfefb;\n --color-lime-50: #f6fcee;\n --color-lime-100: #eefadb;\n --color-lime-200: #e3f7c5;\n --color-lime-300: #d7f2b0;\n --color-lime-400: #cae996;\n --color-lime-500: #b1d16b;\n --color-lime-600: #94ba2c;\n --color-lime-700: #99d52a;\n --color-lime-800: #93c926;\n --color-lime-900: #5d770d;\n --color-lime-1000: #273409;\n --color-yellow-25: #fcfcf7;\n --color-yellow-50: #fffce5;\n --color-yellow-100: #fffbd1;\n --color-yellow-200: #fff8bd;\n --color-yellow-300: #fef2a4;\n --color-yellow-400: #f9e78b;\n --color-yellow-500: #efd26c;\n --color-yellow-600: #f5d90a;\n --color-yellow-700: #ebbc00;\n --color-yellow-800: #f5cc00;\n --color-yellow-900: #946800;\n --color-yellow-1000: #34280f;\n --color-gold-25: #fdfdfc;\n --color-gold-50: #fbfaf3;\n --color-gold-100: #f6f3ea;\n --color-gold-200: #eeeadd;\n --color-gold-300: #e6e0d1;\n --color-gold-400: #dad1be;\n --color-gold-500: #cbbda4;\n --color-gold-600: #b8a384;\n --color-gold-700: #968264;\n --color-gold-800: #8d7a5e;\n --color-gold-900: #776750;\n --color-gold-1000: #3b352b;\n --color-bronze-25: #fdfcfc;\n --color-bronze-50: #fdf8f7;\n --color-bronze-100: #f8f0ed;\n --color-bronze-200: #f2e8e3;\n --color-bronze-300: #eaddd7;\n --color-bronze-400: #e0cec7;\n --color-bronze-500: #d0b8af;\n --color-bronze-600: #be9f93;\n --color-bronze-700: #a18072;\n --color-bronze-800: #967669;\n --color-bronze-900: #846358;\n --color-bronze-1000: #44312c;\n}\n\n.dark-theme {\n --color-white: #121212;\n --color-black: #fff;\n --color-gray-25: #171717;\n --color-gray-50: #1c1c1c;\n --color-gray-100: #242424;\n --color-gray-200: #292929;\n --color-gray-300: #2e2e2e;\n --color-gray-400: #333;\n --color-gray-500: #3d3d3d;\n --color-gray-600: #4f4f4f;\n --color-gray-700: #707070;\n --color-gray-800: #7d7d7d;\n --color-gray-900: #a1a1a1;\n --color-gray-1000: #ededed;\n --color-blue-25: #0f161f;\n --color-blue-50: #0f1c2e;\n --color-blue-100: #10233d;\n --color-blue-200: #102a4c;\n --color-blue-300: #0f2f57;\n --color-blue-400: #0d3868;\n --color-blue-500: #0a4380;\n --color-blue-600: #0954a5;\n --color-blue-700: #0091ff;\n --color-blue-800: #389fff;\n --color-blue-900: #52a8ff;\n --color-blue-1000: #ebf6ff;\n --color-red-25: #201315;\n --color-red-50: #291415;\n --color-red-100: #3a1719;\n --color-red-200: #471a1d;\n --color-red-300: #551b1f;\n --color-red-400: #671e21;\n --color-red-500: #832126;\n --color-red-600: #a82428;\n --color-red-700: #e5484d;\n --color-red-800: #f2545a;\n --color-red-900: #ff6166;\n --color-red-1000: #feecee;\n --color-amber-25: #1f1300;\n --color-amber-50: #291800;\n --color-amber-100: #331b00;\n --color-amber-200: #3d2100;\n --color-amber-300: #4d2a00;\n --color-amber-400: #573300;\n --color-amber-500: #6b4105;\n --color-amber-600: #804d00;\n --color-amber-700: #ffb224;\n --color-amber-800: #ffbb3d;\n --color-amber-900: #ffc457;\n --color-amber-1000: #fef3dc;\n --color-green-25: #0c1811;\n --color-green-50: #0b1d16;\n --color-green-100: #0f291e;\n --color-green-200: #113123;\n --color-green-300: #133929;\n --color-green-400: #164531;\n --color-green-500: #1b553b;\n --color-green-600: #226d49;\n --color-green-700: #30a66d;\n --color-green-800: #3caf77;\n --color-green-900: #4bc389;\n --color-green-1000: #e5fbea;\n --color-tomato-25: #1c1412;\n --color-tomato-50: #29130f;\n --color-tomato-100: #3a1713;\n --color-tomato-200: #481a14;\n --color-tomato-300: #561d15;\n --color-tomato-400: #642016;\n --color-tomato-500: #7f2315;\n --color-tomato-600: #a52b12;\n --color-tomato-700: #e54d2e;\n --color-tomato-800: #ec5d41;\n --color-tomato-900: #f16b50;\n --color-tomato-1000: #feefec;\n --color-crimson-25: #1e1519;\n --color-crimson-50: #28151d;\n --color-crimson-100: #3a1726;\n --color-crimson-200: #471a2d;\n --color-crimson-300: #551b33;\n --color-crimson-400: #631d3a;\n --color-crimson-500: #811d45;\n --color-crimson-600: #ae1955;\n --color-crimson-700: #ea3e83;\n --color-crimson-800: #f05189;\n --color-crimson-900: #f75f8f;\n --color-crimson-1000: #feecf4;\n --color-pink-25: #20131c;\n --color-pink-50: #281522;\n --color-pink-100: #3a182f;\n --color-pink-200: #461b38;\n --color-pink-300: #501b3f;\n --color-pink-400: #621d4a;\n --color-pink-500: #7c1d5b;\n --color-pink-600: #a51871;\n --color-pink-700: #d742a0;\n --color-pink-800: #e34aa8;\n --color-pink-900: #f65ab5;\n --color-pink-1000: #feecf7;\n --color-plum-25: #1c121c;\n --color-plum-50: #241424;\n --color-plum-100: #331a33;\n --color-plum-200: #3e1c3f;\n --color-plum-300: #48214a;\n --color-plum-400: #552659;\n --color-plum-500: #6b2e70;\n --color-plum-600: #883894;\n --color-plum-700: #ab4aba;\n --color-plum-800: #bc53c6;\n --color-plum-900: #d864d8;\n --color-plum-1000: #fbedfc;\n --color-purple-25: #1c151e;\n --color-purple-50: #231528;\n --color-purple-100: #2e1938;\n --color-purple-200: #3a1e48;\n --color-purple-300: #422154;\n --color-purple-400: #4f2768;\n --color-purple-500: #5f2e85;\n --color-purple-600: #7938b2;\n --color-purple-700: #8e4ec6;\n --color-purple-800: #9c5bd2;\n --color-purple-900: #bf7af0;\n --color-purple-1000: #f8edfc;\n --color-violet-25: #17151e;\n --color-violet-50: #1c172b;\n --color-violet-100: #241d3e;\n --color-violet-200: #2b224f;\n --color-violet-300: #32265e;\n --color-violet-400: #392c72;\n --color-violet-500: #443592;\n --color-violet-600: #5741c3;\n --color-violet-700: #6d54cf;\n --color-violet-800: #7b65dc;\n --color-violet-900: #9f8dfc;\n --color-violet-1000: #efecfe;\n --color-indigo-25: #131620;\n --color-indigo-50: #15192d;\n --color-indigo-100: #18203e;\n --color-indigo-200: #1c274f;\n --color-indigo-300: #1f2c5c;\n --color-indigo-400: #22336d;\n --color-indigo-500: #273f8b;\n --color-indigo-600: #2f4db1;\n --color-indigo-700: #3c61dd;\n --color-indigo-800: #5474e8;\n --color-indigo-900: #859dff;\n --color-indigo-1000: #edf0fd;\n --color-cyan-25: #07191d;\n --color-cyan-50: #061d23;\n --color-cyan-100: #072931;\n --color-cyan-200: #07303b;\n --color-cyan-300: #073945;\n --color-cyan-400: #064251;\n --color-cyan-500: #044f62;\n --color-cyan-600: #006680;\n --color-cyan-700: #05a2c2;\n --color-cyan-800: #00b1cc;\n --color-cyan-900: #00c1d6;\n --color-cyan-1000: #e0f8fa;\n --color-teal-25: #091a16;\n --color-teal-50: #04201b;\n --color-teal-100: #062822;\n --color-teal-200: #07312b;\n --color-teal-300: #083a33;\n --color-teal-400: #09443c;\n --color-teal-500: #0b564c;\n --color-teal-600: #0c6e63;\n --color-teal-700: #12a594;\n --color-teal-800: #10b2a2;\n --color-teal-900: #0ac7b4;\n --color-teal-1000: #e0faf4;\n --color-grass-25: #0c1811;\n --color-grass-50: #0f1f13;\n --color-grass-100: #142a1a;\n --color-grass-200: #16311e;\n --color-grass-300: #193921;\n --color-grass-400: #1d4427;\n --color-grass-500: #255631;\n --color-grass-600: #2f6f3b;\n --color-grass-700: #45a557;\n --color-grass-800: #55b466;\n --color-grass-900: #62c073;\n --color-grass-1000: #e5fbea;\n --color-brown-25: #1a1614;\n --color-brown-50: #211712;\n --color-brown-100: #2e201a;\n --color-brown-200: #35251d;\n --color-brown-300: #3f2c22;\n --color-brown-400: #483528;\n --color-brown-500: #5d4332;\n --color-brown-600: #775940;\n --color-brown-700: #ad7f58;\n --color-brown-800: #bd8c61;\n --color-brown-900: #dba270;\n --color-brown-1000: #faf0e5;\n --color-orange-25: #1e1106;\n --color-orange-50: #291300;\n --color-orange-100: #3a1b03;\n --color-orange-200: #431e04;\n --color-orange-300: #4d2205;\n --color-orange-400: #602a06;\n --color-orange-500: #763205;\n --color-orange-600: #943e00;\n --color-orange-700: #f76808;\n --color-orange-800: #ff7e29;\n --color-orange-900: #ff8b3d;\n --color-orange-1000: #feeadc;\n --color-sky-25: #0d1921;\n --color-sky-50: #071e2c;\n --color-sky-100: #082535;\n --color-sky-200: #082c40;\n --color-sky-300: #08344a;\n --color-sky-400: #083e59;\n --color-sky-500: #064a6a;\n --color-sky-600: #005d85;\n --color-sky-700: #68ddfd;\n --color-sky-800: #8ae8ff;\n --color-sky-900: #2fc8ee;\n --color-sky-1000: #ebf8ff;\n --color-mint-25: #071715;\n --color-mint-50: #051f1d;\n --color-mint-100: #052926;\n --color-mint-200: #042f2a;\n --color-mint-300: #033a34;\n --color-mint-400: #01463e;\n --color-mint-500: #00574b;\n --color-mint-600: #006b59;\n --color-mint-700: #70e1c8;\n --color-mint-800: #95f3d9;\n --color-mint-900: #25d0ab;\n --color-mint-1000: #e8fcf8;\n --color-lime-25: #141807;\n --color-lime-50: #171c08;\n --color-lime-100: #1e260d;\n --color-lime-200: #252e0f;\n --color-lime-300: #2b3711;\n --color-lime-400: #354314;\n --color-lime-500: #405115;\n --color-lime-600: #546916;\n --color-lime-700: #99d52a;\n --color-lime-800: #c4f042;\n --color-lime-900: #88bf22;\n --color-lime-1000: #f0fbdf;\n --color-yellow-25: #1a1300;\n --color-yellow-50: #241b00;\n --color-yellow-100: #2e2200;\n --color-yellow-200: #332600;\n --color-yellow-300: #3d2f00;\n --color-yellow-400: #473a00;\n --color-yellow-500: #574805;\n --color-yellow-600: #705e00;\n --color-yellow-700: #f5d90a;\n --color-yellow-800: #ffef5c;\n --color-yellow-900: #f0c000;\n --color-yellow-1000: #fffad1;\n --color-gold-25: #161512;\n --color-gold-50: #1d1b16;\n --color-gold-100: #26231c;\n --color-gold-200: #2c2920;\n --color-gold-300: #353027;\n --color-gold-400: #3f392c;\n --color-gold-500: #4f4636;\n --color-gold-600: #6b5d47;\n --color-gold-700: #968264;\n --color-gold-800: #a59173;\n --color-gold-900: #bfa888;\n --color-gold-1000: #f7f5e8;\n --color-bronze-25: #191514;\n --color-bronze-50: #201a18;\n --color-bronze-100: #29201e;\n --color-bronze-200: #332824;\n --color-bronze-300: #3c2f2a;\n --color-bronze-400: #453530;\n --color-bronze-500: #57443d;\n --color-bronze-600: #74594e;\n --color-bronze-700: #a18072;\n --color-bronze-800: #b08c7d;\n --color-bronze-900: #cca494;\n --color-bronze-1000: #f9ede7;\n}\n\n.inter {\n font-family: Inter, sans-serif;\n}\n\n@supports (font-variation-settings: normal) {\n .inter {\n font-family: Inter var, sans-serif;\n }\n}\n\n.pulse-red-700 {\n animation: 2s infinite pulse-red-700;\n transform: scale(1);\n box-shadow: 0 0 #e5484d;\n}\n\n@keyframes pulse-red-700 {\n 0% {\n transform: scale(.95);\n box-shadow: 0 0 #e5484db3;\n }\n\n 70% {\n transform: scale(1);\n box-shadow: 0 0 0 6px #e5484d00;\n }\n\n to {\n transform: scale(.95);\n box-shadow: 0 0 #e5484d00;\n }\n}\n\n::-webkit-scrollbar {\n width: 0;\n height: 0;\n display: none;\n}\n\n@keyframes enter {\n 0% {\n opacity: var(--tw-enter-opacity, 1);\n 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));\n }\n}\n\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n 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));\n }\n}\n\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-divide-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-leading {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n\n@property --tw-blur {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-invert {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-duration {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ease {\n syntax: \"*\";\n inherits: false\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@keyframes accordion-down {\n 0% {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n\n@keyframes accordion-up {\n 0% {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n\n@keyframes flash {\n 0% {\n opacity: .9;\n }\n\n to {\n opacity: 0;\n }\n}\n";
|
|
12824
14321
|
|
|
12825
14322
|
|
|
12826
14323
|
const $24075a5d702d64b3$var$queryClient = new (0, $3Sbms$QueryClient)();
|