uidex 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +253 -353
  2. package/dist/cli/cli.cjs +3243 -0
  3. package/dist/cli/cli.cjs.map +1 -0
  4. package/dist/cloud/index.cjs +149 -0
  5. package/dist/cloud/index.cjs.map +1 -0
  6. package/dist/cloud/index.d.cts +108 -0
  7. package/dist/cloud/index.d.ts +108 -0
  8. package/dist/cloud/index.js +120 -0
  9. package/dist/cloud/index.js.map +1 -0
  10. package/dist/headless/index.cjs +3580 -0
  11. package/dist/headless/index.cjs.map +1 -0
  12. package/dist/headless/index.d.cts +214 -0
  13. package/dist/headless/index.d.ts +214 -0
  14. package/dist/headless/index.js +3562 -0
  15. package/dist/headless/index.js.map +1 -0
  16. package/dist/index.cjs +6902 -9801
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +901 -146
  19. package/dist/index.d.ts +901 -146
  20. package/dist/index.js +6896 -9805
  21. package/dist/index.js.map +1 -1
  22. package/dist/playwright/index.cjs +164 -24
  23. package/dist/playwright/index.cjs.map +1 -1
  24. package/dist/playwright/index.d.cts +30 -53
  25. package/dist/playwright/index.d.ts +30 -53
  26. package/dist/playwright/index.js +148 -21
  27. package/dist/playwright/index.js.map +1 -1
  28. package/dist/playwright/reporter.cjs +62 -28
  29. package/dist/playwright/reporter.cjs.map +1 -1
  30. package/dist/playwright/reporter.d.cts +24 -12
  31. package/dist/playwright/reporter.d.ts +24 -12
  32. package/dist/playwright/reporter.js +62 -28
  33. package/dist/playwright/reporter.js.map +1 -1
  34. package/dist/react/index.cjs +6936 -9808
  35. package/dist/react/index.cjs.map +1 -1
  36. package/dist/react/index.d.cts +673 -146
  37. package/dist/react/index.d.ts +673 -146
  38. package/dist/react/index.js +6980 -9811
  39. package/dist/react/index.js.map +1 -1
  40. package/dist/scan/index.cjs +3281 -0
  41. package/dist/scan/index.cjs.map +1 -0
  42. package/dist/scan/index.d.cts +373 -0
  43. package/dist/scan/index.d.ts +373 -0
  44. package/dist/scan/index.js +3224 -0
  45. package/dist/scan/index.js.map +1 -0
  46. package/package.json +71 -65
  47. package/templates/claude/audit.md +37 -0
  48. package/templates/claude/rules.md +212 -0
  49. package/claude/audit-command.md +0 -46
  50. package/claude/rules.md +0 -167
  51. package/dist/api/index.cjs +0 -254
  52. package/dist/api/index.cjs.map +0 -1
  53. package/dist/api/index.d.cts +0 -236
  54. package/dist/api/index.d.ts +0 -236
  55. package/dist/api/index.js +0 -226
  56. package/dist/api/index.js.map +0 -1
  57. package/dist/core/index.cjs +0 -11045
  58. package/dist/core/index.cjs.map +0 -1
  59. package/dist/core/index.d.cts +0 -424
  60. package/dist/core/index.d.ts +0 -424
  61. package/dist/core/index.global.js +0 -66516
  62. package/dist/core/index.global.js.map +0 -1
  63. package/dist/core/index.js +0 -10995
  64. package/dist/core/index.js.map +0 -1
  65. package/dist/core/style.css +0 -1529
  66. package/dist/scripts/cli.cjs +0 -3904
  67. package/uidex.schema.json +0 -93
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/menu.ts","../../src/ui/MenuBar.tsx","../../src/ui/hooks/useDrag.ts","../../src/ui/coss/tooltip.tsx","../../src/ui/utils.ts","../../src/ui/coss/menu.tsx","../../src/core/utils.ts","../../src/core/overlay.ts","../../src/core/inspector.ts","../../src/core/modal.ts","../../src/ui/DialogHost.tsx","../../src/ui/command-palette/CommandPalette.tsx","../../src/ui/coss/command.tsx","../../src/ui/coss/autocomplete.tsx","../../src/ui/coss/input.tsx","../../src/ui/coss/scroll-area.tsx","../../src/ui/page-dialog/PageDialog.tsx","../../src/ui/modal/store.ts","../../src/ui/coss/dialog.tsx","../../src/ui/coss/button.tsx","../../src/ui/coss/spinner.tsx","../../src/ui/coss/input-group.tsx","../../src/ui/coss/textarea.tsx","../../src/ui/shared/MarkdownContent.tsx","../../src/ui/coss/checkbox.tsx","../../src/ui/shared/chips.tsx","../../src/ui/coss/badge.tsx","../../src/ui/feedback-dialog/FeedbackDialog.tsx","../../src/core/registry.ts","../../src/core/ingest.ts","../../src/ui/modal/feedback-utils.ts","../../src/ui/coss/separator.tsx","../../src/ui/component-dialog/ComponentDialog.tsx","../../src/ui/feature-dialog/FeatureDialog.tsx","../../src/ui/ui-dialog/UiDialog.tsx","../../src/core/css-text.ts","../../src/core/shadow.ts","../../src/core/cursor-tooltip.ts","../../src/core/uidex-ui.ts"],"sourcesContent":["import { createRoot, type Root } from 'react-dom/client';\nimport { createElement } from 'react';\nimport type { ButtonPosition } from './types';\nimport { MenuBar, type MenuBarProps } from '../ui/MenuBar';\n\nexport const POSITION_CLASSES: Record<ButtonPosition, string> = {\n 'bottom-right': 'uidex-bottom-right',\n 'bottom-left': 'uidex-bottom-left',\n 'top-right': 'uidex-top-right',\n 'top-left': 'uidex-top-left',\n};\n\ntype ActiveMode = 'inspect' | 'copy' | 'feedback' | null;\n\nexport interface MenuOptions {\n onInspectCycle?: () => void;\n onModeSelect?: (mode: 'inspect' | 'copy' | 'feedback' | null) => void;\n onPageClick?: () => void;\n onCommandClick?: () => void;\n}\n\nexport class Menu {\n private host: HTMLDivElement | null = null;\n private root: Root | null = null;\n private options: MenuOptions;\n\n private activeMode: ActiveMode = null;\n private hasPages = false;\n private positionClass = '';\n private container: HTMLElement | null = null;\n\n constructor(options: MenuOptions = {}) {\n this.options = options;\n }\n\n setPosition(position: ButtonPosition): void {\n this.positionClass = POSITION_CLASSES[position];\n this.render();\n }\n\n getContainer(): HTMLDivElement | null {\n return this.host?.querySelector('.uidex-container') ?? null;\n }\n\n setActiveMode(mode: ActiveMode): void {\n this.activeMode = mode;\n this.render();\n }\n\n setHasPages(has: boolean): void {\n this.hasPages = has;\n this.render();\n }\n\n setContainer(el: HTMLElement | null): void {\n this.container = el;\n this.render();\n }\n\n create(): HTMLDivElement {\n this.host = document.createElement('div');\n this.root = createRoot(this.host);\n this.render();\n return this.host;\n }\n\n destroy(): void {\n const root = this.root;\n const host = this.host;\n this.root = null;\n this.host = null;\n // Defer unmount to avoid \"synchronously unmount during render\" in Strict Mode\n if (root) {\n queueMicrotask(() => root.unmount());\n }\n if (host?.parentNode) {\n host.parentNode.removeChild(host);\n }\n }\n\n private render(): void {\n if (!this.root) return;\n\n const props: MenuBarProps = {\n onInspectCycle: this.options.onInspectCycle,\n onModeSelect: this.options.onModeSelect,\n onPageClick: this.options.onPageClick,\n onCommandClick: this.options.onCommandClick,\n activeMode: this.activeMode,\n hasPages: this.hasPages,\n positionClass: this.positionClass,\n container: this.container,\n };\n\n this.root.render(createElement(MenuBar, props));\n }\n}\n","import { useState, useRef, useCallback } from 'react';\nimport type React from 'react';\nimport { useDrag } from './hooks/useDrag';\nimport { Tooltip, TooltipTrigger, TooltipPopup, TooltipProvider } from './coss/tooltip';\nimport { Menu, MenuPopup, MenuGroup, MenuRadioGroup, MenuRadioItem, MenuGroupLabel, MenuSeparator } from './coss/menu';\n\ntype ActiveMode = 'inspect' | 'copy' | 'feedback' | null;\n\nfunction IconBase({ children }: { children: React.ReactNode }) {\n return (\n <svg\n className=\"uidex-trigger-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n {children}\n </svg>\n );\n}\n\nfunction SelectIcon() {\n return (\n <IconBase>\n <path d=\"M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z\" />\n <path d=\"M13 13l6 6\" />\n </IconBase>\n );\n}\n\nfunction CopyIcon() {\n return (\n <IconBase>\n <rect x={9} y={9} width={13} height={13} rx={2} />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </IconBase>\n );\n}\n\nfunction FeedbackIcon() {\n return (\n <IconBase>\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n </IconBase>\n );\n}\n\nfunction PageIcon() {\n return (\n <IconBase>\n <path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n </IconBase>\n );\n}\n\nfunction CommandIcon() {\n return (\n <IconBase>\n <circle cx={11} cy={11} r={8} />\n <line x1={21} y1={21} x2={16.65} y2={16.65} />\n </IconBase>\n );\n}\n\nconst INSPECT_ICON: Record<string, () => React.ReactElement> = {\n inspect: SelectIcon,\n copy: CopyIcon,\n feedback: FeedbackIcon,\n};\n\nconst INSPECT_LABEL: Record<string, string> = {\n inspect: 'Inspect mode',\n copy: 'Copy mode',\n feedback: 'Feedback mode',\n};\n\n\ninterface TriggerButtonProps {\n modifier: string;\n ariaLabel: string;\n title: string;\n icon: React.ReactNode;\n onClick: () => void;\n toggle?: boolean;\n active?: boolean;\n hidden?: boolean;\n container?: HTMLElement | null;\n}\n\nfunction TriggerButton({\n modifier,\n ariaLabel,\n title,\n icon,\n onClick,\n toggle = false,\n active = false,\n hidden = false,\n container,\n}: TriggerButtonProps) {\n if (hidden) return null;\n\n const className = [\n 'uidex-trigger-btn',\n `uidex-trigger-btn--${modifier}`,\n active ? 'uidex-trigger-btn--active' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n className={className}\n aria-label={ariaLabel}\n aria-pressed={toggle ? active : undefined}\n onClick={onClick}\n />\n }\n >\n {icon}\n </TooltipTrigger>\n <TooltipPopup container={container} positionMethod=\"fixed\">{title}</TooltipPopup>\n </Tooltip>\n );\n}\n\n\nexport interface MenuBarProps {\n onInspectCycle?: () => void;\n onModeSelect?: (mode: ActiveMode) => void;\n onPageClick?: () => void;\n onCommandClick?: () => void;\n activeMode?: ActiveMode;\n hasPages?: boolean;\n positionClass?: string;\n container?: HTMLElement | null;\n}\n\nexport function MenuBar({\n onInspectCycle,\n onModeSelect,\n onPageClick,\n onCommandClick,\n activeMode = null,\n hasPages = false,\n positionClass = '',\n container,\n}: MenuBarProps) {\n const { containerRef, handlePointerDown, didDrag } = useDrag();\n const [menuOpen, setMenuOpen] = useState(false);\n const anchorRef = useRef<{ getBoundingClientRect: () => DOMRect } | null>(null);\n\n const guardClick = (handler?: () => void) => () => {\n if (didDrag()) return;\n handler?.();\n };\n\n const handleContextMenu = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n // Anchor the menu at the cursor position\n const x = e.clientX;\n const y = e.clientY;\n anchorRef.current = {\n getBoundingClientRect: () => new DOMRect(x, y, 0, 0),\n };\n setMenuOpen(true);\n }, []);\n\n const handleModeChange = useCallback((value: string | number | readonly string[] | undefined) => {\n if (typeof value !== 'string') return;\n const mode = value === 'off' ? null : (value as ActiveMode);\n onModeSelect?.(mode);\n setMenuOpen(false);\n }, [onModeSelect]);\n\n const InspectIconComponent = activeMode\n ? INSPECT_ICON[activeMode] ?? SelectIcon\n : SelectIcon;\n const inspectTitle = activeMode\n ? INSPECT_LABEL[activeMode] ?? 'Inspect mode'\n : 'Inspect mode';\n\n const buttons: TriggerButtonProps[] = [\n {\n modifier: 'inspect',\n ariaLabel: inspectTitle,\n title: inspectTitle,\n icon: <InspectIconComponent />,\n onClick: guardClick(onInspectCycle),\n toggle: true,\n active: activeMode !== null,\n container,\n },\n {\n modifier: 'page',\n ariaLabel: 'View page',\n title: 'View page',\n icon: <PageIcon />,\n onClick: guardClick(onPageClick),\n hidden: !hasPages,\n container,\n },\n {\n modifier: 'command',\n ariaLabel: 'Search components',\n title: 'Search components',\n icon: <CommandIcon />,\n onClick: guardClick(onCommandClick),\n container,\n },\n ];\n\n const visibleButtons = buttons.filter((b) => !b.hidden);\n\n return (\n <div className={`uidex-container${positionClass ? ` ${positionClass}` : ''}`} ref={containerRef}>\n <TooltipProvider>\n <div\n className=\"uidex-trigger-group\"\n onPointerDown={(e) => {\n // Only drag on primary button (left click)\n if (e.button === 0) handlePointerDown(e);\n }}\n onContextMenu={handleContextMenu}\n >\n {visibleButtons.flatMap((btn, i) => {\n const el = <TriggerButton key={btn.modifier} {...btn} />;\n return i > 0\n ? [<div key={`d-${btn.modifier}`} className=\"uidex-trigger-divider\" />, el]\n : [el];\n })}\n </div>\n </TooltipProvider>\n\n <Menu open={menuOpen} onOpenChange={setMenuOpen}>\n <MenuPopup\n anchor={anchorRef.current}\n side=\"top\"\n align=\"start\"\n sideOffset={8}\n container={container}\n >\n <MenuGroup>\n <MenuGroupLabel>Mode</MenuGroupLabel>\n <MenuRadioGroup\n value={activeMode ?? 'off'}\n onValueChange={handleModeChange}\n >\n <MenuRadioItem value=\"inspect\">\n Inspect\n </MenuRadioItem>\n <MenuRadioItem value=\"copy\">\n Copy ID\n </MenuRadioItem>\n <MenuRadioItem value=\"feedback\">\n Feedback\n </MenuRadioItem>\n <MenuSeparator />\n <MenuRadioItem value=\"off\">\n Off\n </MenuRadioItem>\n </MenuRadioGroup>\n </MenuGroup>\n </MenuPopup>\n </Menu>\n </div>\n );\n}\n","import { useRef, useCallback, useEffect } from 'react';\nimport { POSITION_CLASSES } from '../../core/menu';\nimport type { ButtonPosition } from '../../core/types';\n\nconst DRAG_THRESHOLD = 4;\n\nexport function useDrag() {\n const containerRef = useRef<HTMLDivElement>(null);\n const dragState = useRef({\n isDragging: false,\n hasDragged: false,\n startX: 0,\n startY: 0,\n startLeft: 0,\n startTop: 0,\n });\n\n const snapToCorner = useCallback(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const rect = container.getBoundingClientRect();\n const centerX = rect.left + rect.width / 2;\n const centerY = rect.top + rect.height / 2;\n const vpW = window.innerWidth;\n const vpH = window.innerHeight;\n\n const isRight = centerX > vpW / 2;\n const isBottom = centerY > vpH / 2;\n\n let corner: ButtonPosition;\n if (isBottom && isRight) corner = 'bottom-right';\n else if (isBottom && !isRight) corner = 'bottom-left';\n else if (!isBottom && isRight) corner = 'top-right';\n else corner = 'top-left';\n\n container.style.left = '';\n container.style.top = '';\n container.style.right = '';\n container.style.bottom = '';\n\n container.classList.add(POSITION_CLASSES[corner]);\n }, []);\n\n const handlePointerMove = useCallback((e: PointerEvent) => {\n const state = dragState.current;\n const container = containerRef.current;\n if (!state.isDragging || !container) return;\n\n const dx = e.clientX - state.startX;\n const dy = e.clientY - state.startY;\n\n if (!state.hasDragged && Math.abs(dx) < DRAG_THRESHOLD && Math.abs(dy) < DRAG_THRESHOLD) return;\n state.hasDragged = true;\n\n const newLeft = state.startLeft + dx;\n const newTop = state.startTop + dy;\n\n container.classList.remove(\n 'uidex-bottom-right',\n 'uidex-bottom-left',\n 'uidex-top-right',\n 'uidex-top-left',\n );\n\n container.style.left = `${newLeft}px`;\n container.style.top = `${newTop}px`;\n container.style.right = 'auto';\n container.style.bottom = 'auto';\n }, []);\n\n const handlePointerUp = useCallback(() => {\n const state = dragState.current;\n const container = containerRef.current;\n if (!state.isDragging || !container) return;\n\n state.isDragging = false;\n container.classList.remove('uidex-container--dragging');\n\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n\n if (!state.hasDragged) return;\n snapToCorner();\n }, [handlePointerMove, snapToCorner]);\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n const container = containerRef.current;\n if (!container) return;\n\n const state = dragState.current;\n state.hasDragged = false;\n state.isDragging = true;\n state.startX = e.clientX;\n state.startY = e.clientY;\n\n const rect = container.getBoundingClientRect();\n state.startLeft = rect.left;\n state.startTop = rect.top;\n\n container.classList.add('uidex-container--dragging');\n\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n },\n [handlePointerMove, handlePointerUp],\n );\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }, [handlePointerMove, handlePointerUp]);\n\n return {\n containerRef,\n handlePointerDown,\n /** True if the current/last pointer interaction was a drag (not a click) */\n didDrag: () => dragState.current.hasDragged,\n };\n}\n","\"use client\";\n\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\";\nimport type React from \"react\";\nimport { cn } from \"../utils\";\n\nexport const TooltipProvider: typeof TooltipPrimitive.Provider =\n TooltipPrimitive.Provider;\n\nexport const Tooltip: typeof TooltipPrimitive.Root = TooltipPrimitive.Root;\n\nexport function TooltipTrigger(\n props: TooltipPrimitive.Trigger.Props,\n): React.ReactElement {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nexport function TooltipPopup({\n className,\n align = \"center\",\n sideOffset = 4,\n side = \"top\",\n anchor,\n container,\n positionMethod,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props & {\n align?: TooltipPrimitive.Positioner.Props[\"align\"];\n side?: TooltipPrimitive.Positioner.Props[\"side\"];\n sideOffset?: TooltipPrimitive.Positioner.Props[\"sideOffset\"];\n anchor?: TooltipPrimitive.Positioner.Props[\"anchor\"];\n positionMethod?: TooltipPrimitive.Positioner.Props[\"positionMethod\"];\n container?: HTMLElement | null;\n}): React.ReactElement {\n return (\n <TooltipPrimitive.Portal container={container}>\n <TooltipPrimitive.Positioner\n align={align}\n anchor={anchor}\n className=\"z-50 transition-[top,left,right,bottom,transform] data-instant:transition-none\"\n collisionAvoidance={{ side: \"flip\", align: \"shift\" }}\n collisionPadding={8}\n data-slot=\"tooltip-positioner\"\n positionMethod={positionMethod}\n side={side}\n sideOffset={sideOffset}\n >\n <TooltipPrimitive.Popup\n className={cn(\n \"relative flex origin-(--transform-origin) text-balance rounded-md border bg-popover not-dark:bg-clip-padding text-popover-foreground text-xs shadow-md/5 transition-[scale,opacity] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 data-instant:duration-0 px-2 py-1\",\n className,\n )}\n data-slot=\"tooltip-popup\"\n {...props}\n >\n {children}\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { TooltipPrimitive };\n","import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n\n/** Convert kebab-case ID to title case: \"org-dashboard\" → \"Org Dashboard\" */\nexport function humanizeId(id: string): string {\n return id\n .split('-')\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(' ');\n}\n","\"use client\";\n\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport const Menu: typeof MenuPrimitive.Root = MenuPrimitive.Root;\n\nexport function MenuTrigger({\n className,\n children,\n ...props\n}: MenuPrimitive.Trigger.Props): React.ReactElement {\n return (\n <MenuPrimitive.Trigger\n className={className}\n data-slot=\"menu-trigger\"\n {...props}\n >\n {children}\n </MenuPrimitive.Trigger>\n );\n}\n\nexport function MenuPopup({\n children,\n className,\n sideOffset = 4,\n align = \"center\",\n alignOffset,\n side = \"bottom\",\n anchor,\n container,\n ...props\n}: MenuPrimitive.Popup.Props & {\n align?: MenuPrimitive.Positioner.Props[\"align\"];\n sideOffset?: MenuPrimitive.Positioner.Props[\"sideOffset\"];\n alignOffset?: MenuPrimitive.Positioner.Props[\"alignOffset\"];\n side?: MenuPrimitive.Positioner.Props[\"side\"];\n anchor?: MenuPrimitive.Positioner.Props[\"anchor\"];\n container?: HTMLElement | null;\n}): React.ReactElement {\n return (\n <MenuPrimitive.Portal container={container}>\n <MenuPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"z-50\"\n data-slot=\"menu-positioner\"\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n className={cn(\n \"relative flex not-[class*='w-']:min-w-32 origin-(--transform-origin) rounded-lg border bg-popover not-dark:bg-clip-padding shadow-lg/5 outline-none before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] focus:outline-none dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"menu-popup\"\n {...props}\n >\n <div className=\"max-h-(--available-height) w-full overflow-y-auto p-1\">\n {children}\n </div>\n </MenuPrimitive.Popup>\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\n\nexport function MenuGroup(\n props: MenuPrimitive.Group.Props,\n): React.ReactElement {\n return <MenuPrimitive.Group data-slot=\"menu-group\" {...props} />;\n}\n\nexport function MenuItem({\n className,\n ...props\n}: MenuPrimitive.Item.Props): React.ReactElement {\n return (\n <MenuPrimitive.Item\n className={cn(\n \"flex min-h-8 cursor-default select-none items-center gap-2 rounded-sm px-2 py-1 text-sm text-foreground outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 [&>svg:not([class*='size-'])]:size-4 [&>svg]:pointer-events-none [&>svg]:-mx-0.5 [&>svg]:shrink-0\",\n className,\n )}\n data-slot=\"menu-item\"\n {...props}\n />\n );\n}\n\nexport function MenuRadioGroup(\n props: MenuPrimitive.RadioGroup.Props,\n): React.ReactElement {\n return <MenuPrimitive.RadioGroup data-slot=\"menu-radio-group\" {...props} />;\n}\n\nexport function MenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props): React.ReactElement {\n return (\n <MenuPrimitive.RadioItem\n className={cn(\n \"grid min-h-8 cursor-default grid-cols-[.75rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-sm text-foreground outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"menu-radio-item\"\n {...props}\n >\n <MenuPrimitive.RadioItemIndicator className=\"col-start-1 -ms-0.5\">\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M5.252 12.7 10.2 18.63 18.748 5.37\" />\n </svg>\n </MenuPrimitive.RadioItemIndicator>\n <span className=\"col-start-2\">{children}</span>\n </MenuPrimitive.RadioItem>\n );\n}\n\nexport function MenuCheckboxItem({\n className,\n children,\n ...props\n}: MenuPrimitive.CheckboxItem.Props): React.ReactElement {\n return (\n <MenuPrimitive.CheckboxItem\n className={cn(\n \"grid min-h-8 cursor-default grid-cols-[.75rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-sm text-foreground outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"menu-checkbox-item\"\n {...props}\n >\n <MenuPrimitive.CheckboxItemIndicator className=\"col-start-1 -ms-0.5\" keepMounted>\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M5.252 12.7 10.2 18.63 18.748 5.37\" />\n </svg>\n </MenuPrimitive.CheckboxItemIndicator>\n <span className=\"col-start-2\">{children}</span>\n </MenuPrimitive.CheckboxItem>\n );\n}\n\nexport function MenuSeparator({\n className,\n ...props\n}: MenuPrimitive.Separator.Props): React.ReactElement {\n return (\n <MenuPrimitive.Separator\n className={cn(\"mx-2 my-1 h-px bg-border\", className)}\n data-slot=\"menu-separator\"\n {...props}\n />\n );\n}\n\nexport function MenuGroupLabel({\n className,\n ...props\n}: MenuPrimitive.GroupLabel.Props): React.ReactElement {\n return (\n <MenuPrimitive.GroupLabel\n className={cn(\n \"px-2 py-1.5 font-medium text-muted-foreground text-xs\",\n className,\n )}\n data-slot=\"menu-label\"\n {...props}\n />\n );\n}\n\nexport { MenuPrimitive };\n","export function classNames(\n ...classes: (string | undefined | null | false)[]\n): string {\n return classes.filter(Boolean).join(' ');\n}\n\nexport function getContrastColor(hexColor: string): string {\n const hex = hexColor.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n return luminance > 0.5 ? '#000000' : '#ffffff';\n}\n\nexport function hexToRgba(hex: string, alpha: number): string {\n const hexValue = hex.replace('#', '');\n const r = parseInt(hexValue.substring(0, 2), 16);\n const g = parseInt(hexValue.substring(2, 4), 16);\n const b = parseInt(hexValue.substring(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\nexport const OVERLAY_COLORS = {\n component: '#3b82f6',\n block: '#c084fc',\n gap: '#f59e0b',\n} as const;\n\nexport const LABEL_FONT =\n 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace';\n\nexport function applyLabelStyles(el: HTMLElement, color: string): void {\n el.style.position = 'absolute';\n el.style.fontFamily = LABEL_FONT;\n el.style.fontSize = '11px';\n el.style.fontWeight = '500';\n el.style.padding = '2px 6px';\n el.style.borderRadius = '6px';\n el.style.whiteSpace = 'nowrap';\n el.style.backgroundColor = color;\n el.style.color = getContrastColor(color);\n}\n\nexport function resolveColor(\n color: string | undefined,\n colorMap?: Record<string, string>\n): string | undefined {\n if (!color) return undefined;\n if (color.startsWith('#')) return color;\n return colorMap?.[color] ?? color;\n}\n","import type { OverlayOptions } from './types';\nimport { resolveColor, hexToRgba, OVERLAY_COLORS } from './utils';\n\nconst DEFAULT_COLOR = OVERLAY_COLORS.component;\nconst DEFAULT_BORDER_STYLE = 'solid';\nconst DEFAULT_BORDER_WIDTH = 2;\nconst DEFAULT_FILL_OPACITY = 0.08;\n\nexport class Overlay {\n private element: HTMLDivElement | null = null;\n private target: HTMLElement | null = null;\n private baseOptions: OverlayOptions;\n private options: OverlayOptions;\n private boundUpdatePosition: () => void;\n private rafId: number | null = null;\n\n constructor(options: OverlayOptions = {}) {\n this.baseOptions = options;\n this.options = options;\n this.boundUpdatePosition = () => {\n if (this.rafId !== null) return;\n this.rafId = requestAnimationFrame(() => {\n this.rafId = null;\n this.updatePosition();\n });\n };\n }\n\n show(target: HTMLElement, overrides?: Partial<OverlayOptions>): void {\n this.target = target;\n\n if (!this.element) {\n this.createElement();\n }\n\n // Reset to base options, then apply per-call overrides\n this.options = { ...this.baseOptions };\n if (overrides) {\n this.options = { ...this.options, ...overrides };\n }\n\n this.updateStyles();\n this.updatePosition();\n this.addListeners();\n\n if (this.element && !this.element.parentNode) {\n document.body.appendChild(this.element);\n }\n }\n\n hide(): void {\n this.removeListeners();\n if (this.element && this.element.parentNode) {\n this.element.parentNode.removeChild(this.element);\n }\n this.target = null;\n }\n\n destroy(): void {\n this.hide();\n this.element = null;\n }\n\n updateOptions(options: Partial<OverlayOptions>): void {\n this.baseOptions = { ...this.baseOptions, ...options };\n this.options = { ...this.options, ...options };\n this.updateStyles();\n }\n\n private createElement(): void {\n this.element = document.createElement('div');\n this.element.className = 'uidex-overlay';\n this.element.setAttribute('data-testid', 'annotation-overlay');\n\n // Critical positioning styles are set inline because the overlay\n // lives in document.body, outside the Shadow DOM where the CSS is.\n this.element.style.position = 'fixed';\n this.element.style.pointerEvents = 'none';\n this.element.style.zIndex = '2147483645';\n\n this.updateStyles();\n }\n\n private updateStyles(): void {\n if (!this.element) return;\n\n const {\n color,\n borderStyle = DEFAULT_BORDER_STYLE,\n borderWidth = DEFAULT_BORDER_WIDTH,\n colors,\n } = this.options;\n\n const resolvedColor = resolveColor(color, colors) ?? DEFAULT_COLOR;\n const opacity = this.options.opacity;\n const fillOpacity = this.options.fillOpacity ?? DEFAULT_FILL_OPACITY;\n\n this.element.style.borderColor = resolvedColor;\n this.element.style.borderWidth = `${borderWidth}px`;\n this.element.style.borderStyle = borderStyle;\n this.element.style.opacity = opacity != null ? String(opacity) : '';\n this.element.style.backgroundColor = hexToRgba(resolvedColor, fillOpacity);\n }\n\n private updatePosition(): void {\n if (!this.element || !this.target) return;\n\n const rect = this.target.getBoundingClientRect();\n const pad = this.options.padding ?? 0;\n\n // position: fixed is viewport-relative, matching getBoundingClientRect()\n this.element.style.top = `${rect.top - pad}px`;\n this.element.style.left = `${rect.left - pad}px`;\n this.element.style.width = `${rect.width + pad * 2}px`;\n this.element.style.height = `${rect.height + pad * 2}px`;\n }\n\n private addListeners(): void {\n window.addEventListener('resize', this.boundUpdatePosition);\n window.addEventListener('scroll', this.boundUpdatePosition, {\n capture: true,\n passive: true,\n });\n }\n\n private removeListeners(): void {\n window.removeEventListener('resize', this.boundUpdatePosition);\n window.removeEventListener('scroll', this.boundUpdatePosition, {\n capture: true,\n } as EventListenerOptions);\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n }\n}\n","import type { KeyboardShortcut } from './types';\n\nconst DEFAULT_SHORTCUT: KeyboardShortcut = {\n key: 'u',\n shiftKey: true,\n metaKey: true,\n};\n\nconst INSPECTING_CLASS = 'uidex-inspecting';\nconst INSPECTING_STYLE_ID = 'uidex-inspecting-style';\nconst INSPECTING_CSS = `body.${INSPECTING_CLASS},body.${INSPECTING_CLASS} *{cursor:crosshair!important}`;\n\nfunction isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false;\n return (\n target.isContentEditable ||\n target.getAttribute('contenteditable') === 'true' ||\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.tagName === 'SELECT'\n );\n}\n\nfunction matchesShortcut(\n e: KeyboardEvent,\n shortcut: KeyboardShortcut\n): boolean {\n return (\n e.key.toLowerCase() === shortcut.key.toLowerCase() &&\n !!e.ctrlKey === !!shortcut.ctrlKey &&\n !!e.shiftKey === !!shortcut.shiftKey &&\n !!e.altKey === !!shortcut.altKey &&\n !!e.metaKey === !!shortcut.metaKey\n );\n}\n\ninterface AncestorResult {\n element: HTMLElement;\n id: string;\n parentBlock?: { element: HTMLElement; id: string };\n}\n\nfunction findAnnotatedAncestor(\n target: EventTarget\n): AncestorResult | null {\n if (!(target instanceof Element)) return null;\n if (target.closest('.uidex-container')) return null;\n\n // Prefer the closest interactive element, fall back to block\n const annotated = target.closest('[data-uidex]');\n if (annotated instanceof HTMLElement) {\n const id = annotated.getAttribute('data-uidex');\n if (id) {\n const result: AncestorResult = { element: annotated, id };\n // Find nearest parent block for context highlighting\n const block = annotated.parentElement?.closest('[data-uidex-block]');\n if (block instanceof HTMLElement) {\n const blockId = block.getAttribute('data-uidex-block');\n if (blockId) {\n result.parentBlock = { element: block, id: blockId };\n }\n }\n return result;\n }\n }\n\n const block = target.closest('[data-uidex-block]');\n if (block instanceof HTMLElement) {\n const id = block.getAttribute('data-uidex-block');\n if (id) return { element: block, id };\n }\n\n return null;\n}\n\nexport interface InspectorOptions {\n shortcut?: KeyboardShortcut;\n onHighlight?: (\n element: HTMLElement | null,\n id: string | null,\n parentBlock?: { element: HTMLElement; id: string } | null,\n cursor?: { x: number; y: number } | null\n ) => void;\n onSelect?: (element: HTMLElement, id: string, opts?: { persistent?: boolean }) => void;\n onActivate?: () => void;\n onDeactivate?: () => void;\n}\n\nexport class Inspector {\n private active = false;\n private shortcut: KeyboardShortcut;\n private currentTarget: HTMLElement | null = null;\n\n private onHighlight: InspectorOptions['onHighlight'];\n private onSelect: InspectorOptions['onSelect'];\n private onActivate: InspectorOptions['onActivate'];\n private onDeactivate: InspectorOptions['onDeactivate'];\n\n private boundKeyDown: (e: KeyboardEvent) => void;\n private boundMouseMove: (e: MouseEvent) => void;\n private boundClick: (e: MouseEvent) => void;\n\n constructor(options: InspectorOptions = {}) {\n this.shortcut = options.shortcut ?? DEFAULT_SHORTCUT;\n this.onHighlight = options.onHighlight;\n this.onSelect = options.onSelect;\n this.onActivate = options.onActivate;\n this.onDeactivate = options.onDeactivate;\n\n this.boundKeyDown = this.handleKeyDown.bind(this);\n this.boundMouseMove = this.handleMouseMove.bind(this);\n this.boundClick = this.handleClick.bind(this);\n }\n\n mount(): void {\n document.addEventListener('keydown', this.boundKeyDown);\n\n // Inject inspect-mode cursor style into the document (not shadow DOM)\n if (!document.getElementById(INSPECTING_STYLE_ID)) {\n const style = document.createElement('style');\n style.id = INSPECTING_STYLE_ID;\n style.textContent = INSPECTING_CSS;\n document.head.appendChild(style);\n }\n }\n\n destroy(): void {\n if (this.active) {\n this.deactivate();\n }\n document.removeEventListener('keydown', this.boundKeyDown);\n document.getElementById(INSPECTING_STYLE_ID)?.remove();\n }\n\n activate(): void {\n if (this.active) return;\n this.active = true;\n this.currentTarget = null;\n\n document.addEventListener('mousemove', this.boundMouseMove);\n document.addEventListener('click', this.boundClick, true);\n document.body.classList.add(INSPECTING_CLASS);\n\n this.onActivate?.();\n }\n\n deactivate(): void {\n if (!this.active) return;\n this.active = false;\n this.currentTarget = null;\n\n document.removeEventListener('mousemove', this.boundMouseMove);\n document.removeEventListener('click', this.boundClick, true);\n document.body.classList.remove(INSPECTING_CLASS);\n\n this.onHighlight?.(null, null);\n this.onDeactivate?.();\n }\n\n isActive(): boolean {\n return this.active;\n }\n\n private handleKeyDown(e: KeyboardEvent): void {\n if (this.active && e.key === 'Escape') {\n e.preventDefault();\n this.deactivate();\n return;\n }\n\n if (isEditableTarget(e.target)) return;\n\n if (matchesShortcut(e, this.shortcut)) {\n e.preventDefault();\n if (this.active) {\n this.deactivate();\n } else {\n this.activate();\n }\n }\n }\n\n private handleMouseMove(e: MouseEvent): void {\n const result = findAnnotatedAncestor(e.target!);\n const cursor = { x: e.clientX, y: e.clientY };\n\n if (result) {\n if (result.element !== this.currentTarget) {\n this.currentTarget = result.element;\n this.onHighlight?.(result.element, result.id, result.parentBlock, cursor);\n } else {\n // Same element but cursor moved — update cursor position\n this.onHighlight?.(result.element, result.id, result.parentBlock, cursor);\n }\n } else if (this.currentTarget) {\n this.currentTarget = null;\n this.onHighlight?.(null, null, null, null);\n }\n }\n\n private handleClick(e: MouseEvent): void {\n if (!(e.target instanceof Element)) return;\n\n // Don't intercept clicks on uidex's own UI\n if (e.target.closest('.uidex-container')) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n const persistent = e.shiftKey;\n const result = findAnnotatedAncestor(e.target);\n if (result) {\n this.onSelect?.(result.element, result.id, persistent ? { persistent: true } : undefined);\n }\n\n if (!persistent) {\n this.deactivate();\n }\n }\n}\n","import { createRoot, type Root } from 'react-dom/client';\nimport { createElement } from 'react';\nimport {\n createDialogStore,\n type DialogStore,\n DialogHost,\n} from '../ui/DialogHost';\nimport type { ModalData, ModalOptions } from '../ui/modal/store';\n\nexport type { ModalData, ModalOptions } from '../ui/modal/store';\nexport type { ModalPage, ModalFeature } from '../ui/modal/store';\n\nexport class ModalManager {\n private container: HTMLElement | null = null;\n private host: HTMLDivElement | null = null;\n private root: Root | null = null;\n private store: DialogStore;\n private options: ModalOptions;\n\n constructor(options: ModalOptions = {}) {\n this.options = options;\n this.store = createDialogStore();\n }\n\n setContainer(el: HTMLElement): void {\n this.container = el;\n }\n\n setData(data: ModalData): void {\n this.store.setState({ data });\n }\n\n openCommand(): void {\n this.ensureMounted();\n // Mutual exclusion: close page when opening command\n this.store.setState({\n commandOpen: true,\n pageOpen: false,\n });\n }\n\n openPage(dir?: string): void {\n this.ensureMounted();\n // Mutual exclusion: close command when opening page\n this.store.setState({\n pageOpen: true,\n commandOpen: false,\n pageDir: dir ?? null,\n });\n }\n\n openComponent(id: string): void {\n this.ensureMounted();\n this.store.setState({\n componentOpen: true,\n componentTargetId: id,\n commandOpen: false,\n pageOpen: false,\n });\n }\n\n openUi(filePath: string): void {\n this.ensureMounted();\n this.store.setState({\n uiOpen: true,\n uiFilePath: filePath,\n commandOpen: false,\n pageOpen: false,\n componentOpen: false,\n });\n }\n\n openFeedback(id: string): void {\n this.ensureMounted();\n this.store.setState({\n feedbackOpen: true,\n feedbackTargetId: id,\n });\n }\n\n closeAll(): void {\n this.store.setState({\n commandOpen: false,\n pageOpen: false,\n feedbackOpen: false,\n componentOpen: false,\n uiOpen: false,\n feedbackTargetId: null,\n componentTargetId: null,\n uiFilePath: null,\n });\n }\n\n isOpen(): boolean {\n const state = this.store.getState();\n return state.commandOpen || state.pageOpen || state.feedbackOpen || state.componentOpen || state.uiOpen;\n }\n\n destroy(): void {\n this.closeAll();\n const root = this.root;\n const host = this.host;\n this.root = null;\n this.host = null;\n if (root) {\n queueMicrotask(() => root.unmount());\n }\n if (host?.parentNode) {\n host.parentNode.removeChild(host);\n }\n }\n\n private ensureMounted(): void {\n if (this.root) return;\n\n const target = this.container ?? document.body;\n this.host = document.createElement('div');\n target.appendChild(this.host);\n this.root = createRoot(this.host);\n this.render();\n }\n\n private render(): void {\n if (!this.root) return;\n this.root.render(\n createElement(DialogHost, {\n store: this.store,\n options: this.options,\n container: this.container,\n }),\n );\n }\n}\n\n// Keep backward-compatible export name\nexport { ModalManager as Modal };\n","import { useSyncExternalStore } from 'react';\nimport type { ModalData, ModalOptions } from './modal/store';\nimport { CommandPalette } from './command-palette/CommandPalette';\nimport { PageDialog } from './page-dialog/PageDialog';\nimport { FeedbackDialog } from './feedback-dialog/FeedbackDialog';\nimport { ComponentDialog } from './component-dialog/ComponentDialog';\nimport { FeatureDialog } from './feature-dialog/FeatureDialog';\nimport { UiDialog } from './ui-dialog/UiDialog';\n\nexport type NavigationEntry =\n | { type: 'component'; id: string }\n | { type: 'page'; dir: string }\n | { type: 'feature'; dir: string }\n | { type: 'ui'; filePath: string };\n\nexport interface DialogHostState {\n commandOpen: boolean;\n pageOpen: boolean;\n feedbackOpen: boolean;\n componentOpen: boolean;\n featureOpen: boolean;\n uiOpen: boolean;\n feedbackTargetId: string | null;\n componentTargetId: string | null;\n pageDir: string | null;\n featureDir: string | null;\n uiFilePath: string | null;\n navigationHistory: NavigationEntry[];\n data: ModalData;\n}\n\nconst DEFAULT_DATA: ModalData = {\n pages: [],\n features: [],\n components: {},\n presentIds: new Set(),\n blockContainment: new Map(),\n uiComponents: new Map(),\n};\n\nexport function createDialogStore() {\n let state: DialogHostState = {\n commandOpen: false,\n pageOpen: false,\n feedbackOpen: false,\n componentOpen: false,\n featureOpen: false,\n uiOpen: false,\n feedbackTargetId: null,\n componentTargetId: null,\n pageDir: null,\n featureDir: null,\n uiFilePath: null,\n navigationHistory: [],\n data: DEFAULT_DATA,\n };\n\n const listeners = new Set<() => void>();\n\n function getState(): DialogHostState {\n return state;\n }\n\n function setState(partial: Partial<DialogHostState>) {\n const keys = Object.keys(partial) as (keyof DialogHostState)[];\n const changed = keys.some((k) => partial[k] !== state[k]);\n if (!changed) return;\n state = { ...state, ...partial };\n listeners.forEach((l) => l());\n }\n\n function subscribe(listener: () => void) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }\n\n return { getState, setState, subscribe };\n}\n\nexport type DialogStore = ReturnType<typeof createDialogStore>;\n\nfunction useDialogStore(store: DialogStore): DialogHostState {\n return useSyncExternalStore(store.subscribe, store.getState);\n}\n\ninterface DialogHostProps {\n store: DialogStore;\n options: ModalOptions;\n container?: HTMLElement | null;\n}\n\nexport function DialogHost({ store, options, container }: DialogHostProps) {\n const state = useDialogStore(store);\n\n const handleCloseCommand = () => {\n store.setState({ commandOpen: false, navigationHistory: [] });\n };\n\n const handleClosePage = () => {\n store.setState({ pageOpen: false, navigationHistory: [] });\n };\n\n const handleCloseFeedback = () => {\n store.setState({ feedbackOpen: false, feedbackTargetId: null, navigationHistory: [] });\n };\n\n const handleCloseComponent = () => {\n store.setState({ componentOpen: false, componentTargetId: null, navigationHistory: [] });\n };\n\n const handleCloseFeature = () => {\n store.setState({ featureOpen: false, featureDir: null, navigationHistory: [] });\n };\n\n const handleCloseUi = () => {\n store.setState({ uiOpen: false, uiFilePath: null, navigationHistory: [] });\n };\n\n // Capture current dialog as a navigation entry for the back stack\n const getCurrentEntry = (): NavigationEntry | null => {\n const s = store.getState();\n if (s.componentOpen && s.componentTargetId) return { type: 'component', id: s.componentTargetId };\n if (s.pageOpen && s.pageDir) return { type: 'page', dir: s.pageDir };\n if (s.featureOpen && s.featureDir) return { type: 'feature', dir: s.featureDir };\n if (s.uiOpen && s.uiFilePath) return { type: 'ui', filePath: s.uiFilePath };\n return null;\n };\n\n const closeAllDialogs = {\n commandOpen: false,\n pageOpen: false,\n feedbackOpen: false,\n componentOpen: false,\n featureOpen: false,\n uiOpen: false,\n feedbackTargetId: null,\n componentTargetId: null,\n pageDir: null,\n featureDir: null,\n uiFilePath: null,\n };\n\n const handleOpenComponent = (id: string) => {\n const current = getCurrentEntry();\n const history = current\n ? [...store.getState().navigationHistory, current]\n : store.getState().navigationHistory;\n store.setState({\n ...closeAllDialogs,\n componentOpen: true,\n componentTargetId: id,\n navigationHistory: history,\n });\n };\n\n const handleOpenPage = (dir: string) => {\n const current = getCurrentEntry();\n const history = current\n ? [...store.getState().navigationHistory, current]\n : store.getState().navigationHistory;\n store.setState({\n ...closeAllDialogs,\n pageOpen: true,\n pageDir: dir,\n navigationHistory: history,\n });\n };\n\n const handleOpenFeature = (dir: string) => {\n const current = getCurrentEntry();\n const history = current\n ? [...store.getState().navigationHistory, current]\n : store.getState().navigationHistory;\n store.setState({\n ...closeAllDialogs,\n featureOpen: true,\n featureDir: dir,\n navigationHistory: history,\n });\n };\n\n const handleOpenUi = (filePath: string) => {\n const current = getCurrentEntry();\n const history = current\n ? [...store.getState().navigationHistory, current]\n : store.getState().navigationHistory;\n store.setState({\n ...closeAllDialogs,\n uiOpen: true,\n uiFilePath: filePath,\n navigationHistory: history,\n });\n };\n\n // @ts-expect-error scaffolded for dialog back-button wiring — unused until dialog back-buttons are wired\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const handleBack = () => {\n const history = [...store.getState().navigationHistory];\n const prev = history.pop();\n if (!prev) return;\n const base = { ...closeAllDialogs, navigationHistory: history };\n switch (prev.type) {\n case 'component':\n store.setState({ ...base, componentOpen: true, componentTargetId: prev.id });\n break;\n case 'page':\n store.setState({ ...base, pageOpen: true, pageDir: prev.dir });\n break;\n case 'feature':\n store.setState({ ...base, featureOpen: true, featureDir: prev.dir });\n break;\n case 'ui':\n store.setState({ ...base, uiOpen: true, uiFilePath: prev.filePath });\n break;\n }\n };\n\n return (\n <>\n {state.commandOpen && (\n <CommandPalette\n open={state.commandOpen}\n onClose={handleCloseCommand}\n data={state.data}\n onSelectComponent={handleOpenComponent}\n onLocate={options.onLocate}\n onOpenFeature={handleOpenFeature}\n container={container}\n />\n )}\n {state.pageOpen && state.data.pages.length > 0 && (\n <PageDialog\n open={state.pageOpen}\n onClose={handleClosePage}\n data={state.data}\n initialPageDir={state.pageDir}\n onSelectComponent={handleOpenComponent}\n onOpenFeature={handleOpenFeature}\n container={container}\n />\n )}\n {state.componentOpen && state.componentTargetId && (\n <ComponentDialog\n open={state.componentOpen}\n onClose={handleCloseComponent}\n targetId={state.componentTargetId}\n data={state.data}\n onSelectComponent={handleOpenComponent}\n onOpenPage={handleOpenPage}\n onOpenFeature={handleOpenFeature}\n container={container}\n />\n )}\n {state.featureOpen && state.featureDir && (\n <FeatureDialog\n open={state.featureOpen}\n onClose={handleCloseFeature}\n featureDir={state.featureDir}\n data={state.data}\n onSelectComponent={handleOpenComponent}\n onOpenPage={handleOpenPage}\n container={container}\n />\n )}\n {state.uiOpen && state.uiFilePath && (\n <UiDialog\n open={state.uiOpen}\n onClose={handleCloseUi}\n filePath={state.uiFilePath}\n data={state.data}\n onSelectComponent={handleOpenComponent}\n onOpenFeature={handleOpenFeature}\n onOpenPage={handleOpenPage}\n onOpenUi={handleOpenUi}\n container={container}\n />\n )}\n {state.feedbackOpen && state.feedbackTargetId && (\n <FeedbackDialog\n open={state.feedbackOpen}\n onClose={handleCloseFeedback}\n targetId={state.feedbackTargetId}\n data={state.data}\n options={options}\n container={container}\n />\n )}\n </>\n );\n}\n","import { useState, useMemo, useCallback, useRef } from 'react';\nimport type { ModalData } from '../modal/store';\nimport {\n CommandDialog,\n CommandDialogPopup,\n Command,\n CommandInput,\n CommandPanel,\n CommandList,\n CommandGroup,\n CommandGroupLabel,\n CommandItem,\n CommandEmpty,\n CommandFooter,\n CommandSeparator,\n} from '../coss/command';\nimport { BoxIcon, BlocksIcon, SparklesIcon } from 'lucide-react';\nimport { cn, humanizeId } from '../utils';\n\ninterface CommandPaletteProps {\n open: boolean;\n onClose: () => void;\n data: ModalData;\n onSelectComponent: (id: string) => void;\n onLocate?: (id: string) => void;\n onOpenFeature: (dir: string) => void;\n container?: HTMLElement | null;\n}\n\ninterface PaletteItem {\n value: string;\n label: string;\n present: boolean;\n}\n\nexport function CommandPalette({\n open,\n onClose,\n data,\n onSelectComponent,\n onLocate,\n onOpenFeature,\n container,\n}: CommandPaletteProps) {\n const [query, setQuery] = useState('');\n const shiftHeldRef = useRef(false);\n\n const { componentItems, blockItems, featureItems } = useMemo(() => {\n const componentItems: PaletteItem[] = [];\n const blockItems: PaletteItem[] = [];\n const featureItems: PaletteItem[] = [];\n\n for (const id of Object.keys(data.components)) {\n const kind = data.components[id]?.[0]?.kind;\n const item: PaletteItem = {\n value: id,\n label: humanizeId(id),\n present: data.presentIds.has(id),\n };\n if (kind === 'block') {\n blockItems.push(item);\n } else {\n componentItems.push(item);\n }\n }\n\n for (const feature of data.features) {\n featureItems.push({\n value: `feature:${feature.dir}`,\n label: feature.title,\n present: true,\n });\n }\n\n return { componentItems, blockItems, featureItems };\n }, [data]);\n\n const filtered = useMemo(() => {\n const q = query.toLowerCase();\n const filter = (items: PaletteItem[]) =>\n q ? items.filter((i) => i.label.toLowerCase().includes(q)) : items;\n return {\n componentItems: filter(componentItems),\n blockItems: filter(blockItems),\n featureItems: filter(featureItems),\n };\n }, [componentItems, blockItems, featureItems, query]);\n\n const hasResults =\n filtered.componentItems.length > 0 ||\n filtered.blockItems.length > 0 ||\n filtered.featureItems.length > 0;\n\n const handleValueChange = useCallback(\n (value: string | null) => {\n if (!value) return;\n if (value.startsWith('feature:')) {\n const dir = value.slice('feature:'.length);\n onOpenFeature(dir);\n return;\n }\n if (shiftHeldRef.current && onLocate) {\n onLocate(value);\n onClose();\n return;\n }\n onSelectComponent(value);\n },\n [onOpenFeature, onSelectComponent, onLocate, onClose],\n );\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n shiftHeldRef.current = e.shiftKey;\n }, []);\n\n const handleItemClick = useCallback((value: string, e: React.MouseEvent) => {\n shiftHeldRef.current = e.shiftKey;\n handleValueChange(value);\n }, [handleValueChange]);\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen) {\n onClose();\n setQuery('');\n }\n };\n\n return (\n <CommandDialog open={open} onOpenChange={handleOpenChange}>\n <CommandDialogPopup container={container}>\n <Command onValueChange={handleValueChange}>\n <CommandInput\n placeholder=\"Search components, blocks, features...\"\n value={query}\n onChange={(e) => setQuery((e.target as HTMLInputElement).value)}\n onKeyDown={handleKeyDown}\n />\n\n <CommandPanel>\n <CommandList>\n {!hasResults && (\n <CommandEmpty>No results found.</CommandEmpty>\n )}\n\n {filtered.componentItems.length > 0 && (\n <CommandGroup>\n <CommandGroupLabel>Components</CommandGroupLabel>\n {filtered.componentItems.map((item) => (\n <CommandItem\n key={item.value}\n value={item.value}\n className={cn(!item.present && 'opacity-50')}\n onClick={(e) => handleItemClick(item.value, e)}\n >\n <BoxIcon className=\"size-4 shrink-0\" />\n {item.label}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n\n {filtered.blockItems.length > 0 && (\n <>\n {filtered.componentItems.length > 0 && (\n <CommandSeparator />\n )}\n <CommandGroup>\n <CommandGroupLabel>Blocks</CommandGroupLabel>\n {filtered.blockItems.map((item) => (\n <CommandItem\n key={item.value}\n value={item.value}\n className={cn(!item.present && 'opacity-50')}\n onClick={(e) => handleItemClick(item.value, e)}\n >\n <BlocksIcon className=\"size-4 shrink-0\" />\n {item.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </>\n )}\n\n {filtered.featureItems.length > 0 && (\n <>\n {(filtered.componentItems.length > 0 ||\n filtered.blockItems.length > 0) && <CommandSeparator />}\n <CommandGroup>\n <CommandGroupLabel>Features</CommandGroupLabel>\n {filtered.featureItems.map((item) => (\n <CommandItem\n key={item.value}\n value={item.value}\n onClick={(e) => handleItemClick(item.value, e)}\n >\n <SparklesIcon className=\"size-4 shrink-0\" />\n {item.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </>\n )}\n </CommandList>\n </CommandPanel>\n\n <CommandFooter>\n <span className=\"inline-flex items-center gap-1.5\">\n <kbd className=\"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border/50 px-1 font-mono text-[10px]\">\n ↑↓\n </kbd>\n Navigate\n </span>\n <span className=\"inline-flex items-center gap-1.5\">\n <kbd className=\"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border/50 px-1 font-mono text-[10px]\">\n ↵\n </kbd>\n Select\n </span>\n {onLocate && (\n <span className=\"inline-flex items-center gap-1.5\">\n <kbd className=\"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border/50 px-1 font-mono text-[10px]\">\n ⇧↵\n </kbd>\n Locate\n </span>\n )}\n <span className=\"inline-flex items-center gap-1.5\">\n <kbd className=\"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border/50 px-1 font-mono text-[10px]\">\n Esc\n </kbd>\n Close\n </span>\n </CommandFooter>\n </Command>\n </CommandDialogPopup>\n </CommandDialog>\n );\n}\n","\"use client\";\n\nimport { Dialog as CommandDialogPrimitive } from \"@base-ui/react/dialog\";\nimport { SearchIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils\";\nimport {\n Autocomplete,\n AutocompleteCollection,\n AutocompleteEmpty,\n AutocompleteGroup,\n AutocompleteGroupLabel,\n AutocompleteInput,\n AutocompleteItem,\n AutocompleteList,\n AutocompleteSeparator,\n} from \"./autocomplete\";\n\nexport const CommandDialog: typeof CommandDialogPrimitive.Root =\n CommandDialogPrimitive.Root;\n\nexport const CommandDialogPortal: typeof CommandDialogPrimitive.Portal =\n CommandDialogPrimitive.Portal;\n\nexport const CommandCreateHandle: typeof CommandDialogPrimitive.createHandle =\n CommandDialogPrimitive.createHandle;\n\nexport function CommandDialogTrigger(\n props: CommandDialogPrimitive.Trigger.Props,\n): React.ReactElement {\n return (\n <CommandDialogPrimitive.Trigger\n data-slot=\"command-dialog-trigger\"\n {...props}\n />\n );\n}\n\nexport function CommandDialogBackdrop({\n className,\n ...props\n}: CommandDialogPrimitive.Backdrop.Props): React.ReactElement {\n return (\n <CommandDialogPrimitive.Backdrop\n className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0\",\n className,\n )}\n data-slot=\"command-dialog-backdrop\"\n {...props}\n />\n );\n}\n\nexport function CommandDialogViewport({\n className,\n ...props\n}: CommandDialogPrimitive.Viewport.Props): React.ReactElement {\n return (\n <CommandDialogPrimitive.Viewport\n className={cn(\n \"fixed inset-0 z-50 flex flex-col items-center px-4 py-[max(--spacing(4),4vh)] sm:py-[10vh]\",\n className,\n )}\n data-slot=\"command-dialog-viewport\"\n {...props}\n />\n );\n}\n\nexport function CommandDialogPopup({\n className,\n children,\n container,\n ...props\n}: CommandDialogPrimitive.Popup.Props & {\n container?: HTMLElement | null;\n}): React.ReactElement {\n return (\n <CommandDialogPortal container={container}>\n <CommandDialogBackdrop />\n <CommandDialogViewport>\n <CommandDialogPrimitive.Popup\n className={cn(\n \"relative row-start-2 flex max-h-105 min-h-0 w-full min-w-0 max-w-xl -translate-y-[calc(1.25rem*var(--nested-dialogs))] scale-[calc(1-0.1*var(--nested-dialogs))] flex-col rounded-2xl border bg-popover not-dark:bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg/5 outline-none transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:bg-muted/72 before:shadow-[0_1px_--theme(--color-black/4%)] data-nested:data-ending-style:translate-y-8 data-nested:data-starting-style:translate-y-8 data-nested-dialog-open:origin-top data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 **:data-[slot=scroll-area-viewport]:data-has-overflow-y:pe-1 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n data-slot=\"command-dialog-popup\"\n {...props}\n >\n {children}\n </CommandDialogPrimitive.Popup>\n </CommandDialogViewport>\n </CommandDialogPortal>\n );\n}\n\nexport function Command({\n autoHighlight = \"always\",\n keepHighlight = true,\n ...props\n}: React.ComponentProps<typeof Autocomplete>): React.ReactElement {\n return (\n <Autocomplete\n autoHighlight={autoHighlight}\n inline\n keepHighlight={keepHighlight}\n open\n {...props}\n />\n );\n}\n\nexport function CommandInput({\n className,\n placeholder = undefined,\n ...props\n}: React.ComponentProps<typeof AutocompleteInput>): React.ReactElement {\n return (\n <div className=\"px-2.5 py-1.5\">\n <AutocompleteInput\n autoFocus\n className={cn(\n \"border-transparent! bg-transparent! shadow-none before:hidden has-focus-visible:ring-0\",\n className,\n )}\n placeholder={placeholder}\n size=\"lg\"\n startAddon={<SearchIcon />}\n {...props}\n />\n </div>\n );\n}\n\nexport function CommandList({\n className,\n ...props\n}: Omit<React.ComponentProps<typeof AutocompleteList>, 'children'> & {\n children?: React.ReactNode | ((item: any, index: number) => React.ReactNode);\n}): React.ReactElement {\n return (\n <AutocompleteList\n className={cn(\"not-empty:scroll-py-2 not-empty:p-2\", className)}\n data-slot=\"command-list\"\n {...props}\n />\n );\n}\n\nexport function CommandEmpty({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteEmpty>): React.ReactElement {\n return (\n <AutocompleteEmpty\n className={cn(\"not-empty:py-6\", className)}\n data-slot=\"command-empty\"\n {...props}\n />\n );\n}\n\nexport function CommandPanel({\n className,\n ...props\n}: React.ComponentProps<\"div\">): React.ReactElement {\n return (\n <div\n className={cn(\n \"relative -mx-px not-has-[+[data-slot=command-footer]]:-mb-px min-h-0 rounded-t-xl not-has-[+[data-slot=command-footer]]:rounded-b-2xl border border-b-0 bg-popover bg-clip-padding shadow-xs/5 [clip-path:inset(0_1px)] not-has-[+[data-slot=command-footer]]:[clip-path:inset(0_1px_1px_1px_round_0_0_calc(var(--radius-2xl)-1px)_calc(var(--radius-2xl)-1px))] before:pointer-events-none before:absolute before:inset-0 before:rounded-t-[calc(var(--radius-xl)-1px)] **:data-[slot=scroll-area-scrollbar]:mt-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteGroup> & {\n items?: readonly any[];\n}): React.ReactElement {\n return (\n <AutocompleteGroup\n className={className}\n data-slot=\"command-group\"\n {...props}\n />\n );\n}\n\nexport function CommandGroupLabel({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteGroupLabel>): React.ReactElement {\n return (\n <AutocompleteGroupLabel\n className={className}\n data-slot=\"command-group-label\"\n {...props}\n />\n );\n}\n\nexport function CommandCollection({\n ...props\n}: React.ComponentProps<typeof AutocompleteCollection> & {\n children?: React.ReactNode | ((item: any, index: number) => React.ReactNode);\n}): React.ReactElement {\n return <AutocompleteCollection data-slot=\"command-collection\" {...props} />;\n}\n\nexport function CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteItem>): React.ReactElement {\n return (\n <AutocompleteItem\n className={cn(\"gap-2 py-1.5\", className)}\n data-slot=\"command-item\"\n {...props}\n />\n );\n}\n\nexport function CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompleteSeparator>): React.ReactElement {\n return (\n <AutocompleteSeparator\n className={cn(\"my-2\", className)}\n data-slot=\"command-separator\"\n {...props}\n />\n );\n}\n\nexport function CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"kbd\">): React.ReactElement {\n return (\n <kbd\n className={cn(\n \"ms-auto font-medium font-sans text-muted-foreground/72 text-xs tracking-widest\",\n className,\n )}\n data-slot=\"command-shortcut\"\n {...props}\n />\n );\n}\n\nexport function CommandFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">): React.ReactElement {\n return (\n <div\n className={cn(\n \"flex items-center justify-between gap-2 rounded-b-[calc(var(--radius-2xl)-1px)] border-t px-5 py-3 text-muted-foreground text-xs\",\n className,\n )}\n data-slot=\"command-footer\"\n {...props}\n />\n );\n}\n\nexport { CommandDialogPrimitive };\n","\"use client\";\n\nimport { Autocomplete as AutocompletePrimitive } from \"@base-ui/react/autocomplete\";\nimport { ChevronsUpDownIcon, XIcon } from \"lucide-react\";\nimport type React from \"react\";\nimport { cn } from \"../utils\";\nimport { Input } from \"./input\";\nimport { ScrollArea } from \"./scroll-area\";\n\nexport const Autocomplete: typeof AutocompletePrimitive.Root =\n AutocompletePrimitive.Root;\n\nexport function AutocompleteInput({\n className,\n showTrigger = false,\n showClear = false,\n startAddon,\n size,\n triggerProps,\n clearProps,\n ...props\n}: Omit<AutocompletePrimitive.Input.Props, \"size\"> & {\n showTrigger?: boolean;\n showClear?: boolean;\n startAddon?: React.ReactNode;\n size?: \"sm\" | \"default\" | \"lg\" | number;\n ref?: React.Ref<HTMLInputElement>;\n triggerProps?: AutocompletePrimitive.Trigger.Props;\n clearProps?: AutocompletePrimitive.Clear.Props;\n}): React.ReactElement {\n const sizeValue = (size ?? \"default\") as \"sm\" | \"default\" | \"lg\" | number;\n\n return (\n <AutocompletePrimitive.InputGroup\n className=\"relative not-has-[>*.w-full]:w-fit w-full text-foreground has-disabled:opacity-64\"\n data-slot=\"autocomplete-input-group\"\n >\n {startAddon && (\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-y-0 start-px z-10 flex items-center ps-[calc(--spacing(3)-1px)] opacity-80 has-[+[data-size=sm]]:ps-[calc(--spacing(2.5)-1px)] [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:-mx-0.5\"\n data-slot=\"autocomplete-start-addon\"\n >\n {startAddon}\n </div>\n )}\n <AutocompletePrimitive.Input\n className={cn(\n startAddon &&\n \"data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7.5)-1px)] *:data-[slot=autocomplete-input]:ps-[calc(--spacing(8.5)-1px)] sm:data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7)-1px)] sm:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(8)-1px)]\",\n sizeValue === \"sm\"\n ? \"has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-6.5\"\n : \"has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-7\",\n className,\n )}\n data-slot=\"autocomplete-input\"\n render={<Input nativeInput size={sizeValue} />}\n {...props}\n />\n {showTrigger && (\n <AutocompleteTrigger\n className={cn(\n \"absolute top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-colors pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n sizeValue === \"sm\" ? \"end-0\" : \"end-0.5\",\n )}\n {...triggerProps}\n >\n <AutocompletePrimitive.Icon data-slot=\"autocomplete-icon\">\n <ChevronsUpDownIcon />\n </AutocompletePrimitive.Icon>\n </AutocompleteTrigger>\n )}\n {showClear && (\n <AutocompleteClear\n className={cn(\n \"absolute top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-colors pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=autocomplete-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n sizeValue === \"sm\" ? \"end-0\" : \"end-0.5\",\n )}\n {...clearProps}\n >\n <XIcon />\n </AutocompleteClear>\n )}\n </AutocompletePrimitive.InputGroup>\n );\n}\n\nexport function AutocompletePopup({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n alignOffset,\n align = \"start\",\n anchor,\n ...props\n}: AutocompletePrimitive.Popup.Props & {\n align?: AutocompletePrimitive.Positioner.Props[\"align\"];\n sideOffset?: AutocompletePrimitive.Positioner.Props[\"sideOffset\"];\n alignOffset?: AutocompletePrimitive.Positioner.Props[\"alignOffset\"];\n side?: AutocompletePrimitive.Positioner.Props[\"side\"];\n anchor?: AutocompletePrimitive.Positioner.Props[\"anchor\"];\n}): React.ReactElement {\n return (\n <AutocompletePrimitive.Portal>\n <AutocompletePrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"z-50 select-none\"\n data-slot=\"autocomplete-positioner\"\n side={side}\n sideOffset={sideOffset}\n >\n <span\n className={cn(\n \"relative flex max-h-full min-w-(--anchor-width) max-w-(--available-width) origin-(--transform-origin) rounded-lg border bg-popover not-dark:bg-clip-padding shadow-lg/5 transition-[scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n )}\n >\n <AutocompletePrimitive.Popup\n className=\"flex max-h-[min(var(--available-height),23rem)] flex-1 flex-col text-foreground\"\n data-slot=\"autocomplete-popup\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Popup>\n </span>\n </AutocompletePrimitive.Positioner>\n </AutocompletePrimitive.Portal>\n );\n}\n\nexport function AutocompleteItem({\n className,\n children,\n ...props\n}: AutocompletePrimitive.Item.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Item\n className={cn(\n \"flex min-h-8 cursor-default select-none items-center rounded-sm px-2 py-1 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm\",\n className,\n )}\n data-slot=\"autocomplete-item\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Item>\n );\n}\n\nexport function AutocompleteSeparator({\n className,\n ...props\n}: AutocompletePrimitive.Separator.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Separator\n className={cn(\"mx-2 my-1 h-px bg-border last:hidden\", className)}\n data-slot=\"autocomplete-separator\"\n {...props}\n />\n );\n}\n\nexport function AutocompleteGroup({\n className,\n ...props\n}: AutocompletePrimitive.Group.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Group\n className={cn(\"[[role=group]+&]:mt-1.5\", className)}\n data-slot=\"autocomplete-group\"\n {...props}\n />\n );\n}\n\nexport function AutocompleteGroupLabel({\n className,\n ...props\n}: AutocompletePrimitive.GroupLabel.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.GroupLabel\n className={cn(\n \"px-2 py-1.5 font-medium text-muted-foreground text-xs\",\n className,\n )}\n data-slot=\"autocomplete-group-label\"\n {...props}\n />\n );\n}\n\nexport function AutocompleteEmpty({\n className,\n ...props\n}: AutocompletePrimitive.Empty.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Empty\n className={cn(\n \"not-empty:p-2 text-center text-base text-muted-foreground sm:text-sm\",\n className,\n )}\n data-slot=\"autocomplete-empty\"\n {...props}\n />\n );\n}\n\nexport function AutocompleteRow({\n className,\n ...props\n}: AutocompletePrimitive.Row.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Row\n className={className}\n data-slot=\"autocomplete-row\"\n {...props}\n />\n );\n}\n\nexport function AutocompleteValue({\n ...props\n}: AutocompletePrimitive.Value.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Value data-slot=\"autocomplete-value\" {...props} />\n );\n}\n\nexport function AutocompleteList({\n className,\n ...props\n}: AutocompletePrimitive.List.Props): React.ReactElement {\n return (\n <ScrollArea scrollbarGutter scrollFade>\n <AutocompletePrimitive.List\n className={cn(\n \"not-empty:scroll-py-1 not-empty:p-1 in-data-has-overflow-y:pe-3\",\n className,\n )}\n data-slot=\"autocomplete-list\"\n {...props}\n />\n </ScrollArea>\n );\n}\n\nexport function AutocompleteClear({\n className,\n ...props\n}: AutocompletePrimitive.Clear.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Clear\n className={cn(\n \"absolute end-0.5 top-1/2 inline-flex size-8 shrink-0 -translate-y-1/2 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-[color,background-color,box-shadow,opacity] pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"autocomplete-clear\"\n {...props}\n >\n <XIcon />\n </AutocompletePrimitive.Clear>\n );\n}\n\nexport function AutocompleteStatus({\n className,\n ...props\n}: AutocompletePrimitive.Status.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Status\n className={cn(\n \"px-3 py-2 font-medium text-muted-foreground text-xs empty:m-0 empty:p-0\",\n className,\n )}\n data-slot=\"autocomplete-status\"\n {...props}\n />\n );\n}\n\nexport function AutocompleteCollection({\n ...props\n}: AutocompletePrimitive.Collection.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Collection\n data-slot=\"autocomplete-collection\"\n {...props}\n />\n );\n}\n\nexport function AutocompleteTrigger({\n className,\n children,\n ...props\n}: AutocompletePrimitive.Trigger.Props): React.ReactElement {\n return (\n <AutocompletePrimitive.Trigger\n className={className}\n data-slot=\"autocomplete-trigger\"\n {...props}\n >\n {children}\n </AutocompletePrimitive.Trigger>\n );\n}\n\nexport const useAutocompleteFilter: typeof AutocompletePrimitive.useFilter =\n AutocompletePrimitive.useFilter;\n\nexport { AutocompletePrimitive };\n","\"use client\";\n\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport type InputProps = Omit<\n InputPrimitive.Props & React.RefAttributes<HTMLInputElement>,\n \"size\"\n> & {\n size?: \"sm\" | \"default\" | \"lg\" | number;\n unstyled?: boolean;\n nativeInput?: boolean;\n};\n\nexport function Input({\n className,\n size = \"default\",\n unstyled = false,\n nativeInput = false,\n ...props\n}: InputProps): React.ReactElement {\n const inputClassName = cn(\n \"h-8.5 w-full min-w-0 rounded-[inherit] px-[calc(--spacing(3)-1px)] leading-8.5 outline-none [transition:background-color_5000000s_ease-in-out_0s] placeholder:text-muted-foreground/72 sm:h-7.5 sm:leading-7.5\",\n size === \"sm\" &&\n \"h-7.5 px-[calc(--spacing(2.5)-1px)] leading-7.5 sm:h-6.5 sm:leading-6.5\",\n size === \"lg\" && \"h-9.5 leading-9.5 sm:h-8.5 sm:leading-8.5\",\n props.type === \"search\" &&\n \"[&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-decoration]:appearance-none [&::-webkit-search-results-button]:appearance-none [&::-webkit-search-results-decoration]:appearance-none\",\n props.type === \"file\" &&\n \"text-muted-foreground file:me-3 file:bg-transparent file:font-medium file:text-foreground file:text-sm\",\n );\n\n return (\n <span\n className={\n cn(\n !unstyled &&\n \"relative inline-flex w-full rounded-lg border border-input bg-background not-dark:bg-clip-padding text-base text-foreground shadow-xs/5 ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-has-disabled:not-has-focus-visible:not-has-aria-invalid:before:shadow-[0_1px_--theme(--color-black/4%)] has-focus-visible:has-aria-invalid:border-destructive/64 has-focus-visible:has-aria-invalid:ring-destructive/16 has-aria-invalid:border-destructive/36 has-focus-visible:border-ring has-autofill:bg-foreground/4 has-disabled:opacity-64 has-[:disabled,:focus-visible,[aria-invalid]]:shadow-none has-focus-visible:ring-[3px] sm:text-sm dark:bg-input/32 dark:has-autofill:bg-foreground/8 dark:has-aria-invalid:ring-destructive/24 dark:not-has-disabled:not-has-focus-visible:not-has-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n ) || undefined\n }\n data-size={size}\n data-slot=\"input-control\"\n >\n {nativeInput ? (\n <input\n className={inputClassName}\n data-slot=\"input\"\n size={typeof size === \"number\" ? size : undefined}\n {...props}\n />\n ) : (\n <InputPrimitive\n className={inputClassName}\n data-slot=\"input\"\n size={typeof size === \"number\" ? size : undefined}\n {...props}\n />\n )}\n </span>\n );\n}\n\nexport { InputPrimitive };\n","\"use client\";\n\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\";\nimport type React from \"react\";\nimport { cn } from \"../utils\";\n\nexport function ScrollArea({\n className,\n children,\n scrollFade = false,\n scrollbarGutter = false,\n ...props\n}: ScrollAreaPrimitive.Root.Props & {\n scrollFade?: boolean;\n scrollbarGutter?: boolean;\n}): React.ReactElement {\n return (\n <ScrollAreaPrimitive.Root\n className={cn(\"size-full min-h-0\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n className={cn(\n \"h-full rounded-[inherit] outline-none transition-shadows focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-has-overflow-y:overscroll-y-contain data-has-overflow-x:overscroll-x-contain\",\n scrollFade &&\n \"mask-t-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-start)))] mask-b-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-end)))] mask-l-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-start)))] mask-r-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-end)))] [--fade-size:1.5rem]\",\n scrollbarGutter &&\n \"data-has-overflow-y:pe-2.5 data-has-overflow-x:pb-2.5\",\n )}\n data-slot=\"scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar orientation=\"vertical\" />\n <ScrollBar orientation=\"horizontal\" />\n <ScrollAreaPrimitive.Corner data-slot=\"scroll-area-corner\" />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nexport function ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props): React.ReactElement {\n return (\n <ScrollAreaPrimitive.Scrollbar\n className={cn(\n \"m-1 flex opacity-0 transition-opacity delay-300 data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 data-[orientation=horizontal]:flex-col data-hovering:opacity-100 data-scrolling:opacity-100 data-hovering:delay-0 data-scrolling:delay-0 data-hovering:duration-100 data-scrolling:duration-100\",\n className,\n )}\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n className=\"relative flex-1 rounded-full bg-foreground/20\"\n data-slot=\"scroll-area-thumb\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\nexport { ScrollAreaPrimitive };\n","import { useState, useMemo } from 'react';\nimport { CopyIcon, CheckIcon } from 'lucide-react';\nimport type { ModalData } from '../modal/store';\nimport { formatPageDir } from '../modal/store';\nimport {\n Dialog,\n DialogPopup,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogPanel,\n} from '../coss/dialog';\nimport { Button } from '../coss/button';\nimport {\n InputGroup,\n InputGroupInput,\n InputGroupAddon,\n} from '../coss/input-group';\nimport { MarkdownContent } from '../shared/MarkdownContent';\nimport { FeatureChips, ChipSection, EntityIcon } from '../shared/chips';\n\ninterface PageDialogProps {\n open: boolean;\n onClose: () => void;\n data: ModalData;\n initialPageDir?: string | null;\n onSelectComponent: (id: string) => void;\n onOpenFeature: (dir: string) => void;\n container?: HTMLElement | null;\n}\n\nfunction getBestMatchPage(data: ModalData) {\n if (data.pages.length === 0) return null;\n\n let best = data.pages[0];\n let bestCount = -1;\n for (const page of data.pages) {\n const count = page.componentIds.filter((id) =>\n data.presentIds.has(id),\n ).length;\n if (count > bestCount) {\n bestCount = count;\n best = page;\n }\n }\n return best;\n}\n\nexport function PageDialog({\n open,\n onClose,\n data,\n initialPageDir,\n onSelectComponent,\n onOpenFeature,\n container,\n}: PageDialogProps) {\n const page = useMemo(() => {\n if (initialPageDir) {\n return data.pages.find((p) => p.dir === initialPageDir) ?? getBestMatchPage(data);\n }\n return getBestMatchPage(data);\n }, [data, initialPageDir]);\n\n const [copied, setCopied] = useState(false);\n\n if (!page) return null;\n\n const pageDir = formatPageDir(page.dir);\n const pageComponentSet = new Set(page.componentIds);\n const relatedFeatures = data.features.filter((f) =>\n f.componentIds.some((cid) => pageComponentSet.has(cid)),\n );\n const pageBlockIds = page.componentIds.filter(\n (id) => data.components[id]?.[0]?.kind === 'block',\n );\n const pageComponentIds = page.componentIds.filter(\n (id) => data.components[id]?.[0]?.kind !== 'block',\n );\n\n const description = page.description;\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen) onClose();\n };\n\n const handleCopyPath = () => {\n navigator.clipboard.writeText(pageDir).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n }).catch(() => {});\n };\n\n return (\n <Dialog open={open} onOpenChange={handleOpenChange}>\n <DialogPopup container={container}>\n <DialogHeader>\n <DialogTitle className=\"flex items-center gap-2\">\n <EntityIcon kind=\"page\" />\n {page.title}\n </DialogTitle>\n {description && (\n <DialogDescription>{description}</DialogDescription>\n )}\n </DialogHeader>\n\n <DialogPanel>\n <InputGroup>\n <InputGroupInput\n readOnly\n value={pageDir}\n className=\"font-mono text-xs\"\n size=\"sm\"\n />\n <InputGroupAddon align=\"inline-end\">\n <Button\n size=\"icon\"\n variant=\"ghost\"\n aria-label=\"Copy page path\"\n onClick={handleCopyPath}\n >\n {copied ? <CheckIcon /> : <CopyIcon />}\n </Button>\n </InputGroupAddon>\n </InputGroup>\n\n {page.content.trim() && (\n <div className=\"mt-4\">\n <MarkdownContent content={page.content} skipDescription />\n </div>\n )}\n\n {relatedFeatures.length > 0 && (\n <FeatureChips\n features={relatedFeatures}\n onFeatureClick={onOpenFeature}\n />\n )}\n\n {pageBlockIds.length > 0 && (\n <ChipSection\n label=\"Blocks\"\n ids={pageBlockIds}\n variant=\"blocks\"\n presentIds={data.presentIds}\n onComponentClick={onSelectComponent}\n />\n )}\n\n {pageComponentIds.length > 0 && (\n <ChipSection\n label=\"Components\"\n ids={pageComponentIds}\n variant=\"components\"\n presentIds={data.presentIds}\n onComponentClick={onSelectComponent}\n />\n )}\n </DialogPanel>\n </DialogPopup>\n </Dialog>\n );\n}\n","import type {\n UidexMap,\n UidexPage,\n UidexFeature,\n PrimitiveEntry,\n IngestConfig,\n FeedbackReport,\n FeedbackResult,\n ConsoleLogEntry,\n NetworkErrorEntry,\n} from '../../core/types';\n\nexport type ModalPage = UidexPage & { title: string; description?: string };\nexport type ModalFeature = UidexFeature & { title: string };\n\nexport interface ModalData {\n pages: ModalPage[];\n features: ModalFeature[];\n components: UidexMap;\n presentIds: Set<string>;\n blockContainment: Map<string, string[]>;\n uiComponents: Map<string, PrimitiveEntry>;\n}\n\nexport interface ModalOptions {\n onComponentNavigate?: (id: string) => void;\n onLocate?: (id: string) => void;\n elementGetter?: (id: string) => Element | null;\n ingest?: IngestConfig;\n onSubmit?: (report: FeedbackReport, result: FeedbackResult) => void;\n sessionId?: string;\n getConsoleLogs?: () => ConsoleLogEntry[];\n getNetworkErrors?: () => NetworkErrorEntry[];\n}\n\nexport function formatPageDir(dir: string): string {\n const parts = dir.split('/');\n const route = parts.slice(1).join('/');\n return '/' + route;\n}\n","\"use client\";\n\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\";\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { XIcon } from \"lucide-react\";\nimport type React from \"react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"./button\";\nimport { ScrollArea } from \"./scroll-area\";\n\nexport const DialogCreateHandle: typeof DialogPrimitive.createHandle =\n DialogPrimitive.createHandle;\n\nexport const Dialog: typeof DialogPrimitive.Root = DialogPrimitive.Root;\n\nexport const DialogPortal: typeof DialogPrimitive.Portal =\n DialogPrimitive.Portal;\n\nexport function DialogTrigger(\n props: DialogPrimitive.Trigger.Props,\n): React.ReactElement {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nexport function DialogClose(\n props: DialogPrimitive.Close.Props,\n): React.ReactElement {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nexport function DialogBackdrop({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props): React.ReactElement {\n return (\n <DialogPrimitive.Backdrop\n className={cn(\n \"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0\",\n className,\n )}\n data-slot=\"dialog-backdrop\"\n {...props}\n />\n );\n}\n\nexport function DialogViewport({\n className,\n ...props\n}: DialogPrimitive.Viewport.Props): React.ReactElement {\n return (\n <DialogPrimitive.Viewport\n className={cn(\n \"fixed inset-0 z-50 grid grid-rows-[1fr_auto_3fr] justify-items-center p-4\",\n className,\n )}\n data-slot=\"dialog-viewport\"\n {...props}\n />\n );\n}\n\nexport function DialogPopup({\n className,\n children,\n showCloseButton = true,\n bottomStickOnMobile = true,\n closeProps,\n container,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean;\n bottomStickOnMobile?: boolean;\n closeProps?: DialogPrimitive.Close.Props;\n container?: HTMLElement | null;\n}): React.ReactElement {\n return (\n <DialogPortal container={container}>\n <DialogBackdrop />\n <DialogViewport\n className={cn(\n bottomStickOnMobile &&\n \"max-sm:grid-rows-[1fr_auto] max-sm:p-0 max-sm:pt-12\",\n )}\n >\n <DialogPrimitive.Popup\n className={cn(\n \"relative row-start-2 flex max-h-full min-h-0 w-full min-w-0 max-w-lg origin-center flex-col rounded-2xl border bg-popover not-dark:bg-clip-padding text-popover-foreground opacity-[calc(1-var(--nested-dialogs))] shadow-lg/5 outline-none transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] data-ending-style:opacity-0 data-starting-style:opacity-0 sm:scale-[calc(1-0.1*var(--nested-dialogs))] sm:data-ending-style:scale-98 sm:data-starting-style:scale-98 dark:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n bottomStickOnMobile &&\n \"max-sm:max-w-none max-sm:origin-bottom max-sm:rounded-none max-sm:border-x-0 max-sm:border-t max-sm:border-b-0 max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 max-sm:before:hidden max-sm:before:rounded-none\",\n className,\n )}\n data-slot=\"dialog-popup\"\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n aria-label=\"Close\"\n className=\"absolute end-2 top-2\"\n render={<Button size=\"icon\" variant=\"ghost\" />}\n {...closeProps}\n >\n <XIcon />\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogViewport>\n </DialogPortal>\n );\n}\n\nexport function DialogHeader({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">): React.ReactElement {\n const defaultProps = {\n className: cn(\n \"flex flex-col gap-2 p-6 in-[[data-slot=dialog-popup]:has([data-slot=dialog-panel])]:pb-3 max-sm:pb-4\",\n className,\n ),\n \"data-slot\": \"dialog-header\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nexport function DialogFooter({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & {\n variant?: \"default\" | \"bare\";\n}): React.ReactElement {\n const defaultProps = {\n className: cn(\n \"flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end sm:rounded-b-[calc(var(--radius-2xl)-1px)]\",\n variant === \"default\" && \"border-t bg-muted/72 py-4\",\n variant === \"bare\" &&\n \"in-[[data-slot=dialog-popup]:has([data-slot=dialog-panel])]:pt-3 pt-4 pb-6\",\n className,\n ),\n \"data-slot\": \"dialog-footer\",\n };\n\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n });\n}\n\nexport function DialogTitle({\n className,\n ...props\n}: DialogPrimitive.Title.Props): React.ReactElement {\n return (\n <DialogPrimitive.Title\n className={cn(\n \"font-heading font-semibold text-xl leading-none\",\n className,\n )}\n data-slot=\"dialog-title\"\n {...props}\n />\n );\n}\n\nexport function DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props): React.ReactElement {\n return (\n <DialogPrimitive.Description\n className={cn(\"text-muted-foreground text-sm\", className)}\n data-slot=\"dialog-description\"\n {...props}\n />\n );\n}\n\nexport function DialogPanel({\n className,\n scrollFade = true,\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & {\n scrollFade?: boolean;\n}): React.ReactElement {\n const defaultProps = {\n className: cn(\n \"p-6 in-[[data-slot=dialog-popup]:has([data-slot=dialog-header])]:pt-1 in-[[data-slot=dialog-popup]:has([data-slot=dialog-footer]:not(.border-t))]:pb-1\",\n className,\n ),\n \"data-slot\": \"dialog-panel\",\n };\n\n return (\n <ScrollArea scrollFade={scrollFade}>\n {useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(defaultProps, props),\n render,\n })}\n </ScrollArea>\n );\n}\n\nexport {\n DialogPrimitive,\n DialogBackdrop as DialogOverlay,\n DialogPopup as DialogContent,\n};\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Spinner } from \"./spinner\";\n\nexport const buttonVariants = cva(\n \"relative inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-lg border font-medium text-base outline-none transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 data-loading:select-none data-loading:text-transparent sm:text-sm [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:-mx-0.5 [&_svg]:shrink-0\",\n {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n size: {\n default: \"h-9 px-[calc(--spacing(3)-1px)] sm:h-8\",\n icon: \"size-9 sm:size-8\",\n \"icon-lg\": \"size-10 sm:size-9\",\n \"icon-sm\": \"size-8 sm:size-7\",\n \"icon-xl\":\n \"size-11 sm:size-10 [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5\",\n \"icon-xs\":\n \"size-7 rounded-md before:rounded-[calc(var(--radius-md)-1px)] sm:size-6 not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-4 sm:not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-10 px-[calc(--spacing(3.5)-1px)] sm:h-9\",\n sm: \"h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:h-7\",\n xl: \"h-11 px-[calc(--spacing(4)-1px)] text-lg sm:h-10 sm:text-base [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5\",\n xs: \"h-7 gap-1 rounded-md px-[calc(--spacing(2)-1px)] text-sm before:rounded-[calc(var(--radius-md)-1px)] sm:h-6 sm:text-xs [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5\",\n },\n variant: {\n default:\n \"not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] border-primary bg-primary text-primary-foreground shadow-primary/24 shadow-xs hover:bg-primary/90 data-pressed:bg-primary/90 *:data-[slot=button-loading-indicator]:text-primary-foreground [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none\",\n destructive:\n \"not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] border-destructive bg-destructive text-white shadow-destructive/24 shadow-xs hover:bg-destructive/90 data-pressed:bg-destructive/90 *:data-[slot=button-loading-indicator]:text-white [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none\",\n \"destructive-outline\":\n \"border-input bg-popover not-dark:bg-clip-padding text-destructive-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] hover:border-destructive/32 hover:bg-destructive/4 data-pressed:border-destructive/32 data-pressed:bg-destructive/4 *:data-[slot=button-loading-indicator]:text-foreground dark:bg-input/32 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none\",\n ghost:\n \"border-transparent text-foreground hover:bg-accent data-pressed:bg-accent *:data-[slot=button-loading-indicator]:text-foreground\",\n link: \"border-transparent text-foreground underline-offset-4 hover:underline data-pressed:underline *:data-[slot=button-loading-indicator]:text-foreground\",\n outline:\n \"border-input bg-popover not-dark:bg-clip-padding text-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] hover:bg-accent/50 data-pressed:bg-accent/50 *:data-[slot=button-loading-indicator]:text-foreground dark:bg-input/32 dark:data-pressed:bg-input/64 dark:hover:bg-input/64 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/90 data-pressed:bg-secondary/90 *:data-[slot=button-loading-indicator]:text-secondary-foreground [:active,[data-pressed]]:bg-secondary/80\",\n },\n },\n },\n);\n\nexport interface ButtonProps extends useRender.ComponentProps<\"button\"> {\n variant?: VariantProps<typeof buttonVariants>[\"variant\"];\n size?: VariantProps<typeof buttonVariants>[\"size\"];\n loading?: boolean;\n}\n\nexport function Button({\n className,\n variant,\n size,\n render,\n children,\n loading = false,\n disabled: disabledProp,\n ...props\n}: ButtonProps): React.ReactElement {\n const isDisabled: boolean = Boolean(loading || disabledProp);\n const typeValue: React.ButtonHTMLAttributes<HTMLButtonElement>[\"type\"] =\n render ? undefined : \"button\";\n\n const defaultProps = {\n children: (\n <>\n {children}\n {loading && (\n <Spinner\n className=\"pointer-events-none absolute\"\n data-slot=\"button-loading-indicator\"\n />\n )}\n </>\n ),\n className: cn(buttonVariants({ className, size, variant })),\n \"aria-disabled\": loading || undefined,\n \"data-loading\": loading ? \"\" : undefined,\n \"data-slot\": \"button\",\n disabled: isDisabled,\n type: typeValue,\n };\n\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(defaultProps, props),\n render,\n });\n}\n","import { Loader2Icon } from \"lucide-react\";\nimport type React from \"react\";\nimport { cn } from \"../utils\";\n\nexport function Spinner({\n className,\n ...props\n}: React.ComponentProps<typeof Loader2Icon>): React.ReactElement {\n return (\n <Loader2Icon\n aria-label=\"Loading\"\n className={cn(\"animate-spin\", className)}\n role=\"status\"\n {...props}\n />\n );\n}\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Input, type InputProps } from \"./input\";\nimport { Textarea, type TextareaProps } from \"./textarea\";\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text select-none items-center justify-center gap-2 leading-none [&>kbd]:rounded-[calc(var(--radius)-5px)] in-[[data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control])]:[&_svg:not([class*='size-'])]:size-4.5 sm:in-[[data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control])]:[&_svg:not([class*='size-'])]:size-4 [&_svg]:-mx-0.5 not-has-[button]:**:[svg:not([class*='opacity-'])]:opacity-80\",\n {\n defaultVariants: {\n align: \"inline-start\",\n },\n variants: {\n align: {\n \"block-end\":\n \"order-last w-full justify-start px-[calc(--spacing(3)-1px)] pb-[calc(--spacing(3)-1px)] [.border-t]:pt-[calc(--spacing(3)-1px)] [[data-size=sm]+&]:px-[calc(--spacing(2.5)-1px)]\",\n \"block-start\":\n \"order-first w-full justify-start px-[calc(--spacing(3)-1px)] pt-[calc(--spacing(3)-1px)] [.border-b]:pb-[calc(--spacing(3)-1px)] [[data-size=sm]+&]:px-[calc(--spacing(2.5)-1px)]\",\n \"inline-end\":\n \"order-last pe-[calc(--spacing(3)-1px)] has-[>:last-child[data-slot=badge]]:-me-1.5 has-[>button]:-me-2 has-[>kbd:last-child]:me-[-0.35rem] [[data-size=sm]+&]:pe-[calc(--spacing(2.5)-1px)]\",\n \"inline-start\":\n \"order-first ps-[calc(--spacing(3)-1px)] has-[>:last-child[data-slot=badge]]:-ms-1.5 has-[>button]:-ms-2 has-[>kbd:last-child]:ms-[-0.35rem] [[data-size=sm]+&]:ps-[calc(--spacing(2.5)-1px)]\",\n },\n },\n },\n);\n\nexport function InputGroup({\n className,\n ...props\n}: React.ComponentProps<\"div\">): React.ReactElement {\n return (\n <div\n className={cn(\n \"relative inline-flex w-full min-w-0 items-center rounded-lg border border-input bg-background not-dark:bg-clip-padding text-base text-foreground shadow-xs/5 ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-has-[input:disabled,textarea:disabled]:not-has-[input:focus-visible,textarea:focus-visible]:not-has-[input[aria-invalid],textarea[aria-invalid]]:before:shadow-[0_1px_--theme(--color-black/4%)] has-[input:focus-visible,textarea:focus-visible]:has-[input[aria-invalid],textarea[aria-invalid]]:border-destructive/64 has-[input:focus-visible,textarea:focus-visible]:has-[input[aria-invalid],textarea[aria-invalid]]:ring-destructive/16 has-[textarea]:h-auto has-data-[align=block-end]:h-auto has-data-[align=block-start]:h-auto has-data-[align=block-end]:flex-col has-data-[align=block-start]:flex-col has-[input:focus-visible,textarea:focus-visible]:border-ring has-[input[aria-invalid],textarea[aria-invalid]]:border-destructive/36 has-autofill:bg-foreground/4 has-[input:disabled,textarea:disabled]:opacity-64 has-[input:disabled,textarea:disabled,input:focus-visible,textarea:focus-visible,input[aria-invalid],textarea[aria-invalid]]:shadow-none has-[input:focus-visible,textarea:focus-visible]:ring-[3px] sm:text-sm dark:bg-input/32 dark:has-autofill:bg-foreground/8 dark:has-[input[aria-invalid],textarea[aria-invalid]]:ring-destructive/24 dark:not-has-[input:disabled,textarea:disabled]:not-has-[input:focus-visible,textarea:focus-visible]:not-has-[input[aria-invalid],textarea[aria-invalid]]:before:shadow-[0_-1px_--theme(--color-white/6%)] has-data-[align=inline-start]:**:[[data-size=sm]_input]:ps-1.5 has-data-[align=inline-end]:**:[[data-size=sm]_input]:pe-1.5 *:[[data-slot=input-control],[data-slot=textarea-control]]:contents *:[[data-slot=input-control],[data-slot=textarea-control]]:before:hidden has-[[data-align=block-start],[data-align=block-end]]:**:[input]:h-auto has-data-[align=inline-start]:**:[input]:ps-2 has-data-[align=inline-end]:**:[input]:pe-2 has-data-[align=block-end]:**:[input]:pt-1.5 has-data-[align=block-start]:**:[input]:pb-1.5 **:[textarea]:min-h-20.5 **:[textarea]:resize-none **:[textarea]:py-[calc(--spacing(3)-1px)] **:[textarea]:max-sm:min-h-23.5 **:[textarea_button]:rounded-[calc(var(--radius-md)-1px)]\",\n className,\n )}\n data-slot=\"input-group\"\n role=\"group\"\n {...props}\n />\n );\n}\n\nexport function InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof inputGroupAddonVariants>): React.ReactElement {\n return (\n <div\n className={cn(inputGroupAddonVariants({ align }), className)}\n data-align={align}\n data-slot=\"input-group-addon\"\n onMouseDown={(e: React.MouseEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n const isInteractive = target.closest(\n \"button, a, input, select, textarea, [role='button'], [role='combobox'], [role='listbox'], [data-slot='select-trigger']\",\n );\n if (isInteractive) return;\n e.preventDefault();\n const parent = e.currentTarget.parentElement;\n const input = parent?.querySelector<\n HTMLInputElement | HTMLTextAreaElement\n >(\"input, textarea\");\n if (input && !parent?.querySelector(\"input:focus, textarea:focus\")) {\n input.focus();\n }\n }}\n {...props}\n />\n );\n}\n\nexport function InputGroupText({\n className,\n ...props\n}: React.ComponentProps<\"span\">): React.ReactElement {\n return (\n <span\n className={cn(\n \"line-clamp-1 flex items-center gap-2 whitespace-nowrap text-muted-foreground leading-none in-[[data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control])]:[&_svg:not([class*='size-'])]:size-4.5 sm:in-[[data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control])]:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:-mx-0.5\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function InputGroupInput({\n className,\n ...props\n}: InputProps): React.ReactElement {\n return <Input className={className} unstyled {...props} />;\n}\n\nexport function InputGroupTextarea({\n className,\n ...props\n}: TextareaProps): React.ReactElement {\n return <Textarea className={className} unstyled {...props} />;\n}\n","\"use client\";\n\nimport { Field as FieldPrimitive } from \"@base-ui/react/field\";\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport type * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport type TextareaProps = React.ComponentPropsWithoutRef<\"textarea\"> &\n React.RefAttributes<HTMLTextAreaElement> & {\n size?: \"sm\" | \"default\" | \"lg\" | number;\n unstyled?: boolean;\n };\n\nexport function Textarea({\n className,\n size = \"default\",\n unstyled = false,\n ref,\n ...props\n}: TextareaProps): React.ReactElement {\n return (\n <span\n className={\n cn(\n !unstyled &&\n \"relative inline-flex w-full rounded-lg border border-input bg-background not-dark:bg-clip-padding text-base text-foreground shadow-xs/5 ring-ring/24 transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] has-focus-visible:has-aria-invalid:border-destructive/64 has-focus-visible:has-aria-invalid:ring-destructive/16 has-aria-invalid:border-destructive/36 has-focus-visible:border-ring has-disabled:opacity-64 has-[:disabled,:focus-visible,[aria-invalid]]:shadow-none has-focus-visible:ring-[3px] not-has-disabled:has-not-focus-visible:not-has-aria-invalid:before:shadow-[0_1px_--theme(--color-black/4%)] sm:text-sm dark:bg-input/32 dark:has-aria-invalid:ring-destructive/24 dark:not-has-disabled:has-not-focus-visible:not-has-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)]\",\n className,\n ) || undefined\n }\n data-size={size}\n data-slot=\"textarea-control\"\n >\n <FieldPrimitive.Control\n ref={ref}\n value={props.value}\n defaultValue={props.defaultValue}\n disabled={props.disabled}\n id={props.id}\n name={props.name}\n render={(defaultProps: React.ComponentProps<\"textarea\">) => (\n <textarea\n className={cn(\n \"field-sizing-content min-h-17.5 w-full rounded-[inherit] px-[calc(--spacing(3)-1px)] py-[calc(--spacing(1.5)-1px)] outline-none max-sm:min-h-20.5\",\n size === \"sm\" &&\n \"min-h-16.5 px-[calc(--spacing(2.5)-1px)] py-[calc(--spacing(1)-1px)] max-sm:min-h-19.5\",\n size === \"lg\" &&\n \"min-h-18.5 py-[calc(--spacing(2)-1px)] max-sm:min-h-21.5\",\n )}\n data-slot=\"textarea\"\n {...mergeProps(defaultProps, props)}\n />\n )}\n />\n </span>\n );\n}\n\nexport { FieldPrimitive };\n","import { useState, useMemo } from 'react';\nimport { Checkbox } from '../coss/checkbox';\n\ninterface ParsedLine {\n type: 'heading' | 'checkbox' | 'bullet' | 'blockquote' | 'paragraph';\n text: string;\n level?: number;\n defaultChecked?: boolean;\n}\n\n/** Strip the leading blockquote (used as description) from content. */\nfunction stripLeadingBlockquote(content: string): string {\n const lines = content.split('\\n');\n let i = 0;\n // Skip blank lines at start\n while (i < lines.length && lines[i].trim() === '') i++;\n // Skip title heading if present\n if (i < lines.length && /^#\\s+/.test(lines[i])) i++;\n // Skip blank lines between title and blockquote\n while (i < lines.length && lines[i].trim() === '') i++;\n // Skip blockquote lines\n if (i < lines.length && (lines[i].startsWith('> ') || lines[i] === '>')) {\n while (i < lines.length && (lines[i].startsWith('> ') || lines[i] === '>')) i++;\n return lines.slice(i).join('\\n');\n }\n return content;\n}\n\nfunction parseLines(content: string, skipDescription: boolean): ParsedLine[] {\n const result: ParsedLine[] = [];\n const lines = (skipDescription ? stripLeadingBlockquote(content) : content).split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n const headingMatch = line.match(/^(#{1,4})\\s+(.+)/);\n if (headingMatch) {\n if (headingMatch[1].length === 1) continue;\n result.push({ type: 'heading', text: headingMatch[2], level: headingMatch[1].length });\n continue;\n }\n\n if (line.match(/^- \\[[ x]\\]/)) {\n result.push({\n type: 'checkbox',\n text: line.replace(/^- \\[[ x]\\]\\s*/, ''),\n defaultChecked: line.includes('[x]'),\n });\n continue;\n }\n\n if (line.startsWith('> ') || line === '>') {\n const parts: string[] = [];\n let j = i;\n while (j < lines.length && (lines[j].startsWith('> ') || lines[j] === '>')) {\n parts.push(lines[j] === '>' ? '' : lines[j].slice(2));\n j++;\n }\n result.push({ type: 'blockquote', text: parts.join(' ').trim() });\n i = j - 1;\n continue;\n }\n\n if (line.startsWith('- ')) {\n result.push({ type: 'bullet', text: line.slice(2) });\n continue;\n }\n\n if (line.trim()) {\n result.push({ type: 'paragraph', text: line });\n }\n }\n\n return result;\n}\n\nfunction CheckboxItem({ text, defaultChecked }: { text: string; defaultChecked: boolean }) {\n const [checked, setChecked] = useState(defaultChecked);\n return (\n <label className=\"flex items-center gap-2 py-0.5 cursor-pointer\">\n <Checkbox checked={checked} onCheckedChange={(v) => setChecked(v === true)} />\n <span className={checked ? 'text-sm text-muted-foreground line-through' : 'text-sm'}>\n {text}\n </span>\n </label>\n );\n}\n\nexport function MarkdownContent({ content, skipDescription }: { content: string; skipDescription?: boolean }) {\n const parsed = useMemo(() => parseLines(content, skipDescription ?? false), [content, skipDescription]);\n\n return (\n <div className=\"flex flex-col\">\n {parsed.map((line, i) => {\n switch (line.type) {\n case 'heading': {\n const Tag = `h${line.level}` as 'h2' | 'h3' | 'h4';\n const sizeClass =\n line.level === 2 ? 'text-lg font-semibold' :\n line.level === 3 ? 'text-base font-semibold' :\n 'text-sm font-semibold';\n return <Tag key={i} className={`${sizeClass} mt-4 mb-1`}>{line.text}</Tag>;\n }\n case 'checkbox':\n return <CheckboxItem key={i} text={line.text} defaultChecked={line.defaultChecked!} />;\n case 'blockquote':\n return (\n <blockquote key={i} className=\"border-l-2 border-border pl-3 py-0.5 text-sm italic text-muted-foreground\">\n {line.text}\n </blockquote>\n );\n case 'bullet':\n return (\n <div key={i} className=\"text-sm pl-4 py-0.5 before:content-['·'] before:absolute before:left-1.5 relative\">\n {line.text}\n </div>\n );\n case 'paragraph':\n return <p key={i} className=\"text-sm text-foreground py-0.5\">{line.text}</p>;\n }\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\";\nimport type React from \"react\";\nimport { cn } from \"../utils\";\n\nexport function Checkbox({\n className,\n ...props\n}: CheckboxPrimitive.Root.Props): React.ReactElement {\n return (\n <CheckboxPrimitive.Root\n className={cn(\n \"relative inline-flex size-4.5 shrink-0 items-center justify-center rounded-[.25rem] border border-input bg-background not-dark:bg-clip-padding shadow-xs/5 outline-none ring-ring transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[3px] not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_1px_--theme(--color-black/4%)] focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-offset-background aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/48 data-disabled:cursor-not-allowed data-disabled:opacity-64 sm:size-4 dark:not-data-checked:bg-input/32 dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)] [[data-disabled],[data-checked],[aria-invalid]]:shadow-none\",\n className,\n )}\n data-slot=\"checkbox\"\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className=\"absolute -inset-px flex items-center justify-center rounded-[.25rem] text-primary-foreground data-unchecked:hidden data-checked:bg-primary data-indeterminate:text-foreground\"\n data-slot=\"checkbox-indicator\"\n render={(\n props: React.ComponentProps<\"span\">,\n state: CheckboxPrimitive.Indicator.State,\n ) => (\n <span {...props}>\n {state.indeterminate ? (\n <svg\n aria-hidden=\"true\"\n className=\"size-3.5 sm:size-3\"\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M5.252 12h13.496\" />\n </svg>\n ) : (\n <svg\n aria-hidden=\"true\"\n className=\"size-3.5 sm:size-3\"\n fill=\"none\"\n height=\"24\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M5.252 12.7 10.2 18.63 18.748 5.37\" />\n </svg>\n )}\n </span>\n )}\n />\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { CheckboxPrimitive };\n","import { useState } from 'react';\nimport { CopyIcon, CheckIcon, BoxIcon, BlocksIcon, SparklesIcon, FileTextIcon, PaletteIcon } from 'lucide-react';\nimport { Badge, type BadgeProps } from '../coss/badge';\nimport { Button } from '../coss/button';\nimport {\n InputGroup,\n InputGroupInput,\n InputGroupAddon,\n} from '../coss/input-group';\nimport { cn, humanizeId } from '../utils';\n\nexport function stripScopePrefix(scope: string): string {\n const idx = scope.indexOf(':');\n return idx >= 0 ? scope.substring(idx + 1) : scope;\n}\n\nexport function CodeBlock({ text }: { text: string }) {\n return (\n <span className=\"text-sm text-muted-foreground\">{text}</span>\n );\n}\n\nexport function SourceRow({ filePath, line }: { filePath: string; line: number }) {\n const [copied, setCopied] = useState(false);\n const text = `${filePath}:${line}`;\n\n const handleCopy = () => {\n navigator.clipboard.writeText(text).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n }).catch(() => {});\n };\n\n return (\n <InputGroup>\n <InputGroupInput\n readOnly\n value={text}\n className=\"font-mono text-xs\"\n size=\"sm\"\n />\n <InputGroupAddon align=\"inline-end\">\n <Button\n size=\"icon\"\n variant=\"ghost\"\n aria-label=\"Copy\"\n onClick={handleCopy}\n >\n {copied ? <CheckIcon /> : <CopyIcon />}\n </Button>\n </InputGroupAddon>\n </InputGroup>\n );\n}\n\nexport function EnvironmentSection() {\n const viewport = `${window.innerWidth} \\u00d7 ${window.innerHeight} viewport`;\n const url = window.location.hostname + window.location.pathname;\n const browserName = /Firefox/.test(navigator.userAgent)\n ? 'Firefox'\n : /Edg/.test(navigator.userAgent)\n ? 'Edge'\n : /Chrome/.test(navigator.userAgent)\n ? 'Chrome'\n : /Safari/.test(navigator.userAgent)\n ? 'Safari'\n : 'Unknown';\n\n return (\n <div className=\"flex flex-col gap-1 mt-3\">\n <span className=\"text-xs font-medium text-muted-foreground\">Environment</span>\n {[viewport, browserName, url].map((item, i) => (\n <span key={i} className=\"text-sm text-muted-foreground\">{item}</span>\n ))}\n </div>\n );\n}\n\nexport type EntityKind = 'component' | 'block' | 'feature' | 'page' | 'primitive';\n\nconst entityIcons: Record<EntityKind, React.ComponentType<{ className?: string }>> = {\n component: BoxIcon,\n block: BlocksIcon,\n feature: SparklesIcon,\n page: FileTextIcon,\n primitive: PaletteIcon,\n};\n\nconst entitySquareClasses: Record<EntityKind, string> = {\n component: 'bg-info/8 text-info-foreground dark:bg-info/16',\n block: 'bg-purple/8 text-purple-foreground dark:bg-purple/16',\n feature: 'bg-warning/8 text-warning-foreground dark:bg-warning/16',\n page: 'bg-success/8 text-success-foreground dark:bg-success/16',\n primitive: 'bg-accent/8 text-accent-foreground dark:bg-accent/16',\n};\n\nexport interface EntityBadgeProps extends Omit<BadgeProps, 'variant'> {\n kind: EntityKind;\n}\n\nexport function EntityBadge({ kind, children, ...props }: EntityBadgeProps) {\n const Icon = entityIcons[kind];\n return (\n <Badge variant={kind} {...props}>\n <Icon />\n {children}\n </Badge>\n );\n}\n\n/** Themed square icon for dialog headers. */\nexport function EntityIcon({ kind, className }: { kind: EntityKind; className?: string }) {\n const Icon = entityIcons[kind];\n return (\n <div className={cn('flex size-7 shrink-0 items-center justify-center rounded-sm', entitySquareClasses[kind], className)}>\n <Icon className=\"size-4\" />\n </div>\n );\n}\n\nexport function FeatureChips({\n features,\n onFeatureClick,\n}: {\n features: { title: string; dir: string }[];\n onFeatureClick: (dir: string) => void;\n}) {\n return (\n <div className=\"flex flex-col gap-1.5 mt-2\">\n <span className=\"text-xs font-medium text-muted-foreground\">Features</span>\n <div className=\"flex flex-wrap gap-1.5\">\n {features.map((f) => (\n <EntityBadge\n key={f.dir}\n kind=\"feature\"\n render={<button type=\"button\" />}\n onClick={() => onFeatureClick(f.dir)}\n >\n {f.title}\n </EntityBadge>\n ))}\n </div>\n </div>\n );\n}\n\nexport function ChipSection({\n label,\n ids,\n variant,\n presentIds,\n onComponentClick,\n}: {\n label: string;\n ids: string[];\n variant: 'blocks' | 'components';\n presentIds: Set<string>;\n onComponentClick: (id: string) => void;\n}) {\n return (\n <div className=\"flex flex-col gap-1.5 mt-2\">\n <span className=\"text-xs font-medium text-muted-foreground\">{label}</span>\n <div className=\"flex flex-wrap gap-1.5\">\n {ids.map((id) => (\n <EntityBadge\n key={id}\n kind={variant === 'blocks' ? 'block' : 'component'}\n render={<button type=\"button\" />}\n className={!presentIds.has(id) ? 'opacity-50' : ''}\n onClick={() => onComponentClick(id)}\n >\n {humanizeId(id)}\n </EntityBadge>\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type React from \"react\";\nimport { cn } from \"../utils\";\n\nexport const badgeVariants = cva(\n \"relative inline-flex shrink-0 items-center justify-center gap-1 whitespace-nowrap rounded-sm border border-transparent font-medium outline-none transition-shadow focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-3.5 sm:[&_svg:not([class*='size-'])]:size-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [button&,a&]:cursor-pointer [button&,a&]:pointer-coarse:after:absolute [button&,a&]:pointer-coarse:after:size-full [button&,a&]:pointer-coarse:after:min-h-11 [button&,a&]:pointer-coarse:after:min-w-11\",\n {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n size: {\n default:\n \"h-5.5 min-w-5.5 px-[calc(--spacing(1)-1px)] text-sm sm:h-4.5 sm:min-w-4.5 sm:text-xs\",\n lg: \"h-6.5 min-w-6.5 px-[calc(--spacing(1.5)-1px)] text-base sm:h-5.5 sm:min-w-5.5 sm:text-sm\",\n sm: \"h-5 min-w-5 rounded-[.25rem] px-[calc(--spacing(1)-1px)] text-xs sm:h-4 sm:min-w-4 sm:text-[.625rem]\",\n },\n variant: {\n default:\n \"bg-primary text-primary-foreground [button&,a&]:hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white [button&,a&]:hover:bg-destructive/90\",\n error:\n \"bg-destructive/8 text-destructive-foreground dark:bg-destructive/16\",\n info: \"bg-info/8 text-info-foreground dark:bg-info/16\",\n outline:\n \"border-input bg-background text-foreground dark:bg-input/32 [button&,a&]:hover:bg-accent/50 dark:[button&,a&]:hover:bg-input/48\",\n secondary:\n \"bg-secondary text-secondary-foreground [button&,a&]:hover:bg-secondary/90\",\n success: \"bg-success/8 text-success-foreground dark:bg-success/16\",\n warning: \"bg-warning/8 text-warning-foreground dark:bg-warning/16\",\n\n // Entity-type variants\n component: \"bg-info/8 text-info-foreground dark:bg-info/16\",\n block: \"bg-purple/8 text-purple-foreground dark:bg-purple/16\",\n feature: \"bg-warning/8 text-warning-foreground dark:bg-warning/16\",\n page: \"bg-success/8 text-success-foreground dark:bg-success/16\",\n primitive: \"bg-accent/8 text-accent-foreground dark:bg-accent/16\",\n },\n },\n },\n);\n\nexport interface BadgeProps extends useRender.ComponentProps<\"span\"> {\n variant?: VariantProps<typeof badgeVariants>[\"variant\"];\n size?: VariantProps<typeof badgeVariants>[\"size\"];\n}\n\nexport function Badge({\n className,\n variant,\n size,\n render,\n ...props\n}: BadgeProps): React.ReactElement {\n const defaultProps = {\n className: cn(badgeVariants({ className, size, variant })),\n \"data-slot\": \"badge\",\n };\n\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(defaultProps, props),\n render,\n });\n}\n","import { useState, useRef } from 'react';\nimport type {\n FeedbackReport,\n FeedbackType,\n FeedbackSeverity,\n} from '../../core/types';\nimport { submitFeedback } from '../../core/ingest';\nimport type { ModalData, ModalOptions } from '../modal/store';\nimport {\n captureElementScreenshot,\n collectEnv,\n describeElement,\n} from '../modal/feedback-utils';\nimport {\n Dialog,\n DialogPopup,\n DialogHeader,\n DialogTitle,\n DialogPanel,\n DialogFooter,\n} from '../coss/dialog';\nimport { Input } from '../coss/input';\nimport { Textarea } from '../coss/textarea';\nimport { Button } from '../coss/button';\nimport { Checkbox } from '../coss/checkbox';\nimport { Separator } from '../coss/separator';\nimport { EntityBadge } from '../shared/chips';\nimport { humanizeId } from '../utils';\n\ninterface FeedbackDialogProps {\n open: boolean;\n onClose: () => void;\n targetId: string;\n data: ModalData;\n options: ModalOptions;\n container?: HTMLElement | null;\n}\n\nexport function FeedbackDialog({\n open,\n onClose,\n targetId,\n data,\n options,\n container,\n}: FeedbackDialogProps) {\n const locations = data.components[targetId] ?? [];\n const kind = (locations[0]?.kind ?? 'component') as 'component' | 'block';\n const element = options.elementGetter?.(targetId) ?? null;\n\n const [type, setType] = useState<FeedbackType>('bug');\n const [severity, setSeverity] = useState<FeedbackSeverity>('medium');\n const [title, setTitle] = useState('');\n const [description, setDescription] = useState('');\n const [reporterName, setReporterName] = useState('');\n const [reporterEmail, setReporterEmail] = useState('');\n const [includeScreenshot, setIncludeScreenshot] = useState(true);\n const [submitState, setSubmitState] = useState<\n 'idle' | 'capturing' | 'submitting' | 'success' | 'error'\n >('idle');\n const descRef = useRef<HTMLTextAreaElement>(null);\n\n const showReporterFields = options.ingest && !options.ingest.reporter;\n\n const handleSubmit = async () => {\n if (!description.trim()) {\n descRef.current?.focus();\n return;\n }\n\n setSubmitState('capturing');\n\n let screenshot: string | undefined;\n if (includeScreenshot) {\n const freshElement =\n options.elementGetter?.(targetId) ?? element;\n if (freshElement) {\n screenshot =\n (await captureElementScreenshot(freshElement)) ?? undefined;\n }\n }\n\n const env = collectEnv();\n const page = data.pages.find((p) =>\n p.componentIds.includes(targetId),\n );\n const { ingest } = options;\n\n const resolvedEmail =\n ingest?.reporter?.email || reporterEmail.trim() || undefined;\n const resolvedName =\n ingest?.reporter?.name || reporterName.trim() || undefined;\n const titleValue = title.trim();\n\n const report: FeedbackReport = {\n type,\n severity,\n ...(titleValue ? { title: titleValue } : {}),\n description: description.trim(),\n componentId: targetId,\n element: element ? describeElement(element) : null,\n sources: locations.map((l) => ({\n filePath: l.filePath,\n line: l.line,\n })),\n url: env.url,\n path: window.location.pathname,\n route: page?.dir ?? null,\n timestamp: new Date().toISOString(),\n pageTitle: document.title,\n ...(page?.description ? { pageDescription: page.description } : {}),\n locale: navigator.language,\n sessionId: options.sessionId ?? '',\n viewport: env.viewport,\n screen: env.screen,\n userAgent: env.userAgent,\n screenshot,\n ...(resolvedEmail ? { reporterEmail: resolvedEmail } : {}),\n ...(resolvedName ? { reporterName: resolvedName } : {}),\n ...(ingest?.environment\n ? { environment: ingest.environment }\n : {}),\n ...(ingest?.appVersion ? { appVersion: ingest.appVersion } : {}),\n ...(ingest?.metadata ? { metadata: ingest.metadata } : {}),\n };\n\n const consoleLogs = options.getConsoleLogs?.();\n if (consoleLogs && consoleLogs.length > 0) {\n report.consoleLogs = consoleLogs;\n }\n const networkErrors = options.getNetworkErrors?.();\n if (networkErrors && networkErrors.length > 0) {\n report.networkErrors = networkErrors;\n }\n\n if (ingest) {\n setSubmitState('submitting');\n try {\n const serverResult = await submitFeedback(\n ingest.endpoint,\n ingest.apiKey,\n report,\n );\n options.onSubmit?.(report, {\n ok: true,\n id: serverResult.id,\n sequenceNumber: serverResult.sequenceNumber,\n });\n setSubmitState('success');\n setTimeout(() => onClose(), 1500);\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : 'Unknown error';\n console.warn(\n '[uidex] Feedback submission failed:',\n errorMessage,\n );\n options.onSubmit?.(report, { ok: false, error: errorMessage });\n setSubmitState('error');\n }\n } else {\n if (!options.onSubmit) {\n console.log('[uidex] Feedback submitted:', report);\n }\n options.onSubmit?.(report, { ok: true, id: '', sequenceNumber: 0 });\n setSubmitState('success');\n }\n };\n\n const buttonLabel =\n submitState === 'capturing'\n ? 'Capturing\\u2026'\n : submitState === 'submitting'\n ? 'Submitting\\u2026'\n : submitState === 'success'\n ? 'Submitted!'\n : submitState === 'error'\n ? 'Failed \\u2014 retry?'\n : 'Submit';\n\n const isDisabled =\n submitState === 'capturing' || submitState === 'submitting';\n\n // Context section\n const parentFeatures = data.features.filter((f) =>\n f.componentIds.includes(targetId),\n );\n const parentPage = data.pages.find((p) =>\n p.componentIds.includes(targetId),\n );\n const doc = locations.find((l) => l.doc)?.doc;\n const hasContext =\n parentFeatures.length > 0 || parentPage || doc;\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen) onClose();\n };\n\n return (\n <Dialog open={open} onOpenChange={handleOpenChange}>\n <DialogPopup container={container} showCloseButton>\n <DialogHeader>\n <div className=\"flex items-center gap-2\">\n <DialogTitle>Feedback</DialogTitle>\n <EntityBadge kind={kind} size=\"sm\">{humanizeId(targetId)}</EntityBadge>\n </div>\n </DialogHeader>\n\n <DialogPanel>\n {/* Context */}\n {parentFeatures.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5 mb-2\">\n {parentFeatures.map((f) => (\n <EntityBadge key={f.dir} kind=\"feature\">{f.title}</EntityBadge>\n ))}\n </div>\n )}\n {parentPage && (\n <div className=\"flex flex-wrap gap-1.5 mb-2\">\n <EntityBadge kind=\"page\">{parentPage.title}</EntityBadge>\n </div>\n )}\n {doc && <p className=\"text-sm text-muted-foreground mt-2\">{doc}</p>}\n {hasContext && <Separator className=\"my-3\" />}\n\n {/* Form */}\n <form\n className=\"flex flex-col gap-3\"\n onSubmit={(e) => e.preventDefault()}\n >\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-sm font-medium\">Type</label>\n <select\n className=\"h-8.5 w-full rounded-lg border border-input bg-background px-3 text-sm text-foreground shadow-xs/5 outline-none ring-ring/24 transition-shadow focus-visible:border-ring focus-visible:ring-[3px] sm:h-7.5\"\n value={type}\n onChange={(e) => setType(e.target.value as FeedbackType)}\n >\n <option value=\"bug\">Bug Report</option>\n <option value=\"feature\">Feature Request</option>\n <option value=\"improvement\">Improvement</option>\n <option value=\"question\">Question</option>\n </select>\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-sm font-medium\">Severity</label>\n <select\n className=\"h-8.5 w-full rounded-lg border border-input bg-background px-3 text-sm text-foreground shadow-xs/5 outline-none ring-ring/24 transition-shadow focus-visible:border-ring focus-visible:ring-[3px] sm:h-7.5\"\n value={severity}\n onChange={(e) =>\n setSeverity(e.target.value as FeedbackSeverity)\n }\n >\n <option value=\"low\">Low</option>\n <option value=\"medium\">Medium</option>\n <option value=\"high\">High</option>\n <option value=\"critical\">Critical</option>\n </select>\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-sm font-medium\">Title</label>\n <Input\n placeholder=\"Brief summary (optional)\"\n maxLength={200}\n value={title}\n onChange={(e) => setTitle((e.target as HTMLInputElement).value)}\n />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-sm font-medium\">Description</label>\n <Textarea\n ref={descRef}\n placeholder=\"Describe the issue or idea...\"\n rows={4}\n value={description}\n onChange={(e) => setDescription((e.target as HTMLTextAreaElement).value)}\n />\n </div>\n\n {showReporterFields && (\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-sm font-medium\">Reporter</label>\n <Input\n placeholder=\"Name (optional)\"\n value={reporterName}\n onChange={(e) => setReporterName((e.target as HTMLInputElement).value)}\n />\n <Input\n type=\"email\"\n placeholder=\"Email (optional)\"\n value={reporterEmail}\n onChange={(e) => setReporterEmail((e.target as HTMLInputElement).value)}\n />\n </div>\n )}\n\n <label className=\"inline-flex items-center gap-2 text-sm font-medium cursor-pointer\">\n <Checkbox\n checked={includeScreenshot}\n onCheckedChange={(checked) => setIncludeScreenshot(checked === true)}\n />\n Include screenshot\n </label>\n </form>\n </DialogPanel>\n\n <DialogFooter variant=\"bare\">\n <Button\n disabled={isDisabled}\n onClick={handleSubmit}\n >\n {buttonLabel}\n </Button>\n </DialogFooter>\n </DialogPopup>\n </Dialog>\n );\n}\n","import type { UidexMap, UidexPage, UidexFeature, GitContext } from './types';\n\nlet registeredComponents: UidexMap | null = null;\nlet registeredPages: UidexPage[] | null = null;\nlet registeredFeatures: UidexFeature[] | null = null;\nlet registeredGitContext: GitContext | null = null;\n\nexport function registerComponents(components: UidexMap): void {\n registeredComponents = components;\n}\n\nexport function getComponents(): UidexMap | null {\n return registeredComponents;\n}\n\nexport function registerPages(pages: UidexPage[]): void {\n registeredPages = pages;\n}\n\nexport function getPages(): UidexPage[] | null {\n return registeredPages;\n}\n\nexport function registerFeatures(features: UidexFeature[]): void {\n registeredFeatures = features;\n}\n\nexport function getFeatures(): UidexFeature[] | null {\n return registeredFeatures;\n}\n\nexport function registerGitContext(ctx: GitContext): void {\n registeredGitContext = ctx;\n}\n\nexport function getGitContext(): GitContext | null {\n return registeredGitContext;\n}\n","import type {\n ConsoleLogEntry,\n NetworkErrorEntry,\n FeedbackReport,\n} from './types';\nimport { getGitContext } from './registry';\n\nconst MAX_CONSOLE_LOGS = 50;\nconst MAX_NETWORK_ERRORS = 20;\n\n// Saved before any interception so submitFeedback always uses the real fetch.\nlet nativeFetch: typeof fetch | null = null;\n\nfunction safeStringify(value: unknown): string {\n if (typeof value === 'string') return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nexport class IngestCapture {\n private consoleLogs: ConsoleLogEntry[] = [];\n private networkErrors: NetworkErrorEntry[] = [];\n private originalConsoleWarn: typeof console.warn | null = null;\n private originalConsoleError: typeof console.error | null = null;\n private originalFetch: typeof fetch | null = null;\n\n constructor(\n private captureConsole: boolean,\n private captureNetwork: boolean\n ) {}\n\n start(): void {\n this.consoleLogs = [];\n this.networkErrors = [];\n if (this.captureConsole) this.interceptConsole();\n if (this.captureNetwork) this.interceptNetwork();\n }\n\n stop(): void {\n this.restoreConsole();\n this.restoreNetwork();\n }\n\n getConsoleLogs(): ConsoleLogEntry[] {\n return [...this.consoleLogs];\n }\n\n getNetworkErrors(): NetworkErrorEntry[] {\n return [...this.networkErrors];\n }\n\n private interceptConsole(): void {\n if (this.originalConsoleWarn) return;\n this.originalConsoleWarn = console.warn;\n this.originalConsoleError = console.error;\n\n console.warn = (...args: unknown[]) => {\n this.addConsoleLog('warn', args);\n this.originalConsoleWarn!.apply(console, args);\n };\n\n console.error = (...args: unknown[]) => {\n this.addConsoleLog('error', args);\n this.originalConsoleError!.apply(console, args);\n };\n }\n\n private addConsoleLog(level: 'warn' | 'error', args: unknown[]): void {\n this.consoleLogs.push({\n level,\n message: args.map(safeStringify).join(' '),\n timestamp: new Date().toISOString(),\n });\n if (this.consoleLogs.length > MAX_CONSOLE_LOGS) {\n this.consoleLogs.shift();\n }\n }\n\n private restoreConsole(): void {\n if (this.originalConsoleWarn) {\n console.warn = this.originalConsoleWarn;\n this.originalConsoleWarn = null;\n }\n if (this.originalConsoleError) {\n console.error = this.originalConsoleError;\n this.originalConsoleError = null;\n }\n }\n\n private interceptNetwork(): void {\n if (this.originalFetch) return;\n this.originalFetch = window.fetch;\n if (!nativeFetch) nativeFetch = this.originalFetch;\n\n window.fetch = async (...args: Parameters<typeof fetch>) => {\n try {\n const response = await this.originalFetch!.apply(window, args);\n if (!response.ok) {\n this.addNetworkError(\n args[0],\n args[1]?.method,\n response.status,\n response.statusText\n );\n }\n return response;\n } catch (error) {\n this.addNetworkError(\n args[0],\n args[1]?.method,\n null,\n error instanceof Error ? error.message : 'Network error'\n );\n throw error;\n }\n };\n }\n\n private addNetworkError(\n input: RequestInfo | URL,\n method: string | undefined,\n status: number | null,\n statusText: string\n ): void {\n let url: string;\n if (typeof input === 'string') {\n url = input;\n } else if (input instanceof URL) {\n url = input.href;\n } else {\n url = (input as Request).url;\n method ??= (input as Request).method;\n }\n this.networkErrors.push({\n url,\n method: method ?? 'GET',\n status,\n statusText,\n timestamp: new Date().toISOString(),\n });\n if (this.networkErrors.length > MAX_NETWORK_ERRORS) {\n this.networkErrors.shift();\n }\n }\n\n private restoreNetwork(): void {\n if (this.originalFetch) {\n window.fetch = this.originalFetch;\n this.originalFetch = null;\n }\n }\n}\n\nexport function generateSessionId(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nexport async function submitFeedback(\n endpoint: string,\n apiKey: string,\n report: FeedbackReport\n): Promise<{ id: string; sequenceNumber: number }> {\n // Enrich report with git context from registry if not explicitly set\n const gitCtx = getGitContext();\n const enriched = { ...report };\n if (gitCtx) {\n if (!enriched.gitBranch && gitCtx.branch) {\n enriched.gitBranch = gitCtx.branch;\n }\n if (!enriched.gitCommit && gitCtx.commit) {\n enriched.gitCommit = gitCtx.commit;\n }\n }\n\n // Use the native fetch to avoid self-capture by IngestCapture.\n const fetchFn = nativeFetch ?? fetch;\n const response = await fetchFn(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(enriched),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => '');\n throw new Error(`Ingest failed (${response.status}): ${text}`);\n }\n\n return response.json();\n}\n","const VISUAL_PROPS = [\n 'display', 'position', 'box-sizing', 'width', 'min-width', 'max-width',\n 'height', 'min-height', 'max-height', 'margin', 'padding', 'border',\n 'border-radius', 'overflow', 'flex-direction', 'flex-wrap', 'flex-grow',\n 'flex-shrink', 'flex-basis', 'align-items', 'justify-content', 'gap',\n 'grid-template-columns', 'grid-template-rows', 'grid-column', 'grid-row',\n 'color', 'background', 'background-color', 'background-image',\n 'font-family', 'font-size', 'font-weight', 'font-style', 'line-height',\n 'letter-spacing', 'text-align', 'text-decoration', 'text-transform',\n 'white-space', 'word-break', 'opacity', 'visibility', 'transform',\n 'box-shadow', 'text-shadow', 'vertical-align', 'list-style', 'text-overflow',\n];\n\nfunction inlineComputedStyles(source: Element, target: Element): void {\n if (source instanceof HTMLElement && target instanceof HTMLElement) {\n const computed = window.getComputedStyle(source);\n for (const prop of VISUAL_PROPS) {\n const value = computed.getPropertyValue(prop);\n if (value) {\n target.style.setProperty(prop, value);\n }\n }\n }\n const srcChildren = source.children;\n const tgtChildren = target.children;\n for (let i = 0; i < srcChildren.length; i++) {\n if (tgtChildren[i]) {\n inlineComputedStyles(srcChildren[i], tgtChildren[i]);\n }\n }\n}\n\nexport async function captureElementScreenshot(\n element: Element,\n): Promise<string | null> {\n try {\n const rect = element.getBoundingClientRect();\n const width = Math.ceil(rect.width);\n const height = Math.ceil(rect.height);\n if (width <= 0 || height <= 0 || width > 4096 || height > 4096)\n return null;\n\n const clone = element.cloneNode(true) as Element;\n inlineComputedStyles(element, clone);\n\n const wrapper = document.createElement('div');\n wrapper.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n wrapper.style.width = `${width}px`;\n wrapper.style.height = `${height}px`;\n wrapper.style.overflow = 'hidden';\n wrapper.appendChild(clone);\n\n const serialized = new XMLSerializer().serializeToString(wrapper);\n const svg =\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\">` +\n `<foreignObject width=\"100%\" height=\"100%\">` +\n serialized +\n `</foreignObject></svg>`;\n\n const img = new Image();\n img.src =\n 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg);\n\n return await Promise.race([\n new Promise<string | null>((resolve) => {\n img.onload = () => {\n try {\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n if (!ctx) return resolve(null);\n ctx.drawImage(img, 0, 0);\n resolve(canvas.toDataURL('image/png'));\n } catch {\n resolve(null);\n }\n };\n img.onerror = () => resolve(null);\n }),\n new Promise<null>((resolve) =>\n setTimeout(() => resolve(null), 5000),\n ),\n ]);\n } catch {\n return null;\n }\n}\n\nexport function collectEnv() {\n return {\n viewport: { width: window.innerWidth, height: window.innerHeight },\n screen: { width: screen.width, height: screen.height },\n userAgent: navigator.userAgent,\n browserName: getBrowserName(),\n url: window.location.href,\n };\n}\n\nfunction getBrowserName(): string {\n const ua = navigator.userAgent;\n if (ua.includes('Firefox/')) return 'Firefox';\n if (ua.includes('Edg/')) return 'Edge';\n if (ua.includes('Chrome/')) return 'Chrome';\n if (ua.includes('Safari/') && !ua.includes('Chrome')) return 'Safari';\n return 'Unknown browser';\n}\n\nexport function describeElement(element: Element): string {\n const tag = element.tagName.toLowerCase();\n const id = element.id ? `#${element.id}` : '';\n const classes = element.className\n ? `.${String(element.className).split(/\\s+/).join('.')}`\n : '';\n return `<${tag}${id}${classes}>`;\n}\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\nimport type React from \"react\";\nimport { cn } from \"../utils\";\n\nexport function Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props): React.ReactElement {\n return (\n <SeparatorPrimitive\n className={cn(\n \"shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:not-[[class^='h-']]:not-[[class*='_h-']]:self-stretch\",\n className,\n )}\n data-slot=\"separator\"\n orientation={orientation}\n {...props}\n />\n );\n}\n\nexport { SeparatorPrimitive };\n","import { useMemo } from 'react';\nimport type { ModalData } from '../modal/store';\nimport {\n Dialog,\n DialogPopup,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogPanel,\n} from '../coss/dialog';\nimport { FeatureChips, ChipSection, EntityBadge, EntityIcon, SourceRow, stripScopePrefix } from '../shared/chips';\nimport { humanizeId } from '../utils';\n\ninterface ComponentDialogProps {\n open: boolean;\n onClose: () => void;\n targetId: string;\n data: ModalData;\n onSelectComponent: (id: string) => void;\n onOpenPage: (dir: string) => void;\n onOpenFeature: (dir: string) => void;\n container?: HTMLElement | null;\n}\n\nexport function ComponentDialog({\n open,\n onClose,\n targetId,\n data,\n onSelectComponent,\n onOpenPage,\n onOpenFeature,\n container,\n}: ComponentDialogProps) {\n const locations = data.components[targetId] ?? [];\n const kind = locations[0]?.kind ?? 'component';\n const doc = locations[0]?.doc;\n const scopes = locations[0]?.scopes ?? [];\n const present = data.presentIds.has(targetId);\n\n const displayTitle = humanizeId(targetId);\n\n const parentFeatures = useMemo(\n () => data.features.filter((f) => f.componentIds.includes(targetId)),\n [data.features, targetId],\n );\n\n const parentPages = useMemo(\n () => data.pages.filter((p) => p.componentIds.includes(targetId)),\n [data.pages, targetId],\n );\n\n const blockChildren = useMemo(() => {\n if (kind !== 'block') return [];\n return data.blockContainment.get(targetId) ?? [];\n }, [kind, targetId, data.blockContainment]);\n\n const parentBlock = useMemo(() => {\n if (kind === 'block') return null;\n for (const [blockId, children] of data.blockContainment) {\n if (children.includes(targetId)) return blockId;\n }\n return null;\n }, [kind, targetId, data.blockContainment]);\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen) onClose();\n };\n\n return (\n <Dialog open={open} onOpenChange={handleOpenChange}>\n <DialogPopup container={container} className=\"max-w-sm\">\n <DialogHeader>\n <DialogTitle className=\"flex items-center gap-2\">\n <EntityIcon kind={kind} />\n {displayTitle}\n {!present && (\n <span className=\"text-xs italic text-muted-foreground\">\n absent\n </span>\n )}\n </DialogTitle>\n {doc && <DialogDescription>{doc}</DialogDescription>}\n </DialogHeader>\n <DialogPanel>\n <div className=\"flex flex-col gap-3\">\n {locations.length > 0 && (\n <Section label=\"Source\">\n {locations.map((loc, i) => (\n <SourceRow\n key={i}\n filePath={loc.filePath}\n line={loc.line}\n />\n ))}\n </Section>\n )}\n\n {scopes.length > 0 && (\n <Section label=\"Scopes\">\n <div className=\"flex flex-wrap gap-1.5\">\n {scopes.map((scope) => {\n const isGlobal = scope === 'global';\n const label = stripScopePrefix(scope);\n const badgeKind = scope.startsWith('feature:') ? 'feature' as const : scope.startsWith('page:') ? 'page' as const : 'component' as const;\n return isGlobal ? (\n <EntityBadge key={scope} kind=\"component\">\n global\n </EntityBadge>\n ) : (\n <EntityBadge\n key={scope}\n kind={badgeKind}\n render={<button type=\"button\" />}\n onClick={() => {\n if (scope.startsWith('feature:')) {\n const feature = data.features.find((f) => f.dir.split('/').pop() === label);\n if (feature) onOpenFeature(feature.dir);\n } else if (scope.startsWith('page:')) {\n const page = data.pages.find((p) => p.dir.split('/').pop() === label);\n if (page) onOpenPage(page.dir);\n }\n }}\n >\n {label}\n </EntityBadge>\n );\n })}\n </div>\n </Section>\n )}\n\n {parentBlock && (\n <Section label=\"Parent block\">\n <EntityBadge\n kind=\"block\"\n className=\"w-fit\"\n render={<button type=\"button\" />}\n onClick={() => onSelectComponent(parentBlock)}\n >\n {humanizeId(parentBlock)}\n </EntityBadge>\n </Section>\n )}\n\n {blockChildren.length > 0 && (\n <ChipSection\n label=\"Contains\"\n ids={blockChildren}\n variant=\"components\"\n presentIds={data.presentIds}\n onComponentClick={onSelectComponent}\n />\n )}\n\n {parentFeatures.length > 0 && (\n <FeatureChips\n features={parentFeatures}\n onFeatureClick={onOpenFeature}\n />\n )}\n\n {parentPages.length > 0 && (\n <Section label=\"Pages\">\n <div className=\"flex flex-wrap gap-1.5\">\n {parentPages.map((p) => (\n <EntityBadge\n key={p.dir}\n kind=\"page\"\n render={<button type=\"button\" />}\n onClick={() => onOpenPage(p.dir)}\n >\n {p.title}\n </EntityBadge>\n ))}\n </div>\n </Section>\n )}\n </div>\n </DialogPanel>\n </DialogPopup>\n </Dialog>\n );\n}\n\nfunction Section({\n label,\n children,\n}: {\n label: string;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-muted-foreground\">{label}</span>\n {children}\n </div>\n );\n}\n","import { useMemo } from 'react';\nimport type { ModalData } from '../modal/store';\nimport {\n Dialog,\n DialogPopup,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogPanel,\n} from '../coss/dialog';\nimport { MarkdownContent } from '../shared/MarkdownContent';\nimport { ChipSection, EntityBadge, EntityIcon } from '../shared/chips';\n\ninterface FeatureDialogProps {\n open: boolean;\n onClose: () => void;\n featureDir: string;\n data: ModalData;\n onSelectComponent: (id: string) => void;\n onOpenPage: (dir: string) => void;\n container?: HTMLElement | null;\n}\n\nexport function FeatureDialog({\n open,\n onClose,\n featureDir,\n data,\n onSelectComponent,\n onOpenPage,\n container,\n}: FeatureDialogProps) {\n const feature = useMemo(\n () => data.features.find((f) => f.dir === featureDir) ?? null,\n [data.features, featureDir],\n );\n\n const parentPages = useMemo(() => {\n if (!feature) return [];\n const featureComponentSet = new Set(feature.componentIds);\n return data.pages.filter((p) =>\n p.componentIds.some((cid) => featureComponentSet.has(cid)),\n );\n }, [data.pages, feature]);\n\n if (!feature) return null;\n\n const blockIds = feature.componentIds.filter(\n (id) => data.components[id]?.[0]?.kind === 'block',\n );\n const componentIds = feature.componentIds.filter(\n (id) => data.components[id]?.[0]?.kind !== 'block',\n );\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen) onClose();\n };\n\n return (\n <Dialog open={open} onOpenChange={handleOpenChange}>\n <DialogPopup container={container}>\n <DialogHeader>\n <DialogTitle className=\"flex items-center gap-2\">\n <EntityIcon kind=\"feature\" />\n {feature.title}\n </DialogTitle>\n {feature.description && (\n <DialogDescription>{feature.description}</DialogDescription>\n )}\n </DialogHeader>\n\n <DialogPanel>\n {feature.content.trim() && (\n <div>\n <MarkdownContent content={feature.content} skipDescription />\n </div>\n )}\n\n {blockIds.length > 0 && (\n <ChipSection\n label=\"Blocks\"\n ids={blockIds}\n variant=\"blocks\"\n presentIds={data.presentIds}\n onComponentClick={onSelectComponent}\n />\n )}\n\n {componentIds.length > 0 && (\n <ChipSection\n label=\"Components\"\n ids={componentIds}\n variant=\"components\"\n presentIds={data.presentIds}\n onComponentClick={onSelectComponent}\n />\n )}\n\n {parentPages.length > 0 && (\n <Section label=\"Pages\">\n <div className=\"flex flex-wrap gap-1.5\">\n {parentPages.map((p) => (\n <EntityBadge\n key={p.dir}\n kind=\"page\"\n render={<button type=\"button\" />}\n onClick={() => onOpenPage(p.dir)}\n >\n {p.title}\n </EntityBadge>\n ))}\n </div>\n </Section>\n )}\n </DialogPanel>\n </DialogPopup>\n </Dialog>\n );\n}\n\nfunction Section({\n label,\n children,\n}: {\n label: string;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-muted-foreground\">{label}</span>\n {children}\n </div>\n );\n}\n","import { useMemo } from 'react';\nimport type { ModalData } from '../modal/store';\nimport type { PrimitiveEntry } from '../../core/types';\nimport {\n Dialog,\n DialogPopup,\n DialogHeader,\n DialogTitle,\n DialogPanel,\n} from '../coss/dialog';\nimport { EntityBadge, EntityIcon, stripScopePrefix } from '../shared/chips';\n\ninterface UiDialogProps {\n open: boolean;\n onClose: () => void;\n filePath: string;\n data: ModalData;\n onSelectComponent: (id: string) => void;\n onOpenFeature: (dir: string) => void;\n onOpenPage: (dir: string) => void;\n onOpenUi: (filePath: string) => void;\n container?: HTMLElement | null;\n}\n\nexport function UiDialog({\n open,\n onClose,\n filePath,\n data,\n onSelectComponent,\n onOpenFeature,\n onOpenPage,\n onOpenUi,\n container,\n}: UiDialogProps) {\n const primitive = data.uiComponents.get(filePath) ?? null;\n\n const composedPrimitives = useMemo(() => {\n if (!primitive) return [];\n return primitive.composes\n .map((fp) => data.uiComponents.get(fp))\n .filter((p): p is PrimitiveEntry => p != null);\n }, [primitive, data.uiComponents]);\n\n const usedByFiles = useMemo(() => {\n if (!primitive) return [];\n return primitive.usedBy;\n }, [primitive]);\n\n // Build a reverse index so each usedBy file lookup is O(1) instead of O(n)\n const filePathToComponentId = useMemo(() => {\n const map = new Map<string, string>();\n for (const [id, locs] of Object.entries(data.components)) {\n for (const loc of locs) {\n if (!map.has(loc.filePath)) map.set(loc.filePath, id);\n }\n }\n return map;\n }, [data.components]);\n\n // Find the feature or page dir that matches this scope\n const navigateToScope = useMemo(() => {\n if (!primitive || primitive.scope === 'global') return null;\n const scopeName = stripScopePrefix(primitive.scope);\n if (primitive.scope.startsWith('feature:')) {\n const feature = data.features.find((f) => {\n const dirName = f.dir.split('/').pop();\n return dirName === scopeName;\n });\n return feature ? { type: 'feature' as const, dir: feature.dir } : null;\n }\n if (primitive.scope.startsWith('page:')) {\n const page = data.pages.find((p) => {\n const dirName = p.dir.split('/').pop();\n return dirName === scopeName;\n });\n return page ? { type: 'page' as const, dir: page.dir } : null;\n }\n return null;\n }, [primitive, data.features, data.pages]);\n\n if (!primitive) return null;\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen) onClose();\n };\n\n const handleBelongsToClick = () => {\n if (!navigateToScope) return;\n if (navigateToScope.type === 'feature') {\n onOpenFeature(navigateToScope.dir);\n } else {\n onOpenPage(navigateToScope.dir);\n }\n };\n\n return (\n <Dialog open={open} onOpenChange={handleOpenChange}>\n <DialogPopup container={container} className=\"max-w-sm\">\n <DialogHeader>\n <DialogTitle className=\"flex items-center gap-2\">\n <EntityIcon kind=\"primitive\" />\n {primitive.name}\n </DialogTitle>\n </DialogHeader>\n <DialogPanel>\n <div className=\"flex flex-col gap-3\">\n {/* Source */}\n <Section label=\"Source\">\n <span className=\"text-sm text-muted-foreground font-mono\">\n {primitive.filePath}\n </span>\n </Section>\n\n {/* Belongs to */}\n <Section label=\"Belongs to\">\n {primitive.scope === 'global' ? (\n <span className=\"text-sm text-muted-foreground\">global</span>\n ) : (\n <EntityBadge\n kind={primitive.scope.startsWith('feature:') ? 'feature' : 'page'}\n className=\"w-fit\"\n render={navigateToScope ? <button type=\"button\" /> : undefined}\n onClick={navigateToScope ? handleBelongsToClick : undefined}\n >\n {stripScopePrefix(primitive.scope)}\n </EntityBadge>\n )}\n </Section>\n\n {/* Composes */}\n {composedPrimitives.length > 0 && (\n <Section label=\"Composes\">\n <div className=\"flex flex-wrap gap-1.5\">\n {composedPrimitives.map((p) => (\n <EntityBadge\n key={p.filePath}\n kind=\"primitive\"\n render={<button type=\"button\" />}\n onClick={() => onOpenUi(p.filePath)}\n >\n {p.name}\n </EntityBadge>\n ))}\n </div>\n </Section>\n )}\n\n {/* Used by */}\n {usedByFiles.length > 0 && (\n <Section label=\"Used by\">\n <div className=\"flex flex-col gap-1\">\n {usedByFiles.map((fp) => {\n const componentId = filePathToComponentId.get(fp);\n\n return (\n <span\n key={fp}\n className={`text-sm font-mono ${componentId ? 'text-foreground cursor-pointer hover:underline' : 'text-muted-foreground'}`}\n role={componentId ? 'button' : undefined}\n tabIndex={componentId ? 0 : undefined}\n onClick={componentId ? () => onSelectComponent(componentId) : undefined}\n onKeyDown={componentId ? (e) => { if (e.key === 'Enter') onSelectComponent(componentId); } : undefined}\n >\n {fp}\n </span>\n );\n })}\n </div>\n </Section>\n )}\n\n {usedByFiles.length === 0 && composedPrimitives.length === 0 && (\n <span className=\"text-sm italic text-muted-foreground\">\n No consumers found\n </span>\n )}\n </div>\n </DialogPanel>\n </DialogPopup>\n </Dialog>\n );\n}\n\nfunction Section({\n label,\n children,\n}: {\n label: string;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-muted-foreground\">{label}</span>\n {children}\n </div>\n );\n}\n","// AUTO-GENERATED — do not edit. Run `npm run generate:css` to regenerate.\n// Sources: src/core/style.css, src/ui/tailwind.out.css\nconst cssText = \"/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\\n@layer properties;\\n@layer theme, base, components, utilities;\\n@layer theme {\\n :root, :host {\\n --font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,\\n \\\"Segoe UI\\\", Roboto, sans-serif;\\n --font-mono: ui-monospace, SFMono-Regular, \\\"SF Mono\\\", Menlo, Consolas,\\n monospace;\\n --color-red-500: oklch(63.7% 0.237 25.331);\\n --color-amber-400: oklch(82.8% 0.189 84.429);\\n --color-amber-500: oklch(76.9% 0.188 70.08);\\n --color-amber-700: oklch(55.5% 0.163 48.998);\\n --color-emerald-400: oklch(76.5% 0.177 163.223);\\n --color-emerald-500: oklch(69.6% 0.17 162.48);\\n --color-emerald-600: oklch(59.6% 0.145 163.225);\\n --color-emerald-700: oklch(50.8% 0.118 165.612);\\n --color-blue-400: oklch(70.7% 0.165 254.624);\\n --color-blue-500: oklch(62.3% 0.214 259.815);\\n --color-blue-700: oklch(48.8% 0.243 264.376);\\n --color-neutral-50: oklch(98.5% 0 0);\\n --color-neutral-100: oklch(97% 0 0);\\n --color-neutral-400: oklch(70.8% 0 0);\\n --color-neutral-500: oklch(55.6% 0 0);\\n --color-neutral-800: oklch(26.9% 0 0);\\n --color-neutral-950: oklch(14.5% 0 0);\\n --color-black: #000;\\n --color-white: #fff;\\n --spacing: 0.25rem;\\n --container-sm: 24rem;\\n --container-md: 28rem;\\n --container-lg: 32rem;\\n --container-xl: 36rem;\\n --container-2xl: 42rem;\\n --container-3xl: 48rem;\\n --container-6xl: 72rem;\\n --text-xs: 0.75rem;\\n --text-xs--line-height: calc(1 / 0.75);\\n --text-sm: 0.875rem;\\n --text-sm--line-height: calc(1.25 / 0.875);\\n --text-base: 1rem;\\n --text-base--line-height: calc(1.5 / 1);\\n --text-lg: 1.125rem;\\n --text-lg--line-height: calc(1.75 / 1.125);\\n --text-xl: 1.25rem;\\n --text-xl--line-height: calc(1.75 / 1.25);\\n --text-2xl: 1.5rem;\\n --text-2xl--line-height: calc(2 / 1.5);\\n --text-3xl: 1.875rem;\\n --text-3xl--line-height: calc(2.25 / 1.875);\\n --text-4xl: 2.25rem;\\n --text-4xl--line-height: calc(2.5 / 2.25);\\n --text-5xl: 3rem;\\n --text-5xl--line-height: 1;\\n --font-weight-medium: 500;\\n --font-weight-semibold: 600;\\n --font-weight-bold: 700;\\n --tracking-tight: -0.025em;\\n --tracking-wide: 0.025em;\\n --tracking-widest: 0.1em;\\n --leading-relaxed: 1.625;\\n --leading-loose: 2;\\n --radius-sm: calc(var(--radius) * 0.6);\\n --radius-md: calc(var(--radius) * 0.8);\\n --radius-lg: var(--radius);\\n --radius-xl: calc(var(--radius) * 1.4);\\n --radius-2xl: calc(var(--radius) * 1.8);\\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\\n --animate-spin: spin 1s linear infinite;\\n --blur-sm: 8px;\\n --default-transition-duration: 150ms;\\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n --default-font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,\\n \\\"Segoe UI\\\", Roboto, sans-serif;\\n --default-mono-font-family: ui-monospace, SFMono-Regular, \\\"SF Mono\\\", Menlo, Consolas,\\n monospace;\\n --color-border: var(--border);\\n }\\n}\\n@layer base {\\n *, ::after, ::before, ::backdrop, ::file-selector-button {\\n box-sizing: border-box;\\n margin: 0;\\n padding: 0;\\n border: 0 solid;\\n }\\n html, :host {\\n line-height: 1.5;\\n -webkit-text-size-adjust: 100%;\\n tab-size: 4;\\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\");\\n font-feature-settings: var(--default-font-feature-settings, normal);\\n font-variation-settings: var(--default-font-variation-settings, normal);\\n -webkit-tap-highlight-color: transparent;\\n }\\n hr {\\n height: 0;\\n color: inherit;\\n border-top-width: 1px;\\n }\\n abbr:where([title]) {\\n -webkit-text-decoration: underline dotted;\\n text-decoration: underline dotted;\\n }\\n h1, h2, h3, h4, h5, h6 {\\n font-size: inherit;\\n font-weight: inherit;\\n }\\n a {\\n color: inherit;\\n -webkit-text-decoration: inherit;\\n text-decoration: inherit;\\n }\\n b, strong {\\n font-weight: bolder;\\n }\\n code, kbd, samp, pre {\\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace);\\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\\n font-size: 1em;\\n }\\n small {\\n font-size: 80%;\\n }\\n sub, sup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n }\\n sub {\\n bottom: -0.25em;\\n }\\n sup {\\n top: -0.5em;\\n }\\n table {\\n text-indent: 0;\\n border-color: inherit;\\n border-collapse: collapse;\\n }\\n :-moz-focusring {\\n outline: auto;\\n }\\n progress {\\n vertical-align: baseline;\\n }\\n summary {\\n display: list-item;\\n }\\n ol, ul, menu {\\n list-style: none;\\n }\\n img, svg, video, canvas, audio, iframe, embed, object {\\n display: block;\\n vertical-align: middle;\\n }\\n img, video {\\n max-width: 100%;\\n height: auto;\\n }\\n button, input, select, optgroup, textarea, ::file-selector-button {\\n font: inherit;\\n font-feature-settings: inherit;\\n font-variation-settings: inherit;\\n letter-spacing: inherit;\\n color: inherit;\\n border-radius: 0;\\n background-color: transparent;\\n opacity: 1;\\n }\\n :where(select:is([multiple], [size])) optgroup {\\n font-weight: bolder;\\n }\\n :where(select:is([multiple], [size])) optgroup option {\\n padding-inline-start: 20px;\\n }\\n ::file-selector-button {\\n margin-inline-end: 4px;\\n }\\n ::placeholder {\\n opacity: 1;\\n }\\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\\n ::placeholder {\\n color: currentcolor;\\n @supports (color: color-mix(in lab, red, red)) {\\n color: color-mix(in oklab, currentcolor 50%, transparent);\\n }\\n }\\n }\\n textarea {\\n resize: vertical;\\n }\\n ::-webkit-search-decoration {\\n -webkit-appearance: none;\\n }\\n ::-webkit-date-and-time-value {\\n min-height: 1lh;\\n text-align: inherit;\\n }\\n ::-webkit-datetime-edit {\\n display: inline-flex;\\n }\\n ::-webkit-datetime-edit-fields-wrapper {\\n padding: 0;\\n }\\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\\n padding-block: 0;\\n }\\n ::-webkit-calendar-picker-indicator {\\n line-height: 1;\\n }\\n :-moz-ui-invalid {\\n box-shadow: none;\\n }\\n button, input:where([type=\\\"button\\\"], [type=\\\"reset\\\"], [type=\\\"submit\\\"]), ::file-selector-button {\\n appearance: button;\\n }\\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\\n height: auto;\\n }\\n [hidden]:where(:not([hidden=\\\"until-found\\\"])) {\\n display: none !important;\\n }\\n}\\n@layer utilities {\\n .pointer-events-none {\\n pointer-events: none;\\n }\\n .collapse {\\n visibility: collapse;\\n }\\n .visible {\\n visibility: visible;\\n }\\n .absolute {\\n position: absolute;\\n }\\n .fixed {\\n position: fixed;\\n }\\n .relative {\\n position: relative;\\n }\\n .static {\\n position: static;\\n }\\n .sticky {\\n position: sticky;\\n }\\n .-inset-px {\\n inset: -1px;\\n }\\n .inset-0 {\\n inset: calc(var(--spacing) * 0);\\n }\\n .inset-x-0 {\\n inset-inline: calc(var(--spacing) * 0);\\n }\\n .inset-y-0 {\\n inset-block: calc(var(--spacing) * 0);\\n }\\n .start {\\n inset-inline-start: var(--spacing);\\n }\\n .start-px {\\n inset-inline-start: 1px;\\n }\\n .end {\\n inset-inline-end: var(--spacing);\\n }\\n .end-0 {\\n inset-inline-end: calc(var(--spacing) * 0);\\n }\\n .end-0\\\\.5 {\\n inset-inline-end: calc(var(--spacing) * 0.5);\\n }\\n .end-2 {\\n inset-inline-end: calc(var(--spacing) * 2);\\n }\\n .top-0 {\\n top: calc(var(--spacing) * 0);\\n }\\n .top-1\\\\/2 {\\n top: calc(1 / 2 * 100%);\\n }\\n .top-2 {\\n top: calc(var(--spacing) * 2);\\n }\\n .top-14 {\\n top: calc(var(--spacing) * 14);\\n }\\n .bottom-0 {\\n bottom: calc(var(--spacing) * 0);\\n }\\n .isolate {\\n isolation: isolate;\\n }\\n .z-10 {\\n z-index: 10;\\n }\\n .z-50 {\\n z-index: 50;\\n }\\n .order-first {\\n order: -9999;\\n }\\n .order-last {\\n order: 9999;\\n }\\n .col-start-1 {\\n grid-column-start: 1;\\n }\\n .col-start-2 {\\n grid-column-start: 2;\\n }\\n .row-start-2 {\\n grid-row-start: 2;\\n }\\n .container {\\n width: 100%;\\n @media (width >= 40rem) {\\n max-width: 40rem;\\n }\\n @media (width >= 48rem) {\\n max-width: 48rem;\\n }\\n @media (width >= 64rem) {\\n max-width: 64rem;\\n }\\n @media (width >= 80rem) {\\n max-width: 80rem;\\n }\\n @media (width >= 96rem) {\\n max-width: 96rem;\\n }\\n }\\n .m-1 {\\n margin: calc(var(--spacing) * 1);\\n }\\n .-mx-px {\\n margin-inline: -1px;\\n }\\n .mx-2 {\\n margin-inline: calc(var(--spacing) * 2);\\n }\\n .mx-auto {\\n margin-inline: auto;\\n }\\n .my-0\\\\.5 {\\n margin-block: calc(var(--spacing) * 0.5);\\n }\\n .my-1 {\\n margin-block: calc(var(--spacing) * 1);\\n }\\n .my-2 {\\n margin-block: calc(var(--spacing) * 2);\\n }\\n .my-3 {\\n margin-block: calc(var(--spacing) * 3);\\n }\\n .my-4 {\\n margin-block: calc(var(--spacing) * 4);\\n }\\n .my-6 {\\n margin-block: calc(var(--spacing) * 6);\\n }\\n .my-8 {\\n margin-block: calc(var(--spacing) * 8);\\n }\\n .-ms-0\\\\.5 {\\n margin-inline-start: calc(var(--spacing) * -0.5);\\n }\\n .ms-auto {\\n margin-inline-start: auto;\\n }\\n .-me-1 {\\n margin-inline-end: calc(var(--spacing) * -1);\\n }\\n .mt-1 {\\n margin-top: calc(var(--spacing) * 1);\\n }\\n .mt-2 {\\n margin-top: calc(var(--spacing) * 2);\\n }\\n .mt-3 {\\n margin-top: calc(var(--spacing) * 3);\\n }\\n .mt-4 {\\n margin-top: calc(var(--spacing) * 4);\\n }\\n .mt-6 {\\n margin-top: calc(var(--spacing) * 6);\\n }\\n .mt-8 {\\n margin-top: calc(var(--spacing) * 8);\\n }\\n .mt-12 {\\n margin-top: calc(var(--spacing) * 12);\\n }\\n .mr-6 {\\n margin-right: calc(var(--spacing) * 6);\\n }\\n .mb-1 {\\n margin-bottom: calc(var(--spacing) * 1);\\n }\\n .mb-2 {\\n margin-bottom: calc(var(--spacing) * 2);\\n }\\n .mb-3 {\\n margin-bottom: calc(var(--spacing) * 3);\\n }\\n .mb-4 {\\n margin-bottom: calc(var(--spacing) * 4);\\n }\\n .mb-8 {\\n margin-bottom: calc(var(--spacing) * 8);\\n }\\n .ml-0\\\\.5 {\\n margin-left: calc(var(--spacing) * 0.5);\\n }\\n .ml-4 {\\n margin-left: calc(var(--spacing) * 4);\\n }\\n .ml-6 {\\n margin-left: calc(var(--spacing) * 6);\\n }\\n .ml-auto {\\n margin-left: auto;\\n }\\n .line-clamp-1 {\\n overflow: hidden;\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 1;\\n }\\n .block {\\n display: block;\\n }\\n .contents {\\n display: contents;\\n }\\n .flex {\\n display: flex;\\n }\\n .grid {\\n display: grid;\\n }\\n .hidden {\\n display: none;\\n }\\n .inline {\\n display: inline;\\n }\\n .inline-flex {\\n display: inline-flex;\\n }\\n .list-item {\\n display: list-item;\\n }\\n .table {\\n display: table;\\n }\\n .field-sizing-content {\\n field-sizing: content;\\n }\\n .size-3\\\\.5 {\\n width: calc(var(--spacing) * 3.5);\\n height: calc(var(--spacing) * 3.5);\\n }\\n .size-4 {\\n width: calc(var(--spacing) * 4);\\n height: calc(var(--spacing) * 4);\\n }\\n .size-4\\\\.5 {\\n width: calc(var(--spacing) * 4.5);\\n height: calc(var(--spacing) * 4.5);\\n }\\n .size-5 {\\n width: calc(var(--spacing) * 5);\\n height: calc(var(--spacing) * 5);\\n }\\n .size-6 {\\n width: calc(var(--spacing) * 6);\\n height: calc(var(--spacing) * 6);\\n }\\n .size-7 {\\n width: calc(var(--spacing) * 7);\\n height: calc(var(--spacing) * 7);\\n }\\n .size-8 {\\n width: calc(var(--spacing) * 8);\\n height: calc(var(--spacing) * 8);\\n }\\n .size-9 {\\n width: calc(var(--spacing) * 9);\\n height: calc(var(--spacing) * 9);\\n }\\n .size-10 {\\n width: calc(var(--spacing) * 10);\\n height: calc(var(--spacing) * 10);\\n }\\n .size-11 {\\n width: calc(var(--spacing) * 11);\\n height: calc(var(--spacing) * 11);\\n }\\n .size-16 {\\n width: calc(var(--spacing) * 16);\\n height: calc(var(--spacing) * 16);\\n }\\n .size-full {\\n width: 100%;\\n height: 100%;\\n }\\n .h-4 {\\n height: calc(var(--spacing) * 4);\\n }\\n .h-5 {\\n height: calc(var(--spacing) * 5);\\n }\\n .h-5\\\\.5 {\\n height: calc(var(--spacing) * 5.5);\\n }\\n .h-6 {\\n height: calc(var(--spacing) * 6);\\n }\\n .h-6\\\\.5 {\\n height: calc(var(--spacing) * 6.5);\\n }\\n .h-7 {\\n height: calc(var(--spacing) * 7);\\n }\\n .h-7\\\\.5 {\\n height: calc(var(--spacing) * 7.5);\\n }\\n .h-8 {\\n height: calc(var(--spacing) * 8);\\n }\\n .h-8\\\\.5 {\\n height: calc(var(--spacing) * 8.5);\\n }\\n .h-9 {\\n height: calc(var(--spacing) * 9);\\n }\\n .h-9\\\\.5 {\\n height: calc(var(--spacing) * 9.5);\\n }\\n .h-10 {\\n height: calc(var(--spacing) * 10);\\n }\\n .h-11 {\\n height: calc(var(--spacing) * 11);\\n }\\n .h-14 {\\n height: calc(var(--spacing) * 14);\\n }\\n .h-64 {\\n height: calc(var(--spacing) * 64);\\n }\\n .h-\\\\[26px\\\\] {\\n height: 26px;\\n }\\n .h-\\\\[calc\\\\(100svh-3\\\\.5rem\\\\)\\\\] {\\n height: calc(100svh - 3.5rem);\\n }\\n .h-auto {\\n height: auto;\\n }\\n .h-full {\\n height: 100%;\\n }\\n .h-px {\\n height: 1px;\\n }\\n .max-h-\\\\(--available-height\\\\) {\\n max-height: var(--available-height);\\n }\\n .max-h-105 {\\n max-height: calc(var(--spacing) * 105);\\n }\\n .max-h-\\\\[min\\\\(var\\\\(--available-height\\\\)\\\\,23rem\\\\)\\\\] {\\n max-height: min(var(--available-height), 23rem);\\n }\\n .max-h-full {\\n max-height: 100%;\\n }\\n .min-h-0 {\\n min-height: calc(var(--spacing) * 0);\\n }\\n .min-h-8 {\\n min-height: calc(var(--spacing) * 8);\\n }\\n .min-h-9 {\\n min-height: calc(var(--spacing) * 9);\\n }\\n .min-h-10 {\\n min-height: calc(var(--spacing) * 10);\\n }\\n .min-h-16\\\\.5 {\\n min-height: calc(var(--spacing) * 16.5);\\n }\\n .min-h-17\\\\.5 {\\n min-height: calc(var(--spacing) * 17.5);\\n }\\n .min-h-18\\\\.5 {\\n min-height: calc(var(--spacing) * 18.5);\\n }\\n .min-h-svh {\\n min-height: 100svh;\\n }\\n .w-1\\\\/2 {\\n width: calc(1 / 2 * 100%);\\n }\\n .w-19 {\\n width: calc(var(--spacing) * 19);\\n }\\n .w-32 {\\n width: calc(var(--spacing) * 32);\\n }\\n .w-56 {\\n width: calc(var(--spacing) * 56);\\n }\\n .w-80 {\\n width: calc(var(--spacing) * 80);\\n }\\n .w-\\\\[22px\\\\] {\\n width: 22px;\\n }\\n .w-\\\\[72px\\\\] {\\n width: 72px;\\n }\\n .w-fit {\\n width: fit-content;\\n }\\n .w-full {\\n width: 100%;\\n }\\n .w-max {\\n width: max-content;\\n }\\n .w-px {\\n width: 1px;\\n }\\n .max-w-\\\\(--available-width\\\\) {\\n max-width: var(--available-width);\\n }\\n .max-w-2xl {\\n max-width: var(--container-2xl);\\n }\\n .max-w-3xl {\\n max-width: var(--container-3xl);\\n }\\n .max-w-6xl {\\n max-width: var(--container-6xl);\\n }\\n .max-w-54 {\\n max-width: calc(var(--spacing) * 54);\\n }\\n .max-w-96 {\\n max-width: calc(var(--spacing) * 96);\\n }\\n .max-w-lg {\\n max-width: var(--container-lg);\\n }\\n .max-w-md {\\n max-width: var(--container-md);\\n }\\n .max-w-none {\\n max-width: none;\\n }\\n .max-w-sm {\\n max-width: var(--container-sm);\\n }\\n .max-w-xl {\\n max-width: var(--container-xl);\\n }\\n .min-w-\\\\(--anchor-width\\\\) {\\n min-width: var(--anchor-width);\\n }\\n .min-w-0 {\\n min-width: calc(var(--spacing) * 0);\\n }\\n .min-w-5 {\\n min-width: calc(var(--spacing) * 5);\\n }\\n .min-w-5\\\\.5 {\\n min-width: calc(var(--spacing) * 5.5);\\n }\\n .min-w-6\\\\.5 {\\n min-width: calc(var(--spacing) * 6.5);\\n }\\n .min-w-8 {\\n min-width: calc(var(--spacing) * 8);\\n }\\n .min-w-9 {\\n min-width: calc(var(--spacing) * 9);\\n }\\n .min-w-10 {\\n min-width: calc(var(--spacing) * 10);\\n }\\n .min-w-36 {\\n min-width: calc(var(--spacing) * 36);\\n }\\n .flex-1 {\\n flex: 1;\\n }\\n .flex-shrink {\\n flex-shrink: 1;\\n }\\n .shrink-0 {\\n flex-shrink: 0;\\n }\\n .flex-grow {\\n flex-grow: 1;\\n }\\n .table-fixed {\\n table-layout: fixed;\\n }\\n .origin-\\\\(--transform-origin\\\\) {\\n transform-origin: var(--transform-origin);\\n }\\n .origin-center {\\n transform-origin: center;\\n }\\n .-translate-y-1\\\\/2 {\\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\\n translate: var(--tw-translate-x) var(--tw-translate-y);\\n }\\n .-translate-y-\\\\[calc\\\\(1\\\\.25rem\\\\*var\\\\(--nested-dialogs\\\\)\\\\)\\\\] {\\n --tw-translate-y: calc(calc(1.25rem * var(--nested-dialogs)) * -1);\\n translate: var(--tw-translate-x) var(--tw-translate-y);\\n }\\n .scale-\\\\[calc\\\\(1-0\\\\.1\\\\*var\\\\(--nested-dialogs\\\\)\\\\)\\\\] {\\n scale: calc(1 - 0.1 * var(--nested-dialogs));\\n }\\n .transform {\\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\\n }\\n .animate-spin {\\n animation: var(--animate-spin);\\n }\\n .cursor-default {\\n cursor: default;\\n }\\n .cursor-pointer {\\n cursor: pointer;\\n }\\n .cursor-text {\\n cursor: text;\\n }\\n .resize {\\n resize: both;\\n }\\n .list-decimal {\\n list-style-type: decimal;\\n }\\n .list-disc {\\n list-style-type: disc;\\n }\\n .grid-cols-\\\\[\\\\.75rem_1fr\\\\] {\\n grid-template-columns: .75rem 1fr;\\n }\\n .grid-cols-\\\\[1rem_1fr\\\\] {\\n grid-template-columns: 1rem 1fr;\\n }\\n .grid-rows-\\\\[1fr_auto_3fr\\\\] {\\n grid-template-rows: 1fr auto 3fr;\\n }\\n .flex-col {\\n flex-direction: column;\\n }\\n .flex-col-reverse {\\n flex-direction: column-reverse;\\n }\\n .flex-wrap {\\n flex-wrap: wrap;\\n }\\n .items-baseline {\\n align-items: baseline;\\n }\\n .items-center {\\n align-items: center;\\n }\\n .items-start {\\n align-items: flex-start;\\n }\\n .justify-between {\\n justify-content: space-between;\\n }\\n .justify-center {\\n justify-content: center;\\n }\\n .justify-end {\\n justify-content: flex-end;\\n }\\n .justify-start {\\n justify-content: flex-start;\\n }\\n .justify-items-center {\\n justify-items: center;\\n }\\n .gap-1 {\\n gap: calc(var(--spacing) * 1);\\n }\\n .gap-1\\\\.5 {\\n gap: calc(var(--spacing) * 1.5);\\n }\\n .gap-2 {\\n gap: calc(var(--spacing) * 2);\\n }\\n .gap-3 {\\n gap: calc(var(--spacing) * 3);\\n }\\n .gap-4 {\\n gap: calc(var(--spacing) * 4);\\n }\\n .gap-6 {\\n gap: calc(var(--spacing) * 6);\\n }\\n .space-y-1 {\\n :where(& > :not(:last-child)) {\\n --tw-space-y-reverse: 0;\\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\\n }\\n }\\n .space-y-2 {\\n :where(& > :not(:last-child)) {\\n --tw-space-y-reverse: 0;\\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\\n }\\n }\\n .space-y-3 {\\n :where(& > :not(:last-child)) {\\n --tw-space-y-reverse: 0;\\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\\n }\\n }\\n .space-y-4 {\\n :where(& > :not(:last-child)) {\\n --tw-space-y-reverse: 0;\\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\\n }\\n }\\n .space-y-6 {\\n :where(& > :not(:last-child)) {\\n --tw-space-y-reverse: 0;\\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\\n }\\n }\\n .space-y-8 {\\n :where(& > :not(:last-child)) {\\n --tw-space-y-reverse: 0;\\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\\n }\\n }\\n .-space-x-3 {\\n :where(& > :not(:last-child)) {\\n --tw-space-x-reverse: 0;\\n margin-inline-start: calc(calc(var(--spacing) * -3) * var(--tw-space-x-reverse));\\n margin-inline-end: calc(calc(var(--spacing) * -3) * calc(1 - var(--tw-space-x-reverse)));\\n }\\n }\\n .divide-y {\\n :where(& > :not(:last-child)) {\\n --tw-divide-y-reverse: 0;\\n border-bottom-style: var(--tw-border-style);\\n border-top-style: var(--tw-border-style);\\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\\n }\\n }\\n .divide-border {\\n :where(& > :not(:last-child)) {\\n border-color: var(--border);\\n }\\n }\\n .self-stretch {\\n align-self: stretch;\\n }\\n .truncate {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n .overflow-hidden {\\n overflow: hidden;\\n }\\n .overflow-x-auto {\\n overflow-x: auto;\\n }\\n .overflow-y-auto {\\n overflow-y: auto;\\n }\\n .rounded {\\n border-radius: 0.25rem;\\n }\\n .rounded-2xl {\\n border-radius: calc(var(--radius) * 1.8);\\n }\\n .rounded-\\\\[\\\\.25rem\\\\] {\\n border-radius: .25rem;\\n }\\n .rounded-\\\\[inherit\\\\] {\\n border-radius: inherit;\\n }\\n .rounded-full {\\n border-radius: calc(infinity * 1px);\\n }\\n .rounded-lg {\\n border-radius: var(--radius);\\n }\\n .rounded-md {\\n border-radius: calc(var(--radius) * 0.8);\\n }\\n .rounded-none {\\n border-radius: 0;\\n }\\n .rounded-sm {\\n border-radius: calc(var(--radius) * 0.6);\\n }\\n .rounded-xl {\\n border-radius: calc(var(--radius) * 1.4);\\n }\\n .rounded-t-xl {\\n border-top-left-radius: calc(var(--radius) * 1.4);\\n border-top-right-radius: calc(var(--radius) * 1.4);\\n }\\n .rounded-b-\\\\[calc\\\\(var\\\\(--radius-2xl\\\\)-1px\\\\)\\\\] {\\n border-bottom-right-radius: calc(var(--radius-2xl) - 1px);\\n border-bottom-left-radius: calc(var(--radius-2xl) - 1px);\\n }\\n .border {\\n border-style: var(--tw-border-style);\\n border-width: 1px;\\n }\\n .border-t {\\n border-top-style: var(--tw-border-style);\\n border-top-width: 1px;\\n }\\n .border-r {\\n border-right-style: var(--tw-border-style);\\n border-right-width: 1px;\\n }\\n .border-b {\\n border-bottom-style: var(--tw-border-style);\\n border-bottom-width: 1px;\\n }\\n .border-b-0 {\\n border-bottom-style: var(--tw-border-style);\\n border-bottom-width: 0px;\\n }\\n .border-l {\\n border-left-style: var(--tw-border-style);\\n border-left-width: 1px;\\n }\\n .border-l-2 {\\n border-left-style: var(--tw-border-style);\\n border-left-width: 2px;\\n }\\n .border-dashed {\\n --tw-border-style: dashed;\\n border-style: dashed;\\n }\\n .border-none {\\n --tw-border-style: none;\\n border-style: none;\\n }\\n .border-amber-500\\\\/20 {\\n border-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 20%, transparent);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--color-amber-500) 20%, transparent);\\n }\\n }\\n .border-blue-500\\\\/20 {\\n border-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 20%, transparent);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--color-blue-500) 20%, transparent);\\n }\\n }\\n .border-border {\\n border-color: var(--border);\\n }\\n .border-border\\\\/50 {\\n border-color: var(--border);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--border) 50%, transparent);\\n }\\n }\\n .border-destructive {\\n border-color: var(--destructive);\\n }\\n .border-emerald-500\\\\/20 {\\n border-color: color-mix(in srgb, oklch(69.6% 0.17 162.48) 20%, transparent);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--color-emerald-500) 20%, transparent);\\n }\\n }\\n .border-emerald-500\\\\/30 {\\n border-color: color-mix(in srgb, oklch(69.6% 0.17 162.48) 30%, transparent);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--color-emerald-500) 30%, transparent);\\n }\\n }\\n .border-input {\\n border-color: var(--input);\\n }\\n .border-primary {\\n border-color: var(--primary);\\n }\\n .border-primary\\\\/30 {\\n border-color: var(--primary);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--primary) 30%, transparent);\\n }\\n }\\n .border-ring {\\n border-color: var(--ring);\\n }\\n .border-transparent {\\n border-color: transparent;\\n }\\n .border-transparent\\\\! {\\n border-color: transparent !important;\\n }\\n .bg-accent\\\\/8 {\\n background-color: var(--accent);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--accent) 8%, transparent);\\n }\\n }\\n .bg-amber-500\\\\/5 {\\n background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 5%, transparent);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--color-amber-500) 5%, transparent);\\n }\\n }\\n .bg-background {\\n background-color: var(--background);\\n }\\n .bg-background\\\\/80 {\\n background-color: var(--background);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--background) 80%, transparent);\\n }\\n }\\n .bg-black\\\\/32 {\\n background-color: color-mix(in srgb, #000 32%, transparent);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--color-black) 32%, transparent);\\n }\\n }\\n .bg-blue-500 {\\n background-color: var(--color-blue-500);\\n }\\n .bg-blue-500\\\\/5 {\\n background-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 5%, transparent);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--color-blue-500) 5%, transparent);\\n }\\n }\\n .bg-border {\\n background-color: var(--border);\\n }\\n .bg-card {\\n background-color: var(--card);\\n }\\n .bg-destructive {\\n background-color: var(--destructive);\\n }\\n .bg-destructive\\\\/8 {\\n background-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--destructive) 8%, transparent);\\n }\\n }\\n .bg-destructive\\\\/10 {\\n background-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\\n }\\n }\\n .bg-emerald-500\\\\/5 {\\n background-color: color-mix(in srgb, oklch(69.6% 0.17 162.48) 5%, transparent);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--color-emerald-500) 5%, transparent);\\n }\\n }\\n .bg-emerald-500\\\\/10 {\\n background-color: color-mix(in srgb, oklch(69.6% 0.17 162.48) 10%, transparent);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--color-emerald-500) 10%, transparent);\\n }\\n }\\n .bg-foreground\\\\/20 {\\n background-color: var(--foreground);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--foreground) 20%, transparent);\\n }\\n }\\n .bg-info\\\\/8 {\\n background-color: var(--info);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--info) 8%, transparent);\\n }\\n }\\n .bg-muted {\\n background-color: var(--muted);\\n }\\n .bg-muted\\\\/30 {\\n background-color: var(--muted);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--muted) 30%, transparent);\\n }\\n }\\n .bg-muted\\\\/72 {\\n background-color: var(--muted);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--muted) 72%, transparent);\\n }\\n }\\n .bg-popover {\\n background-color: var(--popover);\\n }\\n .bg-primary {\\n background-color: var(--primary);\\n }\\n .bg-primary\\\\/10 {\\n background-color: var(--primary);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\\n }\\n }\\n .bg-purple\\\\/8 {\\n background-color: var(--purple);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--purple) 8%, transparent);\\n }\\n }\\n .bg-secondary {\\n background-color: var(--secondary);\\n }\\n .bg-success\\\\/8 {\\n background-color: var(--success);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--success) 8%, transparent);\\n }\\n }\\n .bg-transparent\\\\! {\\n background-color: transparent !important;\\n }\\n .bg-warning\\\\/8 {\\n background-color: var(--warning);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--warning) 8%, transparent);\\n }\\n }\\n .mask-t-from-\\\\[calc\\\\(100\\\\%-min\\\\(var\\\\(--fade-size\\\\)\\\\,var\\\\(--scroll-area-overflow-y-start\\\\)\\\\)\\\\)\\\\] {\\n mask-image: var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic);\\n mask-composite: intersect;\\n --tw-mask-linear: var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top);\\n --tw-mask-top: linear-gradient(to top, var(--tw-mask-top-from-color) var(--tw-mask-top-from-position), var(--tw-mask-top-to-color) var(--tw-mask-top-to-position));\\n --tw-mask-top-from-position: calc(100% - min(var(--fade-size), var(--scroll-area-overflow-y-start)));\\n }\\n .mask-r-from-\\\\[calc\\\\(100\\\\%-min\\\\(var\\\\(--fade-size\\\\)\\\\,var\\\\(--scroll-area-overflow-x-end\\\\)\\\\)\\\\)\\\\] {\\n mask-image: var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic);\\n mask-composite: intersect;\\n --tw-mask-linear: var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top);\\n --tw-mask-right: linear-gradient(to right, var(--tw-mask-right-from-color) var(--tw-mask-right-from-position), var(--tw-mask-right-to-color) var(--tw-mask-right-to-position));\\n --tw-mask-right-from-position: calc(100% - min(var(--fade-size), var(--scroll-area-overflow-x-end)));\\n }\\n .mask-b-from-\\\\[calc\\\\(100\\\\%-min\\\\(var\\\\(--fade-size\\\\)\\\\,var\\\\(--scroll-area-overflow-y-end\\\\)\\\\)\\\\)\\\\] {\\n mask-image: var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic);\\n mask-composite: intersect;\\n --tw-mask-linear: var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top);\\n --tw-mask-bottom: linear-gradient(to bottom, var(--tw-mask-bottom-from-color) var(--tw-mask-bottom-from-position), var(--tw-mask-bottom-to-color) var(--tw-mask-bottom-to-position));\\n --tw-mask-bottom-from-position: calc(100% - min(var(--fade-size), var(--scroll-area-overflow-y-end)));\\n }\\n .mask-l-from-\\\\[calc\\\\(100\\\\%-min\\\\(var\\\\(--fade-size\\\\)\\\\,var\\\\(--scroll-area-overflow-x-start\\\\)\\\\)\\\\)\\\\] {\\n mask-image: var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic);\\n mask-composite: intersect;\\n --tw-mask-linear: var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top);\\n --tw-mask-left: linear-gradient(to left, var(--tw-mask-left-from-color) var(--tw-mask-left-from-position), var(--tw-mask-left-to-color) var(--tw-mask-left-to-position));\\n --tw-mask-left-from-position: calc(100% - min(var(--fade-size), var(--scroll-area-overflow-x-start)));\\n }\\n .bg-clip-padding {\\n background-clip: padding-box;\\n }\\n .p-0 {\\n padding: calc(var(--spacing) * 0);\\n }\\n .p-1 {\\n padding: calc(var(--spacing) * 1);\\n }\\n .p-4 {\\n padding: calc(var(--spacing) * 4);\\n }\\n .p-6 {\\n padding: calc(var(--spacing) * 6);\\n }\\n .px-1 {\\n padding-inline: calc(var(--spacing) * 1);\\n }\\n .px-1\\\\.5 {\\n padding-inline: calc(var(--spacing) * 1.5);\\n }\\n .px-2 {\\n padding-inline: calc(var(--spacing) * 2);\\n }\\n .px-2\\\\.5 {\\n padding-inline: calc(var(--spacing) * 2.5);\\n }\\n .px-3 {\\n padding-inline: calc(var(--spacing) * 3);\\n }\\n .px-4 {\\n padding-inline: calc(var(--spacing) * 4);\\n }\\n .px-5 {\\n padding-inline: calc(var(--spacing) * 5);\\n }\\n .px-6 {\\n padding-inline: calc(var(--spacing) * 6);\\n }\\n .px-\\\\[calc\\\\(--spacing\\\\(1\\\\)-1px\\\\)\\\\] {\\n padding-inline: calc(calc(var(--spacing) * 1) - 1px);\\n }\\n .px-\\\\[calc\\\\(--spacing\\\\(1\\\\.5\\\\)-1px\\\\)\\\\] {\\n padding-inline: calc(calc(var(--spacing) * 1.5) - 1px);\\n }\\n .px-\\\\[calc\\\\(--spacing\\\\(2\\\\)-1px\\\\)\\\\] {\\n padding-inline: calc(calc(var(--spacing) * 2) - 1px);\\n }\\n .px-\\\\[calc\\\\(--spacing\\\\(2\\\\.5\\\\)-1px\\\\)\\\\] {\\n padding-inline: calc(calc(var(--spacing) * 2.5) - 1px);\\n }\\n .px-\\\\[calc\\\\(--spacing\\\\(3\\\\)-1px\\\\)\\\\] {\\n padding-inline: calc(calc(var(--spacing) * 3) - 1px);\\n }\\n .px-\\\\[calc\\\\(--spacing\\\\(3\\\\.5\\\\)-1px\\\\)\\\\] {\\n padding-inline: calc(calc(var(--spacing) * 3.5) - 1px);\\n }\\n .px-\\\\[calc\\\\(--spacing\\\\(4\\\\)-1px\\\\)\\\\] {\\n padding-inline: calc(calc(var(--spacing) * 4) - 1px);\\n }\\n .py-0\\\\.5 {\\n padding-block: calc(var(--spacing) * 0.5);\\n }\\n .py-1 {\\n padding-block: calc(var(--spacing) * 1);\\n }\\n .py-1\\\\.5 {\\n padding-block: calc(var(--spacing) * 1.5);\\n }\\n .py-2 {\\n padding-block: calc(var(--spacing) * 2);\\n }\\n .py-2\\\\.5 {\\n padding-block: calc(var(--spacing) * 2.5);\\n }\\n .py-3 {\\n padding-block: calc(var(--spacing) * 3);\\n }\\n .py-4 {\\n padding-block: calc(var(--spacing) * 4);\\n }\\n .py-8 {\\n padding-block: calc(var(--spacing) * 8);\\n }\\n .py-12 {\\n padding-block: calc(var(--spacing) * 12);\\n }\\n .py-20 {\\n padding-block: calc(var(--spacing) * 20);\\n }\\n .py-\\\\[calc\\\\(--spacing\\\\(1\\\\)-1px\\\\)\\\\] {\\n padding-block: calc(calc(var(--spacing) * 1) - 1px);\\n }\\n .py-\\\\[calc\\\\(--spacing\\\\(1\\\\.5\\\\)-1px\\\\)\\\\] {\\n padding-block: calc(calc(var(--spacing) * 1.5) - 1px);\\n }\\n .py-\\\\[calc\\\\(--spacing\\\\(2\\\\)-1px\\\\)\\\\] {\\n padding-block: calc(calc(var(--spacing) * 2) - 1px);\\n }\\n .py-\\\\[max\\\\(--spacing\\\\(4\\\\)\\\\,4vh\\\\)\\\\] {\\n padding-block: max(calc(var(--spacing) * 4), 4vh);\\n }\\n .ps-2 {\\n padding-inline-start: calc(var(--spacing) * 2);\\n }\\n .ps-\\\\[calc\\\\(--spacing\\\\(3\\\\)-1px\\\\)\\\\] {\\n padding-inline-start: calc(calc(var(--spacing) * 3) - 1px);\\n }\\n .pe-4 {\\n padding-inline-end: calc(var(--spacing) * 4);\\n }\\n .pe-\\\\[calc\\\\(--spacing\\\\(3\\\\)-1px\\\\)\\\\] {\\n padding-inline-end: calc(calc(var(--spacing) * 3) - 1px);\\n }\\n .pt-0 {\\n padding-top: calc(var(--spacing) * 0);\\n }\\n .pt-2 {\\n padding-top: calc(var(--spacing) * 2);\\n }\\n .pt-4 {\\n padding-top: calc(var(--spacing) * 4);\\n }\\n .pt-20 {\\n padding-top: calc(var(--spacing) * 20);\\n }\\n .pt-\\\\[calc\\\\(--spacing\\\\(3\\\\)-1px\\\\)\\\\] {\\n padding-top: calc(calc(var(--spacing) * 3) - 1px);\\n }\\n .pr-4 {\\n padding-right: calc(var(--spacing) * 4);\\n }\\n .pb-2 {\\n padding-bottom: calc(var(--spacing) * 2);\\n }\\n .pb-6 {\\n padding-bottom: calc(var(--spacing) * 6);\\n }\\n .pb-\\\\[calc\\\\(--spacing\\\\(3\\\\)-1px\\\\)\\\\] {\\n padding-bottom: calc(calc(var(--spacing) * 3) - 1px);\\n }\\n .pl-3 {\\n padding-left: calc(var(--spacing) * 3);\\n }\\n .pl-4 {\\n padding-left: calc(var(--spacing) * 4);\\n }\\n .pl-6 {\\n padding-left: calc(var(--spacing) * 6);\\n }\\n .text-center {\\n text-align: center;\\n }\\n .text-left {\\n text-align: left;\\n }\\n .font-mono {\\n font-family: ui-monospace, SFMono-Regular, \\\"SF Mono\\\", Menlo, Consolas,\\n monospace;\\n }\\n .font-sans {\\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,\\n \\\"Segoe UI\\\", Roboto, sans-serif;\\n }\\n .text-2xl {\\n font-size: var(--text-2xl);\\n line-height: var(--tw-leading, var(--text-2xl--line-height));\\n }\\n .text-3xl {\\n font-size: var(--text-3xl);\\n line-height: var(--tw-leading, var(--text-3xl--line-height));\\n }\\n .text-4xl {\\n font-size: var(--text-4xl);\\n line-height: var(--tw-leading, var(--text-4xl--line-height));\\n }\\n .text-base {\\n font-size: var(--text-base);\\n line-height: var(--tw-leading, var(--text-base--line-height));\\n }\\n .text-base\\\\/4\\\\.5 {\\n font-size: var(--text-base);\\n line-height: calc(var(--spacing) * 4.5);\\n }\\n .text-lg {\\n font-size: var(--text-lg);\\n line-height: var(--tw-leading, var(--text-lg--line-height));\\n }\\n .text-sm {\\n font-size: var(--text-sm);\\n line-height: var(--tw-leading, var(--text-sm--line-height));\\n }\\n .text-xl {\\n font-size: var(--text-xl);\\n line-height: var(--tw-leading, var(--text-xl--line-height));\\n }\\n .text-xs {\\n font-size: var(--text-xs);\\n line-height: var(--tw-leading, var(--text-xs--line-height));\\n }\\n .text-\\\\[10px\\\\] {\\n font-size: 10px;\\n }\\n .text-\\\\[11px\\\\] {\\n font-size: 11px;\\n }\\n .leading-7 {\\n --tw-leading: calc(var(--spacing) * 7);\\n line-height: calc(var(--spacing) * 7);\\n }\\n .leading-7\\\\.5 {\\n --tw-leading: calc(var(--spacing) * 7.5);\\n line-height: calc(var(--spacing) * 7.5);\\n }\\n .leading-8\\\\.5 {\\n --tw-leading: calc(var(--spacing) * 8.5);\\n line-height: calc(var(--spacing) * 8.5);\\n }\\n .leading-9\\\\.5 {\\n --tw-leading: calc(var(--spacing) * 9.5);\\n line-height: calc(var(--spacing) * 9.5);\\n }\\n .leading-loose {\\n --tw-leading: var(--leading-loose);\\n line-height: var(--leading-loose);\\n }\\n .leading-none {\\n --tw-leading: 1;\\n line-height: 1;\\n }\\n .leading-relaxed {\\n --tw-leading: var(--leading-relaxed);\\n line-height: var(--leading-relaxed);\\n }\\n .font-bold {\\n --tw-font-weight: var(--font-weight-bold);\\n font-weight: var(--font-weight-bold);\\n }\\n .font-medium {\\n --tw-font-weight: var(--font-weight-medium);\\n font-weight: var(--font-weight-medium);\\n }\\n .font-semibold {\\n --tw-font-weight: var(--font-weight-semibold);\\n font-weight: var(--font-weight-semibold);\\n }\\n .tracking-tight {\\n --tw-tracking: var(--tracking-tight);\\n letter-spacing: var(--tracking-tight);\\n }\\n .tracking-wide {\\n --tw-tracking: var(--tracking-wide);\\n letter-spacing: var(--tracking-wide);\\n }\\n .tracking-widest {\\n --tw-tracking: var(--tracking-widest);\\n letter-spacing: var(--tracking-widest);\\n }\\n .text-balance {\\n text-wrap: balance;\\n }\\n .whitespace-nowrap {\\n white-space: nowrap;\\n }\\n .text-accent-foreground {\\n color: var(--accent-foreground);\\n }\\n .text-amber-700 {\\n color: var(--color-amber-700);\\n }\\n .text-blue-700 {\\n color: var(--color-blue-700);\\n }\\n .text-card-foreground {\\n color: var(--card-foreground);\\n }\\n .text-destructive {\\n color: var(--destructive);\\n }\\n .text-destructive-foreground {\\n color: var(--destructive-foreground);\\n }\\n .text-emerald-600 {\\n color: var(--color-emerald-600);\\n }\\n .text-emerald-700 {\\n color: var(--color-emerald-700);\\n }\\n .text-foreground {\\n color: var(--foreground);\\n }\\n .text-info-foreground {\\n color: var(--info-foreground);\\n }\\n .text-muted-foreground {\\n color: var(--muted-foreground);\\n }\\n .text-muted-foreground\\\\/72 {\\n color: var(--muted-foreground);\\n @supports (color: color-mix(in lab, red, red)) {\\n color: color-mix(in oklab, var(--muted-foreground) 72%, transparent);\\n }\\n }\\n .text-popover-foreground {\\n color: var(--popover-foreground);\\n }\\n .text-primary {\\n color: var(--primary);\\n }\\n .text-primary-foreground {\\n color: var(--primary-foreground);\\n }\\n .text-purple-foreground {\\n color: var(--purple-foreground);\\n }\\n .text-secondary-foreground {\\n color: var(--secondary-foreground);\\n }\\n .text-success-foreground {\\n color: var(--success-foreground);\\n }\\n .text-warning-foreground {\\n color: var(--warning-foreground);\\n }\\n .text-white {\\n color: var(--color-white);\\n }\\n .lowercase {\\n text-transform: lowercase;\\n }\\n .uppercase {\\n text-transform: uppercase;\\n }\\n .italic {\\n font-style: italic;\\n }\\n .line-through {\\n text-decoration-line: line-through;\\n }\\n .underline {\\n text-decoration-line: underline;\\n }\\n .underline-offset-4 {\\n text-underline-offset: 4px;\\n }\\n .antialiased {\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n }\\n .opacity-0 {\\n opacity: 0%;\\n }\\n .opacity-50 {\\n opacity: 50%;\\n }\\n .opacity-80 {\\n opacity: 80%;\\n }\\n .opacity-\\\\[calc\\\\(1-0\\\\.1\\\\*var\\\\(--nested-dialogs\\\\)\\\\)\\\\] {\\n opacity: calc(1 - 0.1 * var(--nested-dialogs));\\n }\\n .opacity-\\\\[calc\\\\(1-var\\\\(--nested-dialogs\\\\)\\\\)\\\\] {\\n opacity: calc(1 - var(--nested-dialogs));\\n }\\n .shadow-lg\\\\/5 {\\n --tw-shadow-alpha: 5%;\\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 5%)), 0 4px 6px -4px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 5%));\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n .shadow-md\\\\/5 {\\n --tw-shadow-alpha: 5%;\\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 5%)), 0 2px 4px -2px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 5%));\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n .shadow-xs\\\\/5 {\\n --tw-shadow-alpha: 5%;\\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.05) l a b / 5%));\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n .shadow {\\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n .shadow-none {\\n --tw-shadow: 0 0 #0000;\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n .shadow-xs {\\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n .ring {\\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n .ring-1 {\\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n .ring-2 {\\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n .shadow-destructive\\\\/24 {\\n --tw-shadow-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--destructive) 24%, transparent) var(--tw-shadow-alpha), transparent);\\n }\\n }\\n .shadow-primary\\\\/24 {\\n --tw-shadow-color: var(--primary);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--primary) 24%, transparent) var(--tw-shadow-alpha), transparent);\\n }\\n }\\n .ring-background {\\n --tw-ring-color: var(--background);\\n }\\n .ring-ring {\\n --tw-ring-color: var(--ring);\\n }\\n .ring-ring\\\\/24 {\\n --tw-ring-color: var(--ring);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--ring) 24%, transparent);\\n }\\n }\\n .ring-ring\\\\/50 {\\n --tw-ring-color: var(--ring);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\\n }\\n }\\n .outline {\\n outline-style: var(--tw-outline-style);\\n outline-width: 1px;\\n }\\n .invert {\\n --tw-invert: invert(100%);\\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\\n }\\n .filter {\\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\\n }\\n .backdrop-blur-sm {\\n --tw-backdrop-blur: blur(var(--blur-sm));\\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\\n }\\n .transition {\\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\\n transition-duration: var(--tw-duration, var(--default-transition-duration));\\n }\\n .transition-\\\\[color\\\\,background-color\\\\,box-shadow\\\\,opacity\\\\] {\\n transition-property: color,background-color,box-shadow,opacity;\\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\\n transition-duration: var(--tw-duration, var(--default-transition-duration));\\n }\\n .transition-\\\\[scale\\\\,opacity\\\\,translate\\\\] {\\n transition-property: scale,opacity,translate;\\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\\n transition-duration: var(--tw-duration, var(--default-transition-duration));\\n }\\n .transition-\\\\[scale\\\\,opacity\\\\] {\\n transition-property: scale,opacity;\\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\\n transition-duration: var(--tw-duration, var(--default-transition-duration));\\n }\\n .transition-\\\\[top\\\\,left\\\\,right\\\\,bottom\\\\,transform\\\\] {\\n transition-property: top,left,right,bottom,transform;\\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\\n transition-duration: var(--tw-duration, var(--default-transition-duration));\\n }\\n .transition-all {\\n transition-property: all;\\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\\n transition-duration: var(--tw-duration, var(--default-transition-duration));\\n }\\n .transition-colors {\\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\\n transition-duration: var(--tw-duration, var(--default-transition-duration));\\n }\\n .transition-opacity {\\n transition-property: opacity;\\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\\n transition-duration: var(--tw-duration, var(--default-transition-duration));\\n }\\n .transition-shadow {\\n transition-property: box-shadow;\\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\\n transition-duration: var(--tw-duration, var(--default-transition-duration));\\n }\\n .transition-transform {\\n transition-property: transform, translate, scale, rotate;\\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\\n transition-duration: var(--tw-duration, var(--default-transition-duration));\\n }\\n .delay-300 {\\n transition-delay: 300ms;\\n }\\n .duration-200 {\\n --tw-duration: 200ms;\\n transition-duration: 200ms;\\n }\\n .ease-in-out {\\n --tw-ease: var(--ease-in-out);\\n transition-timing-function: var(--ease-in-out);\\n }\\n .will-change-transform {\\n will-change: transform;\\n }\\n .delay-300 {\\n animation-delay: calc(300*1ms);\\n animation-delay: .3s;\\n --tw-animation-delay: calc(300*1ms);\\n --tw-animation-delay: .3s;\\n }\\n .outline-none {\\n --tw-outline-style: none;\\n outline-style: none;\\n }\\n .select-none {\\n -webkit-user-select: none;\\n user-select: none;\\n }\\n .\\\\[--fade-size\\\\:1\\\\.5rem\\\\] {\\n --fade-size: 1.5rem;\\n }\\n .\\\\[clip-path\\\\:inset\\\\(0_1px\\\\)\\\\] {\\n clip-path: inset(0 1px);\\n }\\n .\\\\[counter-reset\\\\:step\\\\] {\\n counter-reset: step;\\n }\\n .\\\\[transition\\\\:background-color_5000000s_ease-in-out_0s\\\\] {\\n transition: background-color 5000000s ease-in-out 0s;\\n }\\n .running {\\n animation-play-state: running;\\n }\\n .not-empty\\\\:scroll-py-1 {\\n &:not(*:empty) {\\n scroll-padding-block: calc(var(--spacing) * 1);\\n }\\n }\\n .not-empty\\\\:scroll-py-2 {\\n &:not(*:empty) {\\n scroll-padding-block: calc(var(--spacing) * 2);\\n }\\n }\\n .not-empty\\\\:p-1 {\\n &:not(*:empty) {\\n padding: calc(var(--spacing) * 1);\\n }\\n }\\n .not-empty\\\\:p-2 {\\n &:not(*:empty) {\\n padding: calc(var(--spacing) * 2);\\n }\\n }\\n .not-empty\\\\:py-6 {\\n &:not(*:empty) {\\n padding-block: calc(var(--spacing) * 6);\\n }\\n }\\n .not-disabled\\\\:inset-shadow-\\\\[0_1px_--theme\\\\(--color-white\\\\/16\\\\%\\\\)\\\\] {\\n &:not(*:disabled) {\\n --tw-inset-shadow: inset 0 1px var(--tw-inset-shadow-color, color-mix(in srgb, #fff 16%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-inset-shadow: inset 0 1px var(--tw-inset-shadow-color, color-mix(in oklab, var(--color-white) 16%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .not-in-data-\\\\[slot\\\\=field\\\\]\\\\:mb-2 {\\n &:not(:where(*[data-slot=\\\"field\\\"]) *) {\\n margin-bottom: calc(var(--spacing) * 2);\\n }\\n }\\n .not-has-\\\\[\\\\+\\\\[data-slot\\\\=command-footer\\\\]\\\\]\\\\:-mb-px {\\n &:not(*:has(+[data-slot=command-footer])) {\\n margin-bottom: -1px;\\n }\\n }\\n .not-has-\\\\[\\\\+\\\\[data-slot\\\\=command-footer\\\\]\\\\]\\\\:rounded-b-2xl {\\n &:not(*:has(+[data-slot=command-footer])) {\\n border-bottom-right-radius: calc(var(--radius) * 1.8);\\n border-bottom-left-radius: calc(var(--radius) * 1.8);\\n }\\n }\\n .not-has-\\\\[\\\\+\\\\[data-slot\\\\=command-footer\\\\]\\\\]\\\\:\\\\[clip-path\\\\:inset\\\\(0_1px_1px_1px_round_0_0_calc\\\\(var\\\\(--radius-2xl\\\\)-1px\\\\)_calc\\\\(var\\\\(--radius-2xl\\\\)-1px\\\\)\\\\)\\\\] {\\n &:not(*:has(+[data-slot=command-footer])) {\\n clip-path: inset(0 1px 1px 1px round 0 0 calc(var(--radius-2xl) - 1px) calc(var(--radius-2xl) - 1px));\\n }\\n }\\n .not-has-\\\\[\\\\>\\\\*\\\\.w-full\\\\]\\\\:w-fit {\\n &:not(*:has(>*.w-full)) {\\n width: fit-content;\\n }\\n }\\n .not-dark\\\\:bg-clip-padding {\\n &:not(*:is(.dark *)) {\\n background-clip: padding-box;\\n }\\n }\\n .not-\\\\[class\\\\*\\\\=\\\\'w-\\\\'\\\\]\\\\:min-w-32 {\\n &:not(*:is(class*='w-')) {\\n min-width: calc(var(--spacing) * 32);\\n }\\n }\\n .group-hover\\\\:translate-x-0\\\\.5 {\\n &:is(:where(.group):hover *) {\\n @media (hover: hover) {\\n --tw-translate-x: calc(var(--spacing) * 0.5);\\n translate: var(--tw-translate-x) var(--tw-translate-y);\\n }\\n }\\n }\\n .group-hover\\\\:opacity-100 {\\n &:is(:where(.group):hover *) {\\n @media (hover: hover) {\\n opacity: 100%;\\n }\\n }\\n }\\n .file\\\\:me-3 {\\n &::file-selector-button {\\n margin-inline-end: calc(var(--spacing) * 3);\\n }\\n }\\n .file\\\\:bg-transparent {\\n &::file-selector-button {\\n background-color: transparent;\\n }\\n }\\n .file\\\\:text-sm {\\n &::file-selector-button {\\n font-size: var(--text-sm);\\n line-height: var(--tw-leading, var(--text-sm--line-height));\\n }\\n }\\n .file\\\\:font-medium {\\n &::file-selector-button {\\n --tw-font-weight: var(--font-weight-medium);\\n font-weight: var(--font-weight-medium);\\n }\\n }\\n .file\\\\:text-foreground {\\n &::file-selector-button {\\n color: var(--foreground);\\n }\\n }\\n .placeholder\\\\:text-muted-foreground {\\n &::placeholder {\\n color: var(--muted-foreground);\\n }\\n }\\n .placeholder\\\\:text-muted-foreground\\\\/72 {\\n &::placeholder {\\n color: var(--muted-foreground);\\n @supports (color: color-mix(in lab, red, red)) {\\n color: color-mix(in oklab, var(--muted-foreground) 72%, transparent);\\n }\\n }\\n }\\n .before\\\\:pointer-events-none {\\n &::before {\\n content: var(--tw-content);\\n pointer-events: none;\\n }\\n }\\n .before\\\\:absolute {\\n &::before {\\n content: var(--tw-content);\\n position: absolute;\\n }\\n }\\n .before\\\\:inset-0 {\\n &::before {\\n content: var(--tw-content);\\n inset: calc(var(--spacing) * 0);\\n }\\n }\\n .before\\\\:inset-x-px {\\n &::before {\\n content: var(--tw-content);\\n inset-inline: 1px;\\n }\\n }\\n .before\\\\:top-px {\\n &::before {\\n content: var(--tw-content);\\n top: 1px;\\n }\\n }\\n .before\\\\:bottom-px {\\n &::before {\\n content: var(--tw-content);\\n bottom: 1px;\\n }\\n }\\n .before\\\\:left-1\\\\.5 {\\n &::before {\\n content: var(--tw-content);\\n left: calc(var(--spacing) * 1.5);\\n }\\n }\\n .before\\\\:hidden {\\n &::before {\\n content: var(--tw-content);\\n display: none;\\n }\\n }\\n .before\\\\:h-\\\\[200\\\\%\\\\] {\\n &::before {\\n content: var(--tw-content);\\n height: 200%;\\n }\\n }\\n .before\\\\:rounded-\\\\[3px\\\\] {\\n &::before {\\n content: var(--tw-content);\\n border-radius: 3px;\\n }\\n }\\n .before\\\\:rounded-\\\\[calc\\\\(var\\\\(--radius-2xl\\\\)-1px\\\\)\\\\] {\\n &::before {\\n content: var(--tw-content);\\n border-radius: calc(var(--radius-2xl) - 1px);\\n }\\n }\\n .before\\\\:rounded-\\\\[calc\\\\(var\\\\(--radius-lg\\\\)-1px\\\\)\\\\] {\\n &::before {\\n content: var(--tw-content);\\n border-radius: calc(var(--radius-lg) - 1px);\\n }\\n }\\n .before\\\\:rounded-\\\\[calc\\\\(var\\\\(--radius-md\\\\)-1px\\\\)\\\\] {\\n &::before {\\n content: var(--tw-content);\\n border-radius: calc(var(--radius-md) - 1px);\\n }\\n }\\n .before\\\\:rounded-t-\\\\[calc\\\\(var\\\\(--radius-lg\\\\)-1px\\\\)\\\\] {\\n &::before {\\n content: var(--tw-content);\\n border-top-left-radius: calc(var(--radius-lg) - 1px);\\n border-top-right-radius: calc(var(--radius-lg) - 1px);\\n }\\n }\\n .before\\\\:rounded-t-\\\\[calc\\\\(var\\\\(--radius-xl\\\\)-1px\\\\)\\\\] {\\n &::before {\\n content: var(--tw-content);\\n border-top-left-radius: calc(var(--radius-xl) - 1px);\\n border-top-right-radius: calc(var(--radius-xl) - 1px);\\n }\\n }\\n .before\\\\:rounded-b-\\\\[calc\\\\(var\\\\(--radius-lg\\\\)-1px\\\\)\\\\] {\\n &::before {\\n content: var(--tw-content);\\n border-bottom-right-radius: calc(var(--radius-lg) - 1px);\\n border-bottom-left-radius: calc(var(--radius-lg) - 1px);\\n }\\n }\\n .before\\\\:bg-muted\\\\/72 {\\n &::before {\\n content: var(--tw-content);\\n background-color: var(--muted);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--muted) 72%, transparent);\\n }\\n }\\n }\\n .before\\\\:bg-linear-to-b {\\n &::before {\\n content: var(--tw-content);\\n --tw-gradient-position: to bottom;\\n @supports (background-image: linear-gradient(in lab, red, red)) {\\n --tw-gradient-position: to bottom in oklab;\\n }\\n background-image: linear-gradient(var(--tw-gradient-stops));\\n }\\n }\\n .before\\\\:bg-linear-to-t {\\n &::before {\\n content: var(--tw-content);\\n --tw-gradient-position: to top;\\n @supports (background-image: linear-gradient(in lab, red, red)) {\\n --tw-gradient-position: to top in oklab;\\n }\\n background-image: linear-gradient(var(--tw-gradient-stops));\\n }\\n }\\n .before\\\\:from-popover {\\n &::before {\\n content: var(--tw-content);\\n --tw-gradient-from: var(--popover);\\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\\n }\\n }\\n .before\\\\:from-50\\\\% {\\n &::before {\\n content: var(--tw-content);\\n --tw-gradient-from-position: 50%;\\n }\\n }\\n .before\\\\:shadow-\\\\[0_1px_--theme\\\\(--color-black\\\\/4\\\\%\\\\)\\\\] {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in srgb, #000 4%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in oklab, var(--color-black) 4%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .before\\\\:content-\\\\[\\\\'·\\\\'\\\\] {\\n &::before {\\n --tw-content: '·';\\n content: var(--tw-content);\\n }\\n }\\n .not-has-disabled\\\\:not-has-focus-visible\\\\:not-has-aria-invalid\\\\:before\\\\:shadow-\\\\[0_1px_--theme\\\\(--color-black\\\\/4\\\\%\\\\)\\\\] {\\n &:not(*:has(*:disabled)) {\\n &:not(*:has(*:focus-visible)) {\\n &:not(*:has(*[aria-invalid=\\\"true\\\"])) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in srgb, #000 4%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in oklab, var(--color-black) 4%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n .not-has-\\\\[input\\\\:disabled\\\\,textarea\\\\:disabled\\\\]\\\\:not-has-\\\\[input\\\\:focus-visible\\\\,textarea\\\\:focus-visible\\\\]\\\\:not-has-\\\\[input\\\\[aria-invalid\\\\]\\\\,textarea\\\\[aria-invalid\\\\]\\\\]\\\\:before\\\\:shadow-\\\\[0_1px_--theme\\\\(--color-black\\\\/4\\\\%\\\\)\\\\] {\\n &:not(*:has(*:is(input:disabled,textarea:disabled))) {\\n &:not(*:has(*:is(input:focus-visible,textarea:focus-visible))) {\\n &:not(*:has(*:is(input[aria-invalid],textarea[aria-invalid]))) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in srgb, #000 4%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in oklab, var(--color-black) 4%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n .not-disabled\\\\:not-active\\\\:not-data-pressed\\\\:before\\\\:shadow-\\\\[0_1px_--theme\\\\(--color-black\\\\/4\\\\%\\\\)\\\\] {\\n &:not(*:disabled) {\\n &:not(*:active) {\\n &:not(*[data-pressed]) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in srgb, #000 4%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in oklab, var(--color-black) 4%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n .not-data-disabled\\\\:not-focus-visible\\\\:not-aria-invalid\\\\:not-data-pressed\\\\:before\\\\:shadow-\\\\[0_1px_--theme\\\\(--color-black\\\\/4\\\\%\\\\)\\\\] {\\n &:not(*:where([data-disabled=\\\"true\\\"]), *:where([data-disabled]:not([data-disabled=\\\"false\\\"]))) {\\n &:not(*:focus-visible) {\\n &:not(*[aria-invalid=\\\"true\\\"]) {\\n &:not(*[data-pressed]) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in srgb, #000 4%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in oklab, var(--color-black) 4%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n }\\n .not-data-disabled\\\\:not-data-checked\\\\:not-aria-invalid\\\\:before\\\\:shadow-\\\\[0_1px_--theme\\\\(--color-black\\\\/4\\\\%\\\\)\\\\] {\\n &:not(*:where([data-disabled=\\\"true\\\"]), *:where([data-disabled]:not([data-disabled=\\\"false\\\"]))) {\\n &:not(*:where([data-state=\\\"checked\\\"]), *:where([data-checked]:not([data-checked=\\\"false\\\"]))) {\\n &:not(*[aria-invalid=\\\"true\\\"]) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in srgb, #000 4%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in oklab, var(--color-black) 4%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n .last\\\\:hidden {\\n &:last-child {\\n display: none;\\n }\\n }\\n .empty\\\\:m-0 {\\n &:empty {\\n margin: calc(var(--spacing) * 0);\\n }\\n }\\n .empty\\\\:p-0 {\\n &:empty {\\n padding: calc(var(--spacing) * 0);\\n }\\n }\\n .hover\\\\:border-destructive\\\\/32 {\\n &:hover {\\n @media (hover: hover) {\\n border-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--destructive) 32%, transparent);\\n }\\n }\\n }\\n }\\n .hover\\\\:border-foreground\\\\/20 {\\n &:hover {\\n @media (hover: hover) {\\n border-color: var(--foreground);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--foreground) 20%, transparent);\\n }\\n }\\n }\\n }\\n .hover\\\\:bg-accent {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--accent);\\n }\\n }\\n }\\n .hover\\\\:bg-accent\\\\/50 {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--accent);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\\n }\\n }\\n }\\n }\\n .hover\\\\:bg-destructive\\\\/4 {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--destructive) 4%, transparent);\\n }\\n }\\n }\\n }\\n .hover\\\\:bg-destructive\\\\/20 {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--destructive) 20%, transparent);\\n }\\n }\\n }\\n }\\n .hover\\\\:bg-destructive\\\\/90 {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\\n }\\n }\\n }\\n }\\n .hover\\\\:bg-muted {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--muted);\\n }\\n }\\n }\\n .hover\\\\:bg-primary\\\\/90 {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--primary);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\\n }\\n }\\n }\\n }\\n .hover\\\\:bg-secondary\\\\/80 {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--secondary);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\\n }\\n }\\n }\\n }\\n .hover\\\\:bg-secondary\\\\/90 {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--secondary);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--secondary) 90%, transparent);\\n }\\n }\\n }\\n }\\n .hover\\\\:text-destructive {\\n &:hover {\\n @media (hover: hover) {\\n color: var(--destructive);\\n }\\n }\\n }\\n .hover\\\\:text-foreground {\\n &:hover {\\n @media (hover: hover) {\\n color: var(--foreground);\\n }\\n }\\n }\\n .hover\\\\:text-primary {\\n &:hover {\\n @media (hover: hover) {\\n color: var(--primary);\\n }\\n }\\n }\\n .hover\\\\:underline {\\n &:hover {\\n @media (hover: hover) {\\n text-decoration-line: underline;\\n }\\n }\\n }\\n .hover\\\\:opacity-100 {\\n &:hover {\\n @media (hover: hover) {\\n opacity: 100%;\\n }\\n }\\n }\\n .focus\\\\:border-ring {\\n &:focus {\\n border-color: var(--ring);\\n }\\n }\\n .focus\\\\:ring-1 {\\n &:focus {\\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .focus\\\\:ring-ring\\\\/50 {\\n &:focus {\\n --tw-ring-color: var(--ring);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\\n }\\n }\\n }\\n .focus\\\\:outline-none {\\n &:focus {\\n --tw-outline-style: none;\\n outline-style: none;\\n }\\n }\\n .focus-visible\\\\:border-destructive\\\\/40 {\\n &:focus-visible {\\n border-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--destructive) 40%, transparent);\\n }\\n }\\n }\\n .focus-visible\\\\:border-ring {\\n &:focus-visible {\\n border-color: var(--ring);\\n }\\n }\\n .focus-visible\\\\:ring-1 {\\n &:focus-visible {\\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .focus-visible\\\\:ring-2 {\\n &:focus-visible {\\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .focus-visible\\\\:ring-\\\\[3px\\\\] {\\n &:focus-visible {\\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .focus-visible\\\\:ring-destructive\\\\/20 {\\n &:focus-visible {\\n --tw-ring-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\\n }\\n }\\n }\\n .focus-visible\\\\:ring-ring {\\n &:focus-visible {\\n --tw-ring-color: var(--ring);\\n }\\n }\\n .focus-visible\\\\:ring-ring\\\\/50 {\\n &:focus-visible {\\n --tw-ring-color: var(--ring);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\\n }\\n }\\n }\\n .focus-visible\\\\:ring-offset-1 {\\n &:focus-visible {\\n --tw-ring-offset-width: 1px;\\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n }\\n }\\n .focus-visible\\\\:ring-offset-background {\\n &:focus-visible {\\n --tw-ring-offset-color: var(--background);\\n }\\n }\\n .active\\\\:translate-y-px {\\n &:active {\\n --tw-translate-y: 1px;\\n translate: var(--tw-translate-x) var(--tw-translate-y);\\n }\\n }\\n .disabled\\\\:pointer-events-none {\\n &:disabled {\\n pointer-events: none;\\n }\\n }\\n .disabled\\\\:opacity-50 {\\n &:disabled {\\n opacity: 50%;\\n }\\n }\\n .disabled\\\\:opacity-64 {\\n &:disabled {\\n opacity: 64%;\\n }\\n }\\n .in-data-has-overflow-y\\\\:pe-3 {\\n :where(*[data-has-overflow-y]) & {\\n padding-inline-end: calc(var(--spacing) * 3);\\n }\\n }\\n .in-data-placeholder\\\\:text-muted-foreground\\\\/72 {\\n :where(*[data-placeholder]) & {\\n color: var(--muted-foreground);\\n @supports (color: color-mix(in lab, red, red)) {\\n color: color-mix(in oklab, var(--muted-foreground) 72%, transparent);\\n }\\n }\\n }\\n .in-data-\\\\[side\\\\=none\\\\]\\\\:min-w-\\\\[calc\\\\(var\\\\(--anchor-width\\\\)\\\\+1\\\\.25rem\\\\)\\\\] {\\n :where(*[data-side=\\\"none\\\"]) & {\\n min-width: calc(var(--anchor-width) + 1.25rem);\\n }\\n }\\n .in-\\\\[\\\\[data-slot\\\\=button\\\\]\\\\:hover\\\\]\\\\:translate-x-0\\\\.5 {\\n :where(*:is([data-slot=button]:hover)) & {\\n --tw-translate-x: calc(var(--spacing) * 0.5);\\n translate: var(--tw-translate-x) var(--tw-translate-y);\\n }\\n }\\n .in-\\\\[\\\\[data-slot\\\\=dialog-popup\\\\]\\\\:has\\\\(\\\\[data-slot\\\\=dialog-footer\\\\]\\\\:not\\\\(\\\\.border-t\\\\)\\\\)\\\\]\\\\:pb-1 {\\n :where(*:is([data-slot=dialog-popup]:has([data-slot=dialog-footer]:not(.border-t)))) & {\\n padding-bottom: calc(var(--spacing) * 1);\\n }\\n }\\n .in-\\\\[\\\\[data-slot\\\\=dialog-popup\\\\]\\\\:has\\\\(\\\\[data-slot\\\\=dialog-header\\\\]\\\\)\\\\]\\\\:pt-1 {\\n :where(*:is([data-slot=dialog-popup]:has([data-slot=dialog-header]))) & {\\n padding-top: calc(var(--spacing) * 1);\\n }\\n }\\n .in-\\\\[\\\\[data-slot\\\\=dialog-popup\\\\]\\\\:has\\\\(\\\\[data-slot\\\\=dialog-panel\\\\]\\\\)\\\\]\\\\:pt-3 {\\n :where(*:is([data-slot=dialog-popup]:has([data-slot=dialog-panel]))) & {\\n padding-top: calc(var(--spacing) * 3);\\n }\\n }\\n .in-\\\\[\\\\[data-slot\\\\=dialog-popup\\\\]\\\\:has\\\\(\\\\[data-slot\\\\=dialog-panel\\\\]\\\\)\\\\]\\\\:pb-3 {\\n :where(*:is([data-slot=dialog-popup]:has([data-slot=dialog-panel]))) & {\\n padding-bottom: calc(var(--spacing) * 3);\\n }\\n }\\n .not-has-disabled\\\\:has-not-focus-visible\\\\:not-has-aria-invalid\\\\:before\\\\:shadow-\\\\[0_1px_--theme\\\\(--color-black\\\\/4\\\\%\\\\)\\\\] {\\n &:not(*:has(*:disabled)) {\\n &:has(*:not(*:focus-visible)) {\\n &:not(*:has(*[aria-invalid=\\\"true\\\"])) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in srgb, #000 4%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 1px var(--tw-shadow-color, color-mix(in oklab, var(--color-black) 4%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n .has-autofill\\\\:bg-foreground\\\\/4 {\\n &:has(*:autofill) {\\n background-color: var(--foreground);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--foreground) 4%, transparent);\\n }\\n }\\n }\\n .has-focus-visible\\\\:border-ring {\\n &:has(*:focus-visible) {\\n border-color: var(--ring);\\n }\\n }\\n .has-focus-visible\\\\:ring-0 {\\n &:has(*:focus-visible) {\\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .has-focus-visible\\\\:ring-\\\\[3px\\\\] {\\n &:has(*:focus-visible) {\\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .has-disabled\\\\:opacity-64 {\\n &:has(*:disabled) {\\n opacity: 64%;\\n }\\n }\\n .has-aria-invalid\\\\:border-destructive\\\\/36 {\\n &:has(*[aria-invalid=\\\"true\\\"]) {\\n border-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--destructive) 36%, transparent);\\n }\\n }\\n }\\n .has-focus-visible\\\\:has-aria-invalid\\\\:border-destructive\\\\/64 {\\n &:has(*:focus-visible) {\\n &:has(*[aria-invalid=\\\"true\\\"]) {\\n border-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--destructive) 64%, transparent);\\n }\\n }\\n }\\n }\\n .has-focus-visible\\\\:has-aria-invalid\\\\:ring-destructive\\\\/16 {\\n &:has(*:focus-visible) {\\n &:has(*[aria-invalid=\\\"true\\\"]) {\\n --tw-ring-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--destructive) 16%, transparent);\\n }\\n }\\n }\\n }\\n .has-data-\\\\[align\\\\=block-end\\\\]\\\\:h-auto {\\n &:has(*[data-align=\\\"block-end\\\"]) {\\n height: auto;\\n }\\n }\\n .has-data-\\\\[align\\\\=block-end\\\\]\\\\:flex-col {\\n &:has(*[data-align=\\\"block-end\\\"]) {\\n flex-direction: column;\\n }\\n }\\n .has-data-\\\\[align\\\\=block-start\\\\]\\\\:h-auto {\\n &:has(*[data-align=\\\"block-start\\\"]) {\\n height: auto;\\n }\\n }\\n .has-data-\\\\[align\\\\=block-start\\\\]\\\\:flex-col {\\n &:has(*[data-align=\\\"block-start\\\"]) {\\n flex-direction: column;\\n }\\n }\\n .has-data-\\\\[icon\\\\=inline-end\\\\]\\\\:pr-1\\\\.5 {\\n &:has(*[data-icon=\\\"inline-end\\\"]) {\\n padding-right: calc(var(--spacing) * 1.5);\\n }\\n }\\n .has-data-\\\\[icon\\\\=inline-end\\\\]\\\\:pr-2 {\\n &:has(*[data-icon=\\\"inline-end\\\"]) {\\n padding-right: calc(var(--spacing) * 2);\\n }\\n }\\n .has-data-\\\\[icon\\\\=inline-end\\\\]\\\\:pr-3 {\\n &:has(*[data-icon=\\\"inline-end\\\"]) {\\n padding-right: calc(var(--spacing) * 3);\\n }\\n }\\n .has-data-\\\\[icon\\\\=inline-start\\\\]\\\\:pl-1\\\\.5 {\\n &:has(*[data-icon=\\\"inline-start\\\"]) {\\n padding-left: calc(var(--spacing) * 1.5);\\n }\\n }\\n .has-data-\\\\[icon\\\\=inline-start\\\\]\\\\:pl-2 {\\n &:has(*[data-icon=\\\"inline-start\\\"]) {\\n padding-left: calc(var(--spacing) * 2);\\n }\\n }\\n .has-data-\\\\[icon\\\\=inline-start\\\\]\\\\:pl-3 {\\n &:has(*[data-icon=\\\"inline-start\\\"]) {\\n padding-left: calc(var(--spacing) * 3);\\n }\\n }\\n .has-\\\\[\\\\:disabled\\\\,\\\\:focus-visible\\\\,\\\\[aria-invalid\\\\]\\\\]\\\\:shadow-none {\\n &:has(*:is(:disabled,:focus-visible,[aria-invalid])) {\\n --tw-shadow: 0 0 #0000;\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .has-\\\\[input\\\\:disabled\\\\,textarea\\\\:disabled\\\\]\\\\:opacity-64 {\\n &:has(*:is(input:disabled,textarea:disabled)) {\\n opacity: 64%;\\n }\\n }\\n .has-\\\\[input\\\\:disabled\\\\,textarea\\\\:disabled\\\\,input\\\\:focus-visible\\\\,textarea\\\\:focus-visible\\\\,input\\\\[aria-invalid\\\\]\\\\,textarea\\\\[aria-invalid\\\\]\\\\]\\\\:shadow-none {\\n &:has(*:is(input:disabled,textarea:disabled,input:focus-visible,textarea:focus-visible,input[aria-invalid],textarea[aria-invalid])) {\\n --tw-shadow: 0 0 #0000;\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .has-\\\\[input\\\\:focus-visible\\\\,textarea\\\\:focus-visible\\\\]\\\\:border-ring {\\n &:has(*:is(input:focus-visible,textarea:focus-visible)) {\\n border-color: var(--ring);\\n }\\n }\\n .has-\\\\[input\\\\:focus-visible\\\\,textarea\\\\:focus-visible\\\\]\\\\:ring-\\\\[3px\\\\] {\\n &:has(*:is(input:focus-visible,textarea:focus-visible)) {\\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .has-\\\\[input\\\\[aria-invalid\\\\]\\\\,textarea\\\\[aria-invalid\\\\]\\\\]\\\\:border-destructive\\\\/36 {\\n &:has(*:is(input[aria-invalid],textarea[aria-invalid])) {\\n border-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--destructive) 36%, transparent);\\n }\\n }\\n }\\n .has-\\\\[input\\\\:focus-visible\\\\,textarea\\\\:focus-visible\\\\]\\\\:has-\\\\[input\\\\[aria-invalid\\\\]\\\\,textarea\\\\[aria-invalid\\\\]\\\\]\\\\:border-destructive\\\\/64 {\\n &:has(*:is(input:focus-visible,textarea:focus-visible)) {\\n &:has(*:is(input[aria-invalid],textarea[aria-invalid])) {\\n border-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--destructive) 64%, transparent);\\n }\\n }\\n }\\n }\\n .has-\\\\[input\\\\:focus-visible\\\\,textarea\\\\:focus-visible\\\\]\\\\:has-\\\\[input\\\\[aria-invalid\\\\]\\\\,textarea\\\\[aria-invalid\\\\]\\\\]\\\\:ring-destructive\\\\/16 {\\n &:has(*:is(input:focus-visible,textarea:focus-visible)) {\\n &:has(*:is(input[aria-invalid],textarea[aria-invalid])) {\\n --tw-ring-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--destructive) 16%, transparent);\\n }\\n }\\n }\\n }\\n .has-\\\\[textarea\\\\]\\\\:h-auto {\\n &:has(*:is(textarea)) {\\n height: auto;\\n }\\n }\\n .has-\\\\[\\\\+\\\\[data-size\\\\=sm\\\\]\\\\]\\\\:ps-\\\\[calc\\\\(--spacing\\\\(2\\\\.5\\\\)-1px\\\\)\\\\] {\\n &:has(+[data-size=sm]) {\\n padding-inline-start: calc(calc(var(--spacing) * 2.5) - 1px);\\n }\\n }\\n .has-\\\\[\\\\+\\\\[data-slot\\\\=autocomplete-clear\\\\]\\\\]\\\\:hidden {\\n &:has(+[data-slot=autocomplete-clear]) {\\n display: none;\\n }\\n }\\n .has-\\\\[\\\\>\\\\:last-child\\\\[data-slot\\\\=badge\\\\]\\\\]\\\\:-ms-1\\\\.5 {\\n &:has(>:last-child[data-slot=badge]) {\\n margin-inline-start: calc(var(--spacing) * -1.5);\\n }\\n }\\n .has-\\\\[\\\\>\\\\:last-child\\\\[data-slot\\\\=badge\\\\]\\\\]\\\\:-me-1\\\\.5 {\\n &:has(>:last-child[data-slot=badge]) {\\n margin-inline-end: calc(var(--spacing) * -1.5);\\n }\\n }\\n .has-\\\\[\\\\>button\\\\]\\\\:-ms-2 {\\n &:has(>button) {\\n margin-inline-start: calc(var(--spacing) * -2);\\n }\\n }\\n .has-\\\\[\\\\>button\\\\]\\\\:-me-2 {\\n &:has(>button) {\\n margin-inline-end: calc(var(--spacing) * -2);\\n }\\n }\\n .has-\\\\[\\\\>kbd\\\\:last-child\\\\]\\\\:ms-\\\\[-0\\\\.35rem\\\\] {\\n &:has(>kbd:last-child) {\\n margin-inline-start: -0.35rem;\\n }\\n }\\n .has-\\\\[\\\\>kbd\\\\:last-child\\\\]\\\\:me-\\\\[-0\\\\.35rem\\\\] {\\n &:has(>kbd:last-child) {\\n margin-inline-end: -0.35rem;\\n }\\n }\\n .aria-expanded\\\\:bg-muted {\\n &[aria-expanded=\\\"true\\\"] {\\n background-color: var(--muted);\\n }\\n }\\n .aria-expanded\\\\:bg-secondary {\\n &[aria-expanded=\\\"true\\\"] {\\n background-color: var(--secondary);\\n }\\n }\\n .aria-expanded\\\\:text-foreground {\\n &[aria-expanded=\\\"true\\\"] {\\n color: var(--foreground);\\n }\\n }\\n .aria-expanded\\\\:text-secondary-foreground {\\n &[aria-expanded=\\\"true\\\"] {\\n color: var(--secondary-foreground);\\n }\\n }\\n .aria-invalid\\\\:border-destructive {\\n &[aria-invalid=\\\"true\\\"] {\\n border-color: var(--destructive);\\n }\\n }\\n .aria-invalid\\\\:border-destructive\\\\/36 {\\n &[aria-invalid=\\\"true\\\"] {\\n border-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--destructive) 36%, transparent);\\n }\\n }\\n }\\n .aria-invalid\\\\:ring-1 {\\n &[aria-invalid=\\\"true\\\"] {\\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .aria-invalid\\\\:ring-destructive\\\\/20 {\\n &[aria-invalid=\\\"true\\\"] {\\n --tw-ring-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\\n }\\n }\\n }\\n .focus-visible\\\\:aria-invalid\\\\:border-destructive\\\\/64 {\\n &:focus-visible {\\n &[aria-invalid=\\\"true\\\"] {\\n border-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--destructive) 64%, transparent);\\n }\\n }\\n }\\n }\\n .focus-visible\\\\:aria-invalid\\\\:ring-destructive\\\\/16 {\\n &:focus-visible {\\n &[aria-invalid=\\\"true\\\"] {\\n --tw-ring-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--destructive) 16%, transparent);\\n }\\n }\\n }\\n }\\n .focus-visible\\\\:aria-invalid\\\\:ring-destructive\\\\/48 {\\n &:focus-visible {\\n &[aria-invalid=\\\"true\\\"] {\\n --tw-ring-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--destructive) 48%, transparent);\\n }\\n }\\n }\\n }\\n .data-ending-style\\\\:scale-98 {\\n &[data-ending-style] {\\n --tw-scale-x: 98%;\\n --tw-scale-y: 98%;\\n --tw-scale-z: 98%;\\n scale: var(--tw-scale-x) var(--tw-scale-y);\\n }\\n }\\n .data-ending-style\\\\:opacity-0 {\\n &[data-ending-style] {\\n opacity: 0%;\\n }\\n }\\n .data-has-overflow-x\\\\:overscroll-x-contain {\\n &[data-has-overflow-x] {\\n overscroll-behavior-x: contain;\\n }\\n }\\n .data-has-overflow-x\\\\:pb-2\\\\.5 {\\n &[data-has-overflow-x] {\\n padding-bottom: calc(var(--spacing) * 2.5);\\n }\\n }\\n .data-has-overflow-y\\\\:overscroll-y-contain {\\n &[data-has-overflow-y] {\\n overscroll-behavior-y: contain;\\n }\\n }\\n .data-has-overflow-y\\\\:pe-2\\\\.5 {\\n &[data-has-overflow-y] {\\n padding-inline-end: calc(var(--spacing) * 2.5);\\n }\\n }\\n .data-highlighted\\\\:bg-accent {\\n &[data-highlighted] {\\n background-color: var(--accent);\\n }\\n }\\n .data-highlighted\\\\:text-accent-foreground {\\n &[data-highlighted] {\\n color: var(--accent-foreground);\\n }\\n }\\n .data-hovering\\\\:opacity-100 {\\n &[data-hovering] {\\n opacity: 100%;\\n }\\n }\\n .data-hovering\\\\:delay-0 {\\n &[data-hovering] {\\n transition-delay: 0ms;\\n }\\n }\\n .data-hovering\\\\:duration-100 {\\n &[data-hovering] {\\n --tw-duration: 100ms;\\n transition-duration: 100ms;\\n }\\n }\\n .data-hovering\\\\:delay-0 {\\n &[data-hovering] {\\n animation-delay: calc(0*1ms);\\n animation-delay: 0s;\\n --tw-animation-delay: calc(0*1ms);\\n --tw-animation-delay: 0s;\\n }\\n }\\n .data-indeterminate\\\\:text-foreground {\\n &[data-indeterminate] {\\n color: var(--foreground);\\n }\\n }\\n .data-instant\\\\:transition-none {\\n &[data-instant] {\\n transition-property: none;\\n }\\n }\\n .data-instant\\\\:duration-0 {\\n &[data-instant] {\\n --tw-duration: 0ms;\\n transition-duration: 0ms;\\n }\\n }\\n .data-loading\\\\:text-transparent {\\n &[data-loading] {\\n color: transparent;\\n }\\n }\\n .data-loading\\\\:select-none {\\n &[data-loading] {\\n -webkit-user-select: none;\\n user-select: none;\\n }\\n }\\n .data-nested\\\\:data-ending-style\\\\:translate-y-8 {\\n &[data-nested] {\\n &[data-ending-style] {\\n --tw-translate-y: calc(var(--spacing) * 8);\\n translate: var(--tw-translate-x) var(--tw-translate-y);\\n }\\n }\\n }\\n .data-nested-dialog-open\\\\:origin-top {\\n &[data-nested-dialog-open] {\\n transform-origin: top;\\n }\\n }\\n .data-placeholder\\\\:text-muted-foreground {\\n &[data-placeholder] {\\n color: var(--muted-foreground);\\n }\\n }\\n .data-pressed\\\\:border-destructive\\\\/32 {\\n &[data-pressed] {\\n border-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--destructive) 32%, transparent);\\n }\\n }\\n }\\n .data-pressed\\\\:bg-accent {\\n &[data-pressed] {\\n background-color: var(--accent);\\n }\\n }\\n .data-pressed\\\\:bg-accent\\\\/50 {\\n &[data-pressed] {\\n background-color: var(--accent);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\\n }\\n }\\n }\\n .data-pressed\\\\:bg-destructive\\\\/4 {\\n &[data-pressed] {\\n background-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--destructive) 4%, transparent);\\n }\\n }\\n }\\n .data-pressed\\\\:bg-destructive\\\\/90 {\\n &[data-pressed] {\\n background-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\\n }\\n }\\n }\\n .data-pressed\\\\:bg-input\\\\/64 {\\n &[data-pressed] {\\n background-color: var(--input);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--input) 64%, transparent);\\n }\\n }\\n }\\n .data-pressed\\\\:bg-primary\\\\/90 {\\n &[data-pressed] {\\n background-color: var(--primary);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\\n }\\n }\\n }\\n .data-pressed\\\\:bg-secondary\\\\/90 {\\n &[data-pressed] {\\n background-color: var(--secondary);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--secondary) 90%, transparent);\\n }\\n }\\n }\\n .data-pressed\\\\:text-accent-foreground {\\n &[data-pressed] {\\n color: var(--accent-foreground);\\n }\\n }\\n .data-pressed\\\\:underline {\\n &[data-pressed] {\\n text-decoration-line: underline;\\n }\\n }\\n .data-scrolling\\\\:opacity-100 {\\n &[data-scrolling] {\\n opacity: 100%;\\n }\\n }\\n .data-scrolling\\\\:delay-0 {\\n &[data-scrolling] {\\n transition-delay: 0ms;\\n }\\n }\\n .data-scrolling\\\\:duration-100 {\\n &[data-scrolling] {\\n --tw-duration: 100ms;\\n transition-duration: 100ms;\\n }\\n }\\n .data-scrolling\\\\:delay-0 {\\n &[data-scrolling] {\\n animation-delay: calc(0*1ms);\\n animation-delay: 0s;\\n --tw-animation-delay: calc(0*1ms);\\n --tw-animation-delay: 0s;\\n }\\n }\\n .data-starting-style\\\\:scale-98 {\\n &[data-starting-style] {\\n --tw-scale-x: 98%;\\n --tw-scale-y: 98%;\\n --tw-scale-z: 98%;\\n scale: var(--tw-scale-x) var(--tw-scale-y);\\n }\\n }\\n .data-starting-style\\\\:opacity-0 {\\n &[data-starting-style] {\\n opacity: 0%;\\n }\\n }\\n .data-nested\\\\:data-starting-style\\\\:translate-y-8 {\\n &[data-nested] {\\n &[data-starting-style] {\\n --tw-translate-y: calc(var(--spacing) * 8);\\n translate: var(--tw-translate-x) var(--tw-translate-y);\\n }\\n }\\n }\\n .data-\\\\[orientation\\\\=horizontal\\\\]\\\\:h-1\\\\.5 {\\n &[data-orientation=\\\"horizontal\\\"] {\\n height: calc(var(--spacing) * 1.5);\\n }\\n }\\n .data-\\\\[orientation\\\\=horizontal\\\\]\\\\:h-px {\\n &[data-orientation=\\\"horizontal\\\"] {\\n height: 1px;\\n }\\n }\\n .data-\\\\[orientation\\\\=horizontal\\\\]\\\\:w-full {\\n &[data-orientation=\\\"horizontal\\\"] {\\n width: 100%;\\n }\\n }\\n .data-\\\\[orientation\\\\=horizontal\\\\]\\\\:flex-col {\\n &[data-orientation=\\\"horizontal\\\"] {\\n flex-direction: column;\\n }\\n }\\n .data-\\\\[orientation\\\\=vertical\\\\]\\\\:w-1\\\\.5 {\\n &[data-orientation=\\\"vertical\\\"] {\\n width: calc(var(--spacing) * 1.5);\\n }\\n }\\n .data-\\\\[orientation\\\\=vertical\\\\]\\\\:w-px {\\n &[data-orientation=\\\"vertical\\\"] {\\n width: 1px;\\n }\\n }\\n .data-\\\\[orientation\\\\=vertical\\\\]\\\\:not-\\\\[\\\\[class\\\\^\\\\=\\\\'h-\\\\'\\\\]\\\\]\\\\:not-\\\\[\\\\[class\\\\*\\\\=\\\\'_h-\\\\'\\\\]\\\\]\\\\:self-stretch {\\n &[data-orientation=\\\"vertical\\\"] {\\n &:not(*:is([class^='h-'])) {\\n &:not(*:is([class*=' h-'])) {\\n align-self: stretch;\\n }\\n }\\n }\\n }\\n .\\\\*\\\\:data-\\\\[slot\\\\=autocomplete-input\\\\]\\\\:ps-\\\\[calc\\\\(--spacing\\\\(8\\\\.5\\\\)-1px\\\\)\\\\] {\\n :is(& > *) {\\n &[data-slot=\\\"autocomplete-input\\\"] {\\n padding-inline-start: calc(calc(var(--spacing) * 8.5) - 1px);\\n }\\n }\\n }\\n .has-\\\\[\\\\+\\\\[data-slot\\\\=autocomplete-trigger\\\\]\\\\,\\\\+\\\\[data-slot\\\\=autocomplete-clear\\\\]\\\\]\\\\:\\\\*\\\\:data-\\\\[slot\\\\=autocomplete-input\\\\]\\\\:pe-6\\\\.5 {\\n &:has(+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]) {\\n :is(& > *) {\\n &[data-slot=\\\"autocomplete-input\\\"] {\\n padding-inline-end: calc(var(--spacing) * 6.5);\\n }\\n }\\n }\\n }\\n .has-\\\\[\\\\+\\\\[data-slot\\\\=autocomplete-trigger\\\\]\\\\,\\\\+\\\\[data-slot\\\\=autocomplete-clear\\\\]\\\\]\\\\:\\\\*\\\\:data-\\\\[slot\\\\=autocomplete-input\\\\]\\\\:pe-7 {\\n &:has(+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]) {\\n :is(& > *) {\\n &[data-slot=\\\"autocomplete-input\\\"] {\\n padding-inline-end: calc(var(--spacing) * 7);\\n }\\n }\\n }\\n }\\n .data-\\\\[size\\\\=sm\\\\]\\\\:\\\\*\\\\:data-\\\\[slot\\\\=autocomplete-input\\\\]\\\\:ps-\\\\[calc\\\\(--spacing\\\\(7\\\\.5\\\\)-1px\\\\)\\\\] {\\n &[data-size=\\\"sm\\\"] {\\n :is(& > *) {\\n &[data-slot=\\\"autocomplete-input\\\"] {\\n padding-inline-start: calc(calc(var(--spacing) * 7.5) - 1px);\\n }\\n }\\n }\\n }\\n .\\\\*\\\\:data-\\\\[slot\\\\=button-loading-indicator\\\\]\\\\:text-foreground {\\n :is(& > *) {\\n &[data-slot=\\\"button-loading-indicator\\\"] {\\n color: var(--foreground);\\n }\\n }\\n }\\n .\\\\*\\\\:data-\\\\[slot\\\\=button-loading-indicator\\\\]\\\\:text-primary-foreground {\\n :is(& > *) {\\n &[data-slot=\\\"button-loading-indicator\\\"] {\\n color: var(--primary-foreground);\\n }\\n }\\n }\\n .\\\\*\\\\:data-\\\\[slot\\\\=button-loading-indicator\\\\]\\\\:text-secondary-foreground {\\n :is(& > *) {\\n &[data-slot=\\\"button-loading-indicator\\\"] {\\n color: var(--secondary-foreground);\\n }\\n }\\n }\\n .\\\\*\\\\:data-\\\\[slot\\\\=button-loading-indicator\\\\]\\\\:text-white {\\n :is(& > *) {\\n &[data-slot=\\\"button-loading-indicator\\\"] {\\n color: var(--color-white);\\n }\\n }\\n }\\n .\\\\*\\\\*\\\\:data-\\\\[slot\\\\=scroll-area-scrollbar\\\\]\\\\:mt-2 {\\n :is(& *) {\\n &[data-slot=\\\"scroll-area-scrollbar\\\"] {\\n margin-top: calc(var(--spacing) * 2);\\n }\\n }\\n }\\n .\\\\*\\\\*\\\\:data-\\\\[slot\\\\=scroll-area-viewport\\\\]\\\\:data-has-overflow-y\\\\:pe-1 {\\n :is(& *) {\\n &[data-slot=\\\"scroll-area-viewport\\\"] {\\n &[data-has-overflow-y] {\\n padding-inline-end: calc(var(--spacing) * 1);\\n }\\n }\\n }\\n }\\n .max-sm\\\\:min-h-19\\\\.5 {\\n @media (width < 40rem) {\\n min-height: calc(var(--spacing) * 19.5);\\n }\\n }\\n .max-sm\\\\:min-h-20\\\\.5 {\\n @media (width < 40rem) {\\n min-height: calc(var(--spacing) * 20.5);\\n }\\n }\\n .max-sm\\\\:min-h-21\\\\.5 {\\n @media (width < 40rem) {\\n min-height: calc(var(--spacing) * 21.5);\\n }\\n }\\n .max-sm\\\\:max-w-none {\\n @media (width < 40rem) {\\n max-width: none;\\n }\\n }\\n .max-sm\\\\:origin-bottom {\\n @media (width < 40rem) {\\n transform-origin: bottom;\\n }\\n }\\n .max-sm\\\\:grid-rows-\\\\[1fr_auto\\\\] {\\n @media (width < 40rem) {\\n grid-template-rows: 1fr auto;\\n }\\n }\\n .max-sm\\\\:rounded-none {\\n @media (width < 40rem) {\\n border-radius: 0;\\n }\\n }\\n .max-sm\\\\:border-x-0 {\\n @media (width < 40rem) {\\n border-inline-style: var(--tw-border-style);\\n border-inline-width: 0px;\\n }\\n }\\n .max-sm\\\\:border-t {\\n @media (width < 40rem) {\\n border-top-style: var(--tw-border-style);\\n border-top-width: 1px;\\n }\\n }\\n .max-sm\\\\:border-b-0 {\\n @media (width < 40rem) {\\n border-bottom-style: var(--tw-border-style);\\n border-bottom-width: 0px;\\n }\\n }\\n .max-sm\\\\:p-0 {\\n @media (width < 40rem) {\\n padding: calc(var(--spacing) * 0);\\n }\\n }\\n .max-sm\\\\:pt-12 {\\n @media (width < 40rem) {\\n padding-top: calc(var(--spacing) * 12);\\n }\\n }\\n .max-sm\\\\:pb-4 {\\n @media (width < 40rem) {\\n padding-bottom: calc(var(--spacing) * 4);\\n }\\n }\\n .max-sm\\\\:before\\\\:hidden {\\n @media (width < 40rem) {\\n &::before {\\n content: var(--tw-content);\\n display: none;\\n }\\n }\\n }\\n .max-sm\\\\:before\\\\:rounded-none {\\n @media (width < 40rem) {\\n &::before {\\n content: var(--tw-content);\\n border-radius: 0;\\n }\\n }\\n }\\n .max-sm\\\\:data-ending-style\\\\:translate-y-4 {\\n @media (width < 40rem) {\\n &[data-ending-style] {\\n --tw-translate-y: calc(var(--spacing) * 4);\\n translate: var(--tw-translate-x) var(--tw-translate-y);\\n }\\n }\\n }\\n .max-sm\\\\:data-starting-style\\\\:translate-y-4 {\\n @media (width < 40rem) {\\n &[data-starting-style] {\\n --tw-translate-y: calc(var(--spacing) * 4);\\n translate: var(--tw-translate-x) var(--tw-translate-y);\\n }\\n }\\n }\\n .sm\\\\:size-3 {\\n @media (width >= 40rem) {\\n width: calc(var(--spacing) * 3);\\n height: calc(var(--spacing) * 3);\\n }\\n }\\n .sm\\\\:size-4 {\\n @media (width >= 40rem) {\\n width: calc(var(--spacing) * 4);\\n height: calc(var(--spacing) * 4);\\n }\\n }\\n .sm\\\\:size-6 {\\n @media (width >= 40rem) {\\n width: calc(var(--spacing) * 6);\\n height: calc(var(--spacing) * 6);\\n }\\n }\\n .sm\\\\:size-7 {\\n @media (width >= 40rem) {\\n width: calc(var(--spacing) * 7);\\n height: calc(var(--spacing) * 7);\\n }\\n }\\n .sm\\\\:size-8 {\\n @media (width >= 40rem) {\\n width: calc(var(--spacing) * 8);\\n height: calc(var(--spacing) * 8);\\n }\\n }\\n .sm\\\\:size-9 {\\n @media (width >= 40rem) {\\n width: calc(var(--spacing) * 9);\\n height: calc(var(--spacing) * 9);\\n }\\n }\\n .sm\\\\:size-10 {\\n @media (width >= 40rem) {\\n width: calc(var(--spacing) * 10);\\n height: calc(var(--spacing) * 10);\\n }\\n }\\n .sm\\\\:h-4 {\\n @media (width >= 40rem) {\\n height: calc(var(--spacing) * 4);\\n }\\n }\\n .sm\\\\:h-4\\\\.5 {\\n @media (width >= 40rem) {\\n height: calc(var(--spacing) * 4.5);\\n }\\n }\\n .sm\\\\:h-5\\\\.5 {\\n @media (width >= 40rem) {\\n height: calc(var(--spacing) * 5.5);\\n }\\n }\\n .sm\\\\:h-6 {\\n @media (width >= 40rem) {\\n height: calc(var(--spacing) * 6);\\n }\\n }\\n .sm\\\\:h-6\\\\.5 {\\n @media (width >= 40rem) {\\n height: calc(var(--spacing) * 6.5);\\n }\\n }\\n .sm\\\\:h-7 {\\n @media (width >= 40rem) {\\n height: calc(var(--spacing) * 7);\\n }\\n }\\n .sm\\\\:h-7\\\\.5 {\\n @media (width >= 40rem) {\\n height: calc(var(--spacing) * 7.5);\\n }\\n }\\n .sm\\\\:h-8 {\\n @media (width >= 40rem) {\\n height: calc(var(--spacing) * 8);\\n }\\n }\\n .sm\\\\:h-8\\\\.5 {\\n @media (width >= 40rem) {\\n height: calc(var(--spacing) * 8.5);\\n }\\n }\\n .sm\\\\:h-9 {\\n @media (width >= 40rem) {\\n height: calc(var(--spacing) * 9);\\n }\\n }\\n .sm\\\\:h-10 {\\n @media (width >= 40rem) {\\n height: calc(var(--spacing) * 10);\\n }\\n }\\n .sm\\\\:min-h-7 {\\n @media (width >= 40rem) {\\n min-height: calc(var(--spacing) * 7);\\n }\\n }\\n .sm\\\\:min-h-8 {\\n @media (width >= 40rem) {\\n min-height: calc(var(--spacing) * 8);\\n }\\n }\\n .sm\\\\:min-h-9 {\\n @media (width >= 40rem) {\\n min-height: calc(var(--spacing) * 9);\\n }\\n }\\n .sm\\\\:min-w-4 {\\n @media (width >= 40rem) {\\n min-width: calc(var(--spacing) * 4);\\n }\\n }\\n .sm\\\\:min-w-4\\\\.5 {\\n @media (width >= 40rem) {\\n min-width: calc(var(--spacing) * 4.5);\\n }\\n }\\n .sm\\\\:min-w-5\\\\.5 {\\n @media (width >= 40rem) {\\n min-width: calc(var(--spacing) * 5.5);\\n }\\n }\\n .sm\\\\:min-w-7 {\\n @media (width >= 40rem) {\\n min-width: calc(var(--spacing) * 7);\\n }\\n }\\n .sm\\\\:min-w-8 {\\n @media (width >= 40rem) {\\n min-width: calc(var(--spacing) * 8);\\n }\\n }\\n .sm\\\\:min-w-9 {\\n @media (width >= 40rem) {\\n min-width: calc(var(--spacing) * 9);\\n }\\n }\\n .sm\\\\:scale-\\\\[calc\\\\(1-0\\\\.1\\\\*var\\\\(--nested-dialogs\\\\)\\\\)\\\\] {\\n @media (width >= 40rem) {\\n scale: calc(1 - 0.1 * var(--nested-dialogs));\\n }\\n }\\n .sm\\\\:grid-cols-2 {\\n @media (width >= 40rem) {\\n grid-template-columns: repeat(2, minmax(0, 1fr));\\n }\\n }\\n .sm\\\\:flex-row {\\n @media (width >= 40rem) {\\n flex-direction: row;\\n }\\n }\\n .sm\\\\:justify-between {\\n @media (width >= 40rem) {\\n justify-content: space-between;\\n }\\n }\\n .sm\\\\:justify-end {\\n @media (width >= 40rem) {\\n justify-content: flex-end;\\n }\\n }\\n .sm\\\\:rounded-b-\\\\[calc\\\\(var\\\\(--radius-2xl\\\\)-1px\\\\)\\\\] {\\n @media (width >= 40rem) {\\n border-bottom-right-radius: calc(var(--radius-2xl) - 1px);\\n border-bottom-left-radius: calc(var(--radius-2xl) - 1px);\\n }\\n }\\n .sm\\\\:px-6 {\\n @media (width >= 40rem) {\\n padding-inline: calc(var(--spacing) * 6);\\n }\\n }\\n .sm\\\\:py-28 {\\n @media (width >= 40rem) {\\n padding-block: calc(var(--spacing) * 28);\\n }\\n }\\n .sm\\\\:py-\\\\[10vh\\\\] {\\n @media (width >= 40rem) {\\n padding-block: 10vh;\\n }\\n }\\n .sm\\\\:text-3xl {\\n @media (width >= 40rem) {\\n font-size: var(--text-3xl);\\n line-height: var(--tw-leading, var(--text-3xl--line-height));\\n }\\n }\\n .sm\\\\:text-5xl {\\n @media (width >= 40rem) {\\n font-size: var(--text-5xl);\\n line-height: var(--tw-leading, var(--text-5xl--line-height));\\n }\\n }\\n .sm\\\\:text-base {\\n @media (width >= 40rem) {\\n font-size: var(--text-base);\\n line-height: var(--tw-leading, var(--text-base--line-height));\\n }\\n }\\n .sm\\\\:text-sm {\\n @media (width >= 40rem) {\\n font-size: var(--text-sm);\\n line-height: var(--tw-leading, var(--text-sm--line-height));\\n }\\n }\\n .sm\\\\:text-sm\\\\/4 {\\n @media (width >= 40rem) {\\n font-size: var(--text-sm);\\n line-height: calc(var(--spacing) * 4);\\n }\\n }\\n .sm\\\\:text-xs {\\n @media (width >= 40rem) {\\n font-size: var(--text-xs);\\n line-height: var(--tw-leading, var(--text-xs--line-height));\\n }\\n }\\n .sm\\\\:text-\\\\[\\\\.625rem\\\\] {\\n @media (width >= 40rem) {\\n font-size: .625rem;\\n }\\n }\\n .sm\\\\:leading-6\\\\.5 {\\n @media (width >= 40rem) {\\n --tw-leading: calc(var(--spacing) * 6.5);\\n line-height: calc(var(--spacing) * 6.5);\\n }\\n }\\n .sm\\\\:leading-7\\\\.5 {\\n @media (width >= 40rem) {\\n --tw-leading: calc(var(--spacing) * 7.5);\\n line-height: calc(var(--spacing) * 7.5);\\n }\\n }\\n .sm\\\\:leading-8\\\\.5 {\\n @media (width >= 40rem) {\\n --tw-leading: calc(var(--spacing) * 8.5);\\n line-height: calc(var(--spacing) * 8.5);\\n }\\n }\\n .sm\\\\:data-ending-style\\\\:scale-98 {\\n @media (width >= 40rem) {\\n &[data-ending-style] {\\n --tw-scale-x: 98%;\\n --tw-scale-y: 98%;\\n --tw-scale-z: 98%;\\n scale: var(--tw-scale-x) var(--tw-scale-y);\\n }\\n }\\n }\\n .sm\\\\:data-starting-style\\\\:scale-98 {\\n @media (width >= 40rem) {\\n &[data-starting-style] {\\n --tw-scale-x: 98%;\\n --tw-scale-y: 98%;\\n --tw-scale-z: 98%;\\n scale: var(--tw-scale-x) var(--tw-scale-y);\\n }\\n }\\n }\\n .sm\\\\:\\\\*\\\\:data-\\\\[slot\\\\=autocomplete-input\\\\]\\\\:ps-\\\\[calc\\\\(--spacing\\\\(8\\\\)-1px\\\\)\\\\] {\\n @media (width >= 40rem) {\\n :is(& > *) {\\n &[data-slot=\\\"autocomplete-input\\\"] {\\n padding-inline-start: calc(calc(var(--spacing) * 8) - 1px);\\n }\\n }\\n }\\n }\\n .sm\\\\:data-\\\\[size\\\\=sm\\\\]\\\\:\\\\*\\\\:data-\\\\[slot\\\\=autocomplete-input\\\\]\\\\:ps-\\\\[calc\\\\(--spacing\\\\(7\\\\)-1px\\\\)\\\\] {\\n @media (width >= 40rem) {\\n &[data-size=\\\"sm\\\"] {\\n :is(& > *) {\\n &[data-slot=\\\"autocomplete-input\\\"] {\\n padding-inline-start: calc(calc(var(--spacing) * 7) - 1px);\\n }\\n }\\n }\\n }\\n }\\n .md\\\\:block {\\n @media (width >= 48rem) {\\n display: block;\\n }\\n }\\n .md\\\\:flex {\\n @media (width >= 48rem) {\\n display: flex;\\n }\\n }\\n .md\\\\:hidden {\\n @media (width >= 48rem) {\\n display: none;\\n }\\n }\\n .md\\\\:inline-flex {\\n @media (width >= 48rem) {\\n display: inline-flex;\\n }\\n }\\n .md\\\\:pl-8 {\\n @media (width >= 48rem) {\\n padding-left: calc(var(--spacing) * 8);\\n }\\n }\\n .lg\\\\:grid-cols-3 {\\n @media (width >= 64rem) {\\n grid-template-columns: repeat(3, minmax(0, 1fr));\\n }\\n }\\n .dark\\\\:block {\\n &:is(.dark *) {\\n display: block;\\n }\\n }\\n .dark\\\\:hidden {\\n &:is(.dark *) {\\n display: none;\\n }\\n }\\n .dark\\\\:border-input {\\n &:is(.dark *) {\\n border-color: var(--input);\\n }\\n }\\n .dark\\\\:bg-accent\\\\/16 {\\n &:is(.dark *) {\\n background-color: var(--accent);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--accent) 16%, transparent);\\n }\\n }\\n }\\n .dark\\\\:bg-destructive\\\\/16 {\\n &:is(.dark *) {\\n background-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--destructive) 16%, transparent);\\n }\\n }\\n }\\n .dark\\\\:bg-destructive\\\\/20 {\\n &:is(.dark *) {\\n background-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--destructive) 20%, transparent);\\n }\\n }\\n }\\n .dark\\\\:bg-info\\\\/16 {\\n &:is(.dark *) {\\n background-color: var(--info);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--info) 16%, transparent);\\n }\\n }\\n }\\n .dark\\\\:bg-input\\\\/30 {\\n &:is(.dark *) {\\n background-color: var(--input);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--input) 30%, transparent);\\n }\\n }\\n }\\n .dark\\\\:bg-input\\\\/32 {\\n &:is(.dark *) {\\n background-color: var(--input);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--input) 32%, transparent);\\n }\\n }\\n }\\n .dark\\\\:bg-purple\\\\/16 {\\n &:is(.dark *) {\\n background-color: var(--purple);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--purple) 16%, transparent);\\n }\\n }\\n }\\n .dark\\\\:bg-success\\\\/16 {\\n &:is(.dark *) {\\n background-color: var(--success);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--success) 16%, transparent);\\n }\\n }\\n }\\n .dark\\\\:bg-warning\\\\/16 {\\n &:is(.dark *) {\\n background-color: var(--warning);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--warning) 16%, transparent);\\n }\\n }\\n }\\n .dark\\\\:text-amber-400 {\\n &:is(.dark *) {\\n color: var(--color-amber-400);\\n }\\n }\\n .dark\\\\:text-blue-400 {\\n &:is(.dark *) {\\n color: var(--color-blue-400);\\n }\\n }\\n .dark\\\\:text-emerald-400 {\\n &:is(.dark *) {\\n color: var(--color-emerald-400);\\n }\\n }\\n .dark\\\\:not-data-checked\\\\:bg-input\\\\/32 {\\n &:is(.dark *) {\\n &:not(*:where([data-state=\\\"checked\\\"]), *:where([data-checked]:not([data-checked=\\\"false\\\"]))) {\\n background-color: var(--input);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--input) 32%, transparent);\\n }\\n }\\n }\\n }\\n .dark\\\\:before\\\\:shadow-\\\\[0_-1px_--theme\\\\(--color-white\\\\/6\\\\%\\\\)\\\\] {\\n &:is(.dark *) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in srgb, #fff 6%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in oklab, var(--color-white) 6%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n .dark\\\\:not-disabled\\\\:before\\\\:shadow-\\\\[0_-1px_--theme\\\\(--color-white\\\\/2\\\\%\\\\)\\\\] {\\n &:is(.dark *) {\\n &:not(*:disabled) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in srgb, #fff 2%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in oklab, var(--color-white) 2%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n .dark\\\\:not-has-disabled\\\\:not-has-focus-visible\\\\:not-has-aria-invalid\\\\:before\\\\:shadow-\\\\[0_-1px_--theme\\\\(--color-white\\\\/6\\\\%\\\\)\\\\] {\\n &:is(.dark *) {\\n &:not(*:has(*:disabled)) {\\n &:not(*:has(*:focus-visible)) {\\n &:not(*:has(*[aria-invalid=\\\"true\\\"])) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in srgb, #fff 6%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in oklab, var(--color-white) 6%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:not-has-\\\\[input\\\\:disabled\\\\,textarea\\\\:disabled\\\\]\\\\:not-has-\\\\[input\\\\:focus-visible\\\\,textarea\\\\:focus-visible\\\\]\\\\:not-has-\\\\[input\\\\[aria-invalid\\\\]\\\\,textarea\\\\[aria-invalid\\\\]\\\\]\\\\:before\\\\:shadow-\\\\[0_-1px_--theme\\\\(--color-white\\\\/6\\\\%\\\\)\\\\] {\\n &:is(.dark *) {\\n &:not(*:has(*:is(input:disabled,textarea:disabled))) {\\n &:not(*:has(*:is(input:focus-visible,textarea:focus-visible))) {\\n &:not(*:has(*:is(input[aria-invalid],textarea[aria-invalid]))) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in srgb, #fff 6%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in oklab, var(--color-white) 6%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:not-disabled\\\\:not-data-pressed\\\\:before\\\\:shadow-\\\\[0_-1px_--theme\\\\(--color-white\\\\/2\\\\%\\\\)\\\\] {\\n &:is(.dark *) {\\n &:not(*:disabled) {\\n &:not(*[data-pressed]) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in srgb, #fff 2%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in oklab, var(--color-white) 2%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:not-disabled\\\\:not-active\\\\:not-data-pressed\\\\:before\\\\:shadow-\\\\[0_-1px_--theme\\\\(--color-white\\\\/6\\\\%\\\\)\\\\] {\\n &:is(.dark *) {\\n &:not(*:disabled) {\\n &:not(*:active) {\\n &:not(*[data-pressed]) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in srgb, #fff 6%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in oklab, var(--color-white) 6%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:not-data-disabled\\\\:not-focus-visible\\\\:not-aria-invalid\\\\:not-data-pressed\\\\:before\\\\:shadow-\\\\[0_-1px_--theme\\\\(--color-white\\\\/6\\\\%\\\\)\\\\] {\\n &:is(.dark *) {\\n &:not(*:where([data-disabled=\\\"true\\\"]), *:where([data-disabled]:not([data-disabled=\\\"false\\\"]))) {\\n &:not(*:focus-visible) {\\n &:not(*[aria-invalid=\\\"true\\\"]) {\\n &:not(*[data-pressed]) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in srgb, #fff 6%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in oklab, var(--color-white) 6%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:not-data-disabled\\\\:not-data-checked\\\\:not-aria-invalid\\\\:before\\\\:shadow-\\\\[0_-1px_--theme\\\\(--color-white\\\\/6\\\\%\\\\)\\\\] {\\n &:is(.dark *) {\\n &:not(*:where([data-disabled=\\\"true\\\"]), *:where([data-disabled]:not([data-disabled=\\\"false\\\"]))) {\\n &:not(*:where([data-state=\\\"checked\\\"]), *:where([data-checked]:not([data-checked=\\\"false\\\"]))) {\\n &:not(*[aria-invalid=\\\"true\\\"]) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in srgb, #fff 6%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in oklab, var(--color-white) 6%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:hover\\\\:bg-destructive\\\\/30 {\\n &:is(.dark *) {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--destructive) 30%, transparent);\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:hover\\\\:bg-input\\\\/50 {\\n &:is(.dark *) {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--input);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--input) 50%, transparent);\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:hover\\\\:bg-input\\\\/64 {\\n &:is(.dark *) {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--input);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--input) 64%, transparent);\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:hover\\\\:bg-muted\\\\/50 {\\n &:is(.dark *) {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--muted);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--muted) 50%, transparent);\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:focus-visible\\\\:ring-destructive\\\\/40 {\\n &:is(.dark *) {\\n &:focus-visible {\\n --tw-ring-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\\n }\\n }\\n }\\n }\\n .dark\\\\:not-has-disabled\\\\:has-not-focus-visible\\\\:not-has-aria-invalid\\\\:before\\\\:shadow-\\\\[0_-1px_--theme\\\\(--color-white\\\\/6\\\\%\\\\)\\\\] {\\n &:is(.dark *) {\\n &:not(*:has(*:disabled)) {\\n &:has(*:not(*:focus-visible)) {\\n &:not(*:has(*[aria-invalid=\\\"true\\\"])) {\\n &::before {\\n content: var(--tw-content);\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in srgb, #fff 6%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in oklab, var(--color-white) 6%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:has-autofill\\\\:bg-foreground\\\\/8 {\\n &:is(.dark *) {\\n &:has(*:autofill) {\\n background-color: var(--foreground);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--foreground) 8%, transparent);\\n }\\n }\\n }\\n }\\n .dark\\\\:has-aria-invalid\\\\:ring-destructive\\\\/24 {\\n &:is(.dark *) {\\n &:has(*[aria-invalid=\\\"true\\\"]) {\\n --tw-ring-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--destructive) 24%, transparent);\\n }\\n }\\n }\\n }\\n .dark\\\\:has-\\\\[input\\\\[aria-invalid\\\\]\\\\,textarea\\\\[aria-invalid\\\\]\\\\]\\\\:ring-destructive\\\\/24 {\\n &:is(.dark *) {\\n &:has(*:is(input[aria-invalid],textarea[aria-invalid])) {\\n --tw-ring-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--destructive) 24%, transparent);\\n }\\n }\\n }\\n }\\n .dark\\\\:aria-invalid\\\\:border-destructive\\\\/50 {\\n &:is(.dark *) {\\n &[aria-invalid=\\\"true\\\"] {\\n border-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n border-color: color-mix(in oklab, var(--destructive) 50%, transparent);\\n }\\n }\\n }\\n }\\n .dark\\\\:aria-invalid\\\\:ring-destructive\\\\/24 {\\n &:is(.dark *) {\\n &[aria-invalid=\\\"true\\\"] {\\n --tw-ring-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--destructive) 24%, transparent);\\n }\\n }\\n }\\n }\\n .dark\\\\:aria-invalid\\\\:ring-destructive\\\\/40 {\\n &:is(.dark *) {\\n &[aria-invalid=\\\"true\\\"] {\\n --tw-ring-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\\n }\\n }\\n }\\n }\\n .dark\\\\:data-pressed\\\\:bg-input {\\n &:is(.dark *) {\\n &[data-pressed] {\\n background-color: var(--input);\\n }\\n }\\n }\\n .dark\\\\:data-pressed\\\\:bg-input\\\\/64 {\\n &:is(.dark *) {\\n &[data-pressed] {\\n background-color: var(--input);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--input) 64%, transparent);\\n }\\n }\\n }\\n }\\n .pointer-coarse\\\\:after\\\\:absolute {\\n @media (pointer: coarse) {\\n &::after {\\n content: var(--tw-content);\\n position: absolute;\\n }\\n }\\n }\\n .pointer-coarse\\\\:after\\\\:size-full {\\n @media (pointer: coarse) {\\n &::after {\\n content: var(--tw-content);\\n width: 100%;\\n height: 100%;\\n }\\n }\\n }\\n .pointer-coarse\\\\:after\\\\:min-h-11 {\\n @media (pointer: coarse) {\\n &::after {\\n content: var(--tw-content);\\n min-height: calc(var(--spacing) * 11);\\n }\\n }\\n }\\n .pointer-coarse\\\\:after\\\\:min-w-11 {\\n @media (pointer: coarse) {\\n &::after {\\n content: var(--tw-content);\\n min-width: calc(var(--spacing) * 11);\\n }\\n }\\n }\\n .data-checked\\\\:bg-primary {\\n &:where([data-state=\\\"checked\\\"]), &:where([data-checked]:not([data-checked=\\\"false\\\"])) {\\n background-color: var(--primary);\\n }\\n }\\n .data-unchecked\\\\:hidden {\\n &:where([data-state=\\\"unchecked\\\"]), &:where([data-unchecked]:not([data-unchecked=\\\"false\\\"])) {\\n display: none;\\n }\\n }\\n .data-disabled\\\\:pointer-events-none {\\n &:where([data-disabled=\\\"true\\\"]), &:where([data-disabled]:not([data-disabled=\\\"false\\\"])) {\\n pointer-events: none;\\n }\\n }\\n .data-disabled\\\\:cursor-not-allowed {\\n &:where([data-disabled=\\\"true\\\"]), &:where([data-disabled]:not([data-disabled=\\\"false\\\"])) {\\n cursor: not-allowed;\\n }\\n }\\n .data-disabled\\\\:opacity-64 {\\n &:where([data-disabled=\\\"true\\\"]), &:where([data-disabled]:not([data-disabled=\\\"false\\\"])) {\\n opacity: 64%;\\n }\\n }\\n .\\\\[\\\\&_p\\\\]\\\\:m-0 {\\n & p {\\n margin: calc(var(--spacing) * 0);\\n }\\n }\\n .\\\\[\\\\&_pre\\\\]\\\\:\\\\!bg-transparent {\\n & pre {\\n background-color: transparent !important;\\n }\\n }\\n .\\\\[\\\\&_pre\\\\]\\\\:\\\\!p-0 {\\n & pre {\\n padding: calc(var(--spacing) * 0) !important;\\n }\\n }\\n .\\\\[\\\\&_svg\\\\]\\\\:pointer-events-none {\\n & svg {\\n pointer-events: none;\\n }\\n }\\n .\\\\[\\\\&_svg\\\\]\\\\:-mx-0\\\\.5 {\\n & svg {\\n margin-inline: calc(var(--spacing) * -0.5);\\n }\\n }\\n .\\\\[\\\\&_svg\\\\]\\\\:shrink-0 {\\n & svg {\\n flex-shrink: 0;\\n }\\n }\\n .\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'opacity-\\\\'\\\\]\\\\)\\\\]\\\\:opacity-80 {\\n & svg:not([class*='opacity-']) {\\n opacity: 80%;\\n }\\n }\\n .\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-3 {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 3);\\n height: calc(var(--spacing) * 3);\\n }\\n }\\n .\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-3\\\\.5 {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 3.5);\\n height: calc(var(--spacing) * 3.5);\\n }\\n }\\n .\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-4 {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 4);\\n height: calc(var(--spacing) * 4);\\n }\\n }\\n .\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-4\\\\.5 {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 4.5);\\n height: calc(var(--spacing) * 4.5);\\n }\\n }\\n .\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-5 {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 5);\\n height: calc(var(--spacing) * 5);\\n }\\n }\\n .not-in-data-\\\\[slot\\\\=input-group\\\\]\\\\:\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-4 {\\n &:not(:where(*[data-slot=\\\"input-group\\\"]) *) {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 4);\\n height: calc(var(--spacing) * 4);\\n }\\n }\\n }\\n .in-\\\\[\\\\[data-slot\\\\=input-group\\\\]\\\\:has\\\\(\\\\[data-slot\\\\=input-control\\\\]\\\\,\\\\[data-slot\\\\=textarea-control\\\\]\\\\)\\\\]\\\\:\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-4\\\\.5 {\\n :where(*:is([data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control]))) & {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 4.5);\\n height: calc(var(--spacing) * 4.5);\\n }\\n }\\n }\\n .sm\\\\:\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-3 {\\n @media (width >= 40rem) {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 3);\\n height: calc(var(--spacing) * 3);\\n }\\n }\\n }\\n .sm\\\\:\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-3\\\\.5 {\\n @media (width >= 40rem) {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 3.5);\\n height: calc(var(--spacing) * 3.5);\\n }\\n }\\n }\\n .sm\\\\:\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-4 {\\n @media (width >= 40rem) {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 4);\\n height: calc(var(--spacing) * 4);\\n }\\n }\\n }\\n .sm\\\\:\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-4\\\\.5 {\\n @media (width >= 40rem) {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 4.5);\\n height: calc(var(--spacing) * 4.5);\\n }\\n }\\n }\\n .sm\\\\:not-in-data-\\\\[slot\\\\=input-group\\\\]\\\\:\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-3\\\\.5 {\\n @media (width >= 40rem) {\\n &:not(:where(*[data-slot=\\\"input-group\\\"]) *) {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 3.5);\\n height: calc(var(--spacing) * 3.5);\\n }\\n }\\n }\\n }\\n .sm\\\\:in-\\\\[\\\\[data-slot\\\\=input-group\\\\]\\\\:has\\\\(\\\\[data-slot\\\\=input-control\\\\]\\\\,\\\\[data-slot\\\\=textarea-control\\\\]\\\\)\\\\]\\\\:\\\\[\\\\&_svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-4 {\\n @media (width >= 40rem) {\\n :where(*:is([data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control]))) & {\\n & svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 4);\\n height: calc(var(--spacing) * 4);\\n }\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\:\\\\:-webkit-search-cancel-button\\\\]\\\\:appearance-none {\\n &::-webkit-search-cancel-button {\\n appearance: none;\\n }\\n }\\n .\\\\[\\\\&\\\\:\\\\:-webkit-search-decoration\\\\]\\\\:appearance-none {\\n &::-webkit-search-decoration {\\n appearance: none;\\n }\\n }\\n .\\\\[\\\\&\\\\:\\\\:-webkit-search-results-button\\\\]\\\\:appearance-none {\\n &::-webkit-search-results-button {\\n appearance: none;\\n }\\n }\\n .\\\\[\\\\&\\\\:\\\\:-webkit-search-results-decoration\\\\]\\\\:appearance-none {\\n &::-webkit-search-results-decoration {\\n appearance: none;\\n }\\n }\\n .\\\\[\\\\.border-b\\\\]\\\\:pb-\\\\[calc\\\\(--spacing\\\\(3\\\\)-1px\\\\)\\\\] {\\n &:is(.border-b) {\\n padding-bottom: calc(calc(var(--spacing) * 3) - 1px);\\n }\\n }\\n .\\\\[\\\\.border-t\\\\]\\\\:pt-\\\\[calc\\\\(--spacing\\\\(3\\\\)-1px\\\\)\\\\] {\\n &:is(.border-t) {\\n padding-top: calc(calc(var(--spacing) * 3) - 1px);\\n }\\n }\\n .\\\\[\\\\:active\\\\,\\\\[data-pressed\\\\]\\\\]\\\\:bg-secondary\\\\/80 {\\n &:is(:active,[data-pressed]) {\\n background-color: var(--secondary);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\\n }\\n }\\n }\\n .\\\\[\\\\:active\\\\,\\\\[data-pressed\\\\]\\\\]\\\\:inset-shadow-\\\\[0_1px_--theme\\\\(--color-black\\\\/8\\\\%\\\\)\\\\] {\\n &:is(:active,[data-pressed]) {\\n --tw-inset-shadow: inset 0 1px var(--tw-inset-shadow-color, color-mix(in srgb, #000 8%, transparent));\\n @supports (color: color-mix(in lab, red, red)) {\\n --tw-inset-shadow: inset 0 1px var(--tw-inset-shadow-color, color-mix(in oklab, var(--color-black) 8%, transparent));\\n }\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .\\\\[\\\\:disabled\\\\,\\\\:active\\\\,\\\\[data-pressed\\\\]\\\\]\\\\:shadow-none {\\n &:is(:disabled,:active,[data-pressed]) {\\n --tw-shadow: 0 0 #0000;\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .\\\\[\\\\[data-disabled\\\\]\\\\,\\\\:focus-visible\\\\,\\\\[aria-invalid\\\\]\\\\,\\\\[data-pressed\\\\]\\\\]\\\\:shadow-none {\\n &:is([data-disabled],:focus-visible,[aria-invalid],[data-pressed]) {\\n --tw-shadow: 0 0 #0000;\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .\\\\[\\\\[data-disabled\\\\]\\\\,\\\\[data-checked\\\\]\\\\,\\\\[aria-invalid\\\\]\\\\]\\\\:shadow-none {\\n &:is([data-disabled],[data-checked],[aria-invalid]) {\\n --tw-shadow: 0 0 #0000;\\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n }\\n }\\n .has-data-\\\\[align\\\\=inline-end\\\\]\\\\:\\\\*\\\\*\\\\:\\\\[\\\\[data-size\\\\=sm\\\\]_input\\\\]\\\\:pe-1\\\\.5 {\\n &:has(*[data-align=\\\"inline-end\\\"]) {\\n :is(& *) {\\n &:is([data-size=sm] input) {\\n padding-inline-end: calc(var(--spacing) * 1.5);\\n }\\n }\\n }\\n }\\n .has-data-\\\\[align\\\\=inline-start\\\\]\\\\:\\\\*\\\\*\\\\:\\\\[\\\\[data-size\\\\=sm\\\\]_input\\\\]\\\\:ps-1\\\\.5 {\\n &:has(*[data-align=\\\"inline-start\\\"]) {\\n :is(& *) {\\n &:is([data-size=sm] input) {\\n padding-inline-start: calc(var(--spacing) * 1.5);\\n }\\n }\\n }\\n }\\n .\\\\*\\\\:\\\\[\\\\[data-slot\\\\=input-control\\\\]\\\\,\\\\[data-slot\\\\=textarea-control\\\\]\\\\]\\\\:contents {\\n :is(& > *) {\\n &:is([data-slot=input-control],[data-slot=textarea-control]) {\\n display: contents;\\n }\\n }\\n }\\n .\\\\*\\\\:\\\\[\\\\[data-slot\\\\=input-control\\\\]\\\\,\\\\[data-slot\\\\=textarea-control\\\\]\\\\]\\\\:before\\\\:hidden {\\n :is(& > *) {\\n &:is([data-slot=input-control],[data-slot=textarea-control]) {\\n &::before {\\n content: var(--tw-content);\\n display: none;\\n }\\n }\\n }\\n }\\n .\\\\[a\\\\]\\\\:hover\\\\:bg-primary\\\\/80 {\\n &:is(a) {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--primary);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--primary) 80%, transparent);\\n }\\n }\\n }\\n }\\n }\\n .has-data-\\\\[align\\\\=block-end\\\\]\\\\:\\\\*\\\\*\\\\:\\\\[input\\\\]\\\\:pt-1\\\\.5 {\\n &:has(*[data-align=\\\"block-end\\\"]) {\\n :is(& *) {\\n &:is(input) {\\n padding-top: calc(var(--spacing) * 1.5);\\n }\\n }\\n }\\n }\\n .has-data-\\\\[align\\\\=block-start\\\\]\\\\:\\\\*\\\\*\\\\:\\\\[input\\\\]\\\\:pb-1\\\\.5 {\\n &:has(*[data-align=\\\"block-start\\\"]) {\\n :is(& *) {\\n &:is(input) {\\n padding-bottom: calc(var(--spacing) * 1.5);\\n }\\n }\\n }\\n }\\n .has-data-\\\\[align\\\\=inline-end\\\\]\\\\:\\\\*\\\\*\\\\:\\\\[input\\\\]\\\\:pe-2 {\\n &:has(*[data-align=\\\"inline-end\\\"]) {\\n :is(& *) {\\n &:is(input) {\\n padding-inline-end: calc(var(--spacing) * 2);\\n }\\n }\\n }\\n }\\n .has-data-\\\\[align\\\\=inline-start\\\\]\\\\:\\\\*\\\\*\\\\:\\\\[input\\\\]\\\\:ps-2 {\\n &:has(*[data-align=\\\"inline-start\\\"]) {\\n :is(& *) {\\n &:is(input) {\\n padding-inline-start: calc(var(--spacing) * 2);\\n }\\n }\\n }\\n }\\n .has-\\\\[\\\\[data-align\\\\=block-start\\\\]\\\\,\\\\[data-align\\\\=block-end\\\\]\\\\]\\\\:\\\\*\\\\*\\\\:\\\\[input\\\\]\\\\:h-auto {\\n &:has(*:is([data-align=block-start],[data-align=block-end])) {\\n :is(& *) {\\n &:is(input) {\\n height: auto;\\n }\\n }\\n }\\n }\\n .not-has-\\\\[button\\\\]\\\\:\\\\*\\\\*\\\\:\\\\[svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'opacity-\\\\'\\\\]\\\\)\\\\]\\\\:opacity-80 {\\n &:not(*:has(*:is(button))) {\\n :is(& *) {\\n &:is(svg:not([class*='opacity-'])) {\\n opacity: 80%;\\n }\\n }\\n }\\n }\\n .\\\\*\\\\*\\\\:\\\\[textarea_button\\\\]\\\\:rounded-\\\\[calc\\\\(var\\\\(--radius-md\\\\)-1px\\\\)\\\\] {\\n :is(& *) {\\n &:is(textarea button) {\\n border-radius: calc(var(--radius-md) - 1px);\\n }\\n }\\n }\\n .\\\\*\\\\*\\\\:\\\\[textarea\\\\]\\\\:min-h-20\\\\.5 {\\n :is(& *) {\\n &:is(textarea) {\\n min-height: calc(var(--spacing) * 20.5);\\n }\\n }\\n }\\n .\\\\*\\\\*\\\\:\\\\[textarea\\\\]\\\\:resize-none {\\n :is(& *) {\\n &:is(textarea) {\\n resize: none;\\n }\\n }\\n }\\n .\\\\*\\\\*\\\\:\\\\[textarea\\\\]\\\\:py-\\\\[calc\\\\(--spacing\\\\(3\\\\)-1px\\\\)\\\\] {\\n :is(& *) {\\n &:is(textarea) {\\n padding-block: calc(calc(var(--spacing) * 3) - 1px);\\n }\\n }\\n }\\n .\\\\*\\\\*\\\\:\\\\[textarea\\\\]\\\\:max-sm\\\\:min-h-23\\\\.5 {\\n :is(& *) {\\n &:is(textarea) {\\n @media (width < 40rem) {\\n min-height: calc(var(--spacing) * 23.5);\\n }\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:mt-6 {\\n &>h3 {\\n margin-top: calc(var(--spacing) * 6);\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:mb-2 {\\n &>h3 {\\n margin-bottom: calc(var(--spacing) * 2);\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:text-base {\\n &>h3 {\\n font-size: var(--text-base);\\n line-height: var(--tw-leading, var(--text-base--line-height));\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:font-semibold {\\n &>h3 {\\n --tw-font-weight: var(--font-weight-semibold);\\n font-weight: var(--font-weight-semibold);\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:absolute {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n position: absolute;\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:-ml-\\\\[calc\\\\(1\\\\.5rem\\\\+1px\\\\+0\\\\.5rem\\\\)\\\\] {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n margin-left: calc(calc(1.5rem + 1px + 0.5rem) * -1);\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:flex {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n display: flex;\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:size-6 {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n width: calc(var(--spacing) * 6);\\n height: calc(var(--spacing) * 6);\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:items-center {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n align-items: center;\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:justify-center {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n justify-content: center;\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:rounded-full {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n border-radius: calc(infinity * 1px);\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:bg-primary {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n background-color: var(--primary);\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:text-xs {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n font-size: var(--text-xs);\\n line-height: var(--tw-leading, var(--text-xs--line-height));\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:font-semibold {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n --tw-font-weight: var(--font-weight-semibold);\\n font-weight: var(--font-weight-semibold);\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:text-primary-foreground {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n color: var(--primary-foreground);\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:content-\\\\[counter\\\\(step\\\\)\\\\] {\\n &>h3 {\\n &::before {\\n --tw-content: counter(step);\\n content: var(--tw-content);\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>h3\\\\]\\\\:before\\\\:\\\\[counter-increment\\\\:step\\\\] {\\n &>h3 {\\n &::before {\\n content: var(--tw-content);\\n counter-increment: step;\\n }\\n }\\n }\\n .\\\\[\\\\&\\\\>kbd\\\\]\\\\:rounded-\\\\[calc\\\\(var\\\\(--radius\\\\)-5px\\\\)\\\\] {\\n &>kbd {\\n border-radius: calc(var(--radius) - 5px);\\n }\\n }\\n .\\\\[\\\\&\\\\>svg\\\\]\\\\:pointer-events-none {\\n &>svg {\\n pointer-events: none;\\n }\\n }\\n .\\\\[\\\\&\\\\>svg\\\\]\\\\:-mx-0\\\\.5 {\\n &>svg {\\n margin-inline: calc(var(--spacing) * -0.5);\\n }\\n }\\n .\\\\[\\\\&\\\\>svg\\\\]\\\\:shrink-0 {\\n &>svg {\\n flex-shrink: 0;\\n }\\n }\\n .\\\\[\\\\&\\\\>svg\\\\:not\\\\(\\\\[class\\\\*\\\\=\\\\'size-\\\\'\\\\]\\\\)\\\\]\\\\:size-4 {\\n &>svg:not([class*='size-']) {\\n width: calc(var(--spacing) * 4);\\n height: calc(var(--spacing) * 4);\\n }\\n }\\n .\\\\[\\\\[data-size\\\\=sm\\\\]\\\\+\\\\&\\\\]\\\\:px-\\\\[calc\\\\(--spacing\\\\(2\\\\.5\\\\)-1px\\\\)\\\\] {\\n [data-size=sm]+& {\\n padding-inline: calc(calc(var(--spacing) * 2.5) - 1px);\\n }\\n }\\n .\\\\[\\\\[data-size\\\\=sm\\\\]\\\\+\\\\&\\\\]\\\\:ps-\\\\[calc\\\\(--spacing\\\\(2\\\\.5\\\\)-1px\\\\)\\\\] {\\n [data-size=sm]+& {\\n padding-inline-start: calc(calc(var(--spacing) * 2.5) - 1px);\\n }\\n }\\n .\\\\[\\\\[data-size\\\\=sm\\\\]\\\\+\\\\&\\\\]\\\\:pe-\\\\[calc\\\\(--spacing\\\\(2\\\\.5\\\\)-1px\\\\)\\\\] {\\n [data-size=sm]+& {\\n padding-inline-end: calc(calc(var(--spacing) * 2.5) - 1px);\\n }\\n }\\n .\\\\[\\\\[role\\\\=group\\\\]\\\\+\\\\&\\\\]\\\\:mt-1\\\\.5 {\\n [role=group]+& {\\n margin-top: calc(var(--spacing) * 1.5);\\n }\\n }\\n .\\\\[button\\\\&\\\\,a\\\\&\\\\]\\\\:cursor-pointer {\\n button&,a& {\\n cursor: pointer;\\n }\\n }\\n .\\\\[button\\\\&\\\\,a\\\\&\\\\]\\\\:hover\\\\:bg-accent\\\\/50 {\\n button&,a& {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--accent);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\\n }\\n }\\n }\\n }\\n }\\n .\\\\[button\\\\&\\\\,a\\\\&\\\\]\\\\:hover\\\\:bg-destructive\\\\/90 {\\n button&,a& {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--destructive);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\\n }\\n }\\n }\\n }\\n }\\n .\\\\[button\\\\&\\\\,a\\\\&\\\\]\\\\:hover\\\\:bg-primary\\\\/90 {\\n button&,a& {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--primary);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\\n }\\n }\\n }\\n }\\n }\\n .\\\\[button\\\\&\\\\,a\\\\&\\\\]\\\\:hover\\\\:bg-secondary\\\\/90 {\\n button&,a& {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--secondary);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--secondary) 90%, transparent);\\n }\\n }\\n }\\n }\\n }\\n .dark\\\\:\\\\[button\\\\&\\\\,a\\\\&\\\\]\\\\:hover\\\\:bg-input\\\\/48 {\\n &:is(.dark *) {\\n button&,a& {\\n &:hover {\\n @media (hover: hover) {\\n background-color: var(--input);\\n @supports (color: color-mix(in lab, red, red)) {\\n background-color: color-mix(in oklab, var(--input) 48%, transparent);\\n }\\n }\\n }\\n }\\n }\\n }\\n .\\\\[button\\\\&\\\\,a\\\\&\\\\]\\\\:pointer-coarse\\\\:after\\\\:absolute {\\n button&,a& {\\n @media (pointer: coarse) {\\n &::after {\\n content: var(--tw-content);\\n position: absolute;\\n }\\n }\\n }\\n }\\n .\\\\[button\\\\&\\\\,a\\\\&\\\\]\\\\:pointer-coarse\\\\:after\\\\:size-full {\\n button&,a& {\\n @media (pointer: coarse) {\\n &::after {\\n content: var(--tw-content);\\n width: 100%;\\n height: 100%;\\n }\\n }\\n }\\n }\\n .\\\\[button\\\\&\\\\,a\\\\&\\\\]\\\\:pointer-coarse\\\\:after\\\\:min-h-11 {\\n button&,a& {\\n @media (pointer: coarse) {\\n &::after {\\n content: var(--tw-content);\\n min-height: calc(var(--spacing) * 11);\\n }\\n }\\n }\\n }\\n .\\\\[button\\\\&\\\\,a\\\\&\\\\]\\\\:pointer-coarse\\\\:after\\\\:min-w-11 {\\n button&,a& {\\n @media (pointer: coarse) {\\n &::after {\\n content: var(--tw-content);\\n min-width: calc(var(--spacing) * 11);\\n }\\n }\\n }\\n }\\n}\\n@property --tw-animation-delay {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0s;\\n}\\n@property --tw-animation-direction {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: normal;\\n}\\n@property --tw-animation-duration {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-animation-fill-mode {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: none;\\n}\\n@property --tw-animation-iteration-count {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 1;\\n}\\n@property --tw-enter-blur {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-enter-opacity {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 1;\\n}\\n@property --tw-enter-rotate {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-enter-scale {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 1;\\n}\\n@property --tw-enter-translate-x {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-enter-translate-y {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-exit-blur {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-exit-opacity {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 1;\\n}\\n@property --tw-exit-rotate {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-exit-scale {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 1;\\n}\\n@property --tw-exit-translate-x {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-exit-translate-y {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@layer base {\\n *, ::after, ::before {\\n border-color: var(--color-border, currentColor);\\n }\\n}\\n:where(:host, :root) {\\n --background: #141414;\\n --foreground: #f5f5f5;\\n --card: #181818;\\n --card-foreground: #f5f5f5;\\n --popover: #1e1e1e;\\n --popover-foreground: #f5f5f5;\\n --primary: #f5f5f5;\\n --primary-foreground: #262626;\\n --secondary: rgba(255, 255, 255, 0.04);\\n --secondary-foreground: #f5f5f5;\\n --muted: rgba(255, 255, 255, 0.04);\\n --muted-foreground: #7f7f7f;\\n --accent: rgba(255, 255, 255, 0.04);\\n --accent-foreground: #f5f5f5;\\n --destructive: #f87171;\\n --destructive-foreground: #f87171;\\n --border: rgba(255, 255, 255, 0.06);\\n --input: rgba(255, 255, 255, 0.08);\\n --ring: #737373;\\n --warning: #fbbf24;\\n --warning-foreground: #fbbf24;\\n --success: #34d399;\\n --success-foreground: #34d399;\\n --info: #60a5fa;\\n --info-foreground: #60a5fa;\\n --purple: #a78bfa;\\n --purple-foreground: #a78bfa;\\n --radius: 0.625rem;\\n}\\n:host(.light) {\\n --background: #ffffff;\\n --foreground: #262626;\\n --card: #ffffff;\\n --card-foreground: #262626;\\n --popover: #ffffff;\\n --popover-foreground: #262626;\\n --primary: #262626;\\n --primary-foreground: #fafafa;\\n --secondary: rgba(0, 0, 0, 0.04);\\n --secondary-foreground: #262626;\\n --muted: rgba(0, 0, 0, 0.04);\\n --muted-foreground: #6b6b6b;\\n --accent: rgba(0, 0, 0, 0.04);\\n --accent-foreground: #262626;\\n --destructive: #ef4444;\\n --destructive-foreground: #b91c1c;\\n --border: rgba(0, 0, 0, 0.08);\\n --input: rgba(0, 0, 0, 0.1);\\n --ring: #a3a3a3;\\n --warning: #f59e0b;\\n --warning-foreground: #92400e;\\n --success: #10b981;\\n --success-foreground: #065f46;\\n --info: #3b82f6;\\n --info-foreground: #1e40af;\\n --purple: #8b5cf6;\\n --purple-foreground: #5b21b6;\\n}\\n@property --tw-translate-x {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-translate-y {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-translate-z {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-rotate-x {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-rotate-y {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-rotate-z {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-skew-x {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-skew-y {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-space-y-reverse {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-space-x-reverse {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-divide-y-reverse {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0;\\n}\\n@property --tw-border-style {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: solid;\\n}\\n@property --tw-mask-linear {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: linear-gradient(#fff, #fff);\\n}\\n@property --tw-mask-radial {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: linear-gradient(#fff, #fff);\\n}\\n@property --tw-mask-conic {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: linear-gradient(#fff, #fff);\\n}\\n@property --tw-mask-left {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: linear-gradient(#fff, #fff);\\n}\\n@property --tw-mask-right {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: linear-gradient(#fff, #fff);\\n}\\n@property --tw-mask-bottom {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: linear-gradient(#fff, #fff);\\n}\\n@property --tw-mask-top {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: linear-gradient(#fff, #fff);\\n}\\n@property --tw-mask-top-from-position {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0%;\\n}\\n@property --tw-mask-top-to-position {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 100%;\\n}\\n@property --tw-mask-top-from-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: black;\\n}\\n@property --tw-mask-top-to-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: transparent;\\n}\\n@property --tw-mask-right-from-position {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0%;\\n}\\n@property --tw-mask-right-to-position {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 100%;\\n}\\n@property --tw-mask-right-from-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: black;\\n}\\n@property --tw-mask-right-to-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: transparent;\\n}\\n@property --tw-mask-bottom-from-position {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0%;\\n}\\n@property --tw-mask-bottom-to-position {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 100%;\\n}\\n@property --tw-mask-bottom-from-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: black;\\n}\\n@property --tw-mask-bottom-to-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: transparent;\\n}\\n@property --tw-mask-left-from-position {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0%;\\n}\\n@property --tw-mask-left-to-position {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 100%;\\n}\\n@property --tw-mask-left-from-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: black;\\n}\\n@property --tw-mask-left-to-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: transparent;\\n}\\n@property --tw-leading {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-font-weight {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-tracking {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-shadow {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0 0 #0000;\\n}\\n@property --tw-shadow-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-shadow-alpha {\\n syntax: \\\"<percentage>\\\";\\n inherits: false;\\n initial-value: 100%;\\n}\\n@property --tw-inset-shadow {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0 0 #0000;\\n}\\n@property --tw-inset-shadow-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-inset-shadow-alpha {\\n syntax: \\\"<percentage>\\\";\\n inherits: false;\\n initial-value: 100%;\\n}\\n@property --tw-ring-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-ring-shadow {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0 0 #0000;\\n}\\n@property --tw-inset-ring-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-inset-ring-shadow {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0 0 #0000;\\n}\\n@property --tw-ring-inset {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-ring-offset-width {\\n syntax: \\\"<length>\\\";\\n inherits: false;\\n initial-value: 0px;\\n}\\n@property --tw-ring-offset-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: #fff;\\n}\\n@property --tw-ring-offset-shadow {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 0 0 #0000;\\n}\\n@property --tw-outline-style {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: solid;\\n}\\n@property --tw-blur {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-brightness {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-contrast {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-grayscale {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-hue-rotate {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-invert {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-opacity {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-saturate {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-sepia {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-drop-shadow {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-drop-shadow-color {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-drop-shadow-alpha {\\n syntax: \\\"<percentage>\\\";\\n inherits: false;\\n initial-value: 100%;\\n}\\n@property --tw-drop-shadow-size {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-backdrop-blur {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-backdrop-brightness {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-backdrop-contrast {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-backdrop-grayscale {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-backdrop-hue-rotate {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-backdrop-invert {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-backdrop-opacity {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-backdrop-saturate {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-backdrop-sepia {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-duration {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-ease {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-content {\\n syntax: \\\"*\\\";\\n initial-value: \\\"\\\";\\n inherits: false;\\n}\\n@property --tw-gradient-position {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-gradient-from {\\n syntax: \\\"<color>\\\";\\n inherits: false;\\n initial-value: #0000;\\n}\\n@property --tw-gradient-via {\\n syntax: \\\"<color>\\\";\\n inherits: false;\\n initial-value: #0000;\\n}\\n@property --tw-gradient-to {\\n syntax: \\\"<color>\\\";\\n inherits: false;\\n initial-value: #0000;\\n}\\n@property --tw-gradient-stops {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-gradient-via-stops {\\n syntax: \\\"*\\\";\\n inherits: false;\\n}\\n@property --tw-gradient-from-position {\\n syntax: \\\"<length-percentage>\\\";\\n inherits: false;\\n initial-value: 0%;\\n}\\n@property --tw-gradient-via-position {\\n syntax: \\\"<length-percentage>\\\";\\n inherits: false;\\n initial-value: 50%;\\n}\\n@property --tw-gradient-to-position {\\n syntax: \\\"<length-percentage>\\\";\\n inherits: false;\\n initial-value: 100%;\\n}\\n@property --tw-scale-x {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 1;\\n}\\n@property --tw-scale-y {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 1;\\n}\\n@property --tw-scale-z {\\n syntax: \\\"*\\\";\\n inherits: false;\\n initial-value: 1;\\n}\\n@keyframes spin {\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n@layer properties {\\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\\n *, ::before, ::after, ::backdrop {\\n --tw-translate-x: 0;\\n --tw-translate-y: 0;\\n --tw-translate-z: 0;\\n --tw-rotate-x: initial;\\n --tw-rotate-y: initial;\\n --tw-rotate-z: initial;\\n --tw-skew-x: initial;\\n --tw-skew-y: initial;\\n --tw-space-y-reverse: 0;\\n --tw-space-x-reverse: 0;\\n --tw-divide-y-reverse: 0;\\n --tw-border-style: solid;\\n --tw-mask-linear: linear-gradient(#fff, #fff);\\n --tw-mask-radial: linear-gradient(#fff, #fff);\\n --tw-mask-conic: linear-gradient(#fff, #fff);\\n --tw-mask-left: linear-gradient(#fff, #fff);\\n --tw-mask-right: linear-gradient(#fff, #fff);\\n --tw-mask-bottom: linear-gradient(#fff, #fff);\\n --tw-mask-top: linear-gradient(#fff, #fff);\\n --tw-mask-top-from-position: 0%;\\n --tw-mask-top-to-position: 100%;\\n --tw-mask-top-from-color: black;\\n --tw-mask-top-to-color: transparent;\\n --tw-mask-right-from-position: 0%;\\n --tw-mask-right-to-position: 100%;\\n --tw-mask-right-from-color: black;\\n --tw-mask-right-to-color: transparent;\\n --tw-mask-bottom-from-position: 0%;\\n --tw-mask-bottom-to-position: 100%;\\n --tw-mask-bottom-from-color: black;\\n --tw-mask-bottom-to-color: transparent;\\n --tw-mask-left-from-position: 0%;\\n --tw-mask-left-to-position: 100%;\\n --tw-mask-left-from-color: black;\\n --tw-mask-left-to-color: transparent;\\n --tw-leading: initial;\\n --tw-font-weight: initial;\\n --tw-tracking: initial;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-color: initial;\\n --tw-shadow-alpha: 100%;\\n --tw-inset-shadow: 0 0 #0000;\\n --tw-inset-shadow-color: initial;\\n --tw-inset-shadow-alpha: 100%;\\n --tw-ring-color: initial;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-inset-ring-color: initial;\\n --tw-inset-ring-shadow: 0 0 #0000;\\n --tw-ring-inset: initial;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-offset-shadow: 0 0 #0000;\\n --tw-outline-style: solid;\\n --tw-blur: initial;\\n --tw-brightness: initial;\\n --tw-contrast: initial;\\n --tw-grayscale: initial;\\n --tw-hue-rotate: initial;\\n --tw-invert: initial;\\n --tw-opacity: initial;\\n --tw-saturate: initial;\\n --tw-sepia: initial;\\n --tw-drop-shadow: initial;\\n --tw-drop-shadow-color: initial;\\n --tw-drop-shadow-alpha: 100%;\\n --tw-drop-shadow-size: initial;\\n --tw-backdrop-blur: initial;\\n --tw-backdrop-brightness: initial;\\n --tw-backdrop-contrast: initial;\\n --tw-backdrop-grayscale: initial;\\n --tw-backdrop-hue-rotate: initial;\\n --tw-backdrop-invert: initial;\\n --tw-backdrop-opacity: initial;\\n --tw-backdrop-saturate: initial;\\n --tw-backdrop-sepia: initial;\\n --tw-duration: initial;\\n --tw-ease: initial;\\n --tw-content: \\\"\\\";\\n --tw-gradient-position: initial;\\n --tw-gradient-from: #0000;\\n --tw-gradient-via: #0000;\\n --tw-gradient-to: #0000;\\n --tw-gradient-stops: initial;\\n --tw-gradient-via-stops: initial;\\n --tw-gradient-from-position: 0%;\\n --tw-gradient-via-position: 50%;\\n --tw-gradient-to-position: 100%;\\n --tw-scale-x: 1;\\n --tw-scale-y: 1;\\n --tw-scale-z: 1;\\n --tw-animation-delay: 0s;\\n --tw-animation-direction: normal;\\n --tw-animation-duration: initial;\\n --tw-animation-fill-mode: none;\\n --tw-animation-iteration-count: 1;\\n --tw-enter-blur: 0;\\n --tw-enter-opacity: 1;\\n --tw-enter-rotate: 0;\\n --tw-enter-scale: 1;\\n --tw-enter-translate-x: 0;\\n --tw-enter-translate-y: 0;\\n --tw-exit-blur: 0;\\n --tw-exit-opacity: 1;\\n --tw-exit-rotate: 0;\\n --tw-exit-scale: 1;\\n --tw-exit-translate-x: 0;\\n --tw-exit-translate-y: 0;\\n }\\n }\\n}\\n\\n/* ============================================================\\n Design tokens — COSS defaults + uidex category colors\\n :host for Shadow DOM, :where(:root) for standalone use.\\n Dark theme default. Light theme via :host(.light).\\n ============================================================ */\\n\\n:where(:host, :root) {\\n --background: #141414;\\n --foreground: #f5f5f5;\\n --card: #181818;\\n --card-foreground: #f5f5f5;\\n --popover: #1e1e1e;\\n --popover-foreground: #f5f5f5;\\n --primary: #f5f5f5;\\n --primary-foreground: #262626;\\n --secondary: rgba(255, 255, 255, 0.04);\\n --secondary-foreground: #f5f5f5;\\n --muted: rgba(255, 255, 255, 0.04);\\n --muted-foreground: #7f7f7f;\\n --accent: rgba(255, 255, 255, 0.04);\\n --accent-foreground: #f5f5f5;\\n --destructive: #f87171;\\n --destructive-foreground: #f87171;\\n --border: rgba(255, 255, 255, 0.06);\\n --input: rgba(255, 255, 255, 0.08);\\n --ring: #737373;\\n --info: #60a5fa;\\n --radius: 0.625rem;\\n --radius-sm: 6px;\\n --radius-md: 8px;\\n --radius-lg: 10px;\\n --radius-xl: 14px;\\n --radius-2xl: 16px;\\n --font-sans: ui-sans-serif, system-ui, -apple-system,\\n BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\\n --font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo,\\n Consolas, monospace;\\n\\n /* Uidex category colors */\\n --uidex-component: #34d399;\\n --uidex-feature: #a78bfa;\\n --uidex-block: #c084fc;\\n}\\n\\n/* ——— Light theme ——— */\\n:host(.light) {\\n --background: #ffffff;\\n --foreground: #262626;\\n --card: #ffffff;\\n --card-foreground: #262626;\\n --popover: #ffffff;\\n --popover-foreground: #262626;\\n --primary: #262626;\\n --primary-foreground: #fafafa;\\n --secondary: rgba(0, 0, 0, 0.04);\\n --secondary-foreground: #262626;\\n --muted: rgba(0, 0, 0, 0.04);\\n --muted-foreground: #6b6b6b;\\n --accent: rgba(0, 0, 0, 0.04);\\n --accent-foreground: #262626;\\n --destructive: #ef4444;\\n --destructive-foreground: #b91c1c;\\n --border: rgba(0, 0, 0, 0.08);\\n --input: rgba(0, 0, 0, 0.1);\\n --ring: #a3a3a3;\\n --info: #3b82f6;\\n --warning: #f59e0b;\\n --warning-foreground: #92400e;\\n --success: #10b981;\\n --success-foreground: #065f46;\\n --info-foreground: #1e40af;\\n --purple: #8b5cf6;\\n --purple-foreground: #5b21b6;\\n}\\n\\n/* ============================================================\\n Reset — match Tailwind preflight (border-box + no margin)\\n ============================================================ */\\n\\n*,\\n*::before,\\n*::after {\\n box-sizing: border-box;\\n}\\n\\n/* ============================================================\\n Icon\\n ============================================================ */\\n\\n.uidex-icon {\\n flex-shrink: 0;\\n pointer-events: none;\\n}\\n\\n/* ============================================================\\n Button — mirrors COSS button.tsx variants\\n ============================================================ */\\n\\n.uidex-btn {\\n position: relative;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n gap: 8px;\\n border-radius: var(--radius-lg);\\n border: 1px solid transparent;\\n font-size: 14px;\\n font-weight: 500;\\n font-family: var(--font-sans);\\n white-space: nowrap;\\n cursor: pointer;\\n outline: none;\\n transition:\\n background-color 0.2s ease-in-out,\\n color 0.2s ease-in-out,\\n box-shadow 0.2s ease-in-out,\\n border-color 0.2s ease-in-out;\\n -webkit-font-smoothing: antialiased;\\n}\\n\\n.uidex-btn::before {\\n content: '';\\n position: absolute;\\n inset: 0;\\n pointer-events: none;\\n border-radius: calc(var(--radius-lg) - 1px);\\n}\\n\\n.uidex-btn:focus-visible {\\n outline: 2px solid var(--ring);\\n outline-offset: 1px;\\n}\\n\\n.uidex-btn:disabled {\\n opacity: 0.64;\\n pointer-events: none;\\n}\\n\\n/* Default variant — primary fill */\\n.uidex-btn--default {\\n border-color: var(--primary);\\n background: var(--primary);\\n color: var(--primary-foreground);\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05),\\n 0 1px 2px color-mix(in srgb, var(--primary) 24%, transparent);\\n}\\n\\n.uidex-btn--default::before {\\n box-shadow: inset 0 1px color-mix(in srgb, var(--primary-foreground) 16%, transparent);\\n}\\n\\n.uidex-btn--default:hover {\\n opacity: 0.9;\\n}\\n\\n.uidex-btn--default:active {\\n box-shadow: none;\\n}\\n\\n.uidex-btn--default:active::before {\\n box-shadow: inset 0 1px rgba(0, 0, 0, 0.08);\\n}\\n\\n/* Ghost variant */\\n.uidex-btn--ghost {\\n background: transparent;\\n color: var(--foreground);\\n}\\n\\n.uidex-btn--ghost::before {\\n display: none;\\n}\\n\\n.uidex-btn--ghost:hover {\\n background: var(--accent);\\n}\\n\\n/* Outline variant */\\n.uidex-btn--outline {\\n border-color: var(--input);\\n background: var(--popover);\\n color: var(--foreground);\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\\n}\\n\\n.uidex-btn--outline::before {\\n box-shadow: 0 -1px var(--border);\\n}\\n\\n.uidex-btn--outline:hover {\\n background: var(--input);\\n}\\n\\n.uidex-btn--outline:active {\\n box-shadow: none;\\n}\\n\\n/* Destructive variant */\\n.uidex-btn--destructive {\\n border-color: var(--destructive);\\n background: var(--destructive);\\n color: #ffffff;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\\n}\\n\\n.uidex-btn--destructive::before {\\n box-shadow: inset 0 1px color-mix(in srgb, var(--primary-foreground) 16%, transparent);\\n}\\n\\n.uidex-btn--destructive:hover {\\n opacity: 0.9;\\n}\\n\\n/* Button sizes */\\n.uidex-btn--size-default {\\n height: 36px;\\n padding: 0 12px;\\n}\\n\\n.uidex-btn--size-sm {\\n height: 32px;\\n padding: 0 10px;\\n gap: 6px;\\n}\\n\\n.uidex-btn--size-xs {\\n height: 28px;\\n padding: 0 8px;\\n gap: 4px;\\n font-size: 12px;\\n border-radius: var(--radius-md);\\n}\\n\\n.uidex-btn--size-xs::before {\\n border-radius: calc(var(--radius-md) - 1px);\\n}\\n\\n.uidex-btn--size-icon {\\n width: 36px;\\n height: 36px;\\n padding: 0;\\n}\\n\\n.uidex-btn--size-icon-sm {\\n width: 32px;\\n height: 32px;\\n padding: 0;\\n}\\n\\n.uidex-btn--size-icon-xs {\\n width: 24px;\\n height: 24px;\\n padding: 0;\\n border-radius: var(--radius-md);\\n}\\n\\n.uidex-btn--size-icon-xs .uidex-icon {\\n width: 14px;\\n height: 14px;\\n}\\n\\n.uidex-btn .uidex-icon {\\n width: 16px;\\n height: 16px;\\n opacity: 0.8;\\n}\\n\\n.uidex-btn--size-xs .uidex-icon {\\n width: 14px;\\n height: 14px;\\n}\\n\\n/* ============================================================\\n Dialog — mirrors COSS dialog.tsx\\n ============================================================ */\\n\\n.uidex-dialog-backdrop {\\n position: fixed;\\n inset: 0;\\n z-index: 2147483646;\\n pointer-events: auto;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: rgba(0, 0, 0, 0.32);\\n backdrop-filter: blur(4px);\\n -webkit-backdrop-filter: blur(4px);\\n opacity: 0;\\n transition: opacity 0.2s ease-in-out;\\n}\\n\\n.uidex-dialog-backdrop--open {\\n opacity: 1;\\n}\\n\\n.uidex-dialog {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n background: var(--popover);\\n color: var(--popover-foreground);\\n border: 1px solid var(--border);\\n border-radius: var(--radius-2xl);\\n max-width: calc(100vw - 32px);\\n max-height: calc(100vh - 64px);\\n font-family: var(--font-sans);\\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);\\n overflow: hidden;\\n -webkit-font-smoothing: antialiased;\\n opacity: 0;\\n transform: scale(0.98);\\n transform-origin: center;\\n will-change: transform;\\n transition:\\n opacity 0.2s ease-in-out,\\n transform 0.2s ease-in-out;\\n}\\n\\n.uidex-dialog--open {\\n opacity: 1;\\n transform: none;\\n}\\n\\n.uidex-dialog::before {\\n content: '';\\n position: absolute;\\n inset: 0;\\n pointer-events: none;\\n border-radius: calc(var(--radius-2xl) - 1px);\\n box-shadow: 0 -1px var(--border);\\n}\\n\\n/* Panel variant — sidebar layout */\\n.uidex-dialog--panel {\\n width: calc(100vw - 32px);\\n max-width: 720px;\\n height: calc(100vh - 64px);\\n max-height: 600px;\\n}\\n\\n/* Feedback variant — single column */\\n.uidex-dialog--feedback {\\n width: calc(100vw - 32px);\\n max-width: 400px;\\n}\\n\\n.uidex-dialog-header {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n padding: 16px 24px;\\n padding-right: 48px;\\n border-bottom: 1px solid var(--border);\\n}\\n\\n.uidex-dialog-title {\\n margin: 0;\\n font-size: 20px;\\n font-weight: 600;\\n line-height: 1;\\n color: var(--foreground);\\n font-family: var(--font-sans);\\n}\\n\\n.uidex-dialog-body {\\n flex: 1;\\n min-height: 0;\\n overflow-y: auto;\\n scrollbar-width: thin;\\n scrollbar-color: rgba(128, 128, 128, 0.2) transparent;\\n}\\n\\n.uidex-dialog-body::-webkit-scrollbar {\\n width: 6px;\\n}\\n\\n.uidex-dialog-body::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n\\n.uidex-dialog-body::-webkit-scrollbar-thumb {\\n background: rgba(128, 128, 128, 0.2);\\n border-radius: 9999px;\\n}\\n\\n.uidex-dialog-footer {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n gap: 8px;\\n padding: 16px 24px;\\n border-top: 1px solid var(--border);\\n background: var(--muted);\\n border-radius: 0 0 calc(var(--radius-2xl) - 1px)\\n calc(var(--radius-2xl) - 1px);\\n}\\n\\n.uidex-dialog-close {\\n position: absolute;\\n right: 8px;\\n top: 8px;\\n z-index: 1;\\n}\\n\\n/* ——— Panel body layout (sidebar + main) ——— */\\n.uidex-panel-body {\\n display: flex;\\n flex: 1;\\n min-height: 0;\\n}\\n\\n.uidex-panel-sidebar {\\n width: 200px;\\n flex-shrink: 0;\\n border-right: 1px solid var(--border);\\n overflow-y: auto;\\n padding: 0;\\n scrollbar-width: thin;\\n scrollbar-color: rgba(128, 128, 128, 0.2) transparent;\\n}\\n\\n.uidex-panel-sidebar::-webkit-scrollbar {\\n width: 6px;\\n}\\n\\n.uidex-panel-sidebar::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n\\n.uidex-panel-sidebar::-webkit-scrollbar-thumb {\\n background: rgba(128, 128, 128, 0.2);\\n border-radius: 9999px;\\n}\\n\\n.uidex-panel-main {\\n flex: 1;\\n min-width: 0;\\n overflow-y: auto;\\n padding: 24px;\\n scrollbar-width: thin;\\n scrollbar-color: rgba(128, 128, 128, 0.2) transparent;\\n}\\n\\n.uidex-panel-main::-webkit-scrollbar {\\n width: 6px;\\n}\\n\\n.uidex-panel-main::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n\\n.uidex-panel-main::-webkit-scrollbar-thumb {\\n background: rgba(128, 128, 128, 0.2);\\n border-radius: 9999px;\\n}\\n\\n.uidex-control--flex-fill {\\n flex: 1;\\n min-width: 0;\\n}\\n\\n.uidex-dialog-body--padded {\\n padding: 12px 16px;\\n}\\n\\n/* ============================================================\\n Control wrapper — shared base for input, textarea, select\\n ============================================================ */\\n\\n.uidex-control {\\n position: relative;\\n display: inline-flex;\\n width: 100%;\\n border-radius: var(--radius-lg);\\n border: 1px solid var(--input);\\n background: var(--background);\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\\n transition:\\n border-color 0.2s ease-in-out,\\n box-shadow 0.2s ease-in-out;\\n}\\n\\n.uidex-control::before {\\n content: '';\\n position: absolute;\\n inset: 0;\\n pointer-events: none;\\n border-radius: calc(var(--radius-lg) - 1px);\\n box-shadow: 0 -1px var(--border);\\n}\\n\\n.uidex-control:focus-within {\\n border-color: var(--ring);\\n outline: 3px solid color-mix(in srgb, var(--ring) 24%, transparent);\\n outline-offset: -1px;\\n box-shadow: none;\\n}\\n\\n.uidex-control:focus-within::before {\\n box-shadow: none;\\n}\\n\\n/* ——— Input ——— */\\n\\n.uidex-input {\\n width: 100%;\\n min-width: 0;\\n height: 30px;\\n padding: 0 10px;\\n border: none;\\n border-radius: inherit;\\n background: transparent;\\n color: var(--foreground);\\n font-size: 14px;\\n font-family: var(--font-sans);\\n outline: none;\\n line-height: 30px;\\n}\\n\\n.uidex-input::placeholder {\\n color: var(--muted-foreground);\\n opacity: 0.72;\\n}\\n\\n.uidex-control--sm .uidex-input {\\n height: 26px;\\n line-height: 26px;\\n padding: 0 8px;\\n}\\n\\n/* ——— Textarea ——— */\\n\\n.uidex-textarea {\\n width: 100%;\\n min-width: 0;\\n padding: 8px 10px;\\n border: none;\\n border-radius: inherit;\\n background: transparent;\\n color: var(--foreground);\\n font-size: 14px;\\n font-family: var(--font-sans);\\n outline: none;\\n line-height: 1.5;\\n resize: vertical;\\n min-height: 80px;\\n}\\n\\n.uidex-textarea::placeholder {\\n color: var(--muted-foreground);\\n opacity: 0.72;\\n}\\n\\n/* ——— Select ——— */\\n\\n.uidex-select {\\n width: 100%;\\n height: 30px;\\n padding: 0 26px 0 10px;\\n border: none;\\n border-radius: inherit;\\n background: transparent;\\n color: var(--foreground);\\n font-size: 14px;\\n font-family: var(--font-sans);\\n outline: none;\\n appearance: none;\\n cursor: pointer;\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 256 256'%3E%3Cpath fill='%237f7f7f' d='M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80a8,8,0,0,1,11.32-11.32L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z'/%3E%3C/svg%3E\\\");\\n background-repeat: no-repeat;\\n background-position: right 6px center;\\n background-size: 16px;\\n}\\n\\n/* ============================================================\\n Badge — mirrors COSS badge.tsx\\n ============================================================ */\\n\\n.uidex-badge {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n gap: 4px;\\n height: 18px;\\n min-width: 18px;\\n padding: 0 4px;\\n border-radius: var(--radius-sm);\\n border: 1px solid transparent;\\n font-size: 12px;\\n font-weight: 500;\\n font-family: var(--font-sans);\\n white-space: nowrap;\\n}\\n\\n.uidex-badge--sm {\\n height: 16px;\\n min-width: 16px;\\n font-size: 10px;\\n}\\n\\n.uidex-badge--default {\\n background: var(--primary);\\n color: var(--primary-foreground);\\n}\\n\\n.uidex-badge--outline {\\n border-color: var(--input);\\n background: var(--background);\\n color: var(--foreground);\\n}\\n\\n.uidex-badge--pages {\\n color: var(--info);\\n border-color: color-mix(\\n in srgb,\\n var(--info) 30%,\\n transparent\\n );\\n}\\n\\n.uidex-badge--features {\\n color: var(--uidex-feature);\\n border-color: color-mix(\\n in srgb,\\n var(--uidex-feature) 30%,\\n transparent\\n );\\n}\\n\\n.uidex-badge--components {\\n color: var(--uidex-component);\\n border-color: color-mix(\\n in srgb,\\n var(--uidex-component) 30%,\\n transparent\\n );\\n}\\n\\n.uidex-badge--blocks {\\n color: var(--uidex-block);\\n border-color: color-mix(\\n in srgb,\\n var(--uidex-block) 30%,\\n transparent\\n );\\n}\\n\\n.uidex-badge--spaced {\\n margin-bottom: 12px;\\n}\\n\\n/* ============================================================\\n Chip — small clickable tags\\n ============================================================ */\\n\\n.uidex-chip {\\n display: inline-flex;\\n align-items: center;\\n padding: 2px 6px;\\n border-radius: var(--radius-sm);\\n border: 1px solid var(--border);\\n background: transparent;\\n font-family: var(--font-sans);\\n font-size: 12px;\\n color: var(--foreground);\\n transition: background-color 0.2s ease-in-out;\\n}\\n\\n.uidex-chip:hover {\\n background: var(--accent);\\n}\\n\\n.uidex-chip--dimmed {\\n opacity: 0.4;\\n}\\n\\n.uidex-chip--pages {\\n color: var(--info);\\n border-color: color-mix(\\n in srgb,\\n var(--info) 30%,\\n transparent\\n );\\n}\\n\\n.uidex-chip--features {\\n color: var(--uidex-feature);\\n border-color: color-mix(\\n in srgb,\\n var(--uidex-feature) 30%,\\n transparent\\n );\\n}\\n\\n.uidex-chip--components {\\n color: var(--uidex-component);\\n border-color: color-mix(\\n in srgb,\\n var(--uidex-component) 30%,\\n transparent\\n );\\n}\\n\\n.uidex-chip--blocks {\\n color: var(--uidex-block);\\n border-color: color-mix(\\n in srgb,\\n var(--uidex-block) 30%,\\n transparent\\n );\\n}\\n\\n.uidex-chip-group {\\n display: flex;\\n flex-wrap: wrap;\\n gap: 4px;\\n}\\n\\n.uidex-chip-group--spaced {\\n margin-bottom: 8px;\\n}\\n\\n/* ============================================================\\n Separator\\n ============================================================ */\\n\\n.uidex-separator {\\n background: var(--border);\\n height: 1px;\\n width: 100%;\\n flex-shrink: 0;\\n}\\n\\n.uidex-separator--vertical {\\n width: 1px;\\n height: auto;\\n align-self: stretch;\\n}\\n\\n/* ============================================================\\n Code block\\n ============================================================ */\\n\\n.uidex-code {\\n display: block;\\n font-family: var(--font-mono);\\n font-size: 14px;\\n color: var(--foreground);\\n background: var(--card);\\n padding: 6px 10px;\\n border-radius: var(--radius-md);\\n border: 1px solid var(--border);\\n word-break: break-all;\\n}\\n\\n.uidex-code--inline {\\n display: inline;\\n border: none;\\n background: none;\\n padding: 0;\\n word-break: normal;\\n}\\n\\n/* ============================================================\\n Label — section heading, muted small text\\n ============================================================ */\\n\\n.uidex-label {\\n font-size: 12px;\\n font-weight: 500;\\n color: var(--muted-foreground);\\n margin-bottom: 6px;\\n}\\n\\n/* ============================================================\\n Field — form label + control wrapper\\n ============================================================ */\\n\\n.uidex-field {\\n display: flex;\\n flex-direction: column;\\n gap: 4px;\\n}\\n\\n.uidex-field-label {\\n font-size: 14px;\\n font-weight: 500;\\n color: var(--muted-foreground);\\n}\\n\\n/* ============================================================\\n Form\\n ============================================================ */\\n\\n.uidex-form {\\n display: flex;\\n flex-direction: column;\\n gap: 12px;\\n}\\n\\n/* ============================================================\\n Toggle — checkbox + label\\n ============================================================ */\\n\\n.uidex-toggle {\\n display: inline-flex;\\n align-items: flex-start;\\n gap: 8px;\\n cursor: pointer;\\n}\\n\\n.uidex-toggle-checkbox,\\n.uidex-checklist-checkbox {\\n -webkit-appearance: none;\\n appearance: none;\\n flex-shrink: 0;\\n margin: 0;\\n width: 16px;\\n height: 16px;\\n border: 1px solid var(--input);\\n border-radius: 4px;\\n background: var(--background);\\n cursor: pointer;\\n position: relative;\\n transition: background-color 0.15s ease-in-out,\\n border-color 0.15s ease-in-out;\\n}\\n\\n.uidex-toggle-checkbox:checked,\\n.uidex-checklist-checkbox:checked {\\n background: var(--primary);\\n border-color: var(--primary);\\n}\\n\\n.uidex-toggle-checkbox:checked::after,\\n.uidex-checklist-checkbox:checked::after {\\n content: '';\\n position: absolute;\\n inset: 0;\\n background: var(--primary-foreground);\\n -webkit-mask-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.252 12.7 10.2 18.63 18.748 5.37'/%3E%3C/svg%3E\\\");\\n mask-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.252 12.7 10.2 18.63 18.748 5.37'/%3E%3C/svg%3E\\\");\\n -webkit-mask-size: 12px;\\n mask-size: 12px;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n -webkit-mask-position: center;\\n mask-position: center;\\n}\\n\\n.uidex-toggle-checkbox:focus-visible,\\n.uidex-checklist-checkbox:focus-visible {\\n outline: 2px solid var(--ring);\\n outline-offset: 1px;\\n}\\n\\n.uidex-toggle-text {\\n font-size: 14px;\\n line-height: 16px;\\n font-weight: 500;\\n color: var(--foreground);\\n}\\n\\n/* ============================================================\\n Section — content grouping\\n ============================================================ */\\n\\n.uidex-section {\\n margin-bottom: 12px;\\n}\\n\\n.uidex-section:last-child {\\n margin-bottom: 0;\\n}\\n\\n.uidex-section--spaced {\\n margin-top: 12px;\\n}\\n\\n/* ============================================================\\n Container — fixed position for trigger group\\n ============================================================ */\\n\\n.uidex-container {\\n position: fixed;\\n z-index: 2147483644;\\n pointer-events: auto;\\n font-family: var(--font-sans);\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.uidex-bottom-right {\\n bottom: 20px;\\n right: 20px;\\n}\\n.uidex-bottom-left {\\n bottom: 20px;\\n left: 20px;\\n}\\n.uidex-top-right {\\n top: 20px;\\n right: 20px;\\n}\\n.uidex-top-left {\\n top: 20px;\\n left: 20px;\\n}\\n\\n/* ============================================================\\n Trigger button group — COSS outline button group\\n ============================================================ */\\n\\n.uidex-trigger-group {\\n position: relative;\\n display: flex;\\n align-items: center;\\n border-radius: var(--radius-lg);\\n background: var(--popover);\\n border: 1px solid var(--input);\\n overflow: hidden;\\n user-select: none;\\n height: 32px;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\\n}\\n\\n.uidex-trigger-group::before {\\n content: '';\\n position: absolute;\\n inset: 0;\\n pointer-events: none;\\n border-radius: calc(var(--radius-lg) - 1px);\\n box-shadow: 0 -1px var(--border);\\n}\\n\\n.uidex-trigger-btn {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n gap: 6px;\\n height: 100%;\\n padding: 0 10px;\\n border: none;\\n background: transparent;\\n color: var(--muted-foreground);\\n font-size: 14px;\\n font-weight: 500;\\n font-family: var(--font-sans);\\n cursor: pointer;\\n outline: none;\\n transition:\\n background-color 0.2s ease-in-out,\\n color 0.2s ease-in-out;\\n}\\n\\n.uidex-trigger-btn:hover {\\n background: var(--accent);\\n color: var(--foreground);\\n}\\n\\n.uidex-trigger-btn:active {\\n background: var(--input);\\n}\\n\\n.uidex-trigger-btn--active {\\n color: var(--foreground);\\n background: var(--input);\\n}\\n\\n.uidex-trigger-btn--active:hover {\\n background: var(--accent);\\n}\\n\\n.uidex-trigger-btn:focus-visible {\\n outline: 2px solid var(--ring);\\n outline-offset: -2px;\\n}\\n\\n.uidex-trigger-icon {\\n width: 14px;\\n height: 14px;\\n flex-shrink: 0;\\n opacity: 0.8;\\n}\\n\\n.uidex-trigger-divider {\\n width: 1px;\\n height: 16px;\\n background: var(--border);\\n flex-shrink: 0;\\n}\\n\\n/* Draggable */\\n.uidex-container--dragging {\\n transition: none !important;\\n}\\n\\n.uidex-container--dragging .uidex-trigger-btn {\\n cursor: grabbing !important;\\n}\\n\\n/* ============================================================\\n Inspect mode cursor\\n ============================================================ */\\n\\nbody.uidex-inspecting,\\nbody.uidex-inspecting * {\\n cursor: crosshair !important;\\n}\\n\\n/* ============================================================\\n Sidebar navigation\\n ============================================================ */\\n\\n.uidex-sidebar-back {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n padding: 8px;\\n margin: 0;\\n border-bottom: 1px solid var(--border);\\n font-size: 14px;\\n font-weight: 600;\\n color: var(--muted-foreground);\\n cursor: pointer;\\n transition: color 0.2s ease-in-out;\\n position: sticky;\\n top: 0;\\n background: var(--popover);\\n z-index: 1;\\n}\\n\\n.uidex-sidebar-back:hover {\\n color: var(--foreground);\\n}\\n\\n.uidex-sidebar-back-icon {\\n width: 16px;\\n height: 16px;\\n flex-shrink: 0;\\n}\\n\\n.uidex-sidebar-root-item {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n padding: 8px;\\n margin: 0 4px;\\n border-radius: var(--radius-lg);\\n min-height: 32px;\\n font-size: 14px;\\n font-weight: 500;\\n color: var(--foreground);\\n cursor: pointer;\\n transition: background-color 0.2s ease-in-out;\\n}\\n\\n.uidex-sidebar-root-item:hover {\\n background: var(--accent);\\n}\\n\\n.uidex-sidebar-root-item--active {\\n background: var(--input);\\n}\\n\\n.uidex-sidebar-root-label {\\n flex: 0 0 auto;\\n}\\n\\n.uidex-sidebar-count {\\n font-size: 12px;\\n color: var(--muted-foreground);\\n font-weight: 400;\\n}\\n\\n.uidex-sidebar-chevron {\\n margin-left: auto;\\n color: var(--muted-foreground);\\n}\\n\\n.uidex-sidebar-chevron .uidex-icon {\\n width: 16px;\\n height: 16px;\\n}\\n\\n.uidex-sidebar-item {\\n display: flex;\\n align-items: center;\\n padding: 8px;\\n margin: 0 4px;\\n border-radius: var(--radius-lg);\\n min-height: 32px;\\n font-size: 14px;\\n color: var(--foreground);\\n cursor: pointer;\\n transition: background-color 0.2s ease-in-out;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.uidex-sidebar-item:hover {\\n background: var(--accent);\\n}\\n\\n.uidex-sidebar-item--active {\\n background: var(--input);\\n color: var(--foreground);\\n font-weight: 500;\\n}\\n\\n.uidex-sidebar-item--active:hover {\\n background: var(--input);\\n}\\n\\n.uidex-sidebar-item--dimmed {\\n opacity: 0.5;\\n}\\n\\n.uidex-sidebar-item--mono {\\n font-family: var(--font-mono);\\n}\\n\\n.uidex-sidebar-item--grouped {\\n padding-left: 28px;\\n}\\n\\n/* Sidebar category colors */\\n.uidex-sidebar-item--pages.uidex-sidebar-item--active {\\n color: var(--info);\\n}\\n\\n.uidex-sidebar-item--features.uidex-sidebar-item--active {\\n color: var(--uidex-feature);\\n}\\n\\n.uidex-sidebar-item--components.uidex-sidebar-item--active {\\n color: var(--uidex-component);\\n}\\n\\n.uidex-sidebar-item--blocks.uidex-sidebar-item--active {\\n color: var(--uidex-block);\\n}\\n\\n.uidex-sidebar-root-item--pages .uidex-sidebar-root-label {\\n color: var(--info);\\n}\\n\\n.uidex-sidebar-root-item--features .uidex-sidebar-root-label {\\n color: var(--uidex-feature);\\n}\\n\\n.uidex-sidebar-root-item--components .uidex-sidebar-root-label {\\n color: var(--uidex-component);\\n}\\n\\n.uidex-sidebar-root-item--blocks .uidex-sidebar-root-label {\\n color: var(--uidex-block);\\n}\\n\\n.uidex-sidebar-item--block {\\n color: var(--uidex-block);\\n font-style: italic;\\n}\\n\\n.uidex-sidebar-item--block.uidex-sidebar-item--active {\\n color: var(--uidex-block);\\n}\\n\\n/* Sidebar component groups */\\n.uidex-sidebar-group-header {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n padding: 8px;\\n margin: 0 4px;\\n border-radius: var(--radius-lg);\\n min-height: 32px;\\n font-size: 14px;\\n font-weight: 600;\\n color: var(--foreground);\\n cursor: pointer;\\n transition: background-color 0.2s ease-in-out;\\n user-select: none;\\n}\\n\\n.uidex-sidebar-group-header:hover {\\n background: var(--accent);\\n}\\n\\n.uidex-sidebar-group-chevron {\\n font-size: 16px;\\n line-height: 1;\\n color: var(--muted-foreground);\\n width: 16px;\\n text-align: center;\\n flex-shrink: 0;\\n transition: transform 0.2s ease-in-out;\\n transform: rotate(0deg);\\n}\\n\\n.uidex-sidebar-group-header--expanded .uidex-sidebar-group-chevron {\\n transform: rotate(90deg);\\n}\\n\\n.uidex-sidebar-group-count {\\n margin-left: auto;\\n font-size: 12px;\\n font-weight: 400;\\n color: var(--muted-foreground);\\n}\\n\\n/* ============================================================\\n Search\\n ============================================================ */\\n\\n/* ============================================================\\n Main content\\n ============================================================ */\\n\\n.uidex-main-title {\\n margin: 0 0 8px;\\n font-size: 20px;\\n font-weight: 600;\\n line-height: 1;\\n color: var(--foreground);\\n}\\n\\n.uidex-main-title--mono {\\n font-family: var(--font-mono);\\n}\\n\\n.uidex-absent-notice {\\n font-size: 14px;\\n color: var(--muted-foreground);\\n font-style: italic;\\n margin-bottom: 12px;\\n}\\n\\n/* ============================================================\\n Page markdown content\\n ============================================================ */\\n\\n.uidex-page-content {\\n font-size: 14px;\\n line-height: 1.6;\\n color: var(--foreground);\\n}\\n\\n.uidex-page-content h2,\\n.uidex-page-content h3,\\n.uidex-page-content h4,\\n.uidex-page-content h5,\\n.uidex-page-content h6 {\\n margin: 12px 0 6px;\\n font-size: 14px;\\n font-weight: 600;\\n color: var(--foreground);\\n}\\n\\n.uidex-page-content h2 {\\n font-size: 16px;\\n}\\n\\n.uidex-page-content p {\\n margin: 0 0 8px;\\n}\\n\\n.uidex-checklist {\\n list-style: none;\\n margin: 0 0 8px;\\n padding-left: 0;\\n}\\n\\n.uidex-checklist-item {\\n margin-bottom: 4px;\\n}\\n\\n.uidex-checklist-label {\\n display: inline-flex;\\n align-items: flex-start;\\n gap: 8px;\\n cursor: pointer;\\n font-size: 14px;\\n line-height: 16px;\\n font-weight: 500;\\n color: var(--foreground);\\n}\\n\\n/* checkbox styles in shared .uidex-toggle-checkbox / .uidex-checklist-checkbox block above */\\n\\n/* ============================================================\\n Empty state\\n ============================================================ */\\n\\n.uidex-empty-message {\\n padding: 16px 12px;\\n color: var(--muted-foreground);\\n font-size: 14px;\\n text-align: center;\\n}\\n\\n/* ============================================================\\n Input group — mirrors COSS InputGroup (input + inline addon)\\n ============================================================ */\\n\\n.uidex-input-group {\\n display: inline-flex;\\n width: 100%;\\n min-width: 0;\\n align-items: center;\\n border-radius: var(--radius-lg);\\n border: 1px solid var(--input);\\n background: var(--background);\\n font-size: 14px;\\n color: var(--foreground);\\n margin-bottom: 6px;\\n box-shadow: 0 -1px var(--border);\\n}\\n\\n.uidex-input-group:last-child {\\n margin-bottom: 0;\\n}\\n\\n.uidex-input-group-text {\\n flex: 1;\\n min-width: 0;\\n height: 30px;\\n padding: 0 11px;\\n font-size: 14px;\\n line-height: 30px;\\n word-break: break-all;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\n.uidex-input-group-addon {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding-right: 7px;\\n flex-shrink: 0;\\n}\\n\\n/* ============================================================\\n Environment info\\n ============================================================ */\\n\\n.uidex-env-item {\\n font-size: 14px;\\n color: var(--muted-foreground);\\n line-height: 1.6;\\n}\\n\\n/* ============================================================\\n Doc/description text\\n ============================================================ */\\n\\n.uidex-doc {\\n margin: 0;\\n font-size: 14px;\\n line-height: 1.5;\\n color: var(--muted-foreground);\\n}\\n\\n.uidex-doc--spaced {\\n margin-bottom: 12px;\\n}\\n\\n/* ============================================================\\n Header spacer (flex grow to push close button right)\\n ============================================================ */\\n\\n.uidex-header-spacer {\\n flex: 1;\\n}\\n\\n/* ============================================================\\n Graph visualization\\n ============================================================ */\\n\\n.uidex-graph {\\n margin-top: 8px;\\n}\\n\\n.uidex-graph-svg {\\n display: block;\\n}\\n\\n.uidex-graph-header {\\n font-size: 10px;\\n font-weight: 600;\\n}\\n\\n.uidex-graph-header--pages {\\n fill: var(--info);\\n}\\n.uidex-graph-header--features {\\n fill: var(--uidex-feature);\\n}\\n.uidex-graph-header--blocks {\\n fill: var(--uidex-block);\\n}\\n.uidex-graph-header--components {\\n fill: var(--uidex-component);\\n}\\n\\n.uidex-graph-node {\\n cursor: pointer;\\n}\\n\\n.uidex-graph-node rect {\\n fill: var(--card);\\n stroke: var(--border);\\n stroke-width: 1;\\n rx: 6;\\n ry: 6;\\n}\\n\\n.uidex-graph-node:hover rect {\\n fill: var(--accent);\\n}\\n\\n.uidex-graph-node--page rect {\\n stroke: color-mix(\\n in srgb,\\n var(--info) 50%,\\n transparent\\n );\\n}\\n.uidex-graph-node--feature rect {\\n stroke: color-mix(\\n in srgb,\\n var(--uidex-feature) 50%,\\n transparent\\n );\\n}\\n.uidex-graph-node--block rect {\\n stroke: color-mix(\\n in srgb,\\n var(--uidex-block) 50%,\\n transparent\\n );\\n}\\n.uidex-graph-node--component rect {\\n stroke: color-mix(\\n in srgb,\\n var(--uidex-component) 50%,\\n transparent\\n );\\n}\\n\\n.uidex-graph-label {\\n font-size: 10px;\\n font-family: var(--font-mono);\\n fill: var(--foreground);\\n}\\n\\n.uidex-graph-edge {\\n fill: none;\\n stroke-width: 1;\\n opacity: 0.3;\\n}\\n\\n.uidex-graph-edge--page {\\n stroke: var(--info);\\n}\\n.uidex-graph-edge--feature {\\n stroke: var(--uidex-feature);\\n}\\n.uidex-graph-edge--block {\\n stroke: var(--uidex-block);\\n stroke-dasharray: 4 3;\\n}\\n\\n.uidex-graph-svg.uidex-graph--hover .uidex-graph-edge {\\n opacity: 0.08;\\n}\\n.uidex-graph-svg.uidex-graph--hover .uidex-graph-node {\\n opacity: 0.3;\\n}\\n.uidex-graph-svg.uidex-graph--hover .uidex-graph-edge--highlighted {\\n opacity: 0.6;\\n stroke-width: 1.5;\\n}\\n.uidex-graph-svg.uidex-graph--hover .uidex-graph-node--highlighted {\\n opacity: 1;\\n}\\n\\n.uidex-graph-note {\\n font-size: 14px;\\n color: var(--muted-foreground);\\n margin-top: 12px;\\n font-style: italic;\\n}\\n\\n/* ============================================================\\n Responsive\\n ============================================================ */\\n\\n@media (max-width: 600px) {\\n .uidex-dialog--panel {\\n width: auto;\\n }\\n\\n .uidex-panel-body {\\n flex-direction: column;\\n }\\n\\n .uidex-panel-sidebar {\\n width: auto;\\n max-height: 200px;\\n border-right: none;\\n border-bottom: 1px solid var(--border);\\n }\\n}\\n\\n/* ============================================================\\n Overlay — renders in document.body outside Shadow DOM.\\n All styles set inline in overlay.ts. These classes retained\\n for consumers who import style.css standalone.\\n ============================================================ */\\n\\n.uidex-overlay {\\n position: fixed;\\n pointer-events: none;\\n z-index: 2147483645;\\n}\\n\";\nexport default cssText;\n","import cssText from './css-text';\n\n/**\n * Injects the uidex styles into a shadow root as a <style> element.\n * This isolates all uidex CSS from the host page.\n */\nexport function injectStyles(shadowRoot: ShadowRoot): void {\n const style = document.createElement('style');\n style.textContent = cssText;\n shadowRoot.appendChild(style);\n}\n","import { getContrastColor, LABEL_FONT } from './utils';\n\nconst OFFSET = 12;\nconst Z_INDEX = '2147483645';\n\nexport class CursorTooltip {\n private element: HTMLDivElement | null = null;\n\n show(x: number, y: number, label: string, color: string): void {\n if (!this.element) {\n this.createElement();\n }\n\n const el = this.element!;\n el.textContent = label;\n el.style.backgroundColor = color;\n el.style.color = getContrastColor(color);\n\n // Center below cursor\n const width = el.offsetWidth || 80;\n const height = el.offsetHeight || 22;\n\n let left = x - width / 2;\n let top = y + OFFSET;\n\n // Clamp to viewport edges\n if (left < 0) left = 0;\n if (left + width > window.innerWidth) left = window.innerWidth - width;\n if (top + height > window.innerHeight) {\n top = y - OFFSET - height;\n }\n\n el.style.left = `${left}px`;\n el.style.top = `${top}px`;\n\n if (!el.parentNode) {\n document.body.appendChild(el);\n }\n }\n\n hide(): void {\n if (this.element?.parentNode) {\n this.element.parentNode.removeChild(this.element);\n }\n }\n\n destroy(): void {\n this.hide();\n this.element = null;\n }\n\n private createElement(): void {\n this.element = document.createElement('div');\n this.element.className = 'uidex-cursor-tooltip';\n this.element.setAttribute('data-testid', 'cursor-tooltip');\n\n this.element.style.position = 'fixed';\n this.element.style.pointerEvents = 'none';\n this.element.style.zIndex = Z_INDEX;\n this.element.style.fontFamily = LABEL_FONT;\n this.element.style.fontSize = '11px';\n this.element.style.fontWeight = '500';\n this.element.style.padding = '2px 6px';\n this.element.style.borderRadius = '6px';\n this.element.style.whiteSpace = 'nowrap';\n this.element.style.boxShadow = '0 1px 3px rgba(0,0,0,0.2)';\n }\n}\n","import type { UidexUIOptions, UidexMap, UidexTheme } from './types';\nimport { Menu } from './menu';\nimport { Overlay } from './overlay';\nimport { Inspector } from './inspector';\nimport { ModalManager } from './modal';\nimport { getComponents, getPages, getFeatures } from './registry';\nimport { injectStyles } from './shadow';\nimport { IngestCapture, generateSessionId } from './ingest';\nimport { CursorTooltip } from './cursor-tooltip';\nimport { OVERLAY_COLORS, resolveColor } from './utils';\n\ntype ActiveMode = 'inspect' | 'copy' | 'feedback';\n\nconst MODE_CYCLE: (ActiveMode | null)[] = ['inspect', 'copy', 'feedback', null];\n\nexport class UidexUI {\n private menu: Menu;\n private overlay: Overlay;\n private blockOverlay: Overlay;\n private modal: ModalManager;\n private inspector: Inspector | null;\n private options: UidexUIOptions;\n private mounted = false;\n private shadowHost: HTMLElement | null = null;\n private shadowRoot: ShadowRoot | null = null;\n private themeWrapper: HTMLElement | null = null;\n private observer: MutationObserver | null = null;\n private refreshTimer: ReturnType<typeof setTimeout> | null = null;\n private copyTimer: ReturnType<typeof setTimeout> | null = null;\n private currentPresentIds: string[] = [];\n private activeMode: ActiveMode | null = null;\n private sessionId: string;\n private capture: IngestCapture | null = null;\n private theme: UidexTheme;\n private mediaQuery: MediaQueryList | null = null;\n private boundMediaChange: (() => void) | null = null;\n private classObserver: MutationObserver | null = null;\n private cursorTooltip: CursorTooltip;\n private pinnedOverlays: Overlay[] = [];\n\n constructor(options: UidexUIOptions = {}) {\n this.options = options;\n this.sessionId = generateSessionId();\n this.theme = options.theme ?? 'auto';\n\n if (options.ingest?.captureConsole || options.ingest?.captureNetwork) {\n this.capture = new IngestCapture(\n options.ingest.captureConsole ?? false,\n options.ingest.captureNetwork ?? false\n );\n }\n\n this.overlay = new Overlay(this.overlayConfig);\n\n this.blockOverlay = new Overlay({\n color: OVERLAY_COLORS.block,\n borderStyle: 'solid',\n borderWidth: 2,\n colors: options.config?.colors,\n opacity: 0.5,\n padding: 4,\n fillOpacity: 0.04,\n });\n\n this.cursorTooltip = new CursorTooltip();\n\n this.modal = new ModalManager({\n onComponentNavigate: (id) => {\n this.scrollAndHighlight(id);\n this.options.onSelect?.(id);\n },\n onLocate: (id) => this.scrollAndHighlight(id),\n elementGetter: (id) => this.findElement(id),\n ingest: options.ingest,\n onSubmit: options.onSubmit,\n sessionId: this.sessionId,\n getConsoleLogs: () => this.capture?.getConsoleLogs() ?? [],\n getNetworkErrors: () => this.capture?.getNetworkErrors() ?? [],\n });\n\n this.menu = new Menu({\n onInspectCycle: () => this.cycleMode(),\n onModeSelect: (mode) => this.setMode(mode),\n onPageClick: () => this.handlePageClick(),\n onCommandClick: () => this.handleCommandClick(),\n });\n\n if (options.inspectShortcut === false) {\n this.inspector = null;\n } else {\n this.inspector = new Inspector({\n shortcut: options.inspectShortcut,\n onHighlight: (element, id, parentBlock, cursor) =>\n this.handleHighlight(element, id, parentBlock, cursor),\n onSelect: (element, id, opts) => this.handleSelect(element, id, opts),\n onActivate: () => {\n this.menu.setActiveMode(this.activeMode);\n },\n onDeactivate: () => {\n this.overlay.hide();\n this.blockOverlay.hide();\n this.cursorTooltip.hide();\n this.lastHighlightedElement = null;\n this.clearPinnedOverlays();\n this.activeMode = null;\n this.menu.setActiveMode(null);\n },\n });\n }\n }\n\n mount(container?: HTMLElement): void {\n if (this.mounted) return;\n\n const components = this.getComponentsMap();\n const componentIds = Object.keys(components);\n\n if (componentIds.length === 0) return;\n\n // Create Shadow DOM host — zero-size, no layout impact,\n // but allows pointer events to reach fixed-position children (modal backdrop).\n this.shadowHost = document.createElement('div');\n this.shadowHost.id = 'uidex-root';\n // Fixed position keeps the host out of document flow so it cannot\n // contribute to scrollable overflow. Children (also fixed) position\n // relative to the viewport regardless of the host's box.\n this.shadowHost.style.position = 'fixed';\n this.shadowHost.style.top = '0';\n this.shadowHost.style.left = '0';\n this.shadowHost.style.width = '0';\n this.shadowHost.style.height = '0';\n this.shadowHost.style.pointerEvents = 'none';\n this.shadowHost.style.zIndex = '2147483646';\n\n this.shadowRoot = this.shadowHost.attachShadow({ mode: 'open' });\n\n // Inject styles into shadow root\n injectStyles(this.shadowRoot);\n\n // Theme wrapper — lives inside shadow root, provides:\n // • pointer-events: auto (shadow host is pointer-events: none)\n // • .dark class for Tailwind dark: variants (CSS vars use :host(.light))\n // • Portal container for Base UI dialogs\n this.themeWrapper = document.createElement('div');\n this.themeWrapper.style.pointerEvents = 'auto';\n this.shadowRoot.appendChild(this.themeWrapper);\n\n // Apply theme (toggles classes on shadowHost + themeWrapper)\n this.applyTheme();\n\n // Filter to only components present in the DOM right now\n const presentIds = this.scanPresentIds(componentIds);\n\n const position = this.options.buttonPosition ?? 'bottom-right';\n this.menu.setPosition(position);\n const menuContainer = this.menu.create();\n\n // Mount shadow host and UI inside theme wrapper\n const mountTarget = container ?? document.body;\n mountTarget.appendChild(this.shadowHost);\n this.themeWrapper.appendChild(menuContainer);\n\n // Theme wrapper is the portal container for tooltips and dialogs\n this.menu.setContainer(this.themeWrapper);\n this.modal.setContainer(this.themeWrapper);\n\n // Provide modal with current data\n this.updateModalData(presentIds);\n\n // Update menu with page availability\n const pages = this.getPagesArray();\n this.menu.setHasPages(pages.length > 0);\n\n this.inspector?.mount();\n this.capture?.start();\n\n // Watch for DOM changes (SPA navigation, dynamic rendering)\n this.startObserving();\n\n this.mounted = true;\n }\n\n /** Change the widget theme at runtime. */\n setTheme(theme: UidexTheme): void {\n this.theme = theme;\n this.applyTheme();\n }\n\n private resolveAutoTheme(): 'dark' | 'light' {\n const { classList } = document.documentElement;\n if (classList.contains('dark')) return 'dark';\n if (classList.contains('light')) return 'light';\n // No theme class — fall back to OS preference\n return typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n }\n\n private cleanupThemeListeners(): void {\n if (this.boundMediaChange && this.mediaQuery) {\n this.mediaQuery.removeEventListener('change', this.boundMediaChange);\n this.boundMediaChange = null;\n this.mediaQuery = null;\n }\n if (this.classObserver) {\n this.classObserver.disconnect();\n this.classObserver = null;\n }\n }\n\n private applyTheme(): void {\n if (!this.shadowHost) return;\n\n this.cleanupThemeListeners();\n\n const applyResolved = (isLight: boolean) => {\n this.shadowHost?.classList.toggle('light', isLight);\n this.themeWrapper?.classList.toggle('dark', !isLight);\n };\n\n if (this.theme === 'light') {\n applyResolved(true);\n } else if (this.theme === 'auto') {\n let currentResolved = this.resolveAutoTheme();\n applyResolved(currentResolved === 'light');\n\n const checkAndApply = () => {\n const next = this.resolveAutoTheme();\n if (next !== currentResolved) {\n currentResolved = next;\n applyResolved(next === 'light');\n }\n };\n\n this.classObserver = new MutationObserver(checkAndApply);\n this.classObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n if (typeof window.matchMedia !== 'function') return;\n this.mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n this.boundMediaChange = checkAndApply;\n this.mediaQuery.addEventListener('change', this.boundMediaChange);\n } else {\n applyResolved(false);\n }\n }\n\n destroy(): void {\n if (!this.mounted) return;\n\n this.cleanupThemeListeners();\n this.stopObserving();\n this.capture?.stop();\n if (this.copyTimer !== null) {\n clearTimeout(this.copyTimer);\n this.copyTimer = null;\n }\n this.inspector?.destroy();\n this.menu.destroy();\n this.overlay.destroy();\n this.blockOverlay.destroy();\n this.cursorTooltip.destroy();\n this.modal.destroy();\n\n if (this.shadowHost && this.shadowHost.parentNode) {\n this.shadowHost.parentNode.removeChild(this.shadowHost);\n }\n this.shadowHost = null;\n this.shadowRoot = null;\n this.themeWrapper = null;\n this.mounted = false;\n }\n\n startInspect(): void {\n this.inspector?.activate();\n }\n\n stopInspect(): void {\n this.clearPinnedOverlays();\n this.inspector?.deactivate();\n }\n\n isInspecting(): boolean {\n return this.inspector?.isActive() ?? false;\n }\n\n /** Open the command palette. */\n openCommand(): void {\n this.modal.openCommand();\n }\n\n /** Open the page dialog. */\n openPage(dir?: string): void {\n this.modal.openPage(dir);\n }\n\n /** Cycle through inspect modes: inspect → copy → feedback → off. */\n private cycleMode(): void {\n const currentIdx = MODE_CYCLE.indexOf(this.activeMode);\n const nextMode = MODE_CYCLE[(currentIdx + 1) % MODE_CYCLE.length];\n this.setMode(nextMode);\n }\n\n /** Set a specific inspect mode directly. */\n private setMode(mode: ActiveMode | null): void {\n if (mode) {\n this.activeMode = mode;\n if (!this.inspector?.isActive()) this.inspector?.activate();\n this.menu.setActiveMode(this.activeMode);\n } else {\n this.activeMode = null;\n this.inspector?.deactivate();\n // menu.setActiveMode(null) is handled by inspector's onDeactivate callback\n }\n }\n\n private getComponentsMap(): UidexMap {\n return this.options.components ?? getComponents() ?? {};\n }\n\n private getPagesArray() {\n return this.options.pages ?? getPages() ?? [];\n }\n\n private getFeaturesArray() {\n return this.options.features ?? getFeatures() ?? [];\n }\n\n private extractPageTitle(content: string): string {\n const match = content.match(/^#\\s+(.+)/m);\n return match ? match[1].trim() : 'Untitled';\n }\n\n /** Page button handler. */\n private handlePageClick(): void {\n this.inspector?.deactivate();\n this.overlay.hide();\n const matchedDir = this.matchCurrentRoute();\n this.modal.openPage(matchedDir ?? undefined);\n }\n\n /** Match current URL pathname to a page dir. */\n private matchCurrentRoute(): string | null {\n const pathname = window.location.pathname;\n const pages = this.getPagesArray();\n for (const page of pages) {\n const route = this.formatRoute(page.dir);\n if (this.routeMatches(route, pathname)) {\n return page.dir;\n }\n }\n return null;\n }\n\n /** Format a page dir as a route by stripping prefix segments and route groups. */\n private formatRoute(dir: string): string {\n const parts = dir.split('/');\n // Strip leading prefix segments (e.g. \"src\", \"app\") and route groups like \"(container)\"\n const routeParts = parts.filter(\n (seg) => seg !== 'src' && seg !== 'app' && !seg.startsWith('('),\n );\n return '/' + routeParts.join('/');\n }\n\n /** Check if a route pattern matches a pathname, handling dynamic segments. */\n private routeMatches(route: string, pathname: string): boolean {\n const routeParts = route.split('/');\n const pathParts = pathname.split('/');\n if (routeParts.length !== pathParts.length) return false;\n return routeParts.every(\n (seg, i) => seg.startsWith('[') || seg === pathParts[i],\n );\n }\n\n /** Command button handler. */\n private handleCommandClick(): void {\n this.inspector?.deactivate();\n this.overlay.hide();\n this.modal.openCommand();\n }\n\n /** Selection handler — routes by active mode. */\n private handleSelect(element: HTMLElement | null, id: string, opts?: { persistent?: boolean }): void {\n if (opts?.persistent) {\n // Pin overlay without opening modal or deactivating\n if (element) {\n const pin = new Overlay(this.overlayConfig);\n pin.show(element);\n this.pinnedOverlays.push(pin);\n }\n return;\n }\n\n this.clearPinnedOverlays();\n\n switch (this.activeMode) {\n case 'inspect': {\n this.overlay.hide();\n if (element) {\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\n this.overlay.show(element);\n }\n // Route by kind: primitive -> UiDialog, component/block -> ComponentDialog\n const components = this.getComponentsMap();\n const kind = components[id]?.[0]?.kind;\n if (kind === 'primitive') {\n const filePath = components[id]?.[0]?.filePath;\n if (filePath) {\n this.modal.openUi(filePath);\n } else {\n this.modal.openComponent(id);\n }\n } else {\n this.modal.openComponent(id);\n }\n this.options.onSelect?.(id);\n break;\n }\n case 'copy':\n this.handleCopySelect(element, id);\n break;\n case 'feedback':\n this.overlay.hide();\n this.modal.openFeedback(id);\n break;\n }\n }\n\n private clearPinnedOverlays(): void {\n for (const pin of this.pinnedOverlays) {\n pin.destroy();\n }\n this.pinnedOverlays = [];\n }\n\n private handleCopySelect(element: HTMLElement | null, id: string): void {\n const components = this.getComponentsMap();\n const locations = components[id];\n if (!locations || locations.length === 0) return;\n\n const loc = locations[0];\n const text = `${loc.filePath}:${loc.line}`;\n navigator.clipboard.writeText(text).catch(() => {});\n\n // Flash \"Copied!\" on overlay, then hide\n const target = element ?? this.findElement(id);\n if (target instanceof HTMLElement) {\n this.overlay.show(target);\n this.copyTimer = setTimeout(() => {\n this.copyTimer = null;\n this.overlay.hide();\n }, 600);\n }\n }\n\n private findElement(id: string): Element | null {\n const components = this.getComponentsMap();\n const locations = components[id];\n const kind = locations?.[0]?.kind ?? 'component';\n const attr = kind === 'block' ? 'data-uidex-block' : 'data-uidex';\n return document.querySelector(`[${attr}=\"${id}\"]`);\n }\n\n private scrollAndHighlight(id: string): void {\n const element = this.findElement(id);\n if (element && typeof element.scrollIntoView === 'function') {\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n if (element instanceof HTMLElement) {\n this.overlay.show(element);\n }\n }\n\n private get overlayConfig() {\n return {\n color: this.options.config?.defaults?.color,\n borderStyle: this.options.config?.defaults?.borderStyle,\n borderWidth: this.options.config?.defaults?.borderWidth,\n colors: this.options.config?.colors,\n };\n }\n\n private lastHighlightedElement: HTMLElement | null = null;\n\n private handleHighlight(\n element: HTMLElement | null,\n id: string | null,\n _parentBlock?: { element: HTMLElement; id: string } | null,\n cursor?: { x: number; y: number } | null\n ): void {\n if (id && element) {\n const components = this.getComponentsMap();\n const kind = components[id]?.[0]?.kind ?? 'component';\n const color = resolveColor(\n this.options.config?.defaults?.color,\n this.options.config?.colors\n ) ?? (kind === 'block' ? OVERLAY_COLORS.block : OVERLAY_COLORS.component);\n\n // Only update overlay when the highlighted element changes\n if (element !== this.lastHighlightedElement) {\n this.lastHighlightedElement = element;\n if (kind === 'block') {\n this.overlay.show(element, {\n borderStyle: 'solid',\n color: OVERLAY_COLORS.block,\n });\n this.blockOverlay.hide();\n } else {\n this.overlay.show(element);\n this.blockOverlay.hide();\n }\n }\n\n // Always update cursor tooltip position\n if (cursor) {\n this.cursorTooltip.show(cursor.x, cursor.y, id, color);\n }\n } else {\n this.lastHighlightedElement = null;\n this.overlay.hide();\n this.blockOverlay.hide();\n this.cursorTooltip.hide();\n }\n }\n\n /** Detect which components live inside which blocks via DOM ancestry. */\n private scanBlockContainment(): Map<string, string[]> {\n const containmentSets = new Map<string, Set<string>>();\n for (const el of document.querySelectorAll('[data-uidex]')) {\n const componentId = el.getAttribute('data-uidex');\n if (!componentId) continue;\n const blockAncestor =\n el.parentElement?.closest('[data-uidex-block]');\n if (!blockAncestor) continue;\n const blockId = blockAncestor.getAttribute('data-uidex-block');\n if (!blockId) continue;\n let children = containmentSets.get(blockId);\n if (!children) {\n children = new Set();\n containmentSets.set(blockId, children);\n }\n children.add(componentId);\n }\n const containment = new Map<string, string[]>();\n for (const [blockId, children] of containmentSets) {\n containment.set(blockId, [...children]);\n }\n return containment;\n }\n\n /** Push current pages/features/components/presentIds to the modal. */\n private updateModalData(presentIds: string[]): void {\n const pages = this.getPagesArray();\n const features = this.getFeaturesArray();\n const components = this.getComponentsMap();\n const blockContainment = this.scanBlockContainment();\n\n // Build uiComponents map keyed by filePath\n const uiComponentsMap = new Map<string, import('./types').PrimitiveEntry>();\n const uiArr = this.options.uiComponents ?? [];\n for (const p of uiArr) {\n uiComponentsMap.set(p.filePath, p);\n }\n\n this.modal.setData({\n pages: pages.map((p) => ({\n title: this.extractPageTitle(p.content),\n dir: p.dir,\n content: p.content,\n componentIds: p.componentIds,\n ...(p.rootId ? { rootId: p.rootId } : {}),\n ...(p.description ? { description: p.description } : {}),\n })),\n features: features.map((f) => ({\n title: this.extractPageTitle(f.content),\n dir: f.dir,\n content: f.content,\n componentIds: f.componentIds,\n })),\n components,\n presentIds: new Set(presentIds),\n blockContainment,\n uiComponents: uiComponentsMap,\n });\n\n // Update menu page visibility\n this.menu.setHasPages(pages.length > 0);\n }\n\n // ——— DOM observation for SPA navigation ———\n\n /** Scan which registered component IDs are currently in the DOM. */\n private scanPresentIds(allIds?: string[]): string[] {\n const componentIds = allIds ?? Object.keys(this.getComponentsMap());\n\n // Also consider page rootIds as known IDs\n const pages = this.getPagesArray();\n const rootIds = pages.map((p) => p.rootId).filter(Boolean) as string[];\n const knownIds = new Set([...componentIds, ...rootIds]);\n\n // Single querySelectorAll for both annotation types\n const found = new Set<string>();\n for (const el of document.querySelectorAll(\n '[data-uidex],[data-uidex-block]'\n )) {\n const id =\n el.getAttribute('data-uidex') ?? el.getAttribute('data-uidex-block');\n if (id) found.add(id);\n }\n\n const presentIds = [...knownIds].filter((id) => found.has(id));\n this.currentPresentIds = presentIds;\n return presentIds;\n }\n\n /** Schedule a debounced refresh of the modal data after DOM mutations. */\n private scheduleRefresh(): void {\n if (this.refreshTimer !== null) return;\n this.refreshTimer = setTimeout(() => {\n this.refreshTimer = null;\n this.refresh();\n }, 100);\n }\n\n /** Re-scan the DOM and update modal data if the set of present IDs changed. */\n private refresh(): void {\n const oldIds = this.currentPresentIds;\n const newIds = this.scanPresentIds();\n\n // Quick equality check — same length and same elements\n if (\n newIds.length === oldIds.length &&\n newIds.every((id, i) => id === oldIds[i])\n ) {\n return;\n }\n\n this.updateModalData(newIds);\n }\n\n private startObserving(): void {\n this.observer = new MutationObserver(() => this.scheduleRefresh());\n this.observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['data-uidex', 'data-uidex-block'],\n });\n }\n\n private stopObserving(): void {\n if (this.refreshTimer !== null) {\n clearTimeout(this.refreshTimer);\n this.refreshTimer = null;\n }\n this.observer?.disconnect();\n this.observer = null;\n }\n}\n\nexport function createUidexUI(options: UidexUIOptions = {}): UidexUI {\n return new UidexUI(options);\n}\n"],"mappings":"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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAChB,IAAO,mBAAQ;;;ACGR,SAAS,aAAa,YA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","names":["useRef","useCallback","jsx","jsx","jsx","jsx","jsx","jsxs","useRef","useCallback","Menu","block","createRoot","createElement","useState","useCallback","useRef","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsxs","useState","useRef","componentItems","blockItems","featureItems","useCallback","useState","useMemo","CopyIcon","CheckIcon","mergeProps","useRender","XIcon","jsx","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","XIcon","useRender","mergeProps","cva","mergeProps","jsx","mergeProps","jsx","cva","jsx","useState","useMemo","jsx","props","jsx","jsxs","useState","useMemo","useState","CopyIcon","BoxIcon","BlocksIcon","SparklesIcon","mergeProps","useRender","cva","cva","useRender","mergeProps","jsx","jsxs","useState","jsxs","jsx","CopyIcon","BoxIcon","BlocksIcon","SparklesIcon","jsxs","jsx","jsx","jsxs","useMemo","useState","CheckIcon","CopyIcon","useState","useRef","jsx","jsx","jsxs","useState","useRef","useMemo","jsx","jsxs","useMemo","useMemo","jsx","jsxs","useMemo","Section","useMemo","jsx","jsxs","useMemo","Section","Fragment","jsx","jsxs","createRoot","createElement","Menu"]}