{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "extends": "none",
  "name": "styles/style-lyra",
  "title": "Lyra Style",
  "description": "Alternative design variant",
  "registryDependencies": [
    "base/shob"
  ],
  "files": [
    {
      "path": "registry/styles/style-lyra.css",
      "content": ".style-lyra {\n  /* MARK: Accordion */\n  .cn-accordion-item {\n    @apply not-last:border-b;\n  }\n\n  .cn-accordion-trigger {\n    @apply focus-visible:ring-ring/50 focus-visible:border-ring focus-visible:after:border-ring **:data-[slot=accordion-trigger-icon]:text-muted-foreground rounded-none py-2.5 text-left text-xs font-medium hover:underline focus-visible:ring-1 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4;\n  }\n\n  .cn-accordion-content {\n    @apply data-open:animate-accordion-down data-closed:animate-accordion-up text-xs;\n  }\n\n  .cn-accordion-content-inner {\n    @apply pt-0 pb-2.5;\n  }\n\n  /* MARK: Alert */\n  .cn-alert {\n    @apply grid gap-0.5 rounded-none border px-2.5 py-2 text-left text-xs has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-alert-variant-default {\n    @apply bg-card text-card-foreground;\n  }\n\n  .cn-alert-variant-destructive {\n    @apply text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current;\n  }\n\n  .cn-alert-title {\n    @apply font-medium group-has-[>svg]/alert:col-start-2;\n  }\n\n  .cn-alert-description {\n    @apply text-muted-foreground text-xs/relaxed text-balance md:text-pretty [&_p:not(:last-child)]:mb-2;\n  }\n\n  .cn-alert-action {\n    @apply absolute top-[calc(--spacing(1.25))] right-[calc(--spacing(1.25))];\n  }\n\n  /* MARK: Alert Dialog */\n  .cn-alert-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-alert-dialog-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-popover text-popover-foreground ring-foreground/10 gap-4 rounded-none p-4 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm;\n  }\n\n  .cn-alert-dialog-header {\n    @apply grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr];\n  }\n\n  .cn-alert-dialog-media {\n    @apply bg-muted mb-2 inline-flex size-10 items-center justify-center rounded-none sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6;\n  }\n\n  .cn-alert-dialog-title {\n    @apply text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2;\n  }\n\n  .cn-alert-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-xs/relaxed text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  /* MARK: Avatar */\n  .cn-avatar {\n    @apply size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6;\n  }\n\n  .cn-avatar-fallback {\n    @apply bg-muted text-muted-foreground rounded-full;\n  }\n\n  .cn-avatar-image {\n    @apply rounded-full;\n  }\n\n  .cn-avatar-badge {\n    @apply bg-primary text-primary-foreground ring-background;\n  }\n\n  .cn-avatar-group-count {\n    @apply bg-muted text-muted-foreground size-8 rounded-full text-xs group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3;\n  }\n\n  /* MARK: Badge */\n  .cn-badge {\n    @apply h-5 gap-1 rounded-none border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3!;\n  }\n\n  .cn-badge-variant-default {\n    @apply bg-primary text-primary-foreground [a]:hover:bg-primary/80;\n  }\n\n  .cn-badge-variant-secondary {\n    @apply bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80;\n  }\n\n  .cn-badge-variant-outline {\n    @apply border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground;\n  }\n\n  .cn-badge-variant-destructive {\n    @apply bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20;\n  }\n\n  .cn-badge-variant-ghost {\n    @apply hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50;\n  }\n\n  .cn-badge-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  /* MARK: Breadcrumb */\n  .cn-breadcrumb-list {\n    @apply text-muted-foreground gap-1.5 text-xs;\n  }\n\n  .cn-breadcrumb-item {\n    @apply gap-1;\n  }\n\n  .cn-breadcrumb-link {\n    @apply hover:text-foreground transition-colors;\n  }\n\n  .cn-breadcrumb-page {\n    @apply text-foreground font-normal;\n  }\n\n  .cn-breadcrumb-separator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  .cn-breadcrumb-ellipsis {\n    @apply size-5 [&>svg]:size-4;\n  }\n\n  /* MARK: Button */\n  .cn-button {\n    @apply focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-none border border-transparent bg-clip-padding text-xs font-medium focus-visible:ring-1 aria-invalid:ring-1 active:not-aria-[haspopup]:translate-y-px [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-variant-default {\n    @apply bg-primary text-primary-foreground [a]:hover:bg-primary/80;\n  }\n\n  .cn-button-variant-outline {\n    @apply border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground;\n  }\n\n  .cn-button-variant-secondary {\n    @apply bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground;\n  }\n\n  .cn-button-variant-ghost {\n    @apply hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground;\n  }\n\n  .cn-button-variant-destructive {\n    @apply bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30;\n  }\n\n  .cn-button-variant-link {\n    @apply text-primary underline-offset-4 hover:underline;\n  }\n\n  .cn-button-size-xs {\n    @apply h-6 gap-1 rounded-none px-2 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-sm {\n    @apply h-7 gap-1 rounded-none px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-button-size-default {\n    @apply h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2;\n  }\n\n  .cn-button-size-lg {\n    @apply h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2;\n  }\n\n  .cn-button-size-icon-xs {\n    @apply size-6 rounded-none [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-button-size-icon-sm {\n    @apply size-7 rounded-none;\n  }\n\n  .cn-button-size-icon {\n    @apply size-8;\n  }\n\n  .cn-button-size-icon-lg {\n    @apply size-9;\n  }\n\n  /* MARK: Button Group */\n  .cn-button-group {\n    @apply rounded-none has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-none;\n  }\n\n  .cn-button-group-text {\n    @apply bg-muted gap-2 rounded-none border px-2.5 text-xs font-medium [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-button-group-separator {\n    @apply bg-input;\n  }\n\n  /* MARK: Calendar */\n  .cn-calendar {\n    @apply p-2 [--cell-size:--spacing(7)];\n  }\n\n  .cn-calendar-dropdown-root {\n    @apply has-focus:border-ring border-input has-focus:ring-ring/50 rounded-none border has-focus:ring-1;\n  }\n\n  .cn-calendar-caption-label {\n    @apply h-6 rounded-none pr-1 pl-1.5;\n  }\n\n  /* MARK: Card */\n  .cn-card {\n    @apply ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-none py-4 text-xs/relaxed ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-2 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none;\n  }\n\n  .cn-card-header {\n    @apply gap-1 rounded-none px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3;\n  }\n\n  .cn-card-title {\n    @apply text-sm font-medium group-data-[size=sm]/card:text-sm;\n  }\n\n  .cn-card-description {\n    @apply text-muted-foreground text-xs/relaxed;\n  }\n\n  .cn-card-content {\n    @apply px-4 group-data-[size=sm]/card:px-3;\n  }\n\n  .cn-card-footer {\n    @apply rounded-none border-t p-4 group-data-[size=sm]/card:p-3;\n  }\n\n  /* MARK: Chart */\n  .cn-chart-tooltip {\n    @apply border-border/50 bg-background gap-1.5 rounded-none border px-2.5 py-1.5 text-xs shadow-xl;\n  }\n\n  /* MARK: Checkbox */\n  .cn-checkbox {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-none border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-1 aria-invalid:ring-1;\n  }\n\n  .cn-checkbox-indicator {\n    @apply [&>svg]:size-3.5;\n  }\n\n  /* MARK: Combobox */\n  .cn-combobox-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:border-input/30 max-h-72 min-w-36 overflow-hidden rounded-none shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:shadow-none;\n  }\n\n  .cn-combobox-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-combobox-label {\n    @apply text-muted-foreground px-2 py-2 text-xs;\n  }\n\n  .cn-combobox-item {\n    @apply data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-combobox-item-indicator {\n    @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;\n  }\n\n  .cn-combobox-empty {\n    @apply text-muted-foreground hidden w-full justify-center py-2 text-center text-xs group-data-empty/combobox-content:flex;\n  }\n\n  .cn-combobox-list {\n    @apply no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto data-empty:p-0;\n  }\n\n  .cn-combobox-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-combobox-separator {\n    @apply bg-border -mx-1 h-px;\n  }\n\n  .cn-combobox-trigger {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-combobox-trigger-icon {\n    @apply text-muted-foreground size-4;\n  }\n\n  .cn-combobox-chips {\n    @apply dark:bg-input/30 border-input focus-within:border-ring focus-within:ring-ring/50 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive dark:has-aria-invalid:border-destructive/50 flex min-h-8 flex-wrap items-center gap-1 rounded-none border bg-transparent bg-clip-padding px-2.5 py-1 text-xs transition-colors focus-within:ring-1 has-aria-invalid:ring-1 has-data-[slot=combobox-chip]:px-1;\n  }\n\n  .cn-combobox-chip {\n    @apply bg-muted text-foreground flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-none px-1.5 text-xs font-medium whitespace-nowrap has-data-[slot=combobox-chip-remove]:pr-0;\n  }\n\n  .cn-combobox-chip-remove {\n    @apply -ml-1 opacity-50 hover:opacity-100;\n  }\n\n  /* MARK: Command */\n  .cn-command {\n    @apply bg-popover text-popover-foreground rounded-none;\n  }\n\n  .cn-command-dialog {\n    @apply rounded-none;\n  }\n\n  .cn-command-input-wrapper {\n    @apply border-b pb-0;\n  }\n\n  .cn-command-input-group {\n    @apply bg-input/30 border-input/30 h-8 border-none shadow-none! *:data-[slot=input-group-addon]:pl-2!;\n  }\n\n  .cn-command-input-icon {\n    @apply size-4 shrink-0 opacity-50;\n  }\n\n  .cn-command-input {\n    @apply w-full text-xs;\n  }\n\n  .cn-command-list {\n    @apply no-scrollbar max-h-72 scroll-py-0 outline-none;\n  }\n\n  .cn-command-empty {\n    @apply py-6 text-center text-xs;\n  }\n\n  .cn-command-group {\n    @apply text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs;\n  }\n\n  .cn-command-separator {\n    @apply bg-border -mx-1 h-px;\n  }\n\n  .cn-command-item {\n    @apply data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-none px-2 py-2 text-xs outline-hidden select-none in-data-[slot=dialog-content]:rounded-none! [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-command-shortcut {\n    @apply text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-xs tracking-widest;\n  }\n\n  /* MARK: Context Menu */\n  .cn-context-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-36 rounded-none shadow-md ring-1 duration-100;\n  }\n\n  .cn-context-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-context-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-item-indicator {\n    @apply absolute right-2;\n  }\n\n  .cn-context-menu-label {\n    @apply text-muted-foreground px-2 py-2 text-xs data-inset:pl-7;\n  }\n\n  .cn-context-menu-separator {\n    @apply bg-border -mx-1 h-px;\n  }\n\n  .cn-context-menu-shortcut {\n    @apply text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;\n  }\n\n  .cn-context-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-context-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 bg-popover text-popover-foreground min-w-32 rounded-none border shadow-lg duration-100;\n  }\n\n  .cn-context-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Dialog */\n  .cn-dialog-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-dialog-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-4 rounded-none p-4 text-xs/relaxed ring-1 duration-100 sm:max-w-sm;\n  }\n\n  .cn-dialog-close {\n    @apply absolute top-2 right-2;\n  }\n\n  .cn-dialog-header {\n    @apply gap-1 text-left;\n  }\n\n  .cn-dialog-title {\n    @apply text-sm font-medium;\n  }\n\n  .cn-dialog-description {\n    @apply text-muted-foreground *:[a]:hover:text-foreground text-xs/relaxed *:[a]:underline *:[a]:underline-offset-3;\n  }\n\n  /* MARK: Drawer */\n  .cn-drawer-overlay {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-drawer-content {\n    @apply bg-popover text-popover-foreground flex h-auto flex-col text-xs/relaxed data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-none data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-none data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-none data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-none data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm;\n  }\n\n  .cn-drawer-handle {\n    @apply bg-muted mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-none group-data-[vaul-drawer-direction=bottom]/drawer-content:block;\n  }\n\n  .cn-drawer-header {\n    @apply gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left;\n  }\n\n  .cn-drawer-title {\n    @apply text-foreground text-sm font-medium;\n  }\n\n  .cn-drawer-description {\n    @apply text-muted-foreground text-xs/relaxed;\n  }\n\n  .cn-drawer-footer {\n    @apply gap-2 p-4;\n  }\n\n  /* MARK: Dropdown Menu */\n  .cn-dropdown-menu-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-none shadow-md ring-1 duration-100;\n  }\n\n  .cn-dropdown-menu-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-dropdown-menu-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-item-indicator {\n    @apply absolute right-2 flex items-center justify-center;\n  }\n\n  .cn-dropdown-menu-label {\n    @apply text-muted-foreground px-2 py-2 text-xs data-inset:pl-7;\n  }\n\n  .cn-dropdown-menu-separator {\n    @apply bg-border -mx-1 h-px;\n  }\n\n  .cn-dropdown-menu-shortcut {\n    @apply text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;\n  }\n\n  .cn-dropdown-menu-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-dropdown-menu-sub-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-none shadow-lg ring-1 duration-100;\n  }\n\n  .cn-dropdown-menu-subcontent {\n    @apply shadow-lg;\n  }\n\n  /* MARK: Empty */\n  .cn-empty {\n    @apply gap-4 rounded-none border-dashed p-6;\n  }\n\n  .cn-empty-header {\n    @apply gap-2;\n  }\n\n  .cn-empty-media {\n    @apply mb-2;\n  }\n\n  .cn-empty-media-default {\n    @apply bg-transparent;\n  }\n\n  .cn-empty-media-icon {\n    @apply bg-muted text-foreground flex size-8 shrink-0 items-center justify-center rounded-none [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-empty-title {\n    @apply text-sm font-medium;\n  }\n\n  .cn-empty-description {\n    @apply text-xs/relaxed;\n  }\n\n  .cn-empty-content {\n    @apply gap-2.5 text-xs;\n  }\n\n  /* MARK: Field */\n  .cn-field-set {\n    @apply gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3;\n  }\n\n  .cn-field-legend {\n    @apply mb-2.5 font-medium data-[variant=label]:text-xs data-[variant=legend]:text-sm;\n  }\n\n  .cn-field-group {\n    @apply gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4;\n  }\n\n  .cn-field {\n    @apply data-[invalid=true]:text-destructive gap-2;\n  }\n\n  .cn-field-content {\n    @apply gap-0.5;\n  }\n\n  .cn-field-label {\n    @apply has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-none has-[>[data-slot=field]]:border *:data-[slot=field]:p-2;\n  }\n\n  .cn-field-title {\n    @apply gap-2 text-xs/relaxed group-data-[disabled=true]/field:opacity-50;\n  }\n\n  .cn-field-description {\n    @apply text-muted-foreground text-left text-xs/relaxed [[data-variant=legend]+&]:-mt-1.5;\n  }\n\n  .cn-field-separator {\n    @apply -my-2 h-5 text-xs group-data-[variant=outline]/field-group:-mb-2;\n  }\n\n  .cn-field-separator-content {\n    @apply text-muted-foreground px-2;\n  }\n\n  .cn-field-error {\n    @apply text-destructive text-xs;\n  }\n\n  /* MARK: Hover Card */\n  .cn-hover-card-content {\n    @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground w-64 rounded-none p-2.5 text-xs/relaxed shadow-md ring-1 duration-100;\n  }\n\n  .cn-hover-card-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  /* MARK: Input */\n  .cn-input {\n    @apply dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-8 rounded-none border bg-transparent px-2.5 py-1 text-xs transition-colors file:h-6 file:text-xs file:font-medium focus-visible:ring-1 aria-invalid:ring-1 md:text-xs;\n  }\n\n  /* MARK: Input OTP */\n  .cn-input-otp {\n    @apply gap-2;\n  }\n\n  .cn-input-otp-group {\n    @apply has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive rounded-none has-aria-invalid:ring-1;\n  }\n\n  .cn-input-otp-slot {\n    @apply dark:bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-8 border-y border-r text-xs transition-all outline-none first:rounded-none first:border-l last:rounded-none data-[active=true]:ring-1;\n  }\n\n  .cn-input-otp-caret-line {\n    @apply animate-caret-blink bg-foreground h-4 w-px duration-1000;\n  }\n\n  .cn-input-otp-separator {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Item */\n  .cn-item {\n    @apply [a]:hover:bg-muted rounded-none border text-xs;\n  }\n\n  .cn-item-variant-default {\n    @apply border-transparent;\n  }\n\n  .cn-item-variant-outline {\n    @apply border-border;\n  }\n\n  .cn-item-variant-muted {\n    @apply bg-muted/50 border-transparent;\n  }\n\n  .cn-item-size-default {\n    @apply gap-2.5 px-3 py-2.5;\n  }\n\n  .cn-item-size-sm {\n    @apply gap-2.5 px-3 py-2.5;\n  }\n\n  .cn-item-size-xs {\n    @apply gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0;\n  }\n\n  .cn-item-media {\n    @apply gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start;\n  }\n\n  .cn-item-media-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-item-media-variant-icon {\n    @apply [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-item-media-variant-image {\n    @apply size-10 overflow-hidden rounded-none group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover;\n  }\n\n  .cn-item-content {\n    @apply gap-1 group-data-[size=xs]/item:gap-0;\n  }\n\n  .cn-item-title {\n    @apply gap-2 text-xs font-medium underline-offset-4;\n  }\n\n  .cn-item-description {\n    @apply text-muted-foreground text-left text-xs/relaxed group-data-[size=xs]/item:text-xs/relaxed;\n  }\n\n  .cn-item-actions {\n    @apply gap-2;\n  }\n\n  .cn-item-header {\n    @apply gap-2;\n  }\n\n  .cn-item-footer {\n    @apply gap-2;\n  }\n\n  .cn-item-group {\n    @apply gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2;\n  }\n\n  .cn-item-separator {\n    @apply my-2;\n  }\n\n  /* MARK: Kbd */\n  .cn-kbd {\n    @apply bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-none px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3;\n  }\n\n  .cn-kbd-group {\n    @apply gap-1;\n  }\n\n  /* MARK: Label */\n  .cn-label {\n    @apply gap-2 text-xs leading-none group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50;\n  }\n\n  /* MARK: Menubar */\n  .cn-menubar {\n    @apply h-8 gap-0.5 rounded-none border p-1;\n  }\n\n  .cn-menubar-trigger {\n    @apply hover:bg-muted aria-expanded:bg-muted rounded-none px-1.5 py-[calc(--spacing(0.8))] text-xs font-medium;\n  }\n\n  .cn-menubar-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-none shadow-md ring-1 duration-100;\n  }\n\n  .cn-menubar-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-menubar-item {\n    @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-disabled:opacity-50 data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-checkbox-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-none py-2 pr-28 pl-8 text-xs data-inset:pl-8;\n  }\n\n  .cn-menubar-checkbox-item-indicator {\n    @apply left-1.5 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-radio-item {\n    @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-none py-2 pr-2 pl-8 text-xs data-disabled:opacity-50 data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-radio-item-indicator {\n    @apply left-1.5 size-4 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-label {\n    @apply px-2 py-2 text-xs data-inset:pl-8;\n  }\n\n  .cn-menubar-separator {\n    @apply bg-border;\n  }\n\n  .cn-menubar-shortcut {\n    @apply text-muted-foreground group-focus/menubar-item:text-accent-foreground text-xs tracking-widest;\n  }\n\n  .cn-menubar-sub-trigger {\n    @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-2 rounded-none px-2 py-2 text-xs data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-menubar-sub-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-none shadow-lg ring-1 duration-100;\n  }\n\n  /* MARK: Navigation Menu */\n  .cn-navigation-menu {\n    @apply max-w-max;\n  }\n\n  .cn-navigation-menu-list {\n    @apply gap-0;\n  }\n\n  .cn-navigation-menu-trigger {\n    @apply hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-none px-2.5 py-1.5 text-xs font-medium transition-all focus-visible:ring-1 focus-visible:outline-1 disabled:opacity-50;\n  }\n\n  .cn-navigation-menu-link {\n    @apply data-active:focus:bg-muted data-active:hover:bg-muted data-active:bg-muted/50 focus-visible:ring-ring/50 hover:bg-muted focus:bg-muted flex items-center gap-2 rounded-none p-2 text-xs transition-all outline-none focus-visible:ring-1 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-none [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-navigation-menu-trigger-icon {\n    @apply relative top-px ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180;\n  }\n\n  .cn-navigation-menu-content {\n    @apply data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-1 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-none group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300;\n  }\n\n  .cn-navigation-menu-viewport {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-90 data-open:zoom-in-90 ring-foreground/10 rounded-none shadow ring-1 duration-100;\n  }\n\n  .cn-navigation-menu-indicator {\n    @apply data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in;\n  }\n\n  .cn-navigation-menu-indicator-arrow {\n    @apply bg-border rounded-none shadow-md;\n  }\n\n  .cn-navigation-menu-positioner {\n    @apply transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0;\n  }\n\n  .cn-navigation-menu-popup {\n    @apply bg-popover text-popover-foreground ring-foreground/10 rounded-none shadow ring-1 transition-all ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0;\n  }\n\n  /* MARK: Native Select */\n  .cn-native-select {\n    @apply border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-8 w-full min-w-0 appearance-none rounded-none border bg-transparent py-1 pr-8 pl-2.5 text-xs transition-colors select-none focus-visible:ring-1 aria-invalid:ring-1 data-[size=sm]:h-7 data-[size=sm]:rounded-none data-[size=sm]:py-0.5;\n  }\n\n  .cn-native-select-icon {\n    @apply text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2;\n  }\n\n  /* MARK: Pagination */\n  .cn-pagination-content {\n    @apply gap-0.5;\n  }\n\n  .cn-pagination-ellipsis {\n    @apply size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-pagination-previous {\n    @apply pl-1.5!;\n  }\n\n  .cn-pagination-next {\n    @apply pr-1.5!;\n  }\n\n  /* MARK: Popover */\n  .cn-popover-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-2.5 rounded-none p-2.5 text-xs shadow-md ring-1 duration-100;\n  }\n\n  .cn-popover-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-popover-header {\n    @apply flex flex-col gap-1 text-xs;\n  }\n\n  .cn-popover-title {\n    @apply text-sm font-medium;\n  }\n\n  .cn-popover-description {\n    @apply text-muted-foreground text-xs/relaxed;\n  }\n\n  /* MARK: Progress */\n  .cn-progress {\n    @apply bg-muted h-1 rounded-none;\n  }\n\n  .cn-progress-track {\n    @apply bg-muted h-1 rounded-none;\n  }\n\n  .cn-progress-indicator {\n    @apply bg-primary;\n  }\n\n  .cn-progress-label {\n    @apply text-xs;\n  }\n\n  .cn-progress-value {\n    @apply text-muted-foreground ml-auto text-xs tabular-nums;\n  }\n\n  /* MARK: Radio Group */\n  .cn-radio-group {\n    @apply grid gap-2;\n  }\n\n  .cn-radio-group-item {\n    @apply border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 dark:aria-invalid:border-destructive/50 flex size-4 rounded-full focus-visible:ring-3 aria-invalid:ring-3;\n  }\n\n  .cn-radio-group-indicator {\n    @apply flex size-4 items-center justify-center;\n  }\n\n  .cn-radio-group-indicator-icon {\n    @apply bg-primary-foreground absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full;\n  }\n\n  /* MARK: Resizable */\n  .cn-resizable-handle-icon {\n    @apply bg-border h-6 w-1 rounded-none;\n  }\n\n  /* MARK: Scroll Area */\n  .cn-scroll-area-scrollbar {\n    @apply data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent;\n  }\n\n  .cn-scroll-area-thumb {\n    @apply rounded-none;\n  }\n\n  /* MARK: Select */\n  .cn-select-trigger {\n    @apply border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-none border bg-transparent py-2 pr-2 pl-2.5 text-xs transition-colors select-none focus-visible:ring-1 aria-invalid:ring-1 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-none *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-select-value {\n    @apply flex flex-1 text-left;\n  }\n\n  .cn-select-trigger-icon {\n    @apply text-muted-foreground size-4;\n  }\n\n  .cn-select-content {\n    @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-none shadow-md ring-1 duration-100;\n  }\n\n  .cn-select-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-select-label {\n    @apply text-muted-foreground px-2 py-2 text-xs;\n  }\n\n  .cn-select-item {\n    @apply focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-none py-2 pr-8 pl-2 text-xs [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2;\n  }\n\n  .cn-select-item-indicator {\n    @apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;\n  }\n\n  .cn-select-group {\n    @apply scroll-my-1;\n  }\n\n  .cn-select-item-text {\n    @apply flex flex-1 gap-2;\n  }\n\n  .cn-select-separator {\n    @apply bg-border -mx-1 h-px;\n  }\n\n  .cn-select-scroll-up-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-select-scroll-down-button {\n    @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  /* MARK: Separator */\n  .cn-separator {\n    @apply bg-border shrink-0;\n  }\n\n  .cn-separator-horizontal {\n    @apply h-px w-full;\n  }\n\n  .cn-separator-vertical {\n    @apply h-full w-px;\n  }\n\n  /* MARK: Sheet */\n  .cn-sheet-overlay {\n    @apply bg-black/10 text-xs/relaxed supports-backdrop-filter:backdrop-blur-xs;\n  }\n\n  .cn-sheet-content {\n    @apply bg-popover text-popover-foreground fixed z-50 flex flex-col bg-clip-padding text-xs/relaxed shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm;\n  }\n\n  .cn-sheet-close {\n    @apply absolute top-3 right-3;\n  }\n\n  .cn-sheet-header {\n    @apply gap-0.5 p-4;\n  }\n\n  .cn-sheet-footer {\n    @apply gap-2 p-4;\n  }\n\n  .cn-sheet-title {\n    @apply text-foreground text-sm font-medium;\n  }\n\n  .cn-sheet-description {\n    @apply text-muted-foreground text-xs/relaxed;\n  }\n\n  /* MARK: Sidebar */\n  .cn-sidebar-gap {\n    @apply transition-[width] duration-200 ease-linear;\n  }\n\n  .cn-sidebar-inner {\n    @apply bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-none group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1;\n  }\n\n  .cn-sidebar-rail {\n    @apply hover:after:bg-sidebar-border;\n  }\n\n  .cn-sidebar-inset {\n    @apply bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-none md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2;\n  }\n\n  .cn-sidebar-input {\n    @apply bg-background h-8 w-full shadow-none;\n  }\n\n  .cn-sidebar-header {\n    @apply gap-2 p-2;\n  }\n\n  .cn-sidebar-content {\n    @apply no-scrollbar gap-0;\n  }\n\n  .cn-sidebar-footer {\n    @apply gap-2 p-2;\n  }\n\n  .cn-sidebar-separator {\n    @apply bg-sidebar-border mx-2;\n  }\n\n  .cn-sidebar-group {\n    @apply p-2;\n  }\n\n  .cn-sidebar-menu {\n    @apply gap-0;\n  }\n\n  .cn-sidebar-group-content {\n    @apply text-xs;\n  }\n\n  .cn-sidebar-group-label {\n    @apply text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-none px-2 text-xs transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-group-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-none p-0 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-button {\n    @apply ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-none p-2 text-left text-xs transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium;\n  }\n\n  .cn-sidebar-menu-button-variant-default {\n    @apply hover:bg-sidebar-accent hover:text-sidebar-accent-foreground;\n  }\n\n  .cn-sidebar-menu-button-variant-outline {\n    @apply bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))];\n  }\n\n  .cn-sidebar-menu-button-size-default {\n    @apply h-8 text-xs;\n  }\n\n  .cn-sidebar-menu-button-size-sm {\n    @apply h-7 text-xs;\n  }\n\n  .cn-sidebar-menu-button-size-lg {\n    @apply h-12 text-xs group-data-[collapsible=icon]:p-0!;\n  }\n\n  .cn-sidebar-menu-action {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-none p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4;\n  }\n\n  .cn-sidebar-menu-badge {\n    @apply text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-none px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1;\n  }\n\n  .cn-sidebar-menu-skeleton {\n    @apply h-8 gap-2 rounded-none px-2;\n  }\n\n  .cn-sidebar-menu-skeleton-icon {\n    @apply size-4 rounded-none;\n  }\n\n  .cn-sidebar-menu-skeleton-text {\n    @apply h-4;\n  }\n\n  .cn-sidebar-menu-sub {\n    @apply border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden;\n  }\n\n  .cn-sidebar-menu-sub-button {\n    @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-none px-2 focus-visible:ring-2 data-[size=md]:text-xs data-[size=sm]:text-xs [&>svg]:size-4;\n  }\n\n  /* MARK: Skeleton */\n  .cn-skeleton {\n    @apply bg-muted rounded-none;\n  }\n\n  /* MARK: Slider */\n  .cn-slider {\n    @apply data-vertical:min-h-40;\n  }\n\n  .cn-slider-track {\n    @apply bg-muted rounded-none data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1;\n  }\n\n  .cn-slider-range {\n    @apply bg-primary;\n  }\n\n  .cn-slider-thumb {\n    @apply border-ring ring-ring/50 relative size-3 rounded-none border bg-white transition-[color,box-shadow] after:absolute after:-inset-2 hover:ring-1 focus-visible:ring-1 focus-visible:outline-hidden active:ring-1;\n  }\n\n  /* MARK: Sonner */\n  .cn-toast {\n    @apply rounded-none;\n  }\n\n  /* MARK: Switch */\n  .cn-switch {\n    @apply data-checked:bg-primary data-unchecked:bg-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 dark:data-unchecked:bg-input/80 shrink-0 rounded-full border border-transparent focus-visible:ring-1 aria-invalid:ring-1 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px];\n  }\n\n  .cn-switch-thumb {\n    @apply bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0;\n  }\n\n  /* MARK: Table */\n  .cn-table-container {\n    @apply relative w-full overflow-x-auto;\n  }\n\n  .cn-table {\n    @apply w-full caption-bottom text-xs;\n  }\n\n  .cn-table-header {\n    @apply [&_tr]:border-b;\n  }\n\n  .cn-table-body {\n    @apply [&_tr:last-child]:border-0;\n  }\n\n  .cn-table-footer {\n    @apply bg-muted/50 border-t font-medium [&>tr]:last:border-b-0;\n  }\n\n  .cn-table-row {\n    @apply hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors;\n  }\n\n  .cn-table-head {\n    @apply text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-cell {\n    @apply p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0;\n  }\n\n  .cn-table-caption {\n    @apply text-muted-foreground mt-4 text-xs;\n  }\n\n  /* MARK: Tabs */\n  .cn-tabs {\n    @apply gap-2;\n  }\n\n  .cn-tabs-list {\n    @apply rounded-none p-[3px] group-data-horizontal/tabs:h-8 data-[variant=line]:rounded-none;\n  }\n\n  .cn-tabs-trigger {\n    @apply gap-1.5 rounded-none border border-transparent px-1.5 py-0.5 text-xs font-medium group-data-vertical/tabs:py-[calc(--spacing(1.25))] [&_svg:not([class*='size-'])]:size-4 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1;\n  }\n\n  .cn-tabs-content {\n    @apply text-xs/relaxed;\n  }\n\n  /* MARK: Textarea */\n  .cn-textarea {\n    @apply border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 rounded-none border bg-transparent px-2.5 py-2 text-xs transition-colors focus-visible:ring-1 aria-invalid:ring-1 md:text-xs;\n  }\n\n  /* MARK: Toggle */\n  .cn-toggle {\n    @apply hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[state=on]:bg-muted gap-1 rounded-none text-xs font-medium transition-all [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-toggle-variant-default {\n    @apply bg-transparent;\n  }\n\n  .cn-toggle-variant-outline {\n    @apply border-input hover:bg-muted border bg-transparent;\n  }\n\n  .cn-toggle-size-default {\n    @apply h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2;\n  }\n\n  .cn-toggle-size-sm {\n    @apply h-7 min-w-7 rounded-none px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5;\n  }\n\n  .cn-toggle-size-lg {\n    @apply h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2;\n  }\n\n  /* MARK: Toggle Group */\n  .cn-toggle-group {\n    @apply rounded-none data-[size=sm]:rounded-none;\n  }\n\n  .cn-toggle-group-item {\n    @apply group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-none group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-none;\n  }\n\n  /* MARK: Tooltip */\n  .cn-tooltip-content {\n    @apply data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 inline-flex items-center gap-1.5 rounded-none px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-none;\n  }\n\n  .cn-tooltip-content-logical {\n    @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;\n  }\n\n  .cn-tooltip-arrow {\n    @apply size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-none;\n  }\n\n  .cn-tooltip-arrow-logical {\n    @apply data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2;\n  }\n\n  /* MARK: Input Group */\n  .cn-input-group {\n    @apply border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 h-8 rounded-none border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-1 has-[[data-slot][aria-invalid=true]]:ring-1 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5;\n  }\n\n  .cn-input-group-addon {\n    @apply text-muted-foreground h-auto gap-2 py-1.5 text-xs font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-none [&>svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-input-group-addon-align-inline-start {\n    @apply pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem];\n  }\n\n  .cn-input-group-addon-align-inline-end {\n    @apply pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem];\n  }\n\n  .cn-input-group-addon-align-block-start {\n    @apply px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2;\n  }\n\n  .cn-input-group-addon-align-block-end {\n    @apply px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2;\n  }\n\n  .cn-input-group-button {\n    @apply gap-2 text-xs;\n  }\n\n  .cn-input-group-button-size-xs {\n    @apply h-6 gap-1 rounded-none px-1.5 [&>svg:not([class*='size-'])]:size-3.5;\n  }\n\n  .cn-input-group-button-size-icon-xs {\n    @apply size-6 rounded-none p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-button-size-sm {\n    @apply gap-1;\n  }\n\n  .cn-input-group-button-size-icon-sm {\n    @apply size-7 p-0 has-[>svg]:p-0;\n  }\n\n  .cn-input-group-text {\n    @apply text-muted-foreground gap-2 text-xs [&_svg:not([class*='size-'])]:size-4;\n  }\n\n  .cn-input-group-input {\n    @apply rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent;\n  }\n\n  .cn-input-group-textarea {\n    @apply rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent;\n  }\n\n  /* MARK: Menu Translucent */\n  .cn-menu-translucent {\n    @apply animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!;\n  }\n}\n",
      "type": "registry:style"
    }
  ],
  "type": "registry:style"
}