design-zystem 1.0.327 → 1.0.328

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { HTMLAttributes, AnchorHTMLAttributes, ElementType, ImgHTMLAttributes, ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes, MouseEvent, ComponentPropsWithoutRef, Ref } from 'react';
2
+ import { HTMLAttributes, AnchorHTMLAttributes, ElementType, ImgHTMLAttributes, ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes, MouseEvent, ComponentPropsWithoutRef, Ref, RefObject } from 'react';
3
3
  import * as class_variance_authority_types from 'class-variance-authority/types';
4
4
  import { VariantProps } from 'class-variance-authority';
5
5
  import * as RadixLabel from '@radix-ui/react-label';
@@ -812,6 +812,17 @@ interface FloatingAction {
812
812
  badge?: number;
813
813
  onClick: () => void;
814
814
  }
815
+ /**
816
+ * Marges à retrancher des bords de la fenêtre pour décider du sens de l'arc :
817
+ * une barre latérale ou un bandeau fixe recouvre le bouton sans réduire le
818
+ * viewport. Les valeurs sont en pixels, absentes = 0.
819
+ */
820
+ interface FloatingSafeArea {
821
+ top?: number;
822
+ right?: number;
823
+ bottom?: number;
824
+ left?: number;
825
+ }
815
826
  interface FloatingButtonProps {
816
827
  isOpen: boolean;
817
828
  onToggle: () => void;
@@ -824,8 +835,10 @@ interface FloatingButtonProps {
824
835
  draggable?: boolean;
825
836
  /** Sauvegarde la position glissée dans localStorage sous cette clé et la restaure au montage — sans clé, la position ne survit pas à un refresh/changement de page. */
826
837
  persistKey?: string;
838
+ /** Zones des bords déjà occupées par des éléments fixes (barre latérale…), dont l'arc doit se tenir à l'écart. */
839
+ safeArea?: FloatingSafeArea;
827
840
  }
828
- declare const FloatingButton: ({ isOpen, onToggle, actions, mainBadge, icon, label, color, draggable, persistKey, }: FloatingButtonProps) => react.JSX.Element;
841
+ declare const FloatingButton: ({ isOpen, onToggle, actions, mainBadge, icon, label, color, draggable, persistKey, safeArea, }: FloatingButtonProps) => react.JSX.Element;
829
842
 
830
843
  interface MetricCardProps {
831
844
  /** Nom de l'icône FontAwesome, sans le préfixe `fa-` (ex. "truck"). */
@@ -1128,7 +1141,9 @@ interface MessageDateSeparatorProps {
1128
1141
  }
1129
1142
  /** Ligne de séparation légendée entre deux blocs de messages : changement de journée, ou reprise des non-lus. */
1130
1143
  declare const MessageDateSeparator: ({ label, tone, className, }: MessageDateSeparatorProps) => react.JSX.Element;
1131
- interface MessageScrollerProps {
1144
+ /** Retraits du contenu — mêmes noms et même échelle que `Layout`. */
1145
+ type MessageScrollerPadding = Pick<LayoutProps, 'padding' | 'paddingX' | 'paddingY' | 'paddingTop' | 'paddingRight' | 'paddingBottom' | 'paddingLeft'>;
1146
+ interface MessageScrollerProps extends MessageScrollerPadding {
1132
1147
  /** Les `Message` (et les `MessageDateSeparator` intercalés) à afficher. */
1133
1148
  children?: ReactNode;
1134
1149
  /**
@@ -1155,10 +1170,17 @@ interface MessageScrollerProps {
1155
1170
  * l'id du dernier. Sans valeur, seul le montage descend en bas.
1156
1171
  */
1157
1172
  scrollKey?: string | number;
1173
+ /**
1174
+ * Ref sur le noeud qui scrolle réellement, pour les fils que `autoScroll` ne
1175
+ * suffit pas à piloter : liste paginée dont il faut garder la position quand
1176
+ * on préfixe des messages plus anciens, bouton « revenir au dernier
1177
+ * message », chargement déclenché par la proximité du haut.
1178
+ */
1179
+ viewportRef?: RefObject<HTMLDivElement>;
1158
1180
  className?: string;
1159
1181
  }
1160
1182
  /** Zone scrollable d'une liste de messages : hauteur fixe, espacement, slots haut/bas, états vide/chargement, et scroll automatique en bas à l'arrivée d'un message. */
1161
- declare const MessageScroller: ({ children, height, gap, header, footer, emptyState, isEmpty, loadingState, isLoading, autoScroll, scrollKey, className, }: MessageScrollerProps) => react.JSX.Element;
1183
+ declare const MessageScroller: ({ children, height, gap, padding, paddingX, paddingY, paddingTop, paddingRight, paddingBottom, paddingLeft, header, footer, emptyState, isEmpty, loadingState, isLoading, autoScroll, scrollKey, viewportRef, className, }: MessageScrollerProps) => react.JSX.Element;
1162
1184
 
1163
1185
  interface StepperProps {
1164
1186
  numberOfSteps: number;
@@ -1402,4 +1424,4 @@ declare const allowAutofill: (autoComplete: string) => {
1402
1424
  "data-form-type": undefined;
1403
1425
  };
1404
1426
 
1405
- export { Attachment, type AttachmentProps, type AttachmentStatus, Avatar, AvatarBadge, type AvatarBadgeConfig, type AvatarBadgeProps, AvatarFallback, type AvatarFallbackProps, AvatarGroup, type AvatarGroupProps, AvatarImage, type AvatarImageProps, type AvatarProps, Badge, type BadgeProps, Banner, type BannerAction, type BannerProps, type BannerToggle, Box, type BoxProps, Bulk, type BulkProps, type BulkSection, Button, type ButtonColor, type ButtonProps, COLOR_TOKENS, Checkbox, type CheckboxProps, Collapsible, CollapsibleContent, CollapsibleTrigger, type ColorKey, ColorPicker, type ColorPickerProps, type ColorToken, DatePicker, type DatePickerMode, type DatePickerProps, type DatePreset, Divider, type DividerProps, Drawer, DrawerBody, DrawerClose, DrawerDescription, type DrawerDirection, DrawerFooter, DrawerHeader, type DrawerProps, DrawerTitle, EmailInput, type EmailInputProps, EmptyState, type EmptyStateProps, FilePicker, type FilePickerProps, FileUploadZone, type FileUploadZoneProps, type FloatingAction, FloatingButton, type FloatingButtonProps, Gantt, type GanttBand, type GanttBar, type GanttDay, GanttDot, type GanttProps, type GanttRow, GanttSwatch, Icon, IconBadge, type IconBadgeProps, type IconColor, type IconFamily, type IconProps, type IconSize, type IconTabItem, IconTabs, type IconTabsProps, IconTooltip, type IconTooltipProps, Image, type ImageProps, Input, InputGroup, InputGroupAddon, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, type InputGroupProps, type InputProps, Item, ItemActions, ItemContent, ItemDescription, ItemMedia, type ItemMediaProps, type ItemProps, ItemTitle, Label, type LabelProps, Layout, type LayoutProps, Link, type LinkProps, Message, MessageDateSeparator, type MessageDateSeparatorProps, type MessageProps, MessageScroller, type MessageScrollerProps, type MessageSeparatorTone, type MessageTone, type MessageVariant, MetricCard, type MetricCardProps, Modal, ModalBody, ModalClose, ModalDescription, ModalFooter, ModalHeader, type ModalProps, ModalTitle, type MultiSelectProps, type OptimizeImageOptions, type OptimizeImageResult, PageContainer, type PageContainerProps, Pagination, type PaginationProps, PasswordInput, type PasswordInputProps, PdfPreview, type PdfPreviewProps, PhoneInput, type PhoneInputMeta, type PhoneInputProps, Popover, type PopoverMenuItem, type PopoverProps, ProgressBar, type ProgressBarProps, Radio, type RadioOption, type RadioProps, ScrollArea, type ScrollAreaProps, SearchInput, type SearchInputProps, Select, type SelectOption, type SelectProps, type SingleSelectProps, Skeleton, type SkeletonProps, Spinner, type SpinnerProps, type SpinnerSize, Stepper, type StepperProps, Switch, type SwitchProps, type TabItem, Table, TableCell, type TableCellProps, type TableEmptyState, TableFooter, TableFooterCell, type TableFooterCellProps, type TableFooterProps, TableFooterRow, type TableFooterRowProps, TableHeader, TableHeaderCell, type TableHeaderCellProps, type TableHeaderProps, TableHeaderRow, type TableHeaderRowProps, type TablePagination, type TableProps, TableRow, type TableRowProps, Tabs, type TabsProps, type TabsVariant, TagBubble, type TagBubbleProps, type TagOption, TagSelect, type TagSelectProps, Text, type TextProps, Textarea, type TextareaProps, Timeline, type TimelineItem, type TimelineProps, type ToastOptions, type ToastType, Toaster, Tooltip, type TooltipProps, addBusinessDays, allowAutofill, appendCacheBuster, appendQueryParam, buttonVariants, capitalizeFirstLetter, colors, easterDate, formatAddress, formatCityFromFormattedAddress, formatCityWithPostalCode, formatDate, formatDateWithTime, formatDistance, formatDuration, formatEuro, formatKM, formatLocality, formatName, formatNameWithInitial, formatPhoneNumber, formatPlate, formatPlateWithoutDashes, formatPostalCodeFromFormattedAddress, formatRegionCode, formatTime, formatVin, generateHexColor, getAvatarColor, getCleanFileName, getFileIconByMimeType, getFileKind, getFileNameFromUrl, getInitials, getMimeCategory, getRelativeTime, isHoliday, isSameDay, isolateCity, noAutofillProps, optimizeImage, parseAmount, parseIsoDate, toast, truncateFileName, truncateText, useAvatarSize };
1427
+ export { Attachment, type AttachmentProps, type AttachmentStatus, Avatar, AvatarBadge, type AvatarBadgeConfig, type AvatarBadgeProps, AvatarFallback, type AvatarFallbackProps, AvatarGroup, type AvatarGroupProps, AvatarImage, type AvatarImageProps, type AvatarProps, Badge, type BadgeProps, Banner, type BannerAction, type BannerProps, type BannerToggle, Box, type BoxProps, Bulk, type BulkProps, type BulkSection, Button, type ButtonColor, type ButtonProps, COLOR_TOKENS, Checkbox, type CheckboxProps, Collapsible, CollapsibleContent, CollapsibleTrigger, type ColorKey, ColorPicker, type ColorPickerProps, type ColorToken, DatePicker, type DatePickerMode, type DatePickerProps, type DatePreset, Divider, type DividerProps, Drawer, DrawerBody, DrawerClose, DrawerDescription, type DrawerDirection, DrawerFooter, DrawerHeader, type DrawerProps, DrawerTitle, EmailInput, type EmailInputProps, EmptyState, type EmptyStateProps, FilePicker, type FilePickerProps, FileUploadZone, type FileUploadZoneProps, type FloatingAction, FloatingButton, type FloatingButtonProps, type FloatingSafeArea, Gantt, type GanttBand, type GanttBar, type GanttDay, GanttDot, type GanttProps, type GanttRow, GanttSwatch, Icon, IconBadge, type IconBadgeProps, type IconColor, type IconFamily, type IconProps, type IconSize, type IconTabItem, IconTabs, type IconTabsProps, IconTooltip, type IconTooltipProps, Image, type ImageProps, Input, InputGroup, InputGroupAddon, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, type InputGroupProps, type InputProps, Item, ItemActions, ItemContent, ItemDescription, ItemMedia, type ItemMediaProps, type ItemProps, ItemTitle, Label, type LabelProps, Layout, type LayoutProps, Link, type LinkProps, Message, MessageDateSeparator, type MessageDateSeparatorProps, type MessageProps, MessageScroller, type MessageScrollerProps, type MessageSeparatorTone, type MessageTone, type MessageVariant, MetricCard, type MetricCardProps, Modal, ModalBody, ModalClose, ModalDescription, ModalFooter, ModalHeader, type ModalProps, ModalTitle, type MultiSelectProps, type OptimizeImageOptions, type OptimizeImageResult, PageContainer, type PageContainerProps, Pagination, type PaginationProps, PasswordInput, type PasswordInputProps, PdfPreview, type PdfPreviewProps, PhoneInput, type PhoneInputMeta, type PhoneInputProps, Popover, type PopoverMenuItem, type PopoverProps, ProgressBar, type ProgressBarProps, Radio, type RadioOption, type RadioProps, ScrollArea, type ScrollAreaProps, SearchInput, type SearchInputProps, Select, type SelectOption, type SelectProps, type SingleSelectProps, Skeleton, type SkeletonProps, Spinner, type SpinnerProps, type SpinnerSize, Stepper, type StepperProps, Switch, type SwitchProps, type TabItem, Table, TableCell, type TableCellProps, type TableEmptyState, TableFooter, TableFooterCell, type TableFooterCellProps, type TableFooterProps, TableFooterRow, type TableFooterRowProps, TableHeader, TableHeaderCell, type TableHeaderCellProps, type TableHeaderProps, TableHeaderRow, type TableHeaderRowProps, type TablePagination, type TableProps, TableRow, type TableRowProps, Tabs, type TabsProps, type TabsVariant, TagBubble, type TagBubbleProps, type TagOption, TagSelect, type TagSelectProps, Text, type TextProps, Textarea, type TextareaProps, Timeline, type TimelineItem, type TimelineProps, type ToastOptions, type ToastType, Toaster, Tooltip, type TooltipProps, addBusinessDays, allowAutofill, appendCacheBuster, appendQueryParam, buttonVariants, capitalizeFirstLetter, colors, easterDate, formatAddress, formatCityFromFormattedAddress, formatCityWithPostalCode, formatDate, formatDateWithTime, formatDistance, formatDuration, formatEuro, formatKM, formatLocality, formatName, formatNameWithInitial, formatPhoneNumber, formatPlate, formatPlateWithoutDashes, formatPostalCodeFromFormattedAddress, formatRegionCode, formatTime, formatVin, generateHexColor, getAvatarColor, getCleanFileName, getFileIconByMimeType, getFileKind, getFileNameFromUrl, getInitials, getMimeCategory, getRelativeTime, isHoliday, isSameDay, isolateCity, noAutofillProps, optimizeImage, parseAmount, parseIsoDate, toast, truncateFileName, truncateText, useAvatarSize };
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { HTMLAttributes, AnchorHTMLAttributes, ElementType, ImgHTMLAttributes, ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes, MouseEvent, ComponentPropsWithoutRef, Ref } from 'react';
2
+ import { HTMLAttributes, AnchorHTMLAttributes, ElementType, ImgHTMLAttributes, ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes, MouseEvent, ComponentPropsWithoutRef, Ref, RefObject } from 'react';
3
3
  import * as class_variance_authority_types from 'class-variance-authority/types';
4
4
  import { VariantProps } from 'class-variance-authority';
5
5
  import * as RadixLabel from '@radix-ui/react-label';
@@ -812,6 +812,17 @@ interface FloatingAction {
812
812
  badge?: number;
813
813
  onClick: () => void;
814
814
  }
815
+ /**
816
+ * Marges à retrancher des bords de la fenêtre pour décider du sens de l'arc :
817
+ * une barre latérale ou un bandeau fixe recouvre le bouton sans réduire le
818
+ * viewport. Les valeurs sont en pixels, absentes = 0.
819
+ */
820
+ interface FloatingSafeArea {
821
+ top?: number;
822
+ right?: number;
823
+ bottom?: number;
824
+ left?: number;
825
+ }
815
826
  interface FloatingButtonProps {
816
827
  isOpen: boolean;
817
828
  onToggle: () => void;
@@ -824,8 +835,10 @@ interface FloatingButtonProps {
824
835
  draggable?: boolean;
825
836
  /** Sauvegarde la position glissée dans localStorage sous cette clé et la restaure au montage — sans clé, la position ne survit pas à un refresh/changement de page. */
826
837
  persistKey?: string;
838
+ /** Zones des bords déjà occupées par des éléments fixes (barre latérale…), dont l'arc doit se tenir à l'écart. */
839
+ safeArea?: FloatingSafeArea;
827
840
  }
828
- declare const FloatingButton: ({ isOpen, onToggle, actions, mainBadge, icon, label, color, draggable, persistKey, }: FloatingButtonProps) => react.JSX.Element;
841
+ declare const FloatingButton: ({ isOpen, onToggle, actions, mainBadge, icon, label, color, draggable, persistKey, safeArea, }: FloatingButtonProps) => react.JSX.Element;
829
842
 
830
843
  interface MetricCardProps {
831
844
  /** Nom de l'icône FontAwesome, sans le préfixe `fa-` (ex. "truck"). */
@@ -1128,7 +1141,9 @@ interface MessageDateSeparatorProps {
1128
1141
  }
1129
1142
  /** Ligne de séparation légendée entre deux blocs de messages : changement de journée, ou reprise des non-lus. */
1130
1143
  declare const MessageDateSeparator: ({ label, tone, className, }: MessageDateSeparatorProps) => react.JSX.Element;
1131
- interface MessageScrollerProps {
1144
+ /** Retraits du contenu — mêmes noms et même échelle que `Layout`. */
1145
+ type MessageScrollerPadding = Pick<LayoutProps, 'padding' | 'paddingX' | 'paddingY' | 'paddingTop' | 'paddingRight' | 'paddingBottom' | 'paddingLeft'>;
1146
+ interface MessageScrollerProps extends MessageScrollerPadding {
1132
1147
  /** Les `Message` (et les `MessageDateSeparator` intercalés) à afficher. */
1133
1148
  children?: ReactNode;
1134
1149
  /**
@@ -1155,10 +1170,17 @@ interface MessageScrollerProps {
1155
1170
  * l'id du dernier. Sans valeur, seul le montage descend en bas.
1156
1171
  */
1157
1172
  scrollKey?: string | number;
1173
+ /**
1174
+ * Ref sur le noeud qui scrolle réellement, pour les fils que `autoScroll` ne
1175
+ * suffit pas à piloter : liste paginée dont il faut garder la position quand
1176
+ * on préfixe des messages plus anciens, bouton « revenir au dernier
1177
+ * message », chargement déclenché par la proximité du haut.
1178
+ */
1179
+ viewportRef?: RefObject<HTMLDivElement>;
1158
1180
  className?: string;
1159
1181
  }
1160
1182
  /** Zone scrollable d'une liste de messages : hauteur fixe, espacement, slots haut/bas, états vide/chargement, et scroll automatique en bas à l'arrivée d'un message. */
1161
- declare const MessageScroller: ({ children, height, gap, header, footer, emptyState, isEmpty, loadingState, isLoading, autoScroll, scrollKey, className, }: MessageScrollerProps) => react.JSX.Element;
1183
+ declare const MessageScroller: ({ children, height, gap, padding, paddingX, paddingY, paddingTop, paddingRight, paddingBottom, paddingLeft, header, footer, emptyState, isEmpty, loadingState, isLoading, autoScroll, scrollKey, viewportRef, className, }: MessageScrollerProps) => react.JSX.Element;
1162
1184
 
1163
1185
  interface StepperProps {
1164
1186
  numberOfSteps: number;
@@ -1402,4 +1424,4 @@ declare const allowAutofill: (autoComplete: string) => {
1402
1424
  "data-form-type": undefined;
1403
1425
  };
1404
1426
 
1405
- export { Attachment, type AttachmentProps, type AttachmentStatus, Avatar, AvatarBadge, type AvatarBadgeConfig, type AvatarBadgeProps, AvatarFallback, type AvatarFallbackProps, AvatarGroup, type AvatarGroupProps, AvatarImage, type AvatarImageProps, type AvatarProps, Badge, type BadgeProps, Banner, type BannerAction, type BannerProps, type BannerToggle, Box, type BoxProps, Bulk, type BulkProps, type BulkSection, Button, type ButtonColor, type ButtonProps, COLOR_TOKENS, Checkbox, type CheckboxProps, Collapsible, CollapsibleContent, CollapsibleTrigger, type ColorKey, ColorPicker, type ColorPickerProps, type ColorToken, DatePicker, type DatePickerMode, type DatePickerProps, type DatePreset, Divider, type DividerProps, Drawer, DrawerBody, DrawerClose, DrawerDescription, type DrawerDirection, DrawerFooter, DrawerHeader, type DrawerProps, DrawerTitle, EmailInput, type EmailInputProps, EmptyState, type EmptyStateProps, FilePicker, type FilePickerProps, FileUploadZone, type FileUploadZoneProps, type FloatingAction, FloatingButton, type FloatingButtonProps, Gantt, type GanttBand, type GanttBar, type GanttDay, GanttDot, type GanttProps, type GanttRow, GanttSwatch, Icon, IconBadge, type IconBadgeProps, type IconColor, type IconFamily, type IconProps, type IconSize, type IconTabItem, IconTabs, type IconTabsProps, IconTooltip, type IconTooltipProps, Image, type ImageProps, Input, InputGroup, InputGroupAddon, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, type InputGroupProps, type InputProps, Item, ItemActions, ItemContent, ItemDescription, ItemMedia, type ItemMediaProps, type ItemProps, ItemTitle, Label, type LabelProps, Layout, type LayoutProps, Link, type LinkProps, Message, MessageDateSeparator, type MessageDateSeparatorProps, type MessageProps, MessageScroller, type MessageScrollerProps, type MessageSeparatorTone, type MessageTone, type MessageVariant, MetricCard, type MetricCardProps, Modal, ModalBody, ModalClose, ModalDescription, ModalFooter, ModalHeader, type ModalProps, ModalTitle, type MultiSelectProps, type OptimizeImageOptions, type OptimizeImageResult, PageContainer, type PageContainerProps, Pagination, type PaginationProps, PasswordInput, type PasswordInputProps, PdfPreview, type PdfPreviewProps, PhoneInput, type PhoneInputMeta, type PhoneInputProps, Popover, type PopoverMenuItem, type PopoverProps, ProgressBar, type ProgressBarProps, Radio, type RadioOption, type RadioProps, ScrollArea, type ScrollAreaProps, SearchInput, type SearchInputProps, Select, type SelectOption, type SelectProps, type SingleSelectProps, Skeleton, type SkeletonProps, Spinner, type SpinnerProps, type SpinnerSize, Stepper, type StepperProps, Switch, type SwitchProps, type TabItem, Table, TableCell, type TableCellProps, type TableEmptyState, TableFooter, TableFooterCell, type TableFooterCellProps, type TableFooterProps, TableFooterRow, type TableFooterRowProps, TableHeader, TableHeaderCell, type TableHeaderCellProps, type TableHeaderProps, TableHeaderRow, type TableHeaderRowProps, type TablePagination, type TableProps, TableRow, type TableRowProps, Tabs, type TabsProps, type TabsVariant, TagBubble, type TagBubbleProps, type TagOption, TagSelect, type TagSelectProps, Text, type TextProps, Textarea, type TextareaProps, Timeline, type TimelineItem, type TimelineProps, type ToastOptions, type ToastType, Toaster, Tooltip, type TooltipProps, addBusinessDays, allowAutofill, appendCacheBuster, appendQueryParam, buttonVariants, capitalizeFirstLetter, colors, easterDate, formatAddress, formatCityFromFormattedAddress, formatCityWithPostalCode, formatDate, formatDateWithTime, formatDistance, formatDuration, formatEuro, formatKM, formatLocality, formatName, formatNameWithInitial, formatPhoneNumber, formatPlate, formatPlateWithoutDashes, formatPostalCodeFromFormattedAddress, formatRegionCode, formatTime, formatVin, generateHexColor, getAvatarColor, getCleanFileName, getFileIconByMimeType, getFileKind, getFileNameFromUrl, getInitials, getMimeCategory, getRelativeTime, isHoliday, isSameDay, isolateCity, noAutofillProps, optimizeImage, parseAmount, parseIsoDate, toast, truncateFileName, truncateText, useAvatarSize };
1427
+ export { Attachment, type AttachmentProps, type AttachmentStatus, Avatar, AvatarBadge, type AvatarBadgeConfig, type AvatarBadgeProps, AvatarFallback, type AvatarFallbackProps, AvatarGroup, type AvatarGroupProps, AvatarImage, type AvatarImageProps, type AvatarProps, Badge, type BadgeProps, Banner, type BannerAction, type BannerProps, type BannerToggle, Box, type BoxProps, Bulk, type BulkProps, type BulkSection, Button, type ButtonColor, type ButtonProps, COLOR_TOKENS, Checkbox, type CheckboxProps, Collapsible, CollapsibleContent, CollapsibleTrigger, type ColorKey, ColorPicker, type ColorPickerProps, type ColorToken, DatePicker, type DatePickerMode, type DatePickerProps, type DatePreset, Divider, type DividerProps, Drawer, DrawerBody, DrawerClose, DrawerDescription, type DrawerDirection, DrawerFooter, DrawerHeader, type DrawerProps, DrawerTitle, EmailInput, type EmailInputProps, EmptyState, type EmptyStateProps, FilePicker, type FilePickerProps, FileUploadZone, type FileUploadZoneProps, type FloatingAction, FloatingButton, type FloatingButtonProps, type FloatingSafeArea, Gantt, type GanttBand, type GanttBar, type GanttDay, GanttDot, type GanttProps, type GanttRow, GanttSwatch, Icon, IconBadge, type IconBadgeProps, type IconColor, type IconFamily, type IconProps, type IconSize, type IconTabItem, IconTabs, type IconTabsProps, IconTooltip, type IconTooltipProps, Image, type ImageProps, Input, InputGroup, InputGroupAddon, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, type InputGroupProps, type InputProps, Item, ItemActions, ItemContent, ItemDescription, ItemMedia, type ItemMediaProps, type ItemProps, ItemTitle, Label, type LabelProps, Layout, type LayoutProps, Link, type LinkProps, Message, MessageDateSeparator, type MessageDateSeparatorProps, type MessageProps, MessageScroller, type MessageScrollerProps, type MessageSeparatorTone, type MessageTone, type MessageVariant, MetricCard, type MetricCardProps, Modal, ModalBody, ModalClose, ModalDescription, ModalFooter, ModalHeader, type ModalProps, ModalTitle, type MultiSelectProps, type OptimizeImageOptions, type OptimizeImageResult, PageContainer, type PageContainerProps, Pagination, type PaginationProps, PasswordInput, type PasswordInputProps, PdfPreview, type PdfPreviewProps, PhoneInput, type PhoneInputMeta, type PhoneInputProps, Popover, type PopoverMenuItem, type PopoverProps, ProgressBar, type ProgressBarProps, Radio, type RadioOption, type RadioProps, ScrollArea, type ScrollAreaProps, SearchInput, type SearchInputProps, Select, type SelectOption, type SelectProps, type SingleSelectProps, Skeleton, type SkeletonProps, Spinner, type SpinnerProps, type SpinnerSize, Stepper, type StepperProps, Switch, type SwitchProps, type TabItem, Table, TableCell, type TableCellProps, type TableEmptyState, TableFooter, TableFooterCell, type TableFooterCellProps, type TableFooterProps, TableFooterRow, type TableFooterRowProps, TableHeader, TableHeaderCell, type TableHeaderCellProps, type TableHeaderProps, TableHeaderRow, type TableHeaderRowProps, type TablePagination, type TableProps, TableRow, type TableRowProps, Tabs, type TabsProps, type TabsVariant, TagBubble, type TagBubbleProps, type TagOption, TagSelect, type TagSelectProps, Text, type TextProps, Textarea, type TextareaProps, Timeline, type TimelineItem, type TimelineProps, type ToastOptions, type ToastType, Toaster, Tooltip, type TooltipProps, addBusinessDays, allowAutofill, appendCacheBuster, appendQueryParam, buttonVariants, capitalizeFirstLetter, colors, easterDate, formatAddress, formatCityFromFormattedAddress, formatCityWithPostalCode, formatDate, formatDateWithTime, formatDistance, formatDuration, formatEuro, formatKM, formatLocality, formatName, formatNameWithInitial, formatPhoneNumber, formatPlate, formatPlateWithoutDashes, formatPostalCodeFromFormattedAddress, formatRegionCode, formatTime, formatVin, generateHexColor, getAvatarColor, getCleanFileName, getFileIconByMimeType, getFileKind, getFileNameFromUrl, getInitials, getMimeCategory, getRelativeTime, isHoliday, isSameDay, isolateCity, noAutofillProps, optimizeImage, parseAmount, parseIsoDate, toast, truncateFileName, truncateText, useAvatarSize };
package/dist/ui/index.js CHANGED
@@ -3863,6 +3863,97 @@ var Banner = ({
3863
3863
 
3864
3864
  // src/ui/components/ui/FloatingButton.tsx
3865
3865
  var import_react26 = require("react");
3866
+
3867
+ // src/ui/lib/floatingArc.ts
3868
+ var MAX_STEP = 65;
3869
+ var COMFORT_SPAN = 90;
3870
+ var FULL_TURN = 360;
3871
+ var MIN_ITEM_SIZE = 28;
3872
+ var SEARCH_STEP = 10;
3873
+ var SEARCH_LIMIT = 180;
3874
+ var CENTER_DEAD_ZONE = 24;
3875
+ var DEFAULT_ANGLE = 90;
3876
+ var toRadians = (degrees) => degrees * Math.PI / 180;
3877
+ var toDegrees = (radians) => radians * 180 / Math.PI;
3878
+ var chord = (radius, step) => 2 * radius * Math.sin(toRadians(step / 2));
3879
+ var minStepAt = (radius, itemSize) => 2 * toDegrees(Math.asin(Math.min(1, itemSize / (2 * radius))));
3880
+ var arcLayout = (count, baseRadius, baseItemSize) => {
3881
+ if (count <= 1) return { span: 0, radius: baseRadius, itemSize: baseItemSize };
3882
+ const comfortStep = Math.min(MAX_STEP, COMFORT_SPAN / (count - 1));
3883
+ if (comfortStep >= minStepAt(baseRadius, baseItemSize))
3884
+ return {
3885
+ span: comfortStep * (count - 1),
3886
+ radius: baseRadius,
3887
+ itemSize: baseItemSize
3888
+ };
3889
+ const step = Math.min(MAX_STEP, FULL_TURN / count);
3890
+ const available = chord(baseRadius, step);
3891
+ const itemSize = Math.min(baseItemSize, Math.max(MIN_ITEM_SIZE, available));
3892
+ const radius = available >= itemSize ? baseRadius : itemSize / (2 * Math.sin(toRadians(step / 2)));
3893
+ return { span: step * (count - 1), radius, itemSize };
3894
+ };
3895
+ var arcAngle = (index, count, { base, span }) => {
3896
+ if (count <= 1) return base;
3897
+ return base - span / 2 + index * span / (count - 1);
3898
+ };
3899
+ var arcOffset = (index, count, geometry) => {
3900
+ const angle = toRadians(arcAngle(index, count, geometry));
3901
+ return {
3902
+ x: Math.round(Math.cos(angle) * geometry.radius),
3903
+ // L'axe des ordonnées descend à l'écran, l'angle monte en trigonométrie.
3904
+ y: Math.round(-Math.sin(angle) * geometry.radius)
3905
+ };
3906
+ };
3907
+ var angleTowardsFreeSpace = (center, bounds) => {
3908
+ const middleX = (bounds.left + bounds.right) / 2;
3909
+ const middleY = (bounds.top + bounds.bottom) / 2;
3910
+ const dx = middleX - center.x;
3911
+ const dy = middleY - center.y;
3912
+ if (Math.hypot(dx, dy) < CENTER_DEAD_ZONE) return DEFAULT_ANGLE;
3913
+ return toDegrees(Math.atan2(-dy, dx));
3914
+ };
3915
+ var itemsBox = (geometry, { center, count }) => {
3916
+ const half = geometry.itemSize / 2;
3917
+ const xs = [];
3918
+ const ys = [];
3919
+ for (let index = 0; index < count; index += 1) {
3920
+ const { x, y } = arcOffset(index, count, geometry);
3921
+ xs.push(center.x + x);
3922
+ ys.push(center.y + y);
3923
+ }
3924
+ return {
3925
+ left: Math.min(...xs) - half,
3926
+ right: Math.max(...xs) + half,
3927
+ top: Math.min(...ys) - half,
3928
+ bottom: Math.max(...ys) + half
3929
+ };
3930
+ };
3931
+ var fitsInBounds = (geometry, request) => {
3932
+ const box = itemsBox(geometry, request);
3933
+ return box.left >= request.bounds.left && box.right <= request.bounds.right && box.top >= request.bounds.top && box.bottom <= request.bounds.bottom;
3934
+ };
3935
+ var shiftIntoBounds = (geometry, request) => {
3936
+ const box = itemsBox(geometry, request);
3937
+ const { bounds } = request;
3938
+ const pushX = box.left < bounds.left ? bounds.left - box.left : box.right > bounds.right ? bounds.right - box.right : 0;
3939
+ const pushY = box.top < bounds.top ? bounds.top - box.top : box.bottom > bounds.bottom ? bounds.bottom - box.bottom : 0;
3940
+ return { x: Math.round(pushX), y: Math.round(pushY) };
3941
+ };
3942
+ var resolveArcPlacement = (request) => {
3943
+ const layout = arcLayout(request.count, request.radius, request.itemSize);
3944
+ const base = angleTowardsFreeSpace(request.center, request.bounds);
3945
+ for (let offset = 0; offset <= SEARCH_LIMIT; offset += SEARCH_STEP) {
3946
+ for (const direction of offset === 0 ? [1] : [1, -1]) {
3947
+ const geometry2 = __spreadValues({ base: base + offset * direction }, layout);
3948
+ if (fitsInBounds(geometry2, request))
3949
+ return { geometry: geometry2, shift: { x: 0, y: 0 } };
3950
+ }
3951
+ }
3952
+ const geometry = __spreadValues({ base }, layout);
3953
+ return { geometry, shift: shiftIntoBounds(geometry, request) };
3954
+ };
3955
+
3956
+ // src/ui/components/ui/FloatingButton.tsx
3866
3957
  var import_jsx_runtime53 = require("react/jsx-runtime");
3867
3958
  var readStoredOffset = (key) => {
3868
3959
  if (!key || typeof window === "undefined") return { x: 0, y: 0 };
@@ -3879,17 +3970,8 @@ var readStoredOffset = (key) => {
3879
3970
  var FAB_SIZE = 56;
3880
3971
  var SUB_SIZE = 48;
3881
3972
  var ARC_RADIUS = 64;
3882
- var ARC_START_ANGLE = 90;
3883
- var ARC_MAX_STEP = 65;
3884
- var ARC_MAX_SPAN = 90;
3973
+ var EDGE_MARGIN = 16;
3885
3974
  var DRAG_THRESHOLD = 4;
3886
- var arcTransform = (index, total) => {
3887
- const step = total > 1 ? Math.min(ARC_MAX_STEP, ARC_MAX_SPAN / (total - 1)) : 0;
3888
- const angle = (ARC_START_ANGLE + index * step) * Math.PI / 180;
3889
- const x = Math.round(Math.cos(angle) * ARC_RADIUS);
3890
- const y = Math.round(-Math.sin(angle) * ARC_RADIUS);
3891
- return `translate(${x}px, ${y}px)`;
3892
- };
3893
3975
  var MAIN_BG = {
3894
3976
  "blue-700": "bg-blue-700",
3895
3977
  "blue-900": "bg-blue-900",
@@ -3923,13 +4005,46 @@ var FloatingButton = ({
3923
4005
  label = "Menu",
3924
4006
  color = "blue-700",
3925
4007
  draggable = false,
3926
- persistKey
4008
+ persistKey,
4009
+ safeArea
3927
4010
  }) => {
4011
+ const containerRef = (0, import_react26.useRef)(null);
4012
+ const [placement, setPlacement] = (0, import_react26.useState)(() => ({
4013
+ geometry: __spreadValues({ base: 90 }, arcLayout(actions.length, ARC_RADIUS, SUB_SIZE)),
4014
+ shift: { x: 0, y: 0 }
4015
+ }));
3928
4016
  const [isDragging, setIsDragging] = (0, import_react26.useState)(false);
3929
4017
  const [offset, setOffset] = (0, import_react26.useState)(() => readStoredOffset(persistKey));
3930
4018
  const offsetRef = (0, import_react26.useRef)(offset);
3931
4019
  const lastPointRef = (0, import_react26.useRef)({ x: 0, y: 0 });
3932
4020
  const dragDistanceRef = (0, import_react26.useRef)(0);
4021
+ const clampOffset = (0, import_react26.useCallback)(
4022
+ (next) => {
4023
+ var _a, _b, _c, _d;
4024
+ const el = containerRef.current;
4025
+ if (!el || typeof window === "undefined") return next;
4026
+ const rect = el.getBoundingClientRect();
4027
+ if (rect.width === 0 || rect.height === 0) return next;
4028
+ const baseLeft = rect.left - offsetRef.current.x;
4029
+ const baseTop = rect.top - offsetRef.current.y;
4030
+ const minX = ((_a = safeArea == null ? void 0 : safeArea.left) != null ? _a : 0) + EDGE_MARGIN - baseLeft;
4031
+ const maxX = window.innerWidth - ((_b = safeArea == null ? void 0 : safeArea.right) != null ? _b : 0) - EDGE_MARGIN - rect.width - baseLeft;
4032
+ const minY = ((_c = safeArea == null ? void 0 : safeArea.top) != null ? _c : 0) + EDGE_MARGIN - baseTop;
4033
+ const maxY = window.innerHeight - ((_d = safeArea == null ? void 0 : safeArea.bottom) != null ? _d : 0) - EDGE_MARGIN - rect.height - baseTop;
4034
+ return {
4035
+ x: Math.min(Math.max(next.x, minX), Math.max(minX, maxX)),
4036
+ y: Math.min(Math.max(next.y, minY), Math.max(minY, maxY))
4037
+ };
4038
+ },
4039
+ [safeArea == null ? void 0 : safeArea.left, safeArea == null ? void 0 : safeArea.top, safeArea == null ? void 0 : safeArea.right, safeArea == null ? void 0 : safeArea.bottom]
4040
+ );
4041
+ (0, import_react26.useLayoutEffect)(() => {
4042
+ const corrected = clampOffset(offsetRef.current);
4043
+ if (corrected.x === offsetRef.current.x && corrected.y === offsetRef.current.y)
4044
+ return;
4045
+ offsetRef.current = corrected;
4046
+ setOffset(corrected);
4047
+ }, [clampOffset]);
3933
4048
  (0, import_react26.useEffect)(() => {
3934
4049
  if (!draggable || !isDragging) return;
3935
4050
  const onPointerMove = (e) => {
@@ -3937,7 +4052,10 @@ var FloatingButton = ({
3937
4052
  const dy = e.clientY - lastPointRef.current.y;
3938
4053
  lastPointRef.current = { x: e.clientX, y: e.clientY };
3939
4054
  dragDistanceRef.current += Math.hypot(dx, dy);
3940
- const next = { x: offsetRef.current.x + dx, y: offsetRef.current.y + dy };
4055
+ const next = clampOffset({
4056
+ x: offsetRef.current.x + dx,
4057
+ y: offsetRef.current.y + dy
4058
+ });
3941
4059
  offsetRef.current = next;
3942
4060
  setOffset(next);
3943
4061
  };
@@ -3962,7 +4080,53 @@ var FloatingButton = ({
3962
4080
  window.removeEventListener("pointerup", endDrag);
3963
4081
  window.removeEventListener("pointercancel", endDrag);
3964
4082
  };
3965
- }, [draggable, isDragging, persistKey]);
4083
+ }, [draggable, isDragging, persistKey, clampOffset]);
4084
+ const resolvePlacement = (0, import_react26.useCallback)(() => {
4085
+ var _a, _b, _c, _d;
4086
+ const el = containerRef.current;
4087
+ if (!el || typeof window === "undefined") return;
4088
+ const rect = el.getBoundingClientRect();
4089
+ setPlacement(
4090
+ resolveArcPlacement({
4091
+ center: {
4092
+ x: rect.left + rect.width / 2,
4093
+ y: rect.top + rect.height / 2
4094
+ },
4095
+ bounds: {
4096
+ left: (_a = safeArea == null ? void 0 : safeArea.left) != null ? _a : 0,
4097
+ top: (_b = safeArea == null ? void 0 : safeArea.top) != null ? _b : 0,
4098
+ right: window.innerWidth - ((_c = safeArea == null ? void 0 : safeArea.right) != null ? _c : 0),
4099
+ bottom: window.innerHeight - ((_d = safeArea == null ? void 0 : safeArea.bottom) != null ? _d : 0)
4100
+ },
4101
+ count: actions.length,
4102
+ radius: ARC_RADIUS,
4103
+ itemSize: SUB_SIZE
4104
+ })
4105
+ );
4106
+ }, [
4107
+ actions.length,
4108
+ safeArea == null ? void 0 : safeArea.left,
4109
+ safeArea == null ? void 0 : safeArea.top,
4110
+ safeArea == null ? void 0 : safeArea.right,
4111
+ safeArea == null ? void 0 : safeArea.bottom
4112
+ ]);
4113
+ (0, import_react26.useLayoutEffect)(() => {
4114
+ if (isOpen) resolvePlacement();
4115
+ }, [isOpen, offset, resolvePlacement]);
4116
+ (0, import_react26.useLayoutEffect)(() => {
4117
+ resolvePlacement();
4118
+ }, [resolvePlacement]);
4119
+ (0, import_react26.useEffect)(() => {
4120
+ if (typeof window === "undefined") return;
4121
+ const onResize = () => {
4122
+ resolvePlacement();
4123
+ const corrected = clampOffset(offsetRef.current);
4124
+ offsetRef.current = corrected;
4125
+ setOffset(corrected);
4126
+ };
4127
+ window.addEventListener("resize", onResize);
4128
+ return () => window.removeEventListener("resize", onResize);
4129
+ }, [resolvePlacement, clampOffset]);
3966
4130
  const startDrag = (e) => {
3967
4131
  if (!draggable) return;
3968
4132
  dragDistanceRef.current = 0;
@@ -3974,19 +4138,27 @@ var FloatingButton = ({
3974
4138
  if (draggable && dragDistanceRef.current > DRAG_THRESHOLD) return;
3975
4139
  onToggle();
3976
4140
  };
4141
+ const { itemSize } = placement.geometry;
4142
+ const translateX = offset.x + (isOpen ? placement.shift.x : 0);
4143
+ const translateY = offset.y + (isOpen ? placement.shift.y : 0);
3977
4144
  return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
3978
4145
  "div",
3979
4146
  {
4147
+ ref: containerRef,
3980
4148
  className: "fixed bottom-8 right-8 z-[1000]",
3981
4149
  style: {
3982
4150
  width: FAB_SIZE,
3983
4151
  height: FAB_SIZE,
3984
- transform: offset.x || offset.y ? `translate(${offset.x}px, ${offset.y}px)` : void 0,
4152
+ // Le décalage d'ouverture s'ajoute au déplacement choisi par l'opérateur :
4153
+ // il écarte le bouton du bord juste ce qu'il faut pour montrer ses actions,
4154
+ // et disparaît à la fermeture. Au repos, pas de transform du tout.
4155
+ transform: translateX || translateY ? `translate(${translateX}px, ${translateY}px)` : void 0,
3985
4156
  transition: isDragging ? "none" : "transform 80ms ease-out"
3986
4157
  },
3987
4158
  children: [
3988
4159
  actions.map((action, index) => {
3989
4160
  var _a;
4161
+ const itemOffset = arcOffset(index, actions.length, placement.geometry);
3990
4162
  return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
3991
4163
  "button",
3992
4164
  {
@@ -3998,15 +4170,15 @@ var FloatingButton = ({
3998
4170
  isOpen ? "pointer-events-auto opacity-100" : "pointer-events-none opacity-0"
3999
4171
  ),
4000
4172
  style: {
4001
- width: SUB_SIZE,
4002
- height: SUB_SIZE,
4003
- left: (FAB_SIZE - SUB_SIZE) / 2,
4004
- top: (FAB_SIZE - SUB_SIZE) / 2,
4005
- transform: isOpen ? arcTransform(index, actions.length) : "scale(0.4)"
4173
+ width: itemSize,
4174
+ height: itemSize,
4175
+ left: (FAB_SIZE - itemSize) / 2,
4176
+ top: (FAB_SIZE - itemSize) / 2,
4177
+ transform: isOpen ? `translate(${itemOffset.x}px, ${itemOffset.y}px)` : "scale(0.4)"
4006
4178
  },
4007
4179
  children: [
4008
4180
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: SUB_ICON[color], children: action.icon }),
4009
- ((_a = action.badge) != null ? _a : 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-900 px-1 text-[11px] font-bold text-white", children: action.badge })
4181
+ ((_a = action.badge) != null ? _a : 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-500 px-1 text-[11px] font-bold text-white", children: action.badge })
4010
4182
  ]
4011
4183
  },
4012
4184
  action.id
@@ -4030,7 +4202,7 @@ var FloatingButton = ({
4030
4202
  },
4031
4203
  children: [
4032
4204
  isOpen ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(FaIcon, { name: "xmark", size: 20 }) : icon,
4033
- !isOpen && mainBadge > 0 && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-900 px-1 text-[11px] font-bold text-white", children: mainBadge })
4205
+ !isOpen && mainBadge > 0 && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-500 px-1 text-[11px] font-bold text-white", children: mainBadge })
4034
4206
  ]
4035
4207
  }
4036
4208
  )
@@ -5302,6 +5474,15 @@ var MessageScroller = ({
5302
5474
  children,
5303
5475
  height,
5304
5476
  gap = 3,
5477
+ padding,
5478
+ paddingX,
5479
+ paddingY,
5480
+ paddingTop,
5481
+ // La scrollbar Radix se superpose au contenu : sans ce retrait elle passerait
5482
+ // sur les avatars. Reste surchargeable, comme les autres côtés.
5483
+ paddingRight = 3,
5484
+ paddingBottom,
5485
+ paddingLeft,
5305
5486
  header,
5306
5487
  footer,
5307
5488
  emptyState,
@@ -5310,15 +5491,17 @@ var MessageScroller = ({
5310
5491
  isLoading = false,
5311
5492
  autoScroll = false,
5312
5493
  scrollKey,
5494
+ viewportRef,
5313
5495
  className
5314
5496
  }) => {
5315
- const viewportRef = (0, import_react33.useRef)(null);
5497
+ const fallbackRef = (0, import_react33.useRef)(null);
5498
+ const scrollerRef = viewportRef != null ? viewportRef : fallbackRef;
5316
5499
  (0, import_react33.useLayoutEffect)(() => {
5317
5500
  if (!autoScroll) return;
5318
- const viewport = viewportRef.current;
5501
+ const viewport = scrollerRef.current;
5319
5502
  if (!viewport) return;
5320
5503
  viewport.scrollTop = viewport.scrollHeight;
5321
- }, [autoScroll, scrollKey, isLoading]);
5504
+ }, [autoScroll, scrollKey, isLoading, scrollerRef]);
5322
5505
  const body = () => {
5323
5506
  if (isLoading && loadingState) return loadingState;
5324
5507
  if (isEmpty && emptyState) return emptyState;
@@ -5327,14 +5510,29 @@ var MessageScroller = ({
5327
5510
  return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
5328
5511
  ScrollArea,
5329
5512
  {
5330
- viewportRef,
5513
+ viewportRef: scrollerRef,
5331
5514
  className: cn("w-full", className),
5332
5515
  style: typeof height === "number" ? { height: `${height}px` } : { height },
5333
- children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Layout, { column: true, gap, fullWidth: true, paddingRight: 3, children: [
5334
- header,
5335
- body(),
5336
- footer
5337
- ] })
5516
+ children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
5517
+ Layout,
5518
+ {
5519
+ column: true,
5520
+ gap,
5521
+ fullWidth: true,
5522
+ padding,
5523
+ paddingX,
5524
+ paddingY,
5525
+ paddingTop,
5526
+ paddingRight,
5527
+ paddingBottom,
5528
+ paddingLeft,
5529
+ children: [
5530
+ header,
5531
+ body(),
5532
+ footer
5533
+ ]
5534
+ }
5535
+ )
5338
5536
  }
5339
5537
  );
5340
5538
  };
package/dist/ui/index.mjs CHANGED
@@ -3706,10 +3706,103 @@ var Banner = ({
3706
3706
 
3707
3707
  // src/ui/components/ui/FloatingButton.tsx
3708
3708
  import {
3709
+ useCallback as useCallback3,
3709
3710
  useEffect as useEffect6,
3711
+ useLayoutEffect,
3710
3712
  useRef as useRef7,
3711
3713
  useState as useState7
3712
3714
  } from "react";
3715
+
3716
+ // src/ui/lib/floatingArc.ts
3717
+ var MAX_STEP = 65;
3718
+ var COMFORT_SPAN = 90;
3719
+ var FULL_TURN = 360;
3720
+ var MIN_ITEM_SIZE = 28;
3721
+ var SEARCH_STEP = 10;
3722
+ var SEARCH_LIMIT = 180;
3723
+ var CENTER_DEAD_ZONE = 24;
3724
+ var DEFAULT_ANGLE = 90;
3725
+ var toRadians = (degrees) => degrees * Math.PI / 180;
3726
+ var toDegrees = (radians) => radians * 180 / Math.PI;
3727
+ var chord = (radius, step) => 2 * radius * Math.sin(toRadians(step / 2));
3728
+ var minStepAt = (radius, itemSize) => 2 * toDegrees(Math.asin(Math.min(1, itemSize / (2 * radius))));
3729
+ var arcLayout = (count, baseRadius, baseItemSize) => {
3730
+ if (count <= 1) return { span: 0, radius: baseRadius, itemSize: baseItemSize };
3731
+ const comfortStep = Math.min(MAX_STEP, COMFORT_SPAN / (count - 1));
3732
+ if (comfortStep >= minStepAt(baseRadius, baseItemSize))
3733
+ return {
3734
+ span: comfortStep * (count - 1),
3735
+ radius: baseRadius,
3736
+ itemSize: baseItemSize
3737
+ };
3738
+ const step = Math.min(MAX_STEP, FULL_TURN / count);
3739
+ const available = chord(baseRadius, step);
3740
+ const itemSize = Math.min(baseItemSize, Math.max(MIN_ITEM_SIZE, available));
3741
+ const radius = available >= itemSize ? baseRadius : itemSize / (2 * Math.sin(toRadians(step / 2)));
3742
+ return { span: step * (count - 1), radius, itemSize };
3743
+ };
3744
+ var arcAngle = (index, count, { base, span }) => {
3745
+ if (count <= 1) return base;
3746
+ return base - span / 2 + index * span / (count - 1);
3747
+ };
3748
+ var arcOffset = (index, count, geometry) => {
3749
+ const angle = toRadians(arcAngle(index, count, geometry));
3750
+ return {
3751
+ x: Math.round(Math.cos(angle) * geometry.radius),
3752
+ // L'axe des ordonnées descend à l'écran, l'angle monte en trigonométrie.
3753
+ y: Math.round(-Math.sin(angle) * geometry.radius)
3754
+ };
3755
+ };
3756
+ var angleTowardsFreeSpace = (center, bounds) => {
3757
+ const middleX = (bounds.left + bounds.right) / 2;
3758
+ const middleY = (bounds.top + bounds.bottom) / 2;
3759
+ const dx = middleX - center.x;
3760
+ const dy = middleY - center.y;
3761
+ if (Math.hypot(dx, dy) < CENTER_DEAD_ZONE) return DEFAULT_ANGLE;
3762
+ return toDegrees(Math.atan2(-dy, dx));
3763
+ };
3764
+ var itemsBox = (geometry, { center, count }) => {
3765
+ const half = geometry.itemSize / 2;
3766
+ const xs = [];
3767
+ const ys = [];
3768
+ for (let index = 0; index < count; index += 1) {
3769
+ const { x, y } = arcOffset(index, count, geometry);
3770
+ xs.push(center.x + x);
3771
+ ys.push(center.y + y);
3772
+ }
3773
+ return {
3774
+ left: Math.min(...xs) - half,
3775
+ right: Math.max(...xs) + half,
3776
+ top: Math.min(...ys) - half,
3777
+ bottom: Math.max(...ys) + half
3778
+ };
3779
+ };
3780
+ var fitsInBounds = (geometry, request) => {
3781
+ const box = itemsBox(geometry, request);
3782
+ return box.left >= request.bounds.left && box.right <= request.bounds.right && box.top >= request.bounds.top && box.bottom <= request.bounds.bottom;
3783
+ };
3784
+ var shiftIntoBounds = (geometry, request) => {
3785
+ const box = itemsBox(geometry, request);
3786
+ const { bounds } = request;
3787
+ const pushX = box.left < bounds.left ? bounds.left - box.left : box.right > bounds.right ? bounds.right - box.right : 0;
3788
+ const pushY = box.top < bounds.top ? bounds.top - box.top : box.bottom > bounds.bottom ? bounds.bottom - box.bottom : 0;
3789
+ return { x: Math.round(pushX), y: Math.round(pushY) };
3790
+ };
3791
+ var resolveArcPlacement = (request) => {
3792
+ const layout = arcLayout(request.count, request.radius, request.itemSize);
3793
+ const base = angleTowardsFreeSpace(request.center, request.bounds);
3794
+ for (let offset = 0; offset <= SEARCH_LIMIT; offset += SEARCH_STEP) {
3795
+ for (const direction of offset === 0 ? [1] : [1, -1]) {
3796
+ const geometry2 = __spreadValues({ base: base + offset * direction }, layout);
3797
+ if (fitsInBounds(geometry2, request))
3798
+ return { geometry: geometry2, shift: { x: 0, y: 0 } };
3799
+ }
3800
+ }
3801
+ const geometry = __spreadValues({ base }, layout);
3802
+ return { geometry, shift: shiftIntoBounds(geometry, request) };
3803
+ };
3804
+
3805
+ // src/ui/components/ui/FloatingButton.tsx
3713
3806
  import { jsx as jsx53, jsxs as jsxs27 } from "react/jsx-runtime";
3714
3807
  var readStoredOffset = (key) => {
3715
3808
  if (!key || typeof window === "undefined") return { x: 0, y: 0 };
@@ -3726,17 +3819,8 @@ var readStoredOffset = (key) => {
3726
3819
  var FAB_SIZE = 56;
3727
3820
  var SUB_SIZE = 48;
3728
3821
  var ARC_RADIUS = 64;
3729
- var ARC_START_ANGLE = 90;
3730
- var ARC_MAX_STEP = 65;
3731
- var ARC_MAX_SPAN = 90;
3822
+ var EDGE_MARGIN = 16;
3732
3823
  var DRAG_THRESHOLD = 4;
3733
- var arcTransform = (index, total) => {
3734
- const step = total > 1 ? Math.min(ARC_MAX_STEP, ARC_MAX_SPAN / (total - 1)) : 0;
3735
- const angle = (ARC_START_ANGLE + index * step) * Math.PI / 180;
3736
- const x = Math.round(Math.cos(angle) * ARC_RADIUS);
3737
- const y = Math.round(-Math.sin(angle) * ARC_RADIUS);
3738
- return `translate(${x}px, ${y}px)`;
3739
- };
3740
3824
  var MAIN_BG = {
3741
3825
  "blue-700": "bg-blue-700",
3742
3826
  "blue-900": "bg-blue-900",
@@ -3770,13 +3854,46 @@ var FloatingButton = ({
3770
3854
  label = "Menu",
3771
3855
  color = "blue-700",
3772
3856
  draggable = false,
3773
- persistKey
3857
+ persistKey,
3858
+ safeArea
3774
3859
  }) => {
3860
+ const containerRef = useRef7(null);
3861
+ const [placement, setPlacement] = useState7(() => ({
3862
+ geometry: __spreadValues({ base: 90 }, arcLayout(actions.length, ARC_RADIUS, SUB_SIZE)),
3863
+ shift: { x: 0, y: 0 }
3864
+ }));
3775
3865
  const [isDragging, setIsDragging] = useState7(false);
3776
3866
  const [offset, setOffset] = useState7(() => readStoredOffset(persistKey));
3777
3867
  const offsetRef = useRef7(offset);
3778
3868
  const lastPointRef = useRef7({ x: 0, y: 0 });
3779
3869
  const dragDistanceRef = useRef7(0);
3870
+ const clampOffset = useCallback3(
3871
+ (next) => {
3872
+ var _a, _b, _c, _d;
3873
+ const el = containerRef.current;
3874
+ if (!el || typeof window === "undefined") return next;
3875
+ const rect = el.getBoundingClientRect();
3876
+ if (rect.width === 0 || rect.height === 0) return next;
3877
+ const baseLeft = rect.left - offsetRef.current.x;
3878
+ const baseTop = rect.top - offsetRef.current.y;
3879
+ const minX = ((_a = safeArea == null ? void 0 : safeArea.left) != null ? _a : 0) + EDGE_MARGIN - baseLeft;
3880
+ const maxX = window.innerWidth - ((_b = safeArea == null ? void 0 : safeArea.right) != null ? _b : 0) - EDGE_MARGIN - rect.width - baseLeft;
3881
+ const minY = ((_c = safeArea == null ? void 0 : safeArea.top) != null ? _c : 0) + EDGE_MARGIN - baseTop;
3882
+ const maxY = window.innerHeight - ((_d = safeArea == null ? void 0 : safeArea.bottom) != null ? _d : 0) - EDGE_MARGIN - rect.height - baseTop;
3883
+ return {
3884
+ x: Math.min(Math.max(next.x, minX), Math.max(minX, maxX)),
3885
+ y: Math.min(Math.max(next.y, minY), Math.max(minY, maxY))
3886
+ };
3887
+ },
3888
+ [safeArea == null ? void 0 : safeArea.left, safeArea == null ? void 0 : safeArea.top, safeArea == null ? void 0 : safeArea.right, safeArea == null ? void 0 : safeArea.bottom]
3889
+ );
3890
+ useLayoutEffect(() => {
3891
+ const corrected = clampOffset(offsetRef.current);
3892
+ if (corrected.x === offsetRef.current.x && corrected.y === offsetRef.current.y)
3893
+ return;
3894
+ offsetRef.current = corrected;
3895
+ setOffset(corrected);
3896
+ }, [clampOffset]);
3780
3897
  useEffect6(() => {
3781
3898
  if (!draggable || !isDragging) return;
3782
3899
  const onPointerMove = (e) => {
@@ -3784,7 +3901,10 @@ var FloatingButton = ({
3784
3901
  const dy = e.clientY - lastPointRef.current.y;
3785
3902
  lastPointRef.current = { x: e.clientX, y: e.clientY };
3786
3903
  dragDistanceRef.current += Math.hypot(dx, dy);
3787
- const next = { x: offsetRef.current.x + dx, y: offsetRef.current.y + dy };
3904
+ const next = clampOffset({
3905
+ x: offsetRef.current.x + dx,
3906
+ y: offsetRef.current.y + dy
3907
+ });
3788
3908
  offsetRef.current = next;
3789
3909
  setOffset(next);
3790
3910
  };
@@ -3809,7 +3929,53 @@ var FloatingButton = ({
3809
3929
  window.removeEventListener("pointerup", endDrag);
3810
3930
  window.removeEventListener("pointercancel", endDrag);
3811
3931
  };
3812
- }, [draggable, isDragging, persistKey]);
3932
+ }, [draggable, isDragging, persistKey, clampOffset]);
3933
+ const resolvePlacement = useCallback3(() => {
3934
+ var _a, _b, _c, _d;
3935
+ const el = containerRef.current;
3936
+ if (!el || typeof window === "undefined") return;
3937
+ const rect = el.getBoundingClientRect();
3938
+ setPlacement(
3939
+ resolveArcPlacement({
3940
+ center: {
3941
+ x: rect.left + rect.width / 2,
3942
+ y: rect.top + rect.height / 2
3943
+ },
3944
+ bounds: {
3945
+ left: (_a = safeArea == null ? void 0 : safeArea.left) != null ? _a : 0,
3946
+ top: (_b = safeArea == null ? void 0 : safeArea.top) != null ? _b : 0,
3947
+ right: window.innerWidth - ((_c = safeArea == null ? void 0 : safeArea.right) != null ? _c : 0),
3948
+ bottom: window.innerHeight - ((_d = safeArea == null ? void 0 : safeArea.bottom) != null ? _d : 0)
3949
+ },
3950
+ count: actions.length,
3951
+ radius: ARC_RADIUS,
3952
+ itemSize: SUB_SIZE
3953
+ })
3954
+ );
3955
+ }, [
3956
+ actions.length,
3957
+ safeArea == null ? void 0 : safeArea.left,
3958
+ safeArea == null ? void 0 : safeArea.top,
3959
+ safeArea == null ? void 0 : safeArea.right,
3960
+ safeArea == null ? void 0 : safeArea.bottom
3961
+ ]);
3962
+ useLayoutEffect(() => {
3963
+ if (isOpen) resolvePlacement();
3964
+ }, [isOpen, offset, resolvePlacement]);
3965
+ useLayoutEffect(() => {
3966
+ resolvePlacement();
3967
+ }, [resolvePlacement]);
3968
+ useEffect6(() => {
3969
+ if (typeof window === "undefined") return;
3970
+ const onResize = () => {
3971
+ resolvePlacement();
3972
+ const corrected = clampOffset(offsetRef.current);
3973
+ offsetRef.current = corrected;
3974
+ setOffset(corrected);
3975
+ };
3976
+ window.addEventListener("resize", onResize);
3977
+ return () => window.removeEventListener("resize", onResize);
3978
+ }, [resolvePlacement, clampOffset]);
3813
3979
  const startDrag = (e) => {
3814
3980
  if (!draggable) return;
3815
3981
  dragDistanceRef.current = 0;
@@ -3821,19 +3987,27 @@ var FloatingButton = ({
3821
3987
  if (draggable && dragDistanceRef.current > DRAG_THRESHOLD) return;
3822
3988
  onToggle();
3823
3989
  };
3990
+ const { itemSize } = placement.geometry;
3991
+ const translateX = offset.x + (isOpen ? placement.shift.x : 0);
3992
+ const translateY = offset.y + (isOpen ? placement.shift.y : 0);
3824
3993
  return /* @__PURE__ */ jsxs27(
3825
3994
  "div",
3826
3995
  {
3996
+ ref: containerRef,
3827
3997
  className: "fixed bottom-8 right-8 z-[1000]",
3828
3998
  style: {
3829
3999
  width: FAB_SIZE,
3830
4000
  height: FAB_SIZE,
3831
- transform: offset.x || offset.y ? `translate(${offset.x}px, ${offset.y}px)` : void 0,
4001
+ // Le décalage d'ouverture s'ajoute au déplacement choisi par l'opérateur :
4002
+ // il écarte le bouton du bord juste ce qu'il faut pour montrer ses actions,
4003
+ // et disparaît à la fermeture. Au repos, pas de transform du tout.
4004
+ transform: translateX || translateY ? `translate(${translateX}px, ${translateY}px)` : void 0,
3832
4005
  transition: isDragging ? "none" : "transform 80ms ease-out"
3833
4006
  },
3834
4007
  children: [
3835
4008
  actions.map((action, index) => {
3836
4009
  var _a;
4010
+ const itemOffset = arcOffset(index, actions.length, placement.geometry);
3837
4011
  return /* @__PURE__ */ jsxs27(
3838
4012
  "button",
3839
4013
  {
@@ -3845,15 +4019,15 @@ var FloatingButton = ({
3845
4019
  isOpen ? "pointer-events-auto opacity-100" : "pointer-events-none opacity-0"
3846
4020
  ),
3847
4021
  style: {
3848
- width: SUB_SIZE,
3849
- height: SUB_SIZE,
3850
- left: (FAB_SIZE - SUB_SIZE) / 2,
3851
- top: (FAB_SIZE - SUB_SIZE) / 2,
3852
- transform: isOpen ? arcTransform(index, actions.length) : "scale(0.4)"
4022
+ width: itemSize,
4023
+ height: itemSize,
4024
+ left: (FAB_SIZE - itemSize) / 2,
4025
+ top: (FAB_SIZE - itemSize) / 2,
4026
+ transform: isOpen ? `translate(${itemOffset.x}px, ${itemOffset.y}px)` : "scale(0.4)"
3853
4027
  },
3854
4028
  children: [
3855
4029
  /* @__PURE__ */ jsx53("span", { className: SUB_ICON[color], children: action.icon }),
3856
- ((_a = action.badge) != null ? _a : 0) > 0 && /* @__PURE__ */ jsx53("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-900 px-1 text-[11px] font-bold text-white", children: action.badge })
4030
+ ((_a = action.badge) != null ? _a : 0) > 0 && /* @__PURE__ */ jsx53("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-500 px-1 text-[11px] font-bold text-white", children: action.badge })
3857
4031
  ]
3858
4032
  },
3859
4033
  action.id
@@ -3877,7 +4051,7 @@ var FloatingButton = ({
3877
4051
  },
3878
4052
  children: [
3879
4053
  isOpen ? /* @__PURE__ */ jsx53(FaIcon, { name: "xmark", size: 20 }) : icon,
3880
- !isOpen && mainBadge > 0 && /* @__PURE__ */ jsx53("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-900 px-1 text-[11px] font-bold text-white", children: mainBadge })
4054
+ !isOpen && mainBadge > 0 && /* @__PURE__ */ jsx53("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-500 px-1 text-[11px] font-bold text-white", children: mainBadge })
3881
4055
  ]
3882
4056
  }
3883
4057
  )
@@ -4413,7 +4587,7 @@ var ColorPicker = forwardRef18(
4413
4587
  ColorPicker.displayName = "ColorPicker";
4414
4588
 
4415
4589
  // src/ui/components/ui/FileUploadZone.tsx
4416
- import { useCallback as useCallback3, useRef as useRef8, useState as useState9 } from "react";
4590
+ import { useCallback as useCallback4, useRef as useRef8, useState as useState9 } from "react";
4417
4591
  import { Fragment as Fragment3, jsx as jsx61, jsxs as jsxs34 } from "react/jsx-runtime";
4418
4592
  var ACCEPT_MAP = {
4419
4593
  png: "image/png",
@@ -4458,11 +4632,11 @@ var FileUploadZone = ({
4458
4632
  const mimeTypes = getMimeTypes(resolvedAccept);
4459
4633
  const acceptString = mimeTypes.join(",");
4460
4634
  const previewUrl = multiple ? null : controlledPreviewUrl || (showPreview ? internalPreviewUrl : null);
4461
- const emitError = useCallback3(
4635
+ const emitError = useCallback4(
4462
4636
  (message) => onError ? onError(message) : setInlineError(message),
4463
4637
  [onError]
4464
4638
  );
4465
- const validateFile = useCallback3(
4639
+ const validateFile = useCallback4(
4466
4640
  (file) => {
4467
4641
  if (!mimeTypes.includes(file.type))
4468
4642
  return { ok: false, error: "Format de fichier non accept\xE9." };
@@ -4476,7 +4650,7 @@ var FileUploadZone = ({
4476
4650
  },
4477
4651
  [mimeTypes, maxSizeMB]
4478
4652
  );
4479
- const processFile = useCallback3(
4653
+ const processFile = useCallback4(
4480
4654
  (file) => {
4481
4655
  setInlineError(null);
4482
4656
  const result = validateFile(file);
@@ -4491,7 +4665,7 @@ var FileUploadZone = ({
4491
4665
  },
4492
4666
  [validateFile, onSave, showPreview, emitError]
4493
4667
  );
4494
- const processFiles = useCallback3(
4668
+ const processFiles = useCallback4(
4495
4669
  (files) => {
4496
4670
  setInlineError(null);
4497
4671
  for (const file of files) {
@@ -5118,7 +5292,7 @@ var Message = forwardRef20(
5118
5292
  Message.displayName = "Message";
5119
5293
 
5120
5294
  // src/ui/components/ui/MessageScroller.tsx
5121
- import { useLayoutEffect, useRef as useRef10 } from "react";
5295
+ import { useLayoutEffect as useLayoutEffect2, useRef as useRef10 } from "react";
5122
5296
  import { jsx as jsx68, jsxs as jsxs40 } from "react/jsx-runtime";
5123
5297
  var SEPARATOR_LINE = {
5124
5298
  neutral: "",
@@ -5149,6 +5323,15 @@ var MessageScroller = ({
5149
5323
  children,
5150
5324
  height,
5151
5325
  gap = 3,
5326
+ padding,
5327
+ paddingX,
5328
+ paddingY,
5329
+ paddingTop,
5330
+ // La scrollbar Radix se superpose au contenu : sans ce retrait elle passerait
5331
+ // sur les avatars. Reste surchargeable, comme les autres côtés.
5332
+ paddingRight = 3,
5333
+ paddingBottom,
5334
+ paddingLeft,
5152
5335
  header,
5153
5336
  footer,
5154
5337
  emptyState,
@@ -5157,15 +5340,17 @@ var MessageScroller = ({
5157
5340
  isLoading = false,
5158
5341
  autoScroll = false,
5159
5342
  scrollKey,
5343
+ viewportRef,
5160
5344
  className
5161
5345
  }) => {
5162
- const viewportRef = useRef10(null);
5163
- useLayoutEffect(() => {
5346
+ const fallbackRef = useRef10(null);
5347
+ const scrollerRef = viewportRef != null ? viewportRef : fallbackRef;
5348
+ useLayoutEffect2(() => {
5164
5349
  if (!autoScroll) return;
5165
- const viewport = viewportRef.current;
5350
+ const viewport = scrollerRef.current;
5166
5351
  if (!viewport) return;
5167
5352
  viewport.scrollTop = viewport.scrollHeight;
5168
- }, [autoScroll, scrollKey, isLoading]);
5353
+ }, [autoScroll, scrollKey, isLoading, scrollerRef]);
5169
5354
  const body = () => {
5170
5355
  if (isLoading && loadingState) return loadingState;
5171
5356
  if (isEmpty && emptyState) return emptyState;
@@ -5174,14 +5359,29 @@ var MessageScroller = ({
5174
5359
  return /* @__PURE__ */ jsx68(
5175
5360
  ScrollArea,
5176
5361
  {
5177
- viewportRef,
5362
+ viewportRef: scrollerRef,
5178
5363
  className: cn("w-full", className),
5179
5364
  style: typeof height === "number" ? { height: `${height}px` } : { height },
5180
- children: /* @__PURE__ */ jsxs40(Layout, { column: true, gap, fullWidth: true, paddingRight: 3, children: [
5181
- header,
5182
- body(),
5183
- footer
5184
- ] })
5365
+ children: /* @__PURE__ */ jsxs40(
5366
+ Layout,
5367
+ {
5368
+ column: true,
5369
+ gap,
5370
+ fullWidth: true,
5371
+ padding,
5372
+ paddingX,
5373
+ paddingY,
5374
+ paddingTop,
5375
+ paddingRight,
5376
+ paddingBottom,
5377
+ paddingLeft,
5378
+ children: [
5379
+ header,
5380
+ body(),
5381
+ footer
5382
+ ]
5383
+ }
5384
+ )
5185
5385
  }
5186
5386
  );
5187
5387
  };
package/dist/ui/style.css CHANGED
@@ -1 +1 @@
1
- *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(130,180,204,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(130,180,204,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.\!static{position:static!important}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{top:0;bottom:0}.inset-y-4{top:1rem;bottom:1rem}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-8{bottom:2rem}.bottom-\[-1px\]{bottom:-1px}.bottom-\[50px\]{bottom:50px}.left-0{left:0}.left-1\/2{left:50%}.left-2\.5{left:.625rem}.left-4{left:1rem}.right-0{right:0}.right-2\.5{right:.625rem}.right-4{right:1rem}.right-8{right:2rem}.top-0{top:0}.top-1\/2{top:50%}.top-2\.5{top:.625rem}.top-4{top:1rem}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[500\]{z-index:500}.z-\[9999\]{z-index:9999}.m-\[5px\]{margin:5px}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[30px\]{height:30px}.h-\[3px\]{height:3px}.h-\[500px\]{height:500px}.h-\[52px\]{height:52px}.h-\[9px\]{height:9px}.h-full{height:100%}.h-px{height:1px}.max-h-\[260px\]{max-height:260px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-\[16px\]{min-height:16px}.min-h-\[200px\]{min-height:200px}.min-h-\[214px\]{min-height:214px}.min-h-\[46px\]{min-height:46px}.min-h-\[48px\]{min-height:48px}.min-h-\[72px\]{min-height:72px}.min-h-\[80px\]{min-height:80px}.min-h-screen{min-height:100vh}.w-0\.5{width:.125rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-28{width:7rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[18px\]{width:18px}.w-\[22px\]{width:22px}.w-\[360px\]{width:360px}.w-\[480px\]{width:480px}.w-\[900px\]{width:900px}.w-\[9px\]{width:9px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\[140px\]{min-width:140px}.min-w-\[18px\]{min-width:18px}.min-w-\[20px\]{min-width:20px}.min-w-\[80px\]{min-width:80px}.min-w-\[8px\]{min-width:8px}.max-w-2xl{max-width:42rem}.max-w-\[200px\]{max-width:200px}.max-w-\[423px\]{max-width:423px}.max-w-full{max-width:100%}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.table-fixed{table-layout:fixed}.caption-bottom{caption-side:bottom}.origin-left{transform-origin:left}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.rotate-180{--tw-rotate:180deg}.rotate-180,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-\[badge-pulse_2s_ease-in-out_infinite\]{animation:badge-pulse 2s ease-in-out infinite}.animate-\[toast-shrink_linear_forwards\]{animation:toast-shrink linear forwards}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[5px\]{gap:5px}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-.5rem*var(--tw-space-x-reverse));margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[20px\]{border-radius:20px}.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-\[5px\]{border-radius:5px}.rounded-\[6px\]{border-radius:6px}.rounded-\[8px\]{border-radius:8px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-xl{border-radius:.75rem}.rounded-r-xl{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-bl-none{border-bottom-left-radius:0}.rounded-br-none{border-bottom-right-radius:0}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-4{border-left-width:4px}.border-l-\[1\.5px\]{border-left-width:1.5px}.border-r{border-right-width:1px}.border-r-\[1\.5px\]{border-right-width:1.5px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-blue-100{--tw-border-opacity:1;border-color:rgb(204 234 248/var(--tw-border-opacity,1))}.border-blue-200{--tw-border-opacity:1;border-color:rgb(185 220 237/var(--tw-border-opacity,1))}.border-blue-50{--tw-border-opacity:1;border-color:rgb(219 233 254/var(--tw-border-opacity,1))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.border-blue-800{--tw-border-opacity:1;border-color:rgb(18 99 139/var(--tw-border-opacity,1))}.border-blue-900{--tw-border-opacity:1;border-color:rgb(14 79 111/var(--tw-border-opacity,1))}.border-blue-950{--tw-border-opacity:1;border-color:rgb(28 78 216/var(--tw-border-opacity,1))}.border-green-100{--tw-border-opacity:1;border-color:rgb(18 183 106/var(--tw-border-opacity,1))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.border-green-700{--tw-border-opacity:1;border-color:rgb(23 128 61/var(--tw-border-opacity,1))}.border-grey-200{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity,1))}.border-grey-300{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.border-grey-400{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity,1))}.border-grey-500{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity,1))}.border-grey-600{--tw-border-opacity:1;border-color:rgb(100 107 115/var(--tw-border-opacity,1))}.border-purple-700{--tw-border-opacity:1;border-color:rgb(114 48 219/var(--tw-border-opacity,1))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(244 70 73/var(--tw-border-opacity,1))}.border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity:1;border-color:rgb(255 215 0/var(--tw-border-opacity,1))}.border-yellow-500{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity,1))}.border-l-blue-700{--tw-border-opacity:1;border-left-color:rgb(55 126 161/var(--tw-border-opacity,1))}.border-l-blue-900{--tw-border-opacity:1;border-left-color:rgb(14 79 111/var(--tw-border-opacity,1))}.border-l-blue-950{--tw-border-opacity:1;border-left-color:rgb(28 78 216/var(--tw-border-opacity,1))}.border-l-green-700{--tw-border-opacity:1;border-left-color:rgb(23 128 61/var(--tw-border-opacity,1))}.border-l-grey-600{--tw-border-opacity:1;border-left-color:rgb(100 107 115/var(--tw-border-opacity,1))}.border-l-orange-500{--tw-border-opacity:1;border-left-color:rgb(255 100 28/var(--tw-border-opacity,1))}.border-l-purple-700{--tw-border-opacity:1;border-left-color:rgb(114 48 219/var(--tw-border-opacity,1))}.border-l-red-500{--tw-border-opacity:1;border-left-color:rgb(244 70 73/var(--tw-border-opacity,1))}.border-l-red-900{--tw-border-opacity:1;border-left-color:rgb(127 29 29/var(--tw-border-opacity,1))}.border-l-transparent{border-left-color:transparent}.border-l-yellow-200{--tw-border-opacity:1;border-left-color:rgb(255 215 0/var(--tw-border-opacity,1))}.border-l-yellow-500{--tw-border-opacity:1;border-left-color:rgb(161 98 7/var(--tw-border-opacity,1))}.border-t-transparent{border-top-color:transparent}.bg-\[\#1e1e1e\]{--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity,1))}.bg-black\/35{background-color:rgba(0,0,0,.35)}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(219 233 254/var(--tw-bg-opacity,1))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(55 126 161/var(--tw-bg-opacity,1))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgb(18 99 139/var(--tw-bg-opacity,1))}.bg-blue-900{--tw-bg-opacity:1;background-color:rgb(14 79 111/var(--tw-bg-opacity,1))}.bg-blue-950{--tw-bg-opacity:1;background-color:rgb(28 78 216/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.bg-green-700{--tw-bg-opacity:1;background-color:rgb(23 128 61/var(--tw-bg-opacity,1))}.bg-grey-100{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-grey-200{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-grey-300{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.bg-grey-400{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity,1))}.bg-grey-500{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity,1))}.bg-grey-600{--tw-bg-opacity:1;background-color:rgb(100 107 115/var(--tw-bg-opacity,1))}.bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(52 58 64/var(--tw-bg-opacity,1))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 238 230/var(--tw-bg-opacity,1))}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(255 100 28/var(--tw-bg-opacity,1))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity,1))}.bg-purple-700{--tw-bg-opacity:1;background-color:rgb(114 48 219/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 233 233/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(244 70 73/var(--tw-bg-opacity,1))}.bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/40{background-color:hsla(0,0%,100%,.4)}.bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(255 215 0/var(--tw-bg-opacity,1))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 247 234/var(--tw-bg-opacity,1))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity,1))}.fill-neutral-800{fill:#343a40}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-16{padding:4rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-12{padding-left:3rem;padding-right:3rem}.px-16{padding-left:4rem;padding-right:4rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-0{padding-left:0}.pl-0\.5{padding-left:.125rem}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-10{padding-left:2.5rem}.pl-12{padding-left:3rem}.pl-16{padding-left:4rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pr-0{padding-right:0}.pr-0\.5{padding-right:.125rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-5{padding-right:1.25rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pr-9{padding-right:2.25rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-10{padding-top:2.5rem}.pt-12{padding-top:3rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:Open Sans,system-ui,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[19px\]{font-size:19px}.text-\[21px\]{font-size:21px}.text-\[22px\]{font-size:22px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-none{line-height:1}.tracking-wide{letter-spacing:.025em}.text-blue-700{--tw-text-opacity:1;color:rgb(55 126 161/var(--tw-text-opacity,1))}.text-blue-800{--tw-text-opacity:1;color:rgb(18 99 139/var(--tw-text-opacity,1))}.text-blue-900{--tw-text-opacity:1;color:rgb(14 79 111/var(--tw-text-opacity,1))}.text-blue-950{--tw-text-opacity:1;color:rgb(28 78 216/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(23 128 61/var(--tw-text-opacity,1))}.text-grey-400{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.text-grey-500{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-grey-600{--tw-text-opacity:1;color:rgb(100 107 115/var(--tw-text-opacity,1))}.text-neutral-800{--tw-text-opacity:1;color:rgb(52 58 64/var(--tw-text-opacity,1))}.text-orange-500{--tw-text-opacity:1;color:rgb(255 100 28/var(--tw-text-opacity,1))}.text-purple-700{--tw-text-opacity:1;color:rgb(114 48 219/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(244 70 73/var(--tw-text-opacity,1))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-200{--tw-text-opacity:1;color:rgb(255 215 0/var(--tw-text-opacity,1))}.text-yellow-500{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity,1))}.no-underline{text-decoration-line:none}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-90{opacity:.9}.shadow-\[0_10px_15px_-3px_rgba\(0\2c 0\2c 0\2c 0\.1\)\2c 0_4px_6px_-2px_rgba\(0\2c 0\2c 0\2c 0\.05\)\]{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_1px_2px_rgba\(15\2c 23\2c 42\2c 0\.12\)\]{--tw-shadow:0 1px 2px rgba(15,23,42,.12);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_1px_4px_rgba\(0\2c 0\2c 0\2c 0\.16\)\]{--tw-shadow:0 1px 4px rgba(0,0,0,.16);--tw-shadow-colored:0 1px 4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_2px_15px_0_rgba\(198\2c 198\2c 198\2c 0\.25\)\]{--tw-shadow:0 2px 15px 0 hsla(0,0%,78%,.25);--tw-shadow-colored:0 2px 15px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_2px_6px_rgba\(15\2c 23\2c 42\2c 0\.2\)\]{--tw-shadow:0 2px 6px rgba(15,23,42,.2);--tw-shadow-colored:0 2px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(0\2c 0\2c 0\2c 0\.08\)\]{--tw-shadow:0 2px 8px rgba(0,0,0,.08);--tw-shadow-colored:0 2px 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(0\2c 0\2c 0\2c 0\.12\)\]{--tw-shadow:0 4px 16px rgba(0,0,0,.12);--tw-shadow-colored:0 4px 16px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_4px_3px_rgba\(0\2c 0\2c 0\2c 0\.1\)\2c 0_10px_7\.5px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:0 4px 3px rgba(0,0,0,.1),0 10px 7.5px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 3px var(--tw-shadow-color),0 10px 7.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_4px_6px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:0 4px 6px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_8px_24px_rgba\(0\2c 0\2c 0\2c 0\.16\)\]{--tw-shadow:0 8px 24px rgba(0,0,0,.16);--tw-shadow-colored:0 8px 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_8px_5px_rgba\(0\2c 0\2c 0\2c 0\.1\)\2c 0_20px_12\.5px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:0 8px 5px rgba(0,0,0,.1),0 20px 12.5px rgba(0,0,0,.1);--tw-shadow-colored:0 8px 5px var(--tw-shadow-color),0 20px 12.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_rgba\(0\2c 0\2c 0\2c 0\.06\)\]{--tw-shadow:inset 0 0 0 1px rgba(0,0,0,.06);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity,1))}.filter{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)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[filter\2c transform\]{transition-property:filter,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[filter\]{transition-property:filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[transform\2c opacity\]{transition-property:transform,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-transform{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-\[180ms\]{transition-duration:.18s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}body{font-family:Open Sans,system-ui,sans-serif}@keyframes badge-pulse{0%{transform:scale(1);box-shadow:0 0 0 0 color-mix(in srgb,currentColor 60%,transparent)}70%{transform:scale(1.06);box-shadow:0 0 0 6px transparent}to{transform:scale(1);box-shadow:0 0 0 0 transparent}}@media (prefers-reduced-motion:reduce){.animate-badge-pulse{animation:none!important}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}@keyframes collapsible-down{0%{height:0}to{height:var(--radix-collapsible-content-height)}}@keyframes collapsible-up{0%{height:var(--radix-collapsible-content-height)}to{height:0}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes toast-shrink{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.rdp-root.rdp-root{--rdp-accent-color:#0e4f6f;--rdp-accent-background-color:#cceaf8;--rdp-today-color:#0e4f6f;--rdp-day_button-border-radius:6px;--rdp-day-width:26px;--rdp-day-height:26px;--rdp-day_button-width:26px;--rdp-day_button-height:26px;font-family:Open Sans,system-ui,sans-serif;font-size:12px}.rdp-root.rdp-root .rdp-selected{font-size:inherit}.rdp-root.rdp-root .rdp-range_middle .rdp-day_button{border-radius:0}.react-international-phone-input-container{--react-international-phone-border-color:#e2e8f0;--react-international-phone-background-color:#fff;--react-international-phone-text-color:#343a40;--react-international-phone-height:36px;--react-international-phone-border-radius:5px;--react-international-phone-font-size:13px;--react-international-phone-country-selector-background-color-hover:#f1f5f9;--react-international-phone-disabled-background-color:#f1f5f9;--react-international-phone-disabled-text-color:#94a3b8;--react-international-phone-selected-dropdown-item-background-color:#f8fafc;--react-international-phone-dropdown-shadow:0 4px 6px rgba(0,0,0,.1);width:100%;font-family:Open Sans,system-ui,sans-serif}.react-international-phone-input-container .react-international-phone-input:focus{border-color:#1c4ed8}.dz-tagify .tagify{width:100%;border:1px solid #e2e8f0;border-radius:6px;min-height:36px;font-size:13px;font-family:Open Sans,system-ui,sans-serif;--tag-hover:#377ea1;--tag-bg:#377ea1;--tag-text-color:#fff;--tag-remove-btn-color:#fff;--tag-remove-btn-bg--hover:#f44649;--tag-invalid-color:#f44649;--tag-remove-bg:#f44649}.dz-tagify .tagify--focus{border-color:#1c4ed8}.dz-tagify .tagify,.dz-tagify .tagify__input{cursor:text}.dz-tagify--disabled{opacity:.6;pointer-events:none}.placeholder\:font-sans::-moz-placeholder{font-family:Open Sans,system-ui,sans-serif}.placeholder\:font-sans::placeholder{font-family:Open Sans,system-ui,sans-serif}.placeholder\:text-xs::-moz-placeholder{font-size:.75rem;line-height:1rem}.placeholder\:text-xs::placeholder{font-size:.75rem;line-height:1rem}.placeholder\:text-grey-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.placeholder\:text-grey-500::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.placeholder\:text-grey-600::-moz-placeholder{--tw-text-opacity:1;color:rgb(100 107 115/var(--tw-text-opacity,1))}.placeholder\:text-grey-600::placeholder{--tw-text-opacity:1;color:rgb(100 107 115/var(--tw-text-opacity,1))}.after\:block:after{content:var(--tw-content);display:block}.after\:\!hidden:after{content:var(--tw-content);display:none!important}.after\:h-\[13px\]:after{content:var(--tw-content);height:13px}.after\:w-\[13px\]:after{content:var(--tw-content);width:13px}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-blue-700:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(55 126 161/var(--tw-bg-opacity,1))}.after\:bg-blue-900:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(14 79 111/var(--tw-bg-opacity,1))}.after\:bg-blue-950:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(28 78 216/var(--tw-bg-opacity,1))}.after\:bg-green-700:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(23 128 61/var(--tw-bg-opacity,1))}.after\:bg-grey-600:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(100 107 115/var(--tw-bg-opacity,1))}.after\:bg-purple-700:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(114 48 219/var(--tw-bg-opacity,1))}.after\:bg-red-500:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(244 70 73/var(--tw-bg-opacity,1))}.after\:bg-red-900:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.after\:bg-yellow-200:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(255 215 0/var(--tw-bg-opacity,1))}.after\:bg-yellow-500:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity,1))}.focus-within\:border-blue-700:focus-within{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-100:hover{--tw-border-opacity:1;border-color:rgb(204 234 248/var(--tw-border-opacity,1))}.hover\:border-blue-700:hover{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.hover\:border-grey-300:hover{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.hover\:bg-black\/\[0\.025\]:hover{background-color:rgba(0,0,0,.025)}.hover\:bg-grey-100:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.hover\:bg-grey-200:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.hover\:text-grey-600:hover{--tw-text-opacity:1;color:rgb(100 107 115/var(--tw-text-opacity,1))}.hover\:text-neutral-800:hover{--tw-text-opacity:1;color:rgb(52 58 64/var(--tw-text-opacity,1))}.hover\:opacity-80:hover{opacity:.8}.hover\:brightness-90:hover{--tw-brightness:brightness(.9)}.hover\:brightness-90:hover,.hover\:brightness-95:hover{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)}.hover\:brightness-95:hover{--tw-brightness:brightness(.95)}.focus-within\:hover\:border-blue-700:hover:focus-within{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.focus\:border-blue-700:focus{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-blue-200:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(185 220 237/var(--tw-ring-opacity,1))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.active\:scale-\[0\.98\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:brightness-75:active{--tw-brightness:brightness(.75);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)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-grey-100:disabled{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.disabled\:bg-grey-200:disabled{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:hover\:brightness-100:hover:disabled{--tw-brightness:brightness(1);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)}.disabled\:active\:scale-100:active:disabled{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.aria-invalid\:border-red-900[aria-invalid=true],.aria-invalid\:focus\:border-red-900:focus[aria-invalid=true]{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:1rem}.data-\[state\=checked\]\:translate-x-4[data-state=checked],.data-\[state\=checked\]\:translate-x-5[data-state=checked]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:1.25rem}.data-\[state\=open\]\:rotate-180[data-state=open]{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=closed\]\:animate-\[collapsible-up_200ms_ease-out\][data-state=closed]{animation:collapsible-up .2s ease-out}.data-\[state\=delayed-open\]\:animate-\[fade-in_150ms_ease-out\][data-state=delayed-open]{animation:fade-in .15s ease-out}.data-\[state\=open\]\:animate-\[collapsible-down_200ms_ease-out\][data-state=open]{animation:collapsible-down .2s ease-out}.data-\[state\=open\]\:animate-\[fade-in_150ms_ease-out\][data-state=open]{animation:fade-in .15s ease-out}.data-\[state\=checked\]\:border-blue-700[data-state=checked]{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-blue-900[data-state=checked]{--tw-border-opacity:1;border-color:rgb(14 79 111/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-blue-950[data-state=checked]{--tw-border-opacity:1;border-color:rgb(28 78 216/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-green-700[data-state=checked]{--tw-border-opacity:1;border-color:rgb(23 128 61/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-grey-600[data-state=checked]{--tw-border-opacity:1;border-color:rgb(100 107 115/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-purple-700[data-state=checked]{--tw-border-opacity:1;border-color:rgb(114 48 219/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-red-500[data-state=checked]{--tw-border-opacity:1;border-color:rgb(244 70 73/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-red-900[data-state=checked]{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-yellow-200[data-state=checked]{--tw-border-opacity:1;border-color:rgb(255 215 0/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-yellow-500[data-state=checked]{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity,1))}.data-\[state\=open\]\:border-blue-700[data-state=open]{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.data-\[highlighted\]\:bg-grey-100[data-highlighted]{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-blue-700[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(55 126 161/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-blue-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(14 79 111/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-blue-950[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(28 78 216/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-green-700[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(23 128 61/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-grey-600[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(100 107 115/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-purple-700[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(114 48 219/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-red-500[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(244 70 73/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-red-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-yellow-200[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(255 215 0/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-yellow-500[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity,1))}.data-\[placeholder\]\:text-grey-500[data-placeholder]{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}}@media (min-width:768px){.md\:p-12{padding:3rem}}.\[\&\>button\:not\(\:last-child\)\]\:rounded-r-none>button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\[\&\>tr\:nth-child\(even\)\]\:bg-grey-100>tr:nth-child(2n){--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.\[\&_img\]\:h-full img{height:100%}.\[\&_img\]\:w-full img{width:100%}.\[\&_img\]\:object-cover img{-o-object-fit:cover;object-fit:cover}.\[\&_td\:not\(\:first-child\)\]\:border-l td:not(:first-child){border-left-width:1px}.\[\&_td\:not\(\:first-child\)\]\:border-grey-200 td:not(:first-child){--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity,1))}.\[\&_th\:not\(\:first-child\)\]\:border-l th:not(:first-child){border-left-width:1px}.\[\&_th\:not\(\:first-child\)\]\:border-grey-200 th:not(:first-child){--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity,1))}
1
+ *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(130,180,204,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(130,180,204,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.\!static{position:static!important}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{top:0;bottom:0}.inset-y-4{top:1rem;bottom:1rem}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-8{bottom:2rem}.bottom-\[-1px\]{bottom:-1px}.bottom-\[50px\]{bottom:50px}.left-0{left:0}.left-1\/2{left:50%}.left-2\.5{left:.625rem}.left-4{left:1rem}.right-0{right:0}.right-2\.5{right:.625rem}.right-4{right:1rem}.right-8{right:2rem}.top-0{top:0}.top-1\/2{top:50%}.top-2\.5{top:.625rem}.top-4{top:1rem}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[500\]{z-index:500}.z-\[9999\]{z-index:9999}.m-\[5px\]{margin:5px}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[30px\]{height:30px}.h-\[3px\]{height:3px}.h-\[500px\]{height:500px}.h-\[52px\]{height:52px}.h-\[9px\]{height:9px}.h-full{height:100%}.h-px{height:1px}.max-h-\[260px\]{max-height:260px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-\[16px\]{min-height:16px}.min-h-\[200px\]{min-height:200px}.min-h-\[214px\]{min-height:214px}.min-h-\[46px\]{min-height:46px}.min-h-\[48px\]{min-height:48px}.min-h-\[72px\]{min-height:72px}.min-h-\[80px\]{min-height:80px}.min-h-screen{min-height:100vh}.w-0\.5{width:.125rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-28{width:7rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[18px\]{width:18px}.w-\[22px\]{width:22px}.w-\[360px\]{width:360px}.w-\[480px\]{width:480px}.w-\[900px\]{width:900px}.w-\[9px\]{width:9px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\[140px\]{min-width:140px}.min-w-\[18px\]{min-width:18px}.min-w-\[20px\]{min-width:20px}.min-w-\[80px\]{min-width:80px}.min-w-\[8px\]{min-width:8px}.max-w-2xl{max-width:42rem}.max-w-\[200px\]{max-width:200px}.max-w-\[423px\]{max-width:423px}.max-w-full{max-width:100%}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.table-fixed{table-layout:fixed}.caption-bottom{caption-side:bottom}.origin-left{transform-origin:left}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.rotate-180{--tw-rotate:180deg}.rotate-180,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-\[badge-pulse_2s_ease-in-out_infinite\]{animation:badge-pulse 2s ease-in-out infinite}.animate-\[toast-shrink_linear_forwards\]{animation:toast-shrink linear forwards}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[5px\]{gap:5px}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-.5rem*var(--tw-space-x-reverse));margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[20px\]{border-radius:20px}.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-\[5px\]{border-radius:5px}.rounded-\[6px\]{border-radius:6px}.rounded-\[8px\]{border-radius:8px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-xl{border-radius:.75rem}.rounded-r-xl{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-bl-none{border-bottom-left-radius:0}.rounded-br-none{border-bottom-right-radius:0}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-4{border-left-width:4px}.border-l-\[1\.5px\]{border-left-width:1.5px}.border-r{border-right-width:1px}.border-r-\[1\.5px\]{border-right-width:1.5px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-blue-100{--tw-border-opacity:1;border-color:rgb(204 234 248/var(--tw-border-opacity,1))}.border-blue-200{--tw-border-opacity:1;border-color:rgb(185 220 237/var(--tw-border-opacity,1))}.border-blue-50{--tw-border-opacity:1;border-color:rgb(219 233 254/var(--tw-border-opacity,1))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.border-blue-800{--tw-border-opacity:1;border-color:rgb(18 99 139/var(--tw-border-opacity,1))}.border-blue-900{--tw-border-opacity:1;border-color:rgb(14 79 111/var(--tw-border-opacity,1))}.border-blue-950{--tw-border-opacity:1;border-color:rgb(28 78 216/var(--tw-border-opacity,1))}.border-green-100{--tw-border-opacity:1;border-color:rgb(18 183 106/var(--tw-border-opacity,1))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.border-green-700{--tw-border-opacity:1;border-color:rgb(23 128 61/var(--tw-border-opacity,1))}.border-grey-200{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity,1))}.border-grey-300{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.border-grey-400{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity,1))}.border-grey-500{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity,1))}.border-grey-600{--tw-border-opacity:1;border-color:rgb(100 107 115/var(--tw-border-opacity,1))}.border-purple-700{--tw-border-opacity:1;border-color:rgb(114 48 219/var(--tw-border-opacity,1))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(244 70 73/var(--tw-border-opacity,1))}.border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity:1;border-color:rgb(255 215 0/var(--tw-border-opacity,1))}.border-yellow-500{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity,1))}.border-l-blue-700{--tw-border-opacity:1;border-left-color:rgb(55 126 161/var(--tw-border-opacity,1))}.border-l-blue-900{--tw-border-opacity:1;border-left-color:rgb(14 79 111/var(--tw-border-opacity,1))}.border-l-blue-950{--tw-border-opacity:1;border-left-color:rgb(28 78 216/var(--tw-border-opacity,1))}.border-l-green-700{--tw-border-opacity:1;border-left-color:rgb(23 128 61/var(--tw-border-opacity,1))}.border-l-grey-600{--tw-border-opacity:1;border-left-color:rgb(100 107 115/var(--tw-border-opacity,1))}.border-l-orange-500{--tw-border-opacity:1;border-left-color:rgb(255 100 28/var(--tw-border-opacity,1))}.border-l-purple-700{--tw-border-opacity:1;border-left-color:rgb(114 48 219/var(--tw-border-opacity,1))}.border-l-red-500{--tw-border-opacity:1;border-left-color:rgb(244 70 73/var(--tw-border-opacity,1))}.border-l-red-900{--tw-border-opacity:1;border-left-color:rgb(127 29 29/var(--tw-border-opacity,1))}.border-l-transparent{border-left-color:transparent}.border-l-yellow-200{--tw-border-opacity:1;border-left-color:rgb(255 215 0/var(--tw-border-opacity,1))}.border-l-yellow-500{--tw-border-opacity:1;border-left-color:rgb(161 98 7/var(--tw-border-opacity,1))}.border-t-transparent{border-top-color:transparent}.bg-\[\#1e1e1e\]{--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity,1))}.bg-black\/35{background-color:rgba(0,0,0,.35)}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(219 233 254/var(--tw-bg-opacity,1))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(55 126 161/var(--tw-bg-opacity,1))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgb(18 99 139/var(--tw-bg-opacity,1))}.bg-blue-900{--tw-bg-opacity:1;background-color:rgb(14 79 111/var(--tw-bg-opacity,1))}.bg-blue-950{--tw-bg-opacity:1;background-color:rgb(28 78 216/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.bg-green-700{--tw-bg-opacity:1;background-color:rgb(23 128 61/var(--tw-bg-opacity,1))}.bg-grey-100{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-grey-200{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-grey-300{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.bg-grey-400{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity,1))}.bg-grey-500{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity,1))}.bg-grey-600{--tw-bg-opacity:1;background-color:rgb(100 107 115/var(--tw-bg-opacity,1))}.bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(52 58 64/var(--tw-bg-opacity,1))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 238 230/var(--tw-bg-opacity,1))}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(255 100 28/var(--tw-bg-opacity,1))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity,1))}.bg-purple-700{--tw-bg-opacity:1;background-color:rgb(114 48 219/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 233 233/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(244 70 73/var(--tw-bg-opacity,1))}.bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/40{background-color:hsla(0,0%,100%,.4)}.bg-yellow-200{--tw-bg-opacity:1;background-color:rgb(255 215 0/var(--tw-bg-opacity,1))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 247 234/var(--tw-bg-opacity,1))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity,1))}.fill-neutral-800{fill:#343a40}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-16{padding:4rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-12{padding-left:3rem;padding-right:3rem}.px-16{padding-left:4rem;padding-right:4rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-0{padding-left:0}.pl-0\.5{padding-left:.125rem}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-10{padding-left:2.5rem}.pl-12{padding-left:3rem}.pl-16{padding-left:4rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pr-0{padding-right:0}.pr-0\.5{padding-right:.125rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-5{padding-right:1.25rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pr-9{padding-right:2.25rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-10{padding-top:2.5rem}.pt-12{padding-top:3rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:Open Sans,system-ui,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[19px\]{font-size:19px}.text-\[21px\]{font-size:21px}.text-\[22px\]{font-size:22px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-none{line-height:1}.tracking-wide{letter-spacing:.025em}.text-blue-700{--tw-text-opacity:1;color:rgb(55 126 161/var(--tw-text-opacity,1))}.text-blue-800{--tw-text-opacity:1;color:rgb(18 99 139/var(--tw-text-opacity,1))}.text-blue-900{--tw-text-opacity:1;color:rgb(14 79 111/var(--tw-text-opacity,1))}.text-blue-950{--tw-text-opacity:1;color:rgb(28 78 216/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(23 128 61/var(--tw-text-opacity,1))}.text-grey-400{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.text-grey-500{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-grey-600{--tw-text-opacity:1;color:rgb(100 107 115/var(--tw-text-opacity,1))}.text-neutral-800{--tw-text-opacity:1;color:rgb(52 58 64/var(--tw-text-opacity,1))}.text-orange-500{--tw-text-opacity:1;color:rgb(255 100 28/var(--tw-text-opacity,1))}.text-purple-700{--tw-text-opacity:1;color:rgb(114 48 219/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(244 70 73/var(--tw-text-opacity,1))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-200{--tw-text-opacity:1;color:rgb(255 215 0/var(--tw-text-opacity,1))}.text-yellow-500{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity,1))}.no-underline{text-decoration-line:none}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-90{opacity:.9}.shadow-\[0_10px_15px_-3px_rgba\(0\2c 0\2c 0\2c 0\.1\)\2c 0_4px_6px_-2px_rgba\(0\2c 0\2c 0\2c 0\.05\)\]{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_1px_2px_rgba\(15\2c 23\2c 42\2c 0\.12\)\]{--tw-shadow:0 1px 2px rgba(15,23,42,.12);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_1px_4px_rgba\(0\2c 0\2c 0\2c 0\.16\)\]{--tw-shadow:0 1px 4px rgba(0,0,0,.16);--tw-shadow-colored:0 1px 4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_2px_15px_0_rgba\(198\2c 198\2c 198\2c 0\.25\)\]{--tw-shadow:0 2px 15px 0 hsla(0,0%,78%,.25);--tw-shadow-colored:0 2px 15px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_2px_6px_rgba\(15\2c 23\2c 42\2c 0\.2\)\]{--tw-shadow:0 2px 6px rgba(15,23,42,.2);--tw-shadow-colored:0 2px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_2px_8px_rgba\(0\2c 0\2c 0\2c 0\.08\)\]{--tw-shadow:0 2px 8px rgba(0,0,0,.08);--tw-shadow-colored:0 2px 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_4px_16px_rgba\(0\2c 0\2c 0\2c 0\.12\)\]{--tw-shadow:0 4px 16px rgba(0,0,0,.12);--tw-shadow-colored:0 4px 16px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_4px_3px_rgba\(0\2c 0\2c 0\2c 0\.1\)\2c 0_10px_7\.5px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:0 4px 3px rgba(0,0,0,.1),0 10px 7.5px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 3px var(--tw-shadow-color),0 10px 7.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_4px_6px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:0 4px 6px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_8px_24px_rgba\(0\2c 0\2c 0\2c 0\.16\)\]{--tw-shadow:0 8px 24px rgba(0,0,0,.16);--tw-shadow-colored:0 8px 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_8px_5px_rgba\(0\2c 0\2c 0\2c 0\.1\)\2c 0_20px_12\.5px_rgba\(0\2c 0\2c 0\2c 0\.1\)\]{--tw-shadow:0 8px 5px rgba(0,0,0,.1),0 20px 12.5px rgba(0,0,0,.1);--tw-shadow-colored:0 8px 5px var(--tw-shadow-color),0 20px 12.5px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_rgba\(0\2c 0\2c 0\2c 0\.06\)\]{--tw-shadow:inset 0 0 0 1px rgba(0,0,0,.06);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity,1))}.filter{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)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[filter\2c transform\]{transition-property:filter,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[filter\]{transition-property:filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[transform\2c opacity\]{transition-property:transform,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-transform{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-\[180ms\]{transition-duration:.18s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}body{font-family:Open Sans,system-ui,sans-serif}@keyframes badge-pulse{0%{transform:scale(1);box-shadow:0 0 0 0 color-mix(in srgb,currentColor 60%,transparent)}70%{transform:scale(1.06);box-shadow:0 0 0 6px transparent}to{transform:scale(1);box-shadow:0 0 0 0 transparent}}@media (prefers-reduced-motion:reduce){.animate-badge-pulse{animation:none!important}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}@keyframes collapsible-down{0%{height:0}to{height:var(--radix-collapsible-content-height)}}@keyframes collapsible-up{0%{height:var(--radix-collapsible-content-height)}to{height:0}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes toast-shrink{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.rdp-root.rdp-root{--rdp-accent-color:#0e4f6f;--rdp-accent-background-color:#cceaf8;--rdp-today-color:#0e4f6f;--rdp-day_button-border-radius:6px;--rdp-day-width:26px;--rdp-day-height:26px;--rdp-day_button-width:26px;--rdp-day_button-height:26px;font-family:Open Sans,system-ui,sans-serif;font-size:12px}.rdp-root.rdp-root .rdp-selected{font-size:inherit}.rdp-root.rdp-root .rdp-range_middle .rdp-day_button{border-radius:0}.react-international-phone-input-container{--react-international-phone-border-color:#e2e8f0;--react-international-phone-background-color:#fff;--react-international-phone-text-color:#343a40;--react-international-phone-height:36px;--react-international-phone-border-radius:5px;--react-international-phone-font-size:13px;--react-international-phone-country-selector-background-color-hover:#f1f5f9;--react-international-phone-disabled-background-color:#f1f5f9;--react-international-phone-disabled-text-color:#94a3b8;--react-international-phone-selected-dropdown-item-background-color:#f8fafc;--react-international-phone-dropdown-shadow:0 4px 6px rgba(0,0,0,.1);width:100%;font-family:Open Sans,system-ui,sans-serif}.react-international-phone-input-container .react-international-phone-input:focus{border-color:#1c4ed8}.dz-tagify .tagify{width:100%;border:1px solid #e2e8f0;border-radius:6px;min-height:36px;font-size:13px;font-family:Open Sans,system-ui,sans-serif;--tag-hover:#377ea1;--tag-bg:#377ea1;--tag-text-color:#fff;--tag-remove-btn-color:#fff;--tag-remove-btn-bg--hover:#f44649;--tag-invalid-color:#f44649;--tag-remove-bg:#f44649}.dz-tagify .tagify--focus{border-color:#1c4ed8}.dz-tagify .tagify,.dz-tagify .tagify__input{cursor:text}.dz-tagify--disabled{opacity:.6;pointer-events:none}.placeholder\:font-sans::-moz-placeholder{font-family:Open Sans,system-ui,sans-serif}.placeholder\:font-sans::placeholder{font-family:Open Sans,system-ui,sans-serif}.placeholder\:text-xs::-moz-placeholder{font-size:.75rem;line-height:1rem}.placeholder\:text-xs::placeholder{font-size:.75rem;line-height:1rem}.placeholder\:text-grey-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.placeholder\:text-grey-500::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.placeholder\:text-grey-600::-moz-placeholder{--tw-text-opacity:1;color:rgb(100 107 115/var(--tw-text-opacity,1))}.placeholder\:text-grey-600::placeholder{--tw-text-opacity:1;color:rgb(100 107 115/var(--tw-text-opacity,1))}.after\:block:after{content:var(--tw-content);display:block}.after\:\!hidden:after{content:var(--tw-content);display:none!important}.after\:h-\[13px\]:after{content:var(--tw-content);height:13px}.after\:w-\[13px\]:after{content:var(--tw-content);width:13px}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-blue-700:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(55 126 161/var(--tw-bg-opacity,1))}.after\:bg-blue-900:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(14 79 111/var(--tw-bg-opacity,1))}.after\:bg-blue-950:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(28 78 216/var(--tw-bg-opacity,1))}.after\:bg-green-700:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(23 128 61/var(--tw-bg-opacity,1))}.after\:bg-grey-600:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(100 107 115/var(--tw-bg-opacity,1))}.after\:bg-purple-700:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(114 48 219/var(--tw-bg-opacity,1))}.after\:bg-red-500:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(244 70 73/var(--tw-bg-opacity,1))}.after\:bg-red-900:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.after\:bg-yellow-200:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(255 215 0/var(--tw-bg-opacity,1))}.after\:bg-yellow-500:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity,1))}.focus-within\:border-blue-700:focus-within{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-100:hover{--tw-border-opacity:1;border-color:rgb(204 234 248/var(--tw-border-opacity,1))}.hover\:border-blue-700:hover{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.hover\:border-grey-300:hover{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.hover\:bg-black\/\[0\.025\]:hover{background-color:rgba(0,0,0,.025)}.hover\:bg-grey-100:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.hover\:bg-grey-200:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.hover\:text-grey-600:hover{--tw-text-opacity:1;color:rgb(100 107 115/var(--tw-text-opacity,1))}.hover\:text-neutral-800:hover{--tw-text-opacity:1;color:rgb(52 58 64/var(--tw-text-opacity,1))}.hover\:opacity-80:hover{opacity:.8}.hover\:brightness-90:hover{--tw-brightness:brightness(.9)}.hover\:brightness-90:hover,.hover\:brightness-95:hover{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)}.hover\:brightness-95:hover{--tw-brightness:brightness(.95)}.focus-within\:hover\:border-blue-700:hover:focus-within{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.focus\:border-blue-700:focus{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-blue-200:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(185 220 237/var(--tw-ring-opacity,1))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.active\:scale-\[0\.98\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:brightness-75:active{--tw-brightness:brightness(.75);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)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-grey-100:disabled{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.disabled\:bg-grey-200:disabled{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:hover\:brightness-100:hover:disabled{--tw-brightness:brightness(1);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)}.disabled\:active\:scale-100:active:disabled{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.aria-invalid\:border-red-900[aria-invalid=true],.aria-invalid\:focus\:border-red-900:focus[aria-invalid=true]{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:1rem}.data-\[state\=checked\]\:translate-x-4[data-state=checked],.data-\[state\=checked\]\:translate-x-5[data-state=checked]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:1.25rem}.data-\[state\=open\]\:rotate-180[data-state=open]{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=closed\]\:animate-\[collapsible-up_200ms_ease-out\][data-state=closed]{animation:collapsible-up .2s ease-out}.data-\[state\=delayed-open\]\:animate-\[fade-in_150ms_ease-out\][data-state=delayed-open]{animation:fade-in .15s ease-out}.data-\[state\=open\]\:animate-\[collapsible-down_200ms_ease-out\][data-state=open]{animation:collapsible-down .2s ease-out}.data-\[state\=open\]\:animate-\[fade-in_150ms_ease-out\][data-state=open]{animation:fade-in .15s ease-out}.data-\[state\=checked\]\:border-blue-700[data-state=checked]{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-blue-900[data-state=checked]{--tw-border-opacity:1;border-color:rgb(14 79 111/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-blue-950[data-state=checked]{--tw-border-opacity:1;border-color:rgb(28 78 216/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-green-700[data-state=checked]{--tw-border-opacity:1;border-color:rgb(23 128 61/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-grey-600[data-state=checked]{--tw-border-opacity:1;border-color:rgb(100 107 115/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-purple-700[data-state=checked]{--tw-border-opacity:1;border-color:rgb(114 48 219/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-red-500[data-state=checked]{--tw-border-opacity:1;border-color:rgb(244 70 73/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-red-900[data-state=checked]{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-yellow-200[data-state=checked]{--tw-border-opacity:1;border-color:rgb(255 215 0/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:border-yellow-500[data-state=checked]{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity,1))}.data-\[state\=open\]\:border-blue-700[data-state=open]{--tw-border-opacity:1;border-color:rgb(55 126 161/var(--tw-border-opacity,1))}.data-\[highlighted\]\:bg-grey-100[data-highlighted]{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-blue-700[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(55 126 161/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-blue-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(14 79 111/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-blue-950[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(28 78 216/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-green-700[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(23 128 61/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-grey-600[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(100 107 115/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-purple-700[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(114 48 219/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-red-500[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(244 70 73/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-red-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-yellow-200[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(255 215 0/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-yellow-500[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity,1))}.data-\[placeholder\]\:text-grey-500[data-placeholder]{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}}@media (min-width:768px){.md\:p-12{padding:3rem}}.\[\&\>button\:not\(\:last-child\)\]\:rounded-r-none>button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\[\&\>tr\:nth-child\(even\)\]\:bg-grey-100>tr:nth-child(2n){--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.\[\&_img\]\:h-full img{height:100%}.\[\&_img\]\:w-full img{width:100%}.\[\&_img\]\:object-cover img{-o-object-fit:cover;object-fit:cover}.\[\&_td\:not\(\:first-child\)\]\:border-l td:not(:first-child){border-left-width:1px}.\[\&_td\:not\(\:first-child\)\]\:border-grey-200 td:not(:first-child){--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity,1))}.\[\&_th\:not\(\:first-child\)\]\:border-l th:not(:first-child){border-left-width:1px}.\[\&_th\:not\(\:first-child\)\]\:border-grey-200 th:not(:first-child){--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity,1))}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "design-zystem",
3
- "version": "1.0.327",
3
+ "version": "1.0.328",
4
4
  "description": "A React design system of importable components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",