@orangecheck/app-design 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brand.js +5 -3
- package/dist/brand.js.map +1 -1
- package/dist/brand.mjs +5 -3
- package/dist/brand.mjs.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -3
- package/dist/index.mjs.map +1 -1
- package/dist/styles/theme.css +2 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tokens/index.ts","../src/lib/cn.ts","../src/primitives/feedback.tsx","../src/primitives/button.tsx","../src/primitives/badge.tsx","../src/primitives/card.tsx","../src/primitives/form.tsx","../src/primitives/overlay.tsx","../src/primitives/tabs.tsx","../src/brand/mark.tsx","../src/brand/sphere.tsx","../src/brand/iso-check.tsx","../src/components/typography.tsx","../src/components/section.tsx","../src/components/steps.tsx","../src/components/code-card.tsx","../src/components/truth-table.tsx","../src/components/money.tsx","../src/components/data.tsx","../src/chrome/site.tsx","../src/chrome/app-shell.tsx"],"names":["extendTailwindMerge","clsx","jsxs","jsx","forwardRef","Separator","SeparatorPrimitive","SonnerToaster","cva","Button","Slot","Fragment","Card","Input","Textarea","Label","LabelPrimitive","useId","isValidElement","cloneElement","SelectPrimitive","SelectTrigger","ChevronDown","SelectContent","SelectItem","Check","Checkbox","CheckboxPrimitive","Switch","SwitchPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","DialogPrimitive","DialogContent","X","DialogTitle","DialogDescription","SheetContent","PopoverPrimitive","PopoverContent","TooltipPrimitive","TooltipContent","DropdownMenuPrimitive","DropdownMenuContent","DropdownMenuItem","DropdownMenuLabel","DropdownMenuSeparator","createContext","Tabs","TabsPrimitive","TabsList","useContext","TabsTrigger","TabsContent","createElement","useState","useRef","useEffect","useCallback","Copy","Link","Menu","useTheme","Icon","Sun","Moon","SunMoon"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * The ochk.app palette as data, for places CSS variables cannot reach: OG\n * images, canvas, charts, email. Must match styles/tokens.css; the contrast\n * check reads both.\n */\nexport const APP_ATTRIBUTE = 'data-oc-app';\nexport const APP_ID = 'ochk';\n\nexport const appColors = {\n light: {\n background: '#FAFAFA',\n foreground: '#0A0A0A',\n card: '#FFFFFF',\n muted: '#F2F2F2',\n mutedForeground: '#54585E',\n subtleForeground: '#686C72',\n border: '#ECECEC',\n hairlineStrong: '#DADADA',\n accentDisplay: '#F55819',\n accentInk: '#C73F09',\n },\n dark: {\n background: '#0A0A0A',\n foreground: '#FAFAFA',\n card: '#161616',\n muted: '#1E1E1E',\n mutedForeground: '#A3A6AA',\n subtleForeground: '#8B8E93',\n border: '#262626',\n hairlineStrong: '#333333',\n accentDisplay: '#F66D36',\n accentInk: '#F0835A',\n },\n brand: {\n orange: '#F66D36',\n orangeLight: '#FB933C',\n orangeDeep: '#EA580B',\n peach: '#FED8AB',\n ink: '#0A0A0A',\n inkCard: '#1E1E1E',\n },\n} as const;\n\nexport const appFonts = {\n sans: \"'OCA Inter', 'OCA Inter Fallback', ui-sans-serif, system-ui, sans-serif\",\n mono: \"'OCA JetBrains Mono', 'OCA JetBrains Mono Fallback', ui-monospace, monospace\",\n} as const;\n","import { clsx, type ClassValue } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\n// tailwind-merge would treat `oca-display-1` and `text-foreground` as the same\n// group and drop one; teach it the package's own type utilities.\nconst merge = extendTailwindMerge<'oca-type'>({\n extend: {\n classGroups: {\n 'oca-type': [\n 'oca-display-1',\n 'oca-display-2',\n 'oca-display-3',\n 'oca-title',\n 'oca-title-sm',\n 'oca-eyebrow',\n 'oca-lead',\n 'oca-body',\n 'oca-numeral',\n ],\n },\n },\n});\n\nexport function cn(...inputs: ClassValue[]): string {\n return merge(clsx(inputs));\n}\n","import * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef, type HTMLAttributes } from 'react';\nimport { Toaster as SonnerToaster, type ToasterProps } from 'sonner';\n\nimport { cn } from '../lib/cn';\n\nexport function Spinner({ className, label }: { className?: string; label?: string }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n role={label ? 'status' : undefined}\n aria-label={label}\n aria-hidden={label ? undefined : true}\n className={cn('size-4 animate-spin', className)}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.2\" strokeWidth=\"2.5\" />\n <path d=\"M21 12a9 9 0 0 0-9-9\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nexport function Skeleton({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div data-ui=\"skeleton\" className={cn('animate-pulse rounded-lg bg-muted', className)} {...props} />;\n}\n\nexport const Separator = forwardRef<\n ElementRef<typeof SeparatorPrimitive.Root>,\n ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(function Separator({ className, orientation = 'horizontal', decorative = true, ...props }, ref) {\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-px w-full' : 'h-full w-px',\n className\n )}\n {...props}\n />\n );\n});\n\nexport function Kbd({ className, ...props }: HTMLAttributes<HTMLElement>) {\n return (\n <kbd\n className={cn(\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-md border border-border bg-card px-1.5 font-mono text-[11px] text-muted-foreground',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Live-region status dot: a calm pulse for \"running\", solid otherwise. */\nexport function StatusDot({\n tone = 'neutral',\n pulse = false,\n className,\n}: {\n tone?: 'neutral' | 'success' | 'warning' | 'danger' | 'brand';\n pulse?: boolean;\n className?: string;\n}) {\n const color = {\n neutral: 'bg-oca-subtle',\n success: 'bg-success',\n warning: 'bg-warning',\n danger: 'bg-destructive',\n brand: 'bg-brand',\n }[tone];\n return (\n <span\n aria-hidden\n className={cn('inline-block size-2 shrink-0 rounded-full', color, pulse && 'oca-animate-pulse-dot', className)}\n />\n );\n}\n\n/** Toasts in the system's type and surfaces. Mount once. */\nexport function Toaster(props: ToasterProps) {\n return (\n <SonnerToaster\n position=\"bottom-right\"\n toastOptions={{\n classNames: {\n toast: 'oca-toast rounded-2xl border border-border bg-popover text-popover-foreground shadow-lg font-sans',\n title: 'text-[0.9375rem] font-medium',\n description: 'text-sm text-muted-foreground',\n actionButton: 'rounded-full bg-primary text-primary-foreground',\n cancelButton: 'rounded-full bg-muted text-foreground',\n },\n }}\n {...props}\n />\n );\n}\n\nexport { toast } from 'sonner';\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { forwardRef, type ButtonHTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Spinner } from './feedback';\n\n/*\n * Pills, as the deck draws them: the black filled pill leads, the white\n * outlined pill follows. `brand` is for the orange band only; `onInk` and\n * `onInkOutline` are the same pair inverted for dark bands.\n */\nexport const buttonVariants = cva(\n [\n 'inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-full font-medium',\n 'transition-[background-color,border-color,color,box-shadow,transform] duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n 'active:translate-y-px disabled:pointer-events-none disabled:opacity-45',\n '[&_svg]:pointer-events-none [&_svg]:size-[1.1em] [&_svg]:shrink-0',\n ],\n {\n variants: {\n variant: {\n primary: 'bg-primary text-primary-foreground hover:bg-primary/85',\n secondary:\n 'border border-border bg-secondary text-secondary-foreground hover:border-oca-hairline-strong hover:bg-accent',\n brand: 'bg-brand text-brand-foreground hover:bg-oca-orange-deep',\n ghost: 'text-foreground hover:bg-accent',\n danger: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n link: 'h-auto rounded-none px-0 text-foreground underline decoration-border underline-offset-4 hover:decoration-foreground',\n onInk: 'bg-white text-oca-ink hover:bg-white/90',\n onInkOutline: 'border border-white/20 text-white hover:bg-white/10',\n },\n size: {\n sm: 'h-9 px-4 text-sm',\n md: 'h-11 px-5 text-[0.9375rem]',\n lg: 'h-14 px-7 text-[1.0625rem]',\n icon: 'size-10',\n 'icon-sm': 'size-8',\n },\n },\n compoundVariants: [{ variant: 'link', className: 'h-auto px-0' }],\n defaultVariants: { variant: 'primary', size: 'md' },\n }\n);\n\nexport interface ButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /** Render the child element (a Link, an <a>) with the button's styles. */\n asChild?: boolean;\n /** Shows a spinner and disables the button. */\n loading?: boolean;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { className, variant, size, asChild = false, loading = false, disabled, children, type, ...props },\n ref\n) {\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp\n ref={ref}\n data-ui=\"button\"\n className={cn(buttonVariants({ variant, size }), className)}\n disabled={asChild ? undefined : disabled || loading}\n aria-busy={loading || undefined}\n type={asChild ? undefined : (type ?? 'button')}\n {...props}\n >\n {asChild ? (\n children\n ) : (\n <>\n {loading ? <Spinner className=\"size-[1.1em]\" /> : null}\n {children}\n </>\n )}\n </Comp>\n );\n});\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The small white pill from the deck (\"in testing\", \"on the path\"), plus soft\n * status tints. Text stays on the token that clears 4.5:1 against its tint.\n */\nexport const badgeVariants = cva(\n 'inline-flex h-6 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-full border px-2.5 text-[0.8125rem] font-medium leading-none',\n {\n variants: {\n tone: {\n neutral: 'border-border bg-card text-foreground',\n muted: 'border-transparent bg-muted text-muted-foreground',\n brand: 'border-transparent bg-[color-mix(in_oklab,var(--oca-orange)_12%,var(--card))] text-oca-accent-ink',\n success: 'border-transparent bg-[color-mix(in_oklab,var(--success)_12%,var(--card))] text-success',\n warning: 'border-transparent bg-[color-mix(in_oklab,var(--warning)_14%,var(--card))] text-warning',\n danger: 'border-transparent bg-[color-mix(in_oklab,var(--destructive)_12%,var(--card))] text-destructive',\n info: 'border-transparent bg-[color-mix(in_oklab,var(--info)_12%,var(--card))] text-info',\n ink: 'border-transparent bg-oca-ink text-oca-ink-foreground',\n onInk: 'border-white/15 bg-white/5 text-white/90',\n },\n },\n defaultVariants: { tone: 'neutral' },\n }\n);\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {}\n\nexport function Badge({ className, tone, ...props }: BadgeProps) {\n return <span data-ui=\"badge\" className={cn(badgeVariants({ tone }), className)} {...props} />;\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport { forwardRef, type HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * White on the canvas with one hairline and a generous radius; no shadow. The\n * `ink` card is the deck's #1E1E1E panel, dark in both modes.\n */\nexport const cardVariants = cva('relative rounded-[1.25rem] border', {\n variants: {\n tone: {\n default: 'border-border bg-card text-card-foreground',\n sunken: 'border-transparent bg-muted text-foreground',\n ink: 'border-oca-ink-line bg-oca-ink-card text-oca-ink-foreground',\n outline: 'border-border bg-transparent text-foreground',\n },\n padding: {\n none: '',\n sm: 'p-5',\n md: 'p-6 md:p-8',\n lg: 'p-8 md:p-10',\n },\n interactive: {\n true: 'transition-colors hover:border-oca-hairline-strong focus-within:border-oca-hairline-strong',\n false: '',\n },\n },\n defaultVariants: { tone: 'default', padding: 'md', interactive: false },\n});\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { className, tone, padding, interactive, ...props },\n ref\n) {\n return (\n <div ref={ref} data-ui=\"card\" className={cn(cardVariants({ tone, padding, interactive }), className)} {...props} />\n );\n});\n\nexport function CardHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('flex flex-col gap-2', className)} {...props} />;\n}\n\n/** The small \"01\" above a card title. */\nexport function CardNumeral({ className, ...props }: HTMLAttributes<HTMLSpanElement>) {\n return <span className={cn('oca-numeral block', className)} {...props} />;\n}\n\nexport function CardTitle({ className, ...props }: HTMLAttributes<HTMLHeadingElement>) {\n return <h3 className={cn('oca-title flex flex-wrap items-center gap-2.5', className)} {...props} />;\n}\n\nexport function CardDescription({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('oca-body', className)} {...props} />;\n}\n\nexport function CardContent({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mt-5', className)} {...props} />;\n}\n\nexport function CardFooter({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mt-6 flex flex-wrap items-center gap-3', className)} {...props} />;\n}\n","import * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport { Check, ChevronDown } from 'lucide-react';\nimport {\n cloneElement,\n forwardRef,\n isValidElement,\n useId,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type InputHTMLAttributes,\n type ReactElement,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from 'react';\n\nimport { cn } from '../lib/cn';\n\n/* Fields: 44px tall, a hairline that darkens on focus with a soft orange halo,\n 16px text on phones so iOS never zooms. */\nconst fieldBase = [\n 'w-full rounded-xl border border-input bg-card text-foreground placeholder:text-oca-subtle',\n 'text-base md:text-[0.9375rem] outline-none transition-[border-color,box-shadow]',\n 'focus:border-foreground/35 focus:ring-4 focus:ring-[color-mix(in_oklab,var(--oca-orange)_16%,transparent)]',\n 'disabled:cursor-not-allowed disabled:opacity-55',\n 'aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:ring-[color-mix(in_oklab,var(--destructive)_14%,transparent)]',\n];\n\nexport const Input = forwardRef<HTMLInputElement, InputHTMLAttributes<HTMLInputElement>>(function Input(\n { className, type = 'text', ...props },\n ref\n) {\n return <input ref={ref} type={type} data-ui=\"input\" className={cn(fieldBase, 'h-11 px-3.5', className)} {...props} />;\n});\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaHTMLAttributes<HTMLTextAreaElement>>(\n function Textarea({ className, ...props }, ref) {\n return (\n <textarea\n ref={ref}\n data-ui=\"textarea\"\n className={cn(fieldBase, 'min-h-28 px-3.5 py-3 leading-relaxed', className)}\n {...props}\n />\n );\n }\n);\n\nexport const Label = forwardRef<\n ElementRef<typeof LabelPrimitive.Root>,\n ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(function Label({ className, ...props }, ref) {\n return (\n <LabelPrimitive.Root\n ref={ref}\n className={cn('text-sm font-medium leading-none text-foreground', className)}\n {...props}\n />\n );\n});\n\nexport interface FieldProps {\n label: ReactNode;\n /** One line under the label, before the control. */\n hint?: ReactNode;\n /** Shown in place of nothing; marks the control invalid. */\n error?: ReactNode;\n /** The control. Receives id, aria-describedby and aria-invalid. */\n children: ReactElement;\n className?: string;\n /** Render the label visually hidden (it is still the accessible name). */\n hideLabel?: boolean;\n}\n\n/** Label, hint, control and error, wired together by id. */\nexport function Field({ label, hint, error, children, className, hideLabel }: FieldProps) {\n const id = useId();\n const hintId = hint ? `${id}-hint` : undefined;\n const errorId = error ? `${id}-error` : undefined;\n const describedBy = [hintId, errorId].filter(Boolean).join(' ') || undefined;\n const control = isValidElement(children)\n ? cloneElement(children as ReactElement<Record<string, unknown>>, {\n id,\n 'aria-describedby': describedBy,\n 'aria-invalid': error ? true : undefined,\n })\n : children;\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n <Label htmlFor={id} className={hideLabel ? 'sr-only' : undefined}>\n {label}\n </Label>\n {hint ? (\n <p id={hintId} className=\"text-[0.8125rem] leading-snug text-muted-foreground\">\n {hint}\n </p>\n ) : null}\n {control}\n {error ? (\n <p id={errorId} role=\"alert\" className=\"text-[0.8125rem] leading-snug text-destructive\">\n {error}\n </p>\n ) : null}\n </div>\n );\n}\n\n/* ── Select ───────────────────────────────────────────────────────────── */\n\nexport const Select = SelectPrimitive.Root;\nexport const SelectGroup = SelectPrimitive.Group;\nexport const SelectValue = SelectPrimitive.Value;\n\nexport const SelectTrigger = forwardRef<\n ElementRef<typeof SelectPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(function SelectTrigger({ className, children, ...props }, ref) {\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(fieldBase, 'flex h-11 items-center justify-between gap-2 px-3.5 text-left', className)}\n {...props}\n >\n <span className=\"truncate\">{children}</span>\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"size-4 shrink-0 text-muted-foreground\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n});\n\nexport const SelectContent = forwardRef<\n ElementRef<typeof SelectPrimitive.Content>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(function SelectContent({ className, children, position = 'popper', ...props }, ref) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n position={position}\n sideOffset={6}\n className={cn(\n 'oca-animate-fade z-50 max-h-[min(24rem,var(--radix-select-content-available-height))] min-w-[var(--radix-select-trigger-width)] overflow-hidden rounded-xl border border-border bg-popover p-1 text-popover-foreground shadow-lg',\n className\n )}\n {...props}\n >\n <SelectPrimitive.Viewport>{children}</SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n});\n\nexport const SelectItem = forwardRef<\n ElementRef<typeof SelectPrimitive.Item>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(function SelectItem({ className, children, ...props }, ref) {\n return (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex h-10 cursor-default select-none items-center rounded-lg pl-3 pr-9 text-[0.9375rem] outline-none',\n 'data-[highlighted]:bg-accent data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className=\"absolute right-3\">\n <Check className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n});\n\n/* ── Checkbox, Switch, Radio ──────────────────────────────────────────── */\n\nexport const Checkbox = forwardRef<\n ElementRef<typeof CheckboxPrimitive.Root>,\n ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(function Checkbox({ className, ...props }, ref) {\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer inline-flex size-5 shrink-0 items-center justify-center rounded-[6px] border border-input bg-card',\n 'outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator>\n <Check className=\"size-3.5\" strokeWidth={3} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\n\nexport const Switch = forwardRef<\n ElementRef<typeof SwitchPrimitive.Root>,\n ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\n>(function Switch({ className, ...props }, ref) {\n return (\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(\n 'peer inline-flex h-6 w-11 shrink-0 items-center rounded-full border border-transparent bg-input p-0.5',\n 'outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'data-[state=checked]:bg-brand disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb className=\"pointer-events-none block size-5 rounded-full bg-white shadow-sm transition-transform data-[state=checked]:translate-x-5\" />\n </SwitchPrimitive.Root>\n );\n});\n\nexport const RadioGroup = forwardRef<\n ElementRef<typeof RadioGroupPrimitive.Root>,\n ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(function RadioGroup({ className, ...props }, ref) {\n return <RadioGroupPrimitive.Root ref={ref} className={cn('grid gap-3', className)} {...props} />;\n});\n\nexport const RadioGroupItem = forwardRef<\n ElementRef<typeof RadioGroupPrimitive.Item>,\n ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(function RadioGroupItem({ className, ...props }, ref) {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'inline-flex size-5 shrink-0 items-center justify-center rounded-full border border-input bg-card',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'data-[state=checked]:border-primary disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"block size-2.5 rounded-full bg-primary\" />\n </RadioGroupPrimitive.Item>\n );\n});\n","import * as DialogPrimitive from '@radix-ui/react-dialog';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { X } from 'lucide-react';\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef, type HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/* ── Dialog ───────────────────────────────────────────────────────────── */\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogClose = DialogPrimitive.Close;\n\nconst overlayClass =\n 'oca-animate-fade fixed inset-0 z-50 bg-[rgb(10_10_10/0.38)] backdrop-blur-[2px] data-[state=closed]:opacity-0';\n\nexport const DialogContent = forwardRef<\n ElementRef<typeof DialogPrimitive.Content>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & { hideClose?: boolean }\n>(function DialogContent({ className, children, hideClose, ...props }, ref) {\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className={overlayClass} />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'oca-animate-rise fixed left-1/2 top-1/2 z-50 w-[min(92vw,34rem)] -translate-x-1/2 -translate-y-1/2',\n 'max-h-[88vh] overflow-y-auto rounded-[1.5rem] border border-border bg-popover p-6 text-popover-foreground shadow-xl md:p-8',\n 'outline-none',\n className\n )}\n {...props}\n >\n {children}\n {hideClose ? null : (\n <DialogPrimitive.Close\n className=\"absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground\"\n aria-label=\"Close\"\n >\n <X className=\"size-4\" />\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n});\n\nexport function DialogHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mb-5 flex flex-col gap-2 pr-8', className)} {...props} />;\n}\n\nexport function DialogFooter({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mt-7 flex flex-col-reverse gap-3 sm:flex-row sm:justify-end', className)} {...props} />;\n}\n\nexport const DialogTitle = forwardRef<\n ElementRef<typeof DialogPrimitive.Title>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(function DialogTitle({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-[1.5rem] font-normal leading-tight tracking-[-0.02em]', className)}\n {...props}\n />\n );\n});\n\nexport const DialogDescription = forwardRef<\n ElementRef<typeof DialogPrimitive.Description>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(function DialogDescription({ className, ...props }, ref) {\n return <DialogPrimitive.Description ref={ref} className={cn('oca-body', className)} {...props} />;\n});\n\n/* ── Sheet: a dialog from an edge ────────────────────────────────────── */\n\nexport const Sheet = DialogPrimitive.Root;\nexport const SheetTrigger = DialogPrimitive.Trigger;\nexport const SheetClose = DialogPrimitive.Close;\nexport const SheetTitle = DialogTitle;\nexport const SheetDescription = DialogDescription;\n\nconst sheetSide = {\n right: 'inset-y-0 right-0 h-full w-[min(88vw,24rem)] border-l',\n left: 'inset-y-0 left-0 h-full w-[min(88vw,24rem)] border-r',\n bottom: 'inset-x-0 bottom-0 max-h-[88vh] rounded-t-[1.5rem] border-t',\n} as const;\n\nexport const SheetContent = forwardRef<\n ElementRef<typeof DialogPrimitive.Content>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & { side?: keyof typeof sheetSide }\n>(function SheetContent({ className, children, side = 'right', ...props }, ref) {\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className={overlayClass} />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'oca-animate-fade fixed z-50 flex flex-col gap-4 overflow-y-auto border-border bg-popover p-6 text-popover-foreground shadow-xl outline-none',\n sheetSide[side],\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n className=\"absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-full text-muted-foreground hover:bg-accent hover:text-foreground\"\n aria-label=\"Close\"\n >\n <X className=\"size-4\" />\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n});\n\n/* ── Popover ──────────────────────────────────────────────────────────── */\n\nexport const Popover = PopoverPrimitive.Root;\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\n\nexport const PopoverContent = forwardRef<\n ElementRef<typeof PopoverPrimitive.Content>,\n ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(function PopoverContent({ className, align = 'center', sideOffset = 8, ...props }, ref) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'oca-animate-fade z-50 w-72 rounded-2xl border border-border bg-popover p-4 text-popover-foreground shadow-lg outline-none',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n});\n\n/* ── Tooltip: ink, small, quick ───────────────────────────────────────── */\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\nexport const Tooltip = TooltipPrimitive.Root;\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\n\nexport const TooltipContent = forwardRef<\n ElementRef<typeof TooltipPrimitive.Content>,\n ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(function TooltipContent({ className, sideOffset = 6, ...props }, ref) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'oca-animate-fade z-50 max-w-xs rounded-lg bg-oca-ink px-2.5 py-1.5 text-[0.8125rem] leading-snug text-oca-ink-foreground',\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n );\n});\n\n/* ── Menu ─────────────────────────────────────────────────────────────── */\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nexport const DropdownMenuContent = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Content>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(function DropdownMenuContent({ className, sideOffset = 8, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'oca-animate-fade z-50 min-w-56 overflow-hidden rounded-2xl border border-border bg-popover p-1.5 text-popover-foreground shadow-lg',\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n});\n\nexport const DropdownMenuItem = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Item>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & { destructive?: boolean }\n>(function DropdownMenuItem({ className, destructive, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'flex h-10 cursor-default select-none items-center gap-2.5 rounded-xl px-3 text-[0.9375rem] outline-none',\n 'data-[highlighted]:bg-accent data-[disabled]:opacity-50 [&_svg]:size-4 [&_svg]:text-muted-foreground',\n destructive && 'text-destructive [&_svg]:text-destructive',\n className\n )}\n {...props}\n />\n );\n});\n\nexport const DropdownMenuLabel = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Label>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label>\n>(function DropdownMenuLabel({ className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn('px-3 pb-1.5 pt-2 text-[0.8125rem] text-muted-foreground', className)}\n {...props}\n />\n );\n});\n\nexport const DropdownMenuSeparator = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Separator>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(function DropdownMenuSeparator({ className, ...props }, ref) {\n return <DropdownMenuPrimitive.Separator ref={ref} className={cn('my-1.5 h-px bg-border', className)} {...props} />;\n});\n","import * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { createContext, forwardRef, useContext, type ComponentPropsWithoutRef, type ElementRef } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * Two looks for one behaviour: `pill` is a segmented control for switching a\n * view in place; `line` is page-level navigation between sections.\n */\ntype TabsLook = 'pill' | 'line';\nconst LookContext = createContext<TabsLook>('pill');\n\nexport const Tabs = forwardRef<\n ElementRef<typeof TabsPrimitive.Root>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Root> & { look?: TabsLook }\n>(function Tabs({ look = 'pill', ...props }, ref) {\n return (\n <LookContext.Provider value={look}>\n <TabsPrimitive.Root ref={ref} {...props} />\n </LookContext.Provider>\n );\n});\n\nexport const TabsList = forwardRef<\n ElementRef<typeof TabsPrimitive.List>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(function TabsList({ className, ...props }, ref) {\n const look = useContext(LookContext);\n return (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n look === 'pill'\n ? 'inline-flex max-w-full items-center gap-1 overflow-x-auto rounded-full bg-muted p-1'\n : 'flex max-w-full items-center gap-6 overflow-x-auto border-b border-border',\n className\n )}\n {...props}\n />\n );\n});\n\nexport const TabsTrigger = forwardRef<\n ElementRef<typeof TabsPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(function TabsTrigger({ className, ...props }, ref) {\n const look = useContext(LookContext);\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap text-[0.9375rem] outline-none transition-colors',\n 'focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n look === 'pill'\n ? 'h-9 rounded-full px-4 text-muted-foreground hover:text-foreground data-[state=active]:bg-card data-[state=active]:text-foreground data-[state=active]:shadow-sm'\n : '-mb-px h-11 border-b-2 border-transparent text-muted-foreground hover:text-foreground data-[state=active]:border-foreground data-[state=active]:text-foreground',\n className\n )}\n {...props}\n />\n );\n});\n\nexport const TabsContent = forwardRef<\n ElementRef<typeof TabsPrimitive.Content>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(function TabsContent({ className, ...props }, ref) {\n return <TabsPrimitive.Content ref={ref} className={cn('mt-6 outline-none', className)} {...props} />;\n});\n","import type { SVGProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The isometric check, measured from Sou's deck (slide 9) onto a 16×8 grid:\n * a chevron with a 3-unit short arm and a 5-unit long arm, one unit thick,\n * extruded two units. Three faces, three oranges.\n */\n\nconst TOP = '0,3 2,2 6,4 14,0 16,1 6,6';\nconst LEFT = '0,3 6,6 6,8 0,5';\nconst RIGHT = '6,6 16,1 16,3 6,8';\n\nexport const MARK_FACES = { top: '#FED8AB', left: '#FB933C', right: '#EA580B' } as const;\n\nexport interface MarkProps extends Omit<SVGProps<SVGSVGElement>, 'children'> {\n /** Accessible name. Omit to render the mark as decoration. */\n title?: string;\n /** Rendered width in px; height follows the 2:1 grid. */\n size?: number;\n}\n\nexport function Mark({ title, size, className, ...rest }: MarkProps) {\n return (\n <svg\n viewBox=\"0 0 16 8\"\n width={size}\n height={size ? size / 2 : undefined}\n role={title ? 'img' : undefined}\n aria-hidden={title ? undefined : true}\n className={cn('shrink-0', className)}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n <polygon points={LEFT} fill={MARK_FACES.left} />\n <polygon points={RIGHT} fill={MARK_FACES.right} />\n <polygon points={TOP} fill={MARK_FACES.top} />\n </svg>\n );\n}\n\nexport interface AppIconProps extends Omit<SVGProps<SVGSVGElement>, 'children'> {\n title?: string;\n size?: number;\n}\n\n/** The app icon: the mark on an ink squircle, as in the deck's lockup. */\nexport function AppIcon({ title, size = 32, className, ...rest }: AppIconProps) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n role={title ? 'img' : undefined}\n aria-hidden={title ? undefined : true}\n className={cn('shrink-0', className)}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n <rect\n width=\"24\"\n height=\"24\"\n rx=\"6.25\"\n style={{ fill: 'var(--oca-icon-tile, #0A0A0A)', stroke: 'var(--oca-icon-ring, transparent)' }}\n strokeWidth=\"0.5\"\n />\n <g transform=\"translate(4.25 8.1) scale(0.97)\">\n <polygon points={LEFT} fill={MARK_FACES.left} />\n <polygon points={RIGHT} fill={MARK_FACES.right} />\n <polygon points={TOP} fill={MARK_FACES.top} />\n </g>\n </svg>\n );\n}\n\nexport interface LockupProps {\n /** The word beside the icon. */\n name?: string;\n /** Icon size in px; the word scales with it. */\n size?: number;\n className?: string;\n}\n\n/** Icon and wordmark, lowercase, as the deck sets it. */\nexport function Lockup({ name = 'orangecheck', size = 28, className }: LockupProps) {\n return (\n <span\n className={cn('inline-flex items-center font-medium tracking-[-0.01em]', className)}\n style={{ gap: size * 0.32, fontSize: size * 0.56 }}\n >\n <AppIcon size={size} />\n <span>{name}</span>\n </span>\n );\n}\n","import type { CSSProperties } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The deck's photograph: a halftone portrait on an orange sphere that glows\n * near-white behind the subject and saturates at the rim, with a hairline\n * stadium behind it. The dot layer is an image of black dots on transparent,\n * made by scripts/halftone.py from any photo, so the sphere stays CSS and the\n * dots stay crisp at any size.\n */\n\nexport const SPHERE_GRADIENT =\n 'radial-gradient(circle at 50% 42%, #fff8f3 0%, #ffe2d3 22%, #ffb48d 45%, #ff8a55 68%, #ff6a2c 100%)';\n\nexport interface HalftoneSphereProps {\n /** The dot layer (black dots on transparent, already circular). */\n src: string;\n /** Describe the person or subject; empty string marks it decorative. */\n alt: string;\n /** Draw the hairline stadium behind the sphere, as the hero does. */\n stadium?: boolean;\n /** Let the sphere drift a few pixels. Off under reduced motion. */\n float?: boolean;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function HalftoneSphere({ src, alt, stadium = false, float = false, className, style }: HalftoneSphereProps) {\n return (\n <div className={cn('relative aspect-square w-full', className)} style={style}>\n {stadium ? (\n // The deck's offset stadium on wide screens; centred and inside the\n // gutter on phones, where the offset would push the page sideways.\n <div\n aria-hidden\n className=\"oca-stadium pointer-events-none absolute inset-[-6%] md:[inset:-13%_10%_-13%_-27%]\"\n />\n ) : null}\n <div\n className={cn('relative size-full overflow-hidden rounded-full', float && 'oca-animate-float')}\n style={{ background: SPHERE_GRADIENT }}\n >\n {/* eslint-disable-next-line @next/next/no-img-element -- a static dot layer, sized by CSS */}\n <img src={src} alt={alt} className=\"absolute inset-0 size-full select-none\" draggable={false} />\n </div>\n </div>\n );\n}\n","import { cn } from '../lib/cn';\nimport { Mark } from './mark';\n\nexport interface IsoCheckProps {\n /** Width in px; the check keeps its 2:1 grid. */\n size?: number;\n /** Drop it into place on first paint, the deck's closing gesture. */\n settle?: boolean;\n /** A soft floor shadow, so it reads as an object on the canvas. */\n shadow?: boolean;\n title?: string;\n className?: string;\n}\n\n/** The isometric check as an object: the deck's closing illustration. */\nexport function IsoCheck({ size = 360, settle = false, shadow = true, title, className }: IsoCheckProps) {\n return (\n <div className={cn('relative inline-block', settle && 'oca-animate-settle', className)} style={{ width: size }}>\n <Mark size={size} title={title} className=\"relative z-10 block\" />\n {shadow ? (\n <div\n aria-hidden\n className=\"absolute left-[8%] right-[8%] rounded-[50%] opacity-60 blur-xl\"\n style={{ height: size * 0.08, bottom: -size * 0.04, background: 'rgb(234 88 11 / 0.18)' }}\n />\n ) : null}\n </div>\n );\n}\n","import { createElement, type HTMLAttributes, type ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/** The small orange line above a heading (\"How it works\", \"The honest version\"). */\nexport function Eyebrow({ className, onInk, ...props }: HTMLAttributes<HTMLParagraphElement> & { onInk?: boolean }) {\n return <p className={cn('oca-eyebrow', onInk && 'text-oca-ink-eyebrow', className)} {...props} />;\n}\n\ntype DisplayLevel = 1 | 2 | 3;\n\nexport interface DisplayProps extends HTMLAttributes<HTMLHeadingElement> {\n /** Visual size. The element follows unless `as` says otherwise. */\n level?: DisplayLevel;\n as?: 'h1' | 'h2' | 'h3' | 'p';\n}\n\n/** Headlines: regular weight, tight, balanced. */\nexport function Display({ level = 2, as, className, ...props }: DisplayProps) {\n const tag = as ?? (`h${level}` as const);\n return createElement(tag, { className: cn(`oca-display-${level}`, className), ...props });\n}\n\n/** The one orange word (\"cost something *real*.\"). Display sizes only: as small\n * text this orange would fail contrast. */\nexport function Accent({ children, className }: { children: ReactNode; className?: string }) {\n return <span className={cn('text-oca-accent-display', className)}>{children}</span>;\n}\n\nexport function Lead({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('oca-lead max-w-[40rem]', className)} {...props} />;\n}\n\n/** Fine print under a section (\"Who holds what today: …\"). */\nexport function Footnote({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('text-[0.9375rem] text-muted-foreground', className)} {...props} />;\n}\n\n/** Body copy for long-form pages: measured line length, calm rhythm. */\nexport function Prose({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n 'max-w-[42rem] text-[1.0625rem] leading-[1.7] text-muted-foreground',\n '[&_h2]:oca-display-3 [&_h2]:mb-4 [&_h2]:mt-14 [&_h2]:text-foreground',\n '[&_h3]:oca-title [&_h3]:mb-3 [&_h3]:mt-10 [&_h3]:text-foreground',\n '[&_p]:my-4 [&_strong]:font-medium [&_strong]:text-foreground',\n '[&_a]:text-foreground [&_a]:underline [&_a]:decoration-border [&_a]:underline-offset-4 hover:[&_a]:decoration-foreground',\n '[&_ul]:my-4 [&_ul]:list-disc [&_ul]:pl-5 [&_li]:my-1.5 [&_code]:text-foreground',\n className\n )}\n {...props}\n />\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The deck alternates three grounds: the light canvas, the ink band and the\n * orange band. A section owns its ground edge to edge and its content sits in\n * the container. On the orange band text is ink, never white (2.9:1).\n */\n// overflow-x: clip, not hidden: decoration may not widen the page, and a sticky\n// child still sticks.\nexport const sectionVariants = cva('relative w-full overflow-x-clip', {\n variants: {\n tone: {\n canvas: 'bg-background text-foreground',\n card: 'bg-card text-card-foreground',\n ink: 'bg-oca-ink text-oca-ink-foreground',\n brand: 'bg-brand text-brand-foreground',\n },\n space: {\n none: '',\n sm: 'py-12 md:py-16',\n md: 'oca-section',\n lg: 'py-24 md:py-40',\n },\n },\n defaultVariants: { tone: 'canvas', space: 'md' },\n});\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement>, VariantProps<typeof sectionVariants> {\n /** Put children in the standard container. Default true. */\n contained?: boolean;\n}\n\nexport function Section({ tone, space, contained = true, className, children, ...props }: SectionProps) {\n return (\n <section className={cn(sectionVariants({ tone, space }), className)} {...props}>\n {contained ? <div className=\"oca-container\">{children}</div> : children}\n </section>\n );\n}\n\nexport function Container({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('oca-container', className)} {...props} />;\n}\n\n/** Eyebrow + headline + lead, the opening of every deck slide. */\nexport function SectionIntro({\n className,\n align = 'start',\n ...props\n}: HTMLAttributes<HTMLDivElement> & { align?: 'start' | 'center' }) {\n return (\n <div\n className={cn(\n 'flex flex-col gap-4 md:gap-5',\n align === 'center' && 'mx-auto items-center text-center',\n className\n )}\n {...props}\n />\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Badge } from '../primitives/badge';\nimport { Card, CardNumeral, CardTitle } from '../primitives/card';\n\nexport interface StepItem {\n title: ReactNode;\n body: ReactNode;\n /** A small pill beside the title (\"in testing\", \"on the path\"). */\n badge?: ReactNode;\n /** Overrides the automatic 01, 02, 03. */\n numeral?: ReactNode;\n}\n\nexport interface StepGridProps {\n items: StepItem[];\n /**\n * `cards` (white cards, \"Sign in. Earn. Own.\"), `plain` (open columns,\n * \"Ask for something a bot can't fake cheaply.\") or `ink` (dark cards,\n * \"Why partner now\"). Numerals are dropped on `ink`, as the deck does.\n */\n look?: 'cards' | 'plain' | 'ink';\n className?: string;\n}\n\nconst pad = (n: number) => String(n + 1).padStart(2, '0');\n\nexport function StepGrid({ items, look = 'cards', className }: StepGridProps) {\n const cols = items.length >= 3 ? 'md:grid-cols-3' : items.length === 2 ? 'md:grid-cols-2' : '';\n return (\n <ol className={cn('grid gap-4 md:gap-5', cols, className)}>\n {items.map((it, i) =>\n look === 'plain' ? (\n <li key={i} className=\"flex flex-col gap-3 pr-4\">\n <CardNumeral>{it.numeral ?? pad(i)}</CardNumeral>\n <CardTitle className=\"oca-title-sm\">\n {it.title}\n {it.badge ? <Badge>{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"oca-body text-[0.9375rem]\">{it.body}</div>\n </li>\n ) : look === 'ink' ? (\n <li key={i}>\n <Card tone=\"ink\" padding=\"md\" className=\"h-full\">\n <CardTitle className=\"text-oca-ink-title\">\n {it.title}\n {it.badge ? <Badge tone=\"onInk\">{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"mt-3 text-[1rem] leading-relaxed text-oca-ink-muted\">{it.body}</div>\n </Card>\n </li>\n ) : (\n <li key={i}>\n <Card padding=\"md\" className=\"flex h-full flex-col gap-3\">\n <CardNumeral>{it.numeral ?? pad(i)}</CardNumeral>\n <CardTitle>\n {it.title}\n {it.badge ? <Badge>{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"oca-body\">{it.body}</div>\n </Card>\n </li>\n )\n )}\n </ol>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The deck's \"What you get\" panel: a dark card of packages, each a peach title,\n * a coloured identifier and a // comment. The identifier's colour says what it\n * is, the way an editor would: a package, a component tag, a licence link.\n */\nexport interface PackageItem {\n title: ReactNode;\n /** The thing itself: an npm name, a JSX tag, a licence line. */\n code: ReactNode;\n kind?: 'package' | 'tag' | 'link';\n /** Rendered after `// `. */\n note?: ReactNode;\n href?: string;\n}\n\nconst KIND = {\n package: 'text-oca-code-package',\n tag: 'text-oca-code-tag',\n link: 'text-oca-code-link',\n} as const;\n\nexport function PackageCard({ items, className }: { items: PackageItem[]; className?: string }) {\n return (\n <div\n className={cn(\n 'grid gap-x-10 gap-y-7 rounded-[1.25rem] border border-oca-ink-line bg-oca-ink-card p-6 text-oca-ink-foreground md:grid-cols-2 md:p-9',\n className\n )}\n >\n {items.map((it, i) => {\n // Sou sets identifiers in the text face, not mono: they read as names here.\n const code = <span className={cn('text-[0.9375rem]', KIND[it.kind ?? 'package'])}>{it.code}</span>;\n return (\n <div key={i} className=\"flex min-w-0 flex-col gap-1.5\">\n <h3 className=\"text-[1.125rem] font-semibold tracking-[-0.01em] text-oca-ink-title\">{it.title}</h3>\n {it.href ? (\n <a href={it.href} className=\"w-fit underline decoration-transparent underline-offset-4 hover:decoration-current\">\n {code}\n </a>\n ) : (\n code\n )}\n {it.note ? (\n <p className=\"text-[0.9375rem] leading-relaxed text-oca-ink-subtle\">\n <span aria-hidden>{'// '}</span>\n {it.note}\n </p>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n}\n\n/** A dark block of code with an optional caption, for snippets. */\nexport function CodeBlock({\n code,\n caption,\n className,\n}: {\n code: string;\n caption?: ReactNode;\n className?: string;\n}) {\n return (\n <figure className={cn('overflow-hidden rounded-[1.25rem] border border-oca-ink-line bg-oca-ink-card', className)}>\n {caption ? (\n <figcaption className=\"border-b border-oca-ink-line px-5 py-3 text-[0.8125rem] text-oca-ink-subtle\">\n {caption}\n </figcaption>\n ) : null}\n <pre className=\"overflow-x-auto p-5 font-mono text-[0.875rem] leading-relaxed text-oca-ink-muted\">\n <code>{code}</code>\n </pre>\n </figure>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * \"What's true today.\" A two-column table: a status and what it covers. Sou's\n * note on the slide is the brief for this component: say it plainly; being\n * clear about what isn't done yet is part of the pitch. So the statuses are\n * fixed words, never icons, and a row cannot be written without one.\n */\nexport type TruthStatus = 'yes' | 'testing' | 'not-yet' | 'no';\n\nconst LABEL: Record<TruthStatus, string> = {\n yes: 'Yes',\n testing: 'In testing',\n 'not-yet': 'Not yet',\n no: 'No',\n};\n\nconst TONE: Record<TruthStatus, string> = {\n yes: 'text-oca-accent-ink',\n testing: 'text-foreground',\n 'not-yet': 'text-muted-foreground',\n no: 'text-muted-foreground',\n};\n\nexport interface TruthRow {\n status: TruthStatus;\n what: ReactNode;\n}\n\nexport function TruthTable({\n rows,\n statusHeading = 'Status',\n whatHeading = 'What',\n className,\n}: {\n rows: TruthRow[];\n statusHeading?: string;\n whatHeading?: string;\n className?: string;\n}) {\n return (\n <div className={cn('overflow-hidden rounded-xl border border-oca-hairline-strong', className)}>\n <table className=\"w-full border-collapse text-left text-[0.9375rem] md:text-[1rem]\">\n <thead className=\"bg-oca-table-head\">\n <tr>\n <th scope=\"col\" className=\"w-[30%] border-b border-oca-hairline-strong px-4 py-3 font-semibold md:w-[22%]\">\n {statusHeading}\n </th>\n <th scope=\"col\" className=\"border-b border-l border-oca-hairline-strong px-4 py-3 font-semibold\">\n {whatHeading}\n </th>\n </tr>\n </thead>\n <tbody className=\"bg-card\">\n {rows.map((r, i) => (\n <tr key={i} className=\"align-top\">\n <td\n className={cn(\n 'border-t border-oca-hairline-strong px-4 py-3 font-medium',\n i === 0 && 'border-t-0',\n TONE[r.status]\n )}\n >\n {LABEL[r.status]}\n </td>\n <td\n className={cn(\n 'border-l border-t border-oca-hairline-strong px-4 py-3 leading-relaxed',\n i === 0 && 'border-t-0'\n )}\n >\n {r.what}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","import type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * Sats, always as whole integers with tabular figures. An amount nobody has\n * measured renders as \"—\" with \"unknown\" for screen readers, never as 0: a\n * missing balance shown as zero is a false statement about someone's money.\n */\n\nconst INT = new Intl.NumberFormat('en-US', { maximumFractionDigits: 0 });\nconst COMPACT = new Intl.NumberFormat('en-US', { notation: 'compact', maximumFractionDigits: 1 });\n\nexport interface SatsTextOptions {\n /** Append \" sats\" (default) or nothing. */\n unit?: 'sats' | 'none';\n /** 1.2K, 3.4M. For dense tables and charts only. */\n compact?: boolean;\n /** Prefix + for positive amounts (credits). */\n signed?: boolean;\n}\n\n/** A sats amount as text. Returns null for an unknown amount. */\nexport function satsText(value: number | null | undefined, opts: SatsTextOptions = {}): string | null {\n if (value == null || !Number.isFinite(value)) return null;\n const whole = Math.trunc(value);\n const body = (opts.compact ? COMPACT : INT).format(Math.abs(whole));\n const sign = whole < 0 ? '−' : opts.signed && whole > 0 ? '+' : '';\n const unit = opts.unit === 'none' ? '' : whole === 1 || whole === -1 ? ' sat' : ' sats';\n return `${sign}${body}${unit}`;\n}\n\nexport interface SatsProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'>, SatsTextOptions {\n value: number | null | undefined;\n /** What to show for an unknown amount. */\n unknown?: string;\n}\n\nexport function Sats({ value, unit, compact, signed, unknown = '—', className, ...props }: SatsProps) {\n const text = satsText(value, { unit, compact, signed });\n if (text === null) {\n return (\n <span className={cn('oca-tabular text-muted-foreground', className)} {...props}>\n <span aria-hidden>{unknown}</span>\n <span className=\"sr-only\">unknown</span>\n </span>\n );\n }\n return (\n <span className={cn('oca-tabular whitespace-nowrap', className)} {...props}>\n {text}\n </span>\n );\n}\n\n/** \"≈ $12.34\" beside an amount, when a price is known. Renders nothing otherwise. */\nexport function UsdApprox({\n sats,\n usdPerBtc,\n className,\n}: {\n sats: number | null | undefined;\n usdPerBtc: number | null | undefined;\n className?: string;\n}) {\n if (sats == null || usdPerBtc == null || !Number.isFinite(sats) || !Number.isFinite(usdPerBtc)) return null;\n const usd = (sats / 1e8) * usdPerBtc;\n const text = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: usd < 1 ? 4 : 2,\n }).format(usd);\n return <span className={cn('oca-tabular text-muted-foreground', className)}>≈ {text}</span>;\n}\n\n/** A large figure with its label: balances, totals. */\nexport function SatsFigure({\n label,\n value,\n hint,\n className,\n}: {\n label: string;\n value: number | null | undefined;\n hint?: React.ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-col gap-1.5', className)}>\n <span className=\"text-[0.9375rem] text-muted-foreground\">{label}</span>\n <span className=\"oca-display-3 oca-tabular\">\n <Sats value={value} unit=\"none\" />\n <span className=\"ml-2 text-[0.5em] tracking-normal text-muted-foreground\">sats</span>\n </span>\n {hint ? <span className=\"text-[0.875rem] text-muted-foreground\">{hint}</span> : null}\n </div>\n );\n}\n","import { Check, Copy } from 'lucide-react';\nimport { useCallback, useEffect, useRef, useState, type HTMLAttributes, type ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Mark } from '../brand/mark';\n\n/* ── Page header ─────────────────────────────────────────────────────── */\n\nexport function PageHeader({\n eyebrow,\n title,\n description,\n actions,\n className,\n}: {\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n className?: string;\n}) {\n return (\n <header className={cn('flex flex-col gap-5 md:flex-row md:items-end md:justify-between', className)}>\n <div className=\"flex max-w-[44rem] flex-col gap-3\">\n {eyebrow ? <p className=\"oca-eyebrow\">{eyebrow}</p> : null}\n <h1 className=\"oca-display-3\">{title}</h1>\n {description ? <p className=\"oca-body text-[1.0625rem]\">{description}</p> : null}\n </div>\n {actions ? <div className=\"flex shrink-0 flex-wrap items-center gap-3\">{actions}</div> : null}\n </header>\n );\n}\n\n/* ── Stats ───────────────────────────────────────────────────────────── */\n\nexport function StatCard({\n label,\n value,\n hint,\n className,\n}: {\n label: ReactNode;\n value: ReactNode;\n hint?: ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-col gap-2 rounded-[1.25rem] border border-border bg-card p-5 md:p-6', className)}>\n <span className=\"text-[0.875rem] text-muted-foreground\">{label}</span>\n <span className=\"oca-tabular text-[1.75rem] leading-tight tracking-[-0.02em]\">{value}</span>\n {hint ? <span className=\"text-[0.8125rem] leading-snug text-muted-foreground\">{hint}</span> : null}\n </div>\n );\n}\n\nexport function StatGrid({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('grid grid-cols-2 gap-3 md:grid-cols-4 md:gap-4', className)} {...props} />;\n}\n\n/* ── Key / value ─────────────────────────────────────────────────────── */\n\nexport interface KeyValueItem {\n label: ReactNode;\n value: ReactNode;\n mono?: boolean;\n}\n\nexport function KeyValueList({ items, className }: { items: KeyValueItem[]; className?: string }) {\n return (\n <dl className={cn('divide-y divide-border rounded-[1.25rem] border border-border bg-card', className)}>\n {items.map((it, i) => (\n <div key={i} className=\"flex flex-col gap-1 px-5 py-3.5 sm:flex-row sm:items-baseline sm:gap-6\">\n <dt className=\"shrink-0 text-[0.875rem] text-muted-foreground sm:w-48\">{it.label}</dt>\n <dd className={cn('min-w-0 break-words text-[0.9375rem]', it.mono && 'font-mono text-[0.875rem]')}>\n {it.value}\n </dd>\n </div>\n ))}\n </dl>\n );\n}\n\n/* ── Table ───────────────────────────────────────────────────────────── */\n\nexport interface Column<T> {\n key: string;\n header: ReactNode;\n cell: (row: T) => ReactNode;\n align?: 'start' | 'end';\n /** Hide below md. */\n wide?: boolean;\n}\n\nexport function DataTable<T>({\n columns,\n rows,\n rowKey,\n empty,\n caption,\n className,\n}: {\n columns: Column<T>[];\n rows: T[];\n rowKey: (row: T, i: number) => string;\n empty?: ReactNode;\n caption?: string;\n className?: string;\n}) {\n if (rows.length === 0 && empty) return <>{empty}</>;\n return (\n <div className={cn('overflow-x-auto rounded-[1.25rem] border border-border bg-card', className)}>\n <table className=\"w-full border-collapse text-left text-[0.9375rem]\">\n {caption ? <caption className=\"sr-only\">{caption}</caption> : null}\n <thead>\n <tr className=\"border-b border-border\">\n {columns.map((c) => (\n <th\n key={c.key}\n scope=\"col\"\n className={cn(\n 'whitespace-nowrap px-5 py-3 text-[0.8125rem] font-medium text-muted-foreground',\n c.align === 'end' && 'text-right',\n c.wide && 'hidden md:table-cell'\n )}\n >\n {c.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {rows.map((r, i) => (\n <tr key={rowKey(r, i)} className=\"transition-colors hover:bg-accent/60\">\n {columns.map((c) => (\n <td\n key={c.key}\n className={cn(\n 'px-5 py-3.5 align-middle',\n c.align === 'end' && 'text-right',\n c.wide && 'hidden md:table-cell'\n )}\n >\n {c.cell(r)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\n/* ── Empty, notice ───────────────────────────────────────────────────── */\n\nexport function EmptyState({\n title,\n children,\n action,\n className,\n}: {\n title: ReactNode;\n children?: ReactNode;\n action?: ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center gap-4 rounded-[1.25rem] border border-dashed border-oca-hairline-strong px-6 py-12 text-center',\n className\n )}\n >\n <Mark size={56} />\n <h3 className=\"oca-title-sm\">{title}</h3>\n {children ? <div className=\"oca-body max-w-md text-[0.9375rem]\">{children}</div> : null}\n {action ? <div className=\"mt-1 flex flex-wrap justify-center gap-3\">{action}</div> : null}\n </div>\n );\n}\n\ntype NoticeTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'brand';\n\nconst NOTICE: Record<NoticeTone, string> = {\n neutral: 'border-border bg-card',\n info: 'border-[color-mix(in_oklab,var(--info)_30%,var(--border))] bg-[color-mix(in_oklab,var(--info)_6%,var(--card))]',\n success:\n 'border-[color-mix(in_oklab,var(--success)_30%,var(--border))] bg-[color-mix(in_oklab,var(--success)_6%,var(--card))]',\n warning:\n 'border-[color-mix(in_oklab,var(--warning)_35%,var(--border))] bg-[color-mix(in_oklab,var(--warning)_7%,var(--card))]',\n danger:\n 'border-[color-mix(in_oklab,var(--destructive)_32%,var(--border))] bg-[color-mix(in_oklab,var(--destructive)_6%,var(--card))]',\n brand: 'border-[color-mix(in_oklab,var(--oca-orange)_35%,var(--border))] bg-[color-mix(in_oklab,var(--oca-orange)_7%,var(--card))]',\n};\n\nconst NOTICE_TITLE: Record<NoticeTone, string> = {\n neutral: 'text-foreground',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-destructive',\n brand: 'text-oca-accent-ink',\n};\n\nexport function Notice({\n tone = 'neutral',\n title,\n children,\n action,\n className,\n}: {\n tone?: NoticeTone;\n title?: ReactNode;\n children?: ReactNode;\n action?: ReactNode;\n className?: string;\n}) {\n return (\n <div\n role={tone === 'danger' || tone === 'warning' ? 'alert' : 'note'}\n className={cn(\n 'flex flex-col gap-3 rounded-2xl border px-5 py-4 sm:flex-row sm:items-start sm:justify-between',\n NOTICE[tone],\n className\n )}\n >\n <div className=\"flex min-w-0 flex-col gap-1\">\n {title ? <p className={cn('text-[0.9375rem] font-medium', NOTICE_TITLE[tone])}>{title}</p> : null}\n {children ? <div className=\"text-[0.9375rem] leading-relaxed text-foreground/85\">{children}</div> : null}\n </div>\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </div>\n );\n}\n\n/* ── Hashes, addresses, ids ──────────────────────────────────────────── */\n\nfunction middle(v: string, head: number, tail: number) {\n return v.length <= head + tail + 1 ? v : `${v.slice(0, head)}…${v.slice(-tail)}`;\n}\n\nexport function useCopy(timeoutMs = 1600) {\n const [copied, setCopied] = useState(false);\n const t = useRef<ReturnType<typeof setTimeout> | null>(null);\n useEffect(() => () => {\n if (t.current) clearTimeout(t.current);\n }, []);\n const copy = useCallback(\n async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n if (t.current) clearTimeout(t.current);\n t.current = setTimeout(() => setCopied(false), timeoutMs);\n } catch {\n setCopied(false);\n }\n },\n [timeoutMs]\n );\n return { copied, copy };\n}\n\nexport function CopyButton({ value, label = 'Copy', className }: { value: string; label?: string; className?: string }) {\n const { copied, copy } = useCopy();\n return (\n <button\n type=\"button\"\n onClick={() => void copy(value)}\n aria-label={copied ? 'Copied' : label}\n className={cn(\n 'inline-flex size-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n className\n )}\n >\n {copied ? <Check className=\"size-4 text-success\" /> : <Copy className=\"size-4\" />}\n <span aria-live=\"polite\" className=\"sr-only\">\n {copied ? 'Copied' : ''}\n </span>\n </button>\n );\n}\n\n/** A long identifier shown as head…tail in mono, with copy. The full value is\n * the title and the copied text, never lost to the truncation. */\nexport function HashChip({\n value,\n head = 8,\n tail = 6,\n copy = true,\n href,\n className,\n}: {\n value: string;\n head?: number;\n tail?: number;\n copy?: boolean;\n href?: string;\n className?: string;\n}) {\n const shown = middle(value, head, tail);\n const text = (\n <span title={value} className=\"font-mono text-[0.875rem]\">\n {shown}\n </span>\n );\n return (\n <span className={cn('inline-flex max-w-full items-center gap-1', className)}>\n {href ? (\n <a href={href} className=\"underline decoration-border underline-offset-4 hover:decoration-foreground\">\n {text}\n </a>\n ) : (\n text\n )}\n {copy ? <CopyButton value={value} label=\"Copy full value\" /> : null}\n </span>\n );\n}\n\n/* ── Progress ────────────────────────────────────────────────────────── */\n\nexport type StepState = 'done' | 'current' | 'upcoming' | 'blocked';\n\nexport interface ProgressStep {\n label: ReactNode;\n hint?: ReactNode;\n state: StepState;\n}\n\nexport function ProgressSteps({ steps, className }: { steps: ProgressStep[]; className?: string }) {\n return (\n <ol className={cn('flex flex-col gap-0', className)}>\n {steps.map((s, i) => {\n const last = i === steps.length - 1;\n return (\n <li key={i} className=\"relative flex gap-4 pb-6 last:pb-0\" aria-current={s.state === 'current' ? 'step' : undefined}>\n {!last ? (\n <span\n aria-hidden\n className={cn(\n 'absolute left-[11px] top-7 h-[calc(100%-1.5rem)] w-px',\n s.state === 'done' ? 'bg-foreground/30' : 'bg-border'\n )}\n />\n ) : null}\n <span\n className={cn(\n 'relative z-10 mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-full border text-[0.75rem] oca-tabular',\n s.state === 'done' && 'border-primary bg-primary text-primary-foreground',\n s.state === 'current' && 'border-brand bg-card text-oca-accent-ink',\n s.state === 'upcoming' && 'border-border bg-card text-muted-foreground',\n s.state === 'blocked' && 'border-destructive bg-card text-destructive'\n )}\n >\n {s.state === 'done' ? <Check className=\"size-3.5\" strokeWidth={3} /> : String(i + 1).padStart(2, '0')}\n </span>\n <div className=\"flex min-w-0 flex-col gap-1\">\n <span className={cn('text-[0.9375rem]', s.state === 'upcoming' ? 'text-muted-foreground' : 'font-medium')}>\n {s.label}\n </span>\n {s.hint ? <span className=\"text-[0.875rem] leading-snug text-muted-foreground\">{s.hint}</span> : null}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n\n/* ── Activity ────────────────────────────────────────────────────────── */\n\nexport interface ActivityItem {\n id: string;\n title: ReactNode;\n meta?: ReactNode;\n trailing?: ReactNode;\n href?: string;\n}\n\nexport function ActivityList({ items, empty, className }: { items: ActivityItem[]; empty?: ReactNode; className?: string }) {\n if (items.length === 0 && empty) return <>{empty}</>;\n return (\n <ul className={cn('divide-y divide-border rounded-[1.25rem] border border-border bg-card', className)}>\n {items.map((it) => {\n const body = (\n <div className=\"flex items-center justify-between gap-4 px-5 py-4\">\n <div className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"truncate text-[0.9375rem]\">{it.title}</span>\n {it.meta ? <span className=\"truncate text-[0.8125rem] text-muted-foreground\">{it.meta}</span> : null}\n </div>\n {it.trailing ? <div className=\"shrink-0 text-right\">{it.trailing}</div> : null}\n </div>\n );\n return (\n <li key={it.id}>\n {it.href ? (\n <a href={it.href} className=\"block transition-colors hover:bg-accent/60\">\n {body}\n </a>\n ) : (\n body\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n","import { Menu } from 'lucide-react';\nimport Link from 'next/link';\nimport { useState, type ReactNode } from 'react';\n\nimport { Lockup } from '../brand/mark';\nimport { cn } from '../lib/cn';\nimport { Sheet, SheetContent, SheetTitle, SheetTrigger } from '../primitives/overlay';\n\nexport interface NavItem {\n href: string;\n label: ReactNode;\n /** Marks the current section for styling and aria-current. */\n active?: boolean;\n external?: boolean;\n}\n\nfunction NavLink({ item, className, onNavigate }: { item: NavItem; className?: string; onNavigate?: () => void }) {\n const cls = cn(\n 'rounded-full px-3 py-2 text-[0.9375rem] transition-colors',\n item.active ? 'text-foreground' : 'text-muted-foreground hover:text-foreground',\n className\n );\n if (item.external) {\n return (\n <a href={item.href} className={cls} rel=\"noreferrer\" onClick={onNavigate}>\n {item.label}\n </a>\n );\n }\n return (\n <Link href={item.href} className={cls} aria-current={item.active ? 'page' : undefined} onClick={onNavigate}>\n {item.label}\n </Link>\n );\n}\n\n/**\n * The public header: lockup, a few words of navigation, actions on the right.\n * Below md the navigation moves into a sheet; the actions stay.\n */\nexport function SiteHeader({\n home = '/',\n brand,\n nav = [],\n actions,\n className,\n}: {\n home?: string;\n brand?: ReactNode;\n nav?: NavItem[];\n actions?: ReactNode;\n className?: string;\n}) {\n const [open, setOpen] = useState(false);\n return (\n <header\n className={cn(\n 'sticky top-0 z-40 w-full border-b border-transparent bg-background/85 backdrop-blur-md supports-[backdrop-filter]:bg-background/70',\n className\n )}\n >\n <div className=\"oca-container flex h-16 items-center justify-between gap-4 md:h-[4.5rem]\">\n <Link href={home} className=\"-ml-1 rounded-lg p-1\" aria-label=\"Home\">\n {brand ?? <Lockup size={28} />}\n </Link>\n {nav.length > 0 ? (\n <nav aria-label=\"Main\" className=\"hidden items-center gap-1 md:flex\">\n {nav.map((n) => (\n <NavLink key={n.href} item={n} />\n ))}\n </nav>\n ) : null}\n <div className=\"flex items-center gap-2\">\n {actions}\n {nav.length > 0 ? (\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger\n className=\"inline-flex size-10 items-center justify-center rounded-full text-foreground hover:bg-accent md:hidden\"\n aria-label=\"Open menu\"\n >\n <Menu className=\"size-5\" />\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"pt-16\">\n <SheetTitle className=\"sr-only\">Menu</SheetTitle>\n <nav aria-label=\"Main\" className=\"flex flex-col\">\n {nav.map((n) => (\n <NavLink\n key={n.href}\n item={n}\n className=\"rounded-xl px-3 py-3 text-[1.0625rem]\"\n onNavigate={() => setOpen(false)}\n />\n ))}\n </nav>\n </SheetContent>\n </Sheet>\n ) : null}\n </div>\n </div>\n </header>\n );\n}\n\nexport interface FooterColumn {\n heading: string;\n links: NavItem[];\n}\n\n/**\n * The footer, in the deck's register: a line of fine print, the support credit,\n * and a few columns of links. Links are 44px tall on phones.\n */\nexport function SiteFooter({\n columns = [],\n fineprint,\n meta,\n className,\n}: {\n columns?: FooterColumn[];\n fineprint?: ReactNode;\n meta?: ReactNode;\n className?: string;\n}) {\n return (\n <footer className={cn('border-t border-border bg-background', className)}>\n <div className=\"oca-container grid gap-10 py-14 md:grid-cols-[1.3fr_repeat(3,1fr)] md:py-16\">\n <div className=\"flex flex-col gap-4\">\n <Lockup size={26} />\n {fineprint ? <p className=\"max-w-xs text-[0.9375rem] leading-relaxed text-muted-foreground\">{fineprint}</p> : null}\n </div>\n {columns.map((col) => (\n <div key={col.heading} className=\"flex flex-col gap-1\">\n <p className=\"mb-2 text-[0.875rem] font-medium\">{col.heading}</p>\n {col.links.map((l) => (\n <NavLink\n key={l.href}\n item={l}\n className=\"-mx-3 py-2.5 text-[0.9375rem] md:py-1.5\"\n />\n ))}\n </div>\n ))}\n </div>\n {meta ? (\n <div className=\"oca-container border-t border-border py-6 text-[0.875rem] text-muted-foreground\">{meta}</div>\n ) : null}\n </footer>\n );\n}\n","import { Menu, Moon, Sun, SunMoon } from 'lucide-react';\nimport Link from 'next/link';\nimport { useTheme } from 'next-themes';\nimport { useEffect, useState, type ReactNode } from 'react';\n\nimport { AppIcon, Lockup } from '../brand/mark';\nimport { cn } from '../lib/cn';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Sheet,\n SheetContent,\n SheetTitle,\n SheetTrigger,\n} from '../primitives/overlay';\n\nexport interface ShellNavItem {\n href: string;\n label: string;\n icon?: ReactNode;\n active?: boolean;\n /** A count or a dot beside the label (unread, needs attention). */\n badge?: ReactNode;\n}\n\nexport interface ShellNavGroup {\n /** Omit for the first, unlabeled group. */\n label?: string;\n items: ShellNavItem[];\n}\n\nfunction SideNav({ groups, onNavigate }: { groups: ShellNavGroup[]; onNavigate?: () => void }) {\n return (\n <nav aria-label=\"Sections\" className=\"flex flex-col gap-6\">\n {groups.map((g, gi) => (\n <div key={g.label ?? gi} className=\"flex flex-col gap-0.5\">\n {g.label ? <p className=\"px-3 pb-1.5 text-[0.8125rem] text-muted-foreground\">{g.label}</p> : null}\n {g.items.map((it) => (\n <Link\n key={it.href}\n href={it.href}\n onClick={onNavigate}\n aria-current={it.active ? 'page' : undefined}\n className={cn(\n 'flex h-10 items-center gap-3 rounded-xl px-3 text-[0.9375rem] transition-colors',\n '[&_svg]:size-[1.125rem] [&_svg]:shrink-0',\n it.active\n ? 'bg-card text-foreground shadow-sm ring-1 ring-border [&_svg]:text-foreground'\n : 'text-muted-foreground hover:bg-accent hover:text-foreground'\n )}\n >\n {it.icon}\n <span className=\"min-w-0 flex-1 truncate\">{it.label}</span>\n {it.badge ? <span className=\"shrink-0\">{it.badge}</span> : null}\n </Link>\n ))}\n </div>\n ))}\n </nav>\n );\n}\n\n/**\n * The signed-in frame: a quiet sidebar on the canvas, content on the right. On\n * phones the sidebar becomes a sheet behind a top bar. The account control and\n * any banner are slots, so the shell knows nothing about sessions.\n */\nexport function AppShell({\n nav,\n home = '/',\n account,\n banner,\n footer,\n children,\n className,\n}: {\n nav: ShellNavGroup[];\n home?: string;\n account?: ReactNode;\n banner?: ReactNode;\n footer?: ReactNode;\n children: ReactNode;\n className?: string;\n}) {\n const [open, setOpen] = useState(false);\n return (\n <div className={cn('min-h-dvh bg-background', className)}>\n <div className=\"sticky top-0 z-40 flex h-14 items-center justify-between border-b border-border bg-background/85 px-4 backdrop-blur-md lg:hidden\">\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger\n className=\"inline-flex size-10 items-center justify-center rounded-full hover:bg-accent\"\n aria-label=\"Open navigation\"\n >\n <Menu className=\"size-5\" />\n </SheetTrigger>\n <SheetContent side=\"left\" className=\"p-4 pt-16\">\n <SheetTitle className=\"sr-only\">Navigation</SheetTitle>\n <SideNav groups={nav} onNavigate={() => setOpen(false)} />\n </SheetContent>\n </Sheet>\n <Link href={home} aria-label=\"Home\">\n <AppIcon size={28} />\n </Link>\n <div className=\"flex items-center\">{account}</div>\n </div>\n <div className=\"mx-auto flex w-full max-w-[90rem]\">\n <aside className=\"sticky top-0 hidden h-dvh w-64 shrink-0 flex-col gap-8 overflow-y-auto px-4 py-6 lg:flex\">\n <Link href={home} className=\"px-2\" aria-label=\"Home\">\n <Lockup size={26} />\n </Link>\n <SideNav groups={nav} />\n <div className=\"mt-auto flex flex-col gap-3\">{footer}</div>\n </aside>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <div className=\"hidden h-[4.5rem] items-center justify-end gap-3 px-8 lg:flex\">{account}</div>\n {banner ? <div className=\"px-4 pb-2 pt-4 md:px-8 lg:pt-0\">{banner}</div> : null}\n <main id=\"main-content\" className=\"flex-1 px-4 pb-16 pt-6 md:px-8 lg:pt-2\">\n {children}\n </main>\n </div>\n </div>\n </div>\n );\n}\n\nexport interface AccountMenuItem {\n label: string;\n href?: string;\n onSelect?: () => void;\n icon?: ReactNode;\n destructive?: boolean;\n}\n\n/** The account button: initial + short id, a menu of items. */\nexport function AccountMenu({\n name,\n detail,\n items,\n}: {\n name: string;\n /** A second line: the short did, an address. */\n detail?: string;\n items: (AccountMenuItem | 'separator')[];\n}) {\n const initial = name.trim().charAt(0).toUpperCase() || '·';\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n className=\"inline-flex h-10 items-center gap-2.5 rounded-full border border-border bg-card pl-1 pr-3.5 text-[0.9375rem] outline-none transition-colors hover:border-oca-hairline-strong focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={`Account: ${name}`}\n >\n <span className=\"flex size-8 items-center justify-center rounded-full bg-foreground text-[0.8125rem] font-medium text-background\">\n {initial}\n </span>\n <span className=\"max-w-[10rem] truncate\">{name}</span>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-64\">\n <DropdownMenuLabel className=\"flex flex-col gap-0.5\">\n <span className=\"truncate text-[0.9375rem] font-medium text-foreground\">{name}</span>\n {detail ? <span className=\"truncate font-mono text-[0.75rem]\">{detail}</span> : null}\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n {items.map((it, i) =>\n it === 'separator' ? (\n <DropdownMenuSeparator key={`sep-${i}`} />\n ) : it.href ? (\n <DropdownMenuItem key={it.label} asChild destructive={it.destructive}>\n <Link href={it.href}>\n {it.icon}\n {it.label}\n </Link>\n </DropdownMenuItem>\n ) : (\n <DropdownMenuItem key={it.label} onSelect={it.onSelect} destructive={it.destructive}>\n {it.icon}\n {it.label}\n </DropdownMenuItem>\n )\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n/** Light, dark, or follow the system: one button that cycles. */\nexport function ThemeToggle({ className }: { className?: string }) {\n const { theme, setTheme } = useTheme();\n const [mounted, setMounted] = useState(false);\n useEffect(() => setMounted(true), []);\n const current = mounted ? (theme ?? 'system') : 'system';\n const next = current === 'light' ? 'dark' : current === 'dark' ? 'system' : 'light';\n const Icon = current === 'light' ? Sun : current === 'dark' ? Moon : SunMoon;\n return (\n <button\n type=\"button\"\n onClick={() => setTheme(next)}\n aria-label={`Theme: ${current}. Switch to ${next}`}\n title={`Theme: ${current}`}\n className={cn(\n 'inline-flex size-10 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n className\n )}\n >\n <Icon className=\"size-[1.125rem]\" />\n </button>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/tokens/index.ts","../src/lib/cn.ts","../src/primitives/feedback.tsx","../src/primitives/button.tsx","../src/primitives/badge.tsx","../src/primitives/card.tsx","../src/primitives/form.tsx","../src/primitives/overlay.tsx","../src/primitives/tabs.tsx","../src/brand/mark.tsx","../src/brand/sphere.tsx","../src/brand/iso-check.tsx","../src/components/typography.tsx","../src/components/section.tsx","../src/components/steps.tsx","../src/components/code-card.tsx","../src/components/truth-table.tsx","../src/components/money.tsx","../src/components/data.tsx","../src/chrome/site.tsx","../src/chrome/app-shell.tsx"],"names":["extendTailwindMerge","clsx","jsxs","jsx","forwardRef","Separator","SeparatorPrimitive","SonnerToaster","cva","Button","Slot","Fragment","Card","Input","Textarea","Label","LabelPrimitive","useId","isValidElement","cloneElement","SelectPrimitive","SelectTrigger","ChevronDown","SelectContent","SelectItem","Check","Checkbox","CheckboxPrimitive","Switch","SwitchPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","DialogPrimitive","DialogContent","X","DialogTitle","DialogDescription","SheetContent","PopoverPrimitive","PopoverContent","TooltipPrimitive","TooltipContent","DropdownMenuPrimitive","DropdownMenuContent","DropdownMenuItem","DropdownMenuLabel","DropdownMenuSeparator","createContext","Tabs","TabsPrimitive","TabsList","useContext","TabsTrigger","TabsContent","createElement","useState","useRef","useEffect","useCallback","Copy","Link","Menu","useTheme","Icon","Sun","Moon","SunMoon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAM,aAAA,GAAgB;AACtB,IAAM,MAAA,GAAS;AAEf,IAAM,SAAA,GAAY;AAAA,EACrB,KAAA,EAAO;AAAA,IACH,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,eAAA,EAAiB,SAAA;AAAA,IACjB,gBAAA,EAAkB,SAAA;AAAA,IAClB,MAAA,EAAQ,SAAA;AAAA,IACR,cAAA,EAAgB,SAAA;AAAA,IAChB,aAAA,EAAe,SAAA;AAAA,IACf,SAAA,EAAW;AAAA,GACf;AAAA,EACA,IAAA,EAAM;AAAA,IACF,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,eAAA,EAAiB,SAAA;AAAA,IACjB,gBAAA,EAAkB,SAAA;AAAA,IAClB,MAAA,EAAQ,SAAA;AAAA,IACR,cAAA,EAAgB,SAAA;AAAA,IAChB,aAAA,EAAe,SAAA;AAAA,IACf,SAAA,EAAW;AAAA,GACf;AAAA,EACA,KAAA,EAAO;AAAA,IACH,MAAA,EAAQ,SAAA;AAAA,IACR,WAAA,EAAa,SAAA;AAAA,IACb,UAAA,EAAY,SAAA;AAAA,IACZ,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,OAAA,EAAS;AAAA;AAEjB;AAEO,IAAM,QAAA,GAAW;AAAA,EACpB,IAAA,EAAM,yEAAA;AAAA,EACN,IAAA,EAAM;AACV;ACzCA,IAAM,QAAQA,iCAAA,CAAgC;AAAA,EAC1C,MAAA,EAAQ;AAAA,IACJ,WAAA,EAAa;AAAA,MACT,UAAA,EAAY;AAAA,QACR,eAAA;AAAA,QACA,eAAA;AAAA,QACA,eAAA;AAAA,QACA,WAAA;AAAA,QACA,cAAA;AAAA,QACA,aAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA;AACJ;AACJ;AAER,CAAC,CAAA;AAEM,SAAS,MAAM,MAAA,EAA8B;AAChD,EAAA,OAAO,KAAA,CAAMC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACnBO,SAAS,OAAA,CAAQ,EAAE,SAAA,EAAW,KAAA,EAAM,EAA2C;AAClF,EAAA,uBACIC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,IAAA,EAAM,QAAQ,QAAA,GAAW,MAAA;AAAA,MACzB,YAAA,EAAY,KAAA;AAAA,MACZ,aAAA,EAAa,QAAQ,MAAA,GAAY,IAAA;AAAA,MACjC,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,MAE9C,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAAC,QAAA,EAAA,EAAO,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA,EAAE,GAAA,EAAI,MAAA,EAAO,cAAA,EAAe,aAAA,EAAc,KAAA,EAAM,WAAA,EAAY,KAAA,EAAM,CAAA;AAAA,wBAC1FA,cAAA,CAAC,UAAK,CAAA,EAAE,sBAAA,EAAuB,QAAO,cAAA,EAAe,WAAA,EAAY,KAAA,EAAM,aAAA,EAAc,OAAA,EAAQ;AAAA;AAAA;AAAA,GACjG;AAER;AAEO,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AAC9E,EAAA,uBAAOA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAQ,UAAA,EAAW,SAAA,EAAW,GAAG,mCAAA,EAAqC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC7G;AAEO,IAAM,SAAA,GAAYC,gBAAA,CAGvB,SAASC,UAAAA,CAAU,EAAE,SAAA,EAAW,WAAA,GAAc,YAAA,EAAc,UAAA,GAAa,IAAA,EAAM,GAAG,KAAA,IAAS,GAAA,EAAK;AAC9F,EAAA,uBACIF,cAAA;AAAA,IAAoBG,6BAAA,CAAA,IAAA;AAAA,IAAnB;AAAA,MACG,GAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,oBAAA;AAAA,QACA,WAAA,KAAgB,eAAe,aAAA,GAAgB,aAAA;AAAA,QAC/C;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER,CAAC;AAEM,SAAS,GAAA,CAAI,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACtE,EAAA,uBACIH,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,SAAA,EAAW,EAAA;AAAA,QACP,gJAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AAGO,SAAS,SAAA,CAAU;AAAA,EACtB,IAAA,GAAO,SAAA;AAAA,EACP,KAAA,GAAQ,KAAA;AAAA,EACR;AACJ,CAAA,EAIG;AACC,EAAA,MAAM,KAAA,GAAQ;AAAA,IACV,OAAA,EAAS,eAAA;AAAA,IACT,OAAA,EAAS,YAAA;AAAA,IACT,OAAA,EAAS,YAAA;AAAA,IACT,MAAA,EAAQ,gBAAA;AAAA,IACR,KAAA,EAAO;AAAA,IACT,IAAI,CAAA;AACN,EAAA,uBACIA,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACG,aAAA,EAAW,IAAA;AAAA,MACX,WAAW,EAAA,CAAG,2CAAA,EAA6C,KAAA,EAAO,KAAA,IAAS,yBAAyB,SAAS;AAAA;AAAA,GACjH;AAER;AAGO,SAAS,QAAQ,KAAA,EAAqB;AACzC,EAAA,uBACIA,cAAA;AAAA,IAACI,cAAA;AAAA,IAAA;AAAA,MACG,QAAA,EAAS,cAAA;AAAA,MACT,YAAA,EAAc;AAAA,QACV,UAAA,EAAY;AAAA,UACR,KAAA,EAAO,mGAAA;AAAA,UACP,KAAA,EAAO,8BAAA;AAAA,UACP,WAAA,EAAa,+BAAA;AAAA,UACb,YAAA,EAAc,iDAAA;AAAA,UACd,YAAA,EAAc;AAAA;AAClB,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;ACvFO,IAAM,cAAA,GAAiBC,0BAAA;AAAA,EAC1B;AAAA,IACI,+GAAA;AAAA,IACA,oFAAA;AAAA,IACA,4HAAA;AAAA,IACA,wEAAA;AAAA,IACA;AAAA,GACJ;AAAA,EACA;AAAA,IACI,QAAA,EAAU;AAAA,MACN,OAAA,EAAS;AAAA,QACL,OAAA,EAAS,wDAAA;AAAA,QACT,SAAA,EACI,8GAAA;AAAA,QACJ,KAAA,EAAO,yDAAA;AAAA,QACP,KAAA,EAAO,iCAAA;AAAA,QACP,MAAA,EAAQ,oEAAA;AAAA,QACR,IAAA,EAAM,qHAAA;AAAA,QACN,KAAA,EAAO,yCAAA;AAAA,QACP,YAAA,EAAc;AAAA,OAClB;AAAA,MACA,IAAA,EAAM;AAAA,QACF,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,IAAA,EAAM,SAAA;AAAA,QACN,SAAA,EAAW;AAAA;AACf,KACJ;AAAA,IACA,kBAAkB,CAAC,EAAE,SAAS,MAAA,EAAQ,SAAA,EAAW,eAAe,CAAA;AAAA,IAChE,eAAA,EAAiB,EAAE,OAAA,EAAS,SAAA,EAAW,MAAM,IAAA;AAAK;AAE1D;AAWO,IAAM,SAASJ,gBAAAA,CAA2C,SAASK,QACtE,EAAE,SAAA,EAAW,SAAS,IAAA,EAAM,OAAA,GAAU,KAAA,EAAO,OAAA,GAAU,OAAO,QAAA,EAAU,QAAA,EAAU,MAAM,GAAG,KAAA,IAC3F,GAAA,EACF;AACE,EAAA,MAAM,IAAA,GAAO,UAAUC,cAAA,GAAO,QAAA;AAC9B,EAAA,uBACIP,cAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAQ,QAAA;AAAA,MACR,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MAC1D,QAAA,EAAU,OAAA,GAAU,MAAA,GAAY,QAAA,IAAY,OAAA;AAAA,MAC5C,aAAW,OAAA,IAAW,MAAA;AAAA,MACtB,IAAA,EAAM,OAAA,GAAU,MAAA,GAAa,IAAA,IAAQ,QAAA;AAAA,MACpC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,OAAA,GACG,QAAA,mBAEAD,eAAAA,CAAAS,mBAAA,EAAA,EACK,QAAA,EAAA;AAAA,QAAA,OAAA,mBAAUR,cAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,gBAAe,CAAA,GAAK,IAAA;AAAA,QACjD;AAAA,OAAA,EACL;AAAA;AAAA,GAER;AAER,CAAC;ACvEM,IAAM,aAAA,GAAgBK,0BAAAA;AAAA,EACzB,sIAAA;AAAA,EACA;AAAA,IACI,QAAA,EAAU;AAAA,MACN,IAAA,EAAM;AAAA,QACF,OAAA,EAAS,uCAAA;AAAA,QACT,KAAA,EAAO,mDAAA;AAAA,QACP,KAAA,EAAO,mGAAA;AAAA,QACP,OAAA,EAAS,yFAAA;AAAA,QACT,OAAA,EAAS,yFAAA;AAAA,QACT,MAAA,EAAQ,iGAAA;AAAA,QACR,IAAA,EAAM,mFAAA;AAAA,QACN,GAAA,EAAK,uDAAA;AAAA,QACL,KAAA,EAAO;AAAA;AACX,KACJ;AAAA,IACA,eAAA,EAAiB,EAAE,IAAA,EAAM,SAAA;AAAU;AAE3C;AAIO,SAAS,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,GAAG,OAAM,EAAe;AAC7D,EAAA,uBAAOL,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAQ,SAAQ,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAE,MAAM,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC/F;ACxBO,IAAM,YAAA,GAAeK,2BAAI,mCAAA,EAAqC;AAAA,EACjE,QAAA,EAAU;AAAA,IACN,IAAA,EAAM;AAAA,MACF,OAAA,EAAS,4CAAA;AAAA,MACT,MAAA,EAAQ,6CAAA;AAAA,MACR,GAAA,EAAK,6DAAA;AAAA,MACL,OAAA,EAAS;AAAA,KACb;AAAA,IACA,OAAA,EAAS;AAAA,MACL,IAAA,EAAM,EAAA;AAAA,MACN,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI,YAAA;AAAA,MACJ,EAAA,EAAI;AAAA,KACR;AAAA,IACA,WAAA,EAAa;AAAA,MACT,IAAA,EAAM,4FAAA;AAAA,MACN,KAAA,EAAO;AAAA;AACX,GACJ;AAAA,EACA,iBAAiB,EAAE,IAAA,EAAM,WAAW,OAAA,EAAS,IAAA,EAAM,aAAa,KAAA;AACpE,CAAC;AAIM,IAAM,IAAA,GAAOJ,gBAAAA,CAAsC,SAASQ,KAAAA,CAC/D,EAAE,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,WAAA,EAAa,GAAG,KAAA,EAAM,EAClD,GAAA,EACF;AACE,EAAA,uBACIT,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAU,SAAA,EAAQ,MAAA,EAAO,WAAW,EAAA,CAAG,YAAA,CAAa,EAAE,IAAA,EAAM,SAAS,WAAA,EAAa,GAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAEzH,CAAC;AAEM,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AAChF,EAAA,uBAAOA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,qBAAA,EAAuB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC5E;AAGO,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAoC;AAClF,EAAA,uBAAOA,eAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,mBAAA,EAAqB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC3E;AAEO,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAuC;AACnF,EAAA,uBAAOA,eAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,+CAAA,EAAiD,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACrG;AAEO,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,GAAG,OAAM,EAAyC;AAC3F,EAAA,uBAAOA,eAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,UAAA,EAAY,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC/D;AAEO,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AACjF,EAAA,uBAAOA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,MAAA,EAAQ,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC7D;AAEO,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AAChF,EAAA,uBAAOA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,wCAAA,EAA0C,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC/F;AC1CA,IAAM,SAAA,GAAY;AAAA,EACd,2FAAA;AAAA,EACA,iFAAA;AAAA,EACA,4GAAA;AAAA,EACA,iDAAA;AAAA,EACA;AACJ,CAAA;AAEO,IAAM,KAAA,GAAQC,gBAAAA,CAAoE,SAASS,MAAAA,CAC9F,EAAE,SAAA,EAAW,IAAA,GAAO,MAAA,EAAQ,GAAG,KAAA,EAAM,EACrC,GAAA,EACF;AACE,EAAA,uBAAOV,cAAAA,CAAC,OAAA,EAAA,EAAM,GAAA,EAAU,MAAY,SAAA,EAAQ,OAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,aAAA,EAAe,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACvH,CAAC;AAEM,IAAM,QAAA,GAAWC,gBAAAA;AAAA,EACpB,SAASU,SAAAA,CAAS,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,EAAK;AAC5C,IAAA,uBACIX,cAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACG,GAAA;AAAA,QACA,SAAA,EAAQ,UAAA;AAAA,QACR,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,sCAAA,EAAwC,SAAS,CAAA;AAAA,QACzE,GAAG;AAAA;AAAA,KACR;AAAA,EAER;AACJ;AAEO,IAAM,KAAA,GAAQC,iBAGnB,SAASW,MAAAA,CAAM,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAC3C,EAAA,uBACIZ,cAAAA;AAAA,IAAgBa,yBAAA,CAAA,IAAA;AAAA,IAAf;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,kDAAA,EAAoD,SAAS,CAAA;AAAA,MAC1E,GAAG;AAAA;AAAA,GACR;AAER,CAAC;AAgBM,SAAS,KAAA,CAAM,EAAE,KAAA,EAAO,IAAA,EAAM,OAAO,QAAA,EAAU,SAAA,EAAW,WAAU,EAAe;AACtF,EAAA,MAAM,KAAKC,WAAA,EAAM;AACjB,EAAA,MAAM,MAAA,GAAS,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA,KAAA,CAAA,GAAU,MAAA;AACrC,EAAA,MAAM,OAAA,GAAU,KAAA,GAAQ,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AACxC,EAAA,MAAM,WAAA,GAAc,CAAC,MAAA,EAAQ,OAAO,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AACnE,EAAA,MAAM,OAAA,GAAUC,oBAAA,CAAe,QAAQ,CAAA,GACjCC,mBAAa,QAAA,EAAmD;AAAA,IAC5D,EAAA;AAAA,IACA,kBAAA,EAAoB,WAAA;AAAA,IACpB,cAAA,EAAgB,QAAQ,IAAA,GAAO;AAAA,GAClC,CAAA,GACD,QAAA;AACN,EAAA,uBACIjB,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EAC/C,QAAA,EAAA;AAAA,oBAAAC,cAAAA,CAAC,SAAM,OAAA,EAAS,EAAA,EAAI,WAAW,SAAA,GAAY,SAAA,GAAY,QAClD,QAAA,EAAA,KAAA,EACL,CAAA;AAAA,IACC,IAAA,mBACGA,cAAAA,CAAC,GAAA,EAAA,EAAE,IAAI,MAAA,EAAQ,SAAA,EAAU,qDAAA,EACpB,QAAA,EAAA,IAAA,EACL,CAAA,GACA,IAAA;AAAA,IACH,OAAA;AAAA,IACA,KAAA,mBACGA,cAAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,gDAAA,EAClC,QAAA,EAAA,KAAA,EACL,CAAA,GACA;AAAA,GAAA,EACR,CAAA;AAER;AAIO,IAAM,MAAA,GAAyBiB,0BAAA,CAAA;AAC/B,IAAM,WAAA,GAA8BA,0BAAA,CAAA;AACpC,IAAM,WAAA,GAA8BA,0BAAA,CAAA;AAEpC,IAAM,aAAA,GAAgBhB,gBAAAA,CAG3B,SAASiB,cAAAA,CAAc,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAC7D,EAAA,uBACInB,eAAAA;AAAA,IAAiBkB,0BAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,+DAAA,EAAiE,SAAS,CAAA;AAAA,MAClG,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAjB,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,QAAA,EAAS,CAAA;AAAA,wBACrCA,cAAAA,CAAiBiB,0BAAA,CAAA,IAAA,EAAhB,EAAqB,OAAA,EAAO,IAAA,EACzB,QAAA,kBAAAjB,cAAAA,CAACmB,uBAAA,EAAA,EAAY,SAAA,EAAU,uCAAA,EAAwC,CAAA,EACnE;AAAA;AAAA;AAAA,GACJ;AAER,CAAC;AAEM,IAAM,aAAA,GAAgBlB,gBAAAA,CAG3B,SAASmB,cAAAA,CAAc,EAAE,SAAA,EAAW,QAAA,EAAU,QAAA,GAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAClF,EAAA,uBACIpB,cAAAA,CAAiBiB,0BAAA,CAAA,MAAA,EAAhB,EACG,QAAA,kBAAAjB,cAAAA;AAAA,IAAiBiB,0BAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACG,GAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA,EAAY,CAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACP,kOAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAjB,cAAAA,CAAiBiB,0BAAA,CAAA,QAAA,EAAhB,EAA0B,QAAA,EAAS;AAAA;AAAA,GACxC,EACJ,CAAA;AAER,CAAC;AAEM,IAAM,UAAA,GAAahB,gBAAAA,CAGxB,SAASoB,WAAAA,CAAW,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAC1D,EAAA,uBACItB,eAAAA;AAAA,IAAiBkB,0BAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,+GAAA;AAAA,QACA,yDAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAjB,cAAAA,CAAiBiB,0BAAA,CAAA,QAAA,EAAhB,EAA0B,QAAA,EAAS,CAAA;AAAA,wBACpCjB,cAAAA,CAAiBiB,0BAAA,CAAA,aAAA,EAAhB,EAA8B,SAAA,EAAU,kBAAA,EACrC,QAAA,kBAAAjB,cAAAA,CAACsB,iBAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,CAAA,EAC9B;AAAA;AAAA;AAAA,GACJ;AAER,CAAC;AAIM,IAAM,QAAA,GAAWrB,iBAGtB,SAASsB,SAAAA,CAAS,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAC9C,EAAA,uBACIvB,cAAAA;AAAA,IAAmBwB,4BAAA,CAAA,IAAA;AAAA,IAAlB;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,wGAAA;AAAA,QACA,yGAAA;AAAA,QACA,kHAAA;AAAA,QACA,iDAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAxB,cAAAA,CAAmBwB,4BAAA,CAAA,SAAA,EAAlB,EACG,QAAA,kBAAAxB,cAAAA,CAACsB,iBAAA,EAAA,EAAM,SAAA,EAAU,UAAA,EAAW,WAAA,EAAa,CAAA,EAAG,CAAA,EAChD;AAAA;AAAA,GACJ;AAER,CAAC;AAEM,IAAM,MAAA,GAASrB,iBAGpB,SAASwB,OAAAA,CAAO,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAC5C,EAAA,uBACIzB,cAAAA;AAAA,IAAiB0B,0BAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,uGAAA;AAAA,QACA,yGAAA;AAAA,QACA,+EAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA1B,cAAAA,CAAiB0B,0BAAA,CAAA,KAAA,EAAhB,EAAsB,WAAU,0HAAA,EAA2H;AAAA;AAAA,GAChK;AAER,CAAC;AAEM,IAAM,UAAA,GAAazB,iBAGxB,SAAS0B,WAAAA,CAAW,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAChD,EAAA,uBAAO3B,cAAAA,CAAqB4B,8BAAA,CAAA,IAAA,EAApB,EAAyB,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAClG,CAAC;AAEM,IAAM,cAAA,GAAiB3B,iBAG5B,SAAS4B,eAAAA,CAAe,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACpD,EAAA,uBACI7B,cAAAA;AAAA,IAAqB4B,8BAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,kGAAA;AAAA,QACA,uFAAA;AAAA,QACA,qFAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA5B,cAAAA,CAAqB4B,8BAAA,CAAA,SAAA,EAApB,EAA8B,WAAU,wCAAA,EAAyC;AAAA;AAAA,GACtF;AAER,CAAC;AC7OM,IAAM,MAAA,GAAyBE,0BAAA,CAAA;AAC/B,IAAM,aAAA,GAAgCA,0BAAA,CAAA;AACtC,IAAM,WAAA,GAA8BA,0BAAA,CAAA;AAE3C,IAAM,YAAA,GACF,+GAAA;AAEG,IAAM,aAAA,GAAgB7B,gBAAAA,CAG3B,SAAS8B,cAAAA,CAAc,EAAE,SAAA,EAAW,QAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACxE,EAAA,uBACIhC,eAAAA,CAAiB+B,0BAAA,CAAA,MAAA,EAAhB,EACG,QAAA,EAAA;AAAA,oBAAA9B,cAAAA,CAAiB8B,0BAAA,CAAA,OAAA,EAAhB,EAAwB,SAAA,EAAW,YAAA,EAAc,CAAA;AAAA,oBAClD/B,eAAAA;AAAA,MAAiB+B,0BAAA,CAAA,OAAA;AAAA,MAAhB;AAAA,QACG,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACP,oGAAA;AAAA,UACA,4HAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACJ;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,SAAA,GAAY,uBACT9B,cAAAA;AAAA,YAAiB8B,0BAAA,CAAA,KAAA;AAAA,YAAhB;AAAA,cACG,SAAA,EAAU,kKAAA;AAAA,cACV,YAAA,EAAW,OAAA;AAAA,cAEX,QAAA,kBAAA9B,cAAAA,CAACgC,aAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AAC1B;AAAA;AAAA;AAER,GAAA,EACJ,CAAA;AAER,CAAC;AAEM,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AAClF,EAAA,uBAAOhC,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,+BAAA,EAAiC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACtF;AAEO,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AAClF,EAAA,uBAAOA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,6DAAA,EAA+D,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACpH;AAEO,IAAM,WAAA,GAAcC,iBAGzB,SAASgC,YAAAA,CAAY,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACjD,EAAA,uBACIjC,cAAAA;AAAA,IAAiB8B,0BAAA,CAAA,KAAA;AAAA,IAAhB;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,4DAAA,EAA8D,SAAS,CAAA;AAAA,MACpF,GAAG;AAAA;AAAA,GACR;AAER,CAAC;AAEM,IAAM,iBAAA,GAAoB7B,iBAG/B,SAASiC,kBAAAA,CAAkB,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACvD,EAAA,uBAAOlC,cAAAA,CAAiB8B,0BAAA,CAAA,WAAA,EAAhB,EAA4B,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACnG,CAAC;AAIM,IAAM,KAAA,GAAwBA,0BAAA,CAAA;AAC9B,IAAM,YAAA,GAA+BA,0BAAA,CAAA;AACrC,IAAM,UAAA,GAA6BA,0BAAA,CAAA;AACnC,IAAM,UAAA,GAAa;AACnB,IAAM,gBAAA,GAAmB;AAEhC,IAAM,SAAA,GAAY;AAAA,EACd,KAAA,EAAO,uDAAA;AAAA,EACP,IAAA,EAAM,sDAAA;AAAA,EACN,MAAA,EAAQ;AACZ,CAAA;AAEO,IAAM,YAAA,GAAe7B,gBAAAA,CAG1B,SAASkC,aAAAA,CAAa,EAAE,SAAA,EAAW,QAAA,EAAU,IAAA,GAAO,OAAA,EAAS,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAC5E,EAAA,uBACIpC,eAAAA,CAAiB+B,0BAAA,CAAA,MAAA,EAAhB,EACG,QAAA,EAAA;AAAA,oBAAA9B,cAAAA,CAAiB8B,0BAAA,CAAA,OAAA,EAAhB,EAAwB,SAAA,EAAW,YAAA,EAAc,CAAA;AAAA,oBAClD/B,eAAAA;AAAA,MAAiB+B,0BAAA,CAAA,OAAA;AAAA,MAAhB;AAAA,QACG,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACP,6IAAA;AAAA,UACA,UAAU,IAAI,CAAA;AAAA,UACd;AAAA,SACJ;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,0BACD9B,cAAAA;AAAA,YAAiB8B,0BAAA,CAAA,KAAA;AAAA,YAAhB;AAAA,cACG,SAAA,EAAU,gJAAA;AAAA,cACV,YAAA,EAAW,OAAA;AAAA,cAEX,QAAA,kBAAA9B,cAAAA,CAACgC,aAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AAC1B;AAAA;AAAA;AACJ,GAAA,EACJ,CAAA;AAER,CAAC;AAIM,IAAM,OAAA,GAA2BI,2BAAA,CAAA;AACjC,IAAM,cAAA,GAAkCA,2BAAA,CAAA;AACxC,IAAM,aAAA,GAAiCA,2BAAA,CAAA;AAEvC,IAAM,cAAA,GAAiBnC,gBAAAA,CAG5B,SAASoC,eAAAA,CAAe,EAAE,SAAA,EAAW,KAAA,GAAQ,QAAA,EAAU,UAAA,GAAa,CAAA,EAAG,GAAG,KAAA,IAAS,GAAA,EAAK;AACtF,EAAA,uBACIrC,cAAAA,CAAkBoC,2BAAA,CAAA,MAAA,EAAjB,EACG,QAAA,kBAAApC,cAAAA;AAAA,IAAkBoC,2BAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACG,GAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,2HAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR,EACJ,CAAA;AAER,CAAC;AAIM,IAAM,eAAA,GAAmCE,2BAAA,CAAA;AACzC,IAAM,OAAA,GAA2BA,2BAAA,CAAA;AACjC,IAAM,cAAA,GAAkCA,2BAAA,CAAA;AAExC,IAAM,cAAA,GAAiBrC,gBAAAA,CAG5B,SAASsC,eAAAA,CAAe,EAAE,SAAA,EAAW,UAAA,GAAa,CAAA,EAAG,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACpE,EAAA,uBACIvC,cAAAA,CAAkBsC,2BAAA,CAAA,MAAA,EAAjB,EACG,QAAA,kBAAAtC,cAAAA;AAAA,IAAkBsC,2BAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACG,GAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,0HAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR,EACJ,CAAA;AAER,CAAC;AAIM,IAAM,YAAA,GAAqCE,gCAAA,CAAA;AAC3C,IAAM,mBAAA,GAA4CA,gCAAA,CAAA;AAClD,IAAM,iBAAA,GAA0CA,gCAAA,CAAA;AAEhD,IAAM,mBAAA,GAAsBvC,gBAAAA,CAGjC,SAASwC,oBAAAA,CAAoB,EAAE,SAAA,EAAW,UAAA,GAAa,CAAA,EAAG,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACzE,EAAA,uBACIzC,cAAAA,CAAuBwC,gCAAA,CAAA,MAAA,EAAtB,EACG,QAAA,kBAAAxC,cAAAA;AAAA,IAAuBwC,gCAAA,CAAA,OAAA;AAAA,IAAtB;AAAA,MACG,GAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,oIAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR,EACJ,CAAA;AAER,CAAC;AAEM,IAAM,gBAAA,GAAmBvC,gBAAAA,CAG9B,SAASyC,iBAAAA,CAAiB,EAAE,WAAW,WAAA,EAAa,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACnE,EAAA,uBACI1C,cAAAA;AAAA,IAAuBwC,gCAAA,CAAA,IAAA;AAAA,IAAtB;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,yGAAA;AAAA,QACA,sGAAA;AAAA,QACA,WAAA,IAAe,2CAAA;AAAA,QACf;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER,CAAC;AAEM,IAAM,iBAAA,GAAoBvC,iBAG/B,SAAS0C,kBAAAA,CAAkB,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACvD,EAAA,uBACI3C,cAAAA;AAAA,IAAuBwC,gCAAA,CAAA,KAAA;AAAA,IAAtB;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,yDAAA,EAA2D,SAAS,CAAA;AAAA,MACjF,GAAG;AAAA;AAAA,GACR;AAER,CAAC;AAEM,IAAM,qBAAA,GAAwBvC,iBAGnC,SAAS2C,sBAAAA,CAAsB,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAC3D,EAAA,uBAAO5C,cAAAA,CAAuBwC,gCAAA,CAAA,SAAA,EAAtB,EAAgC,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACpH,CAAC;AC7ND,IAAM,WAAA,GAAcK,oBAAwB,MAAM,CAAA;AAE3C,IAAM,IAAA,GAAO5C,gBAAAA,CAGlB,SAAS6C,KAAAA,CAAK,EAAE,OAAO,MAAA,EAAQ,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAC9C,EAAA,uBACI9C,cAAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EAAO,IAAA,EACzB,QAAA,kBAAAA,cAAAA,CAAe+C,wBAAA,CAAA,IAAA,EAAd,EAAmB,GAAA,EAAW,GAAG,OAAO,CAAA,EAC7C,CAAA;AAER,CAAC;AAEM,IAAM,QAAA,GAAW9C,iBAGtB,SAAS+C,SAAAA,CAAS,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAC9C,EAAA,MAAM,IAAA,GAAOC,iBAAW,WAAW,CAAA;AACnC,EAAA,uBACIjD,cAAAA;AAAA,IAAe+C,wBAAA,CAAA,IAAA;AAAA,IAAd;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,IAAA,KAAS,SACH,qFAAA,GACA,2EAAA;AAAA,QACN;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER,CAAC;AAEM,IAAM,WAAA,GAAc9C,iBAGzB,SAASiD,YAAAA,CAAY,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACjD,EAAA,MAAM,IAAA,GAAOD,iBAAW,WAAW,CAAA;AACnC,EAAA,uBACIjD,cAAAA;AAAA,IAAe+C,wBAAA,CAAA,OAAA;AAAA,IAAd;AAAA,MACG,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACP,0HAAA;AAAA,QACA,+FAAA;AAAA,QACA,IAAA,KAAS,SACH,iKAAA,GACA,iKAAA;AAAA,QACN;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER,CAAC;AAEM,IAAM,WAAA,GAAc9C,iBAGzB,SAASkD,YAAAA,CAAY,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACjD,EAAA,uBAAOnD,cAAAA,CAAe+C,wBAAA,CAAA,OAAA,EAAd,EAAsB,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACtG,CAAC;AC1DD,IAAM,GAAA,GAAM,2BAAA;AACZ,IAAM,IAAA,GAAO,iBAAA;AACb,IAAM,KAAA,GAAQ,mBAAA;AAEP,IAAM,aAAa,EAAE,GAAA,EAAK,WAAW,IAAA,EAAM,SAAA,EAAW,OAAO,SAAA;AAS7D,SAAS,KAAK,EAAE,KAAA,EAAO,MAAM,SAAA,EAAW,GAAG,MAAK,EAAc;AACjE,EAAA,uBACIhD,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,OAAA,EAAQ,UAAA;AAAA,MACR,KAAA,EAAO,IAAA;AAAA,MACP,MAAA,EAAQ,IAAA,GAAO,IAAA,GAAO,CAAA,GAAI,MAAA;AAAA,MAC1B,IAAA,EAAM,QAAQ,KAAA,GAAQ,MAAA;AAAA,MACtB,aAAA,EAAa,QAAQ,MAAA,GAAY,IAAA;AAAA,MACjC,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,MAClC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,KAAA,mBAAQC,cAAAA,CAAC,OAAA,EAAA,EAAO,QAAA,EAAA,KAAA,EAAM,CAAA,GAAW,IAAA;AAAA,wBAClCA,cAAAA,CAAC,SAAA,EAAA,EAAQ,QAAQ,IAAA,EAAM,IAAA,EAAM,WAAW,IAAA,EAAM,CAAA;AAAA,wBAC9CA,cAAAA,CAAC,SAAA,EAAA,EAAQ,QAAQ,KAAA,EAAO,IAAA,EAAM,WAAW,KAAA,EAAO,CAAA;AAAA,wBAChDA,cAAAA,CAAC,SAAA,EAAA,EAAQ,QAAQ,GAAA,EAAK,IAAA,EAAM,WAAW,GAAA,EAAK;AAAA;AAAA;AAAA,GAChD;AAER;AAQO,SAAS,OAAA,CAAQ,EAAE,KAAA,EAAO,IAAA,GAAO,IAAI,SAAA,EAAW,GAAG,MAAK,EAAiB;AAC5E,EAAA,uBACID,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,OAAA,EAAQ,WAAA;AAAA,MACR,KAAA,EAAO,IAAA;AAAA,MACP,MAAA,EAAQ,IAAA;AAAA,MACR,IAAA,EAAM,QAAQ,KAAA,GAAQ,MAAA;AAAA,MACtB,aAAA,EAAa,QAAQ,MAAA,GAAY,IAAA;AAAA,MACjC,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,MAClC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,KAAA,mBAAQC,cAAAA,CAAC,OAAA,EAAA,EAAO,QAAA,EAAA,KAAA,EAAM,CAAA,GAAW,IAAA;AAAA,wBAClCA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACG,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,EAAA,EAAG,MAAA;AAAA,YACH,KAAA,EAAO,EAAE,IAAA,EAAM,+BAAA,EAAiC,QAAQ,mCAAA,EAAoC;AAAA,YAC5F,WAAA,EAAY;AAAA;AAAA,SAChB;AAAA,wBACAD,eAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAA,EACT,QAAA,EAAA;AAAA,0BAAAC,eAAC,SAAA,EAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,WAAW,IAAA,EAAM,CAAA;AAAA,0BAC9CA,cAAAA,CAAC,SAAA,EAAA,EAAQ,QAAQ,KAAA,EAAO,IAAA,EAAM,WAAW,KAAA,EAAO,CAAA;AAAA,0BAChDA,cAAAA,CAAC,SAAA,EAAA,EAAQ,QAAQ,GAAA,EAAK,IAAA,EAAM,WAAW,GAAA,EAAK;AAAA,SAAA,EAChD;AAAA;AAAA;AAAA,GACJ;AAER;AAWO,SAAS,OAAO,EAAE,IAAA,GAAO,eAAe,IAAA,GAAO,EAAA,EAAI,WAAU,EAAgB;AAChF,EAAA,uBACID,eAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACG,SAAA,EAAW,EAAA,CAAG,yDAAA,EAA2D,SAAS,CAAA;AAAA,MAClF,OAAO,EAAE,GAAA,EAAK,OAAO,IAAA,EAAM,QAAA,EAAU,OAAO,IAAA,EAAK;AAAA,MAEjD,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,WAAQ,IAAA,EAAY,CAAA;AAAA,wBACrBA,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA;AAAA,GAChB;AAER;ACnFO,IAAM,eAAA,GACT;AAeG,SAAS,cAAA,CAAe,EAAE,GAAA,EAAK,GAAA,EAAK,OAAA,GAAU,OAAO,KAAA,GAAQ,KAAA,EAAO,SAAA,EAAW,KAAA,EAAM,EAAwB;AAChH,EAAA,uBACID,gBAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,+BAAA,EAAiC,SAAS,GAAG,KAAA,EAC3D,QAAA,EAAA;AAAA,IAAA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKGC,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACG,aAAA,EAAW,IAAA;AAAA,UACX,SAAA,EAAU;AAAA;AAAA;AACd,QACA,IAAA;AAAA,oBACJA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACG,SAAA,EAAW,EAAA,CAAG,iDAAA,EAAmD,KAAA,IAAS,mBAAmB,CAAA;AAAA,QAC7F,KAAA,EAAO,EAAE,UAAA,EAAY,eAAA,EAAgB;AAAA,QAGrC,QAAA,kBAAAA,eAAC,KAAA,EAAA,EAAI,GAAA,EAAU,KAAU,SAAA,EAAU,wCAAA,EAAyC,WAAW,KAAA,EAAO;AAAA;AAAA;AAClG,GAAA,EACJ,CAAA;AAER;ACnCO,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,GAAA,EAAK,MAAA,GAAS,OAAO,MAAA,GAAS,IAAA,EAAM,KAAA,EAAO,SAAA,EAAU,EAAkB;AACrG,EAAA,uBACID,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,uBAAA,EAAyB,MAAA,IAAU,oBAAA,EAAsB,SAAS,CAAA,EAAG,KAAA,EAAO,EAAE,KAAA,EAAO,MAAK,EACzG,QAAA,EAAA;AAAA,oBAAAC,cAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAY,KAAA,EAAc,WAAU,qBAAA,EAAsB,CAAA;AAAA,IAC/D,yBACGA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACG,aAAA,EAAW,IAAA;AAAA,QACX,SAAA,EAAU,gEAAA;AAAA,QACV,KAAA,EAAO,EAAE,MAAA,EAAQ,IAAA,GAAO,IAAA,EAAM,QAAQ,CAAC,IAAA,GAAO,IAAA,EAAM,UAAA,EAAY,uBAAA;AAAwB;AAAA,KAC5F,GACA;AAAA,GAAA,EACR,CAAA;AAER;ACvBO,SAAS,QAAQ,EAAE,SAAA,EAAW,KAAA,EAAO,GAAG,OAAM,EAA+D;AAChH,EAAA,uBAAOA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,KAAA,IAAS,sBAAA,EAAwB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACnG;AAWO,SAAS,OAAA,CAAQ,EAAE,KAAA,GAAQ,CAAA,EAAG,IAAI,SAAA,EAAW,GAAG,OAAM,EAAiB;AAC1E,EAAA,MAAM,GAAA,GAAM,EAAA,IAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAC5B,EAAA,OAAOoD,mBAAA,CAAc,GAAA,EAAK,EAAE,SAAA,EAAW,EAAA,CAAG,CAAA,YAAA,EAAe,KAAK,CAAA,CAAA,EAAI,SAAS,CAAA,EAAG,GAAG,KAAA,EAAO,CAAA;AAC5F;AAIO,SAAS,MAAA,CAAO,EAAE,QAAA,EAAU,SAAA,EAAU,EAAgD;AACzF,EAAA,uBAAOpD,eAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,yBAAA,EAA2B,SAAS,GAAI,QAAA,EAAS,CAAA;AAChF;AAEO,SAAS,IAAA,CAAK,EAAE,SAAA,EAAW,GAAG,OAAM,EAAyC;AAChF,EAAA,uBAAOA,eAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,wBAAA,EAA0B,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC7E;AAGO,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAyC;AACpF,EAAA,uBAAOA,eAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,wCAAA,EAA0C,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC7F;AAGO,SAAS,KAAA,CAAM,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AAC3E,EAAA,uBACIA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,SAAA,EAAW,EAAA;AAAA,QACP,oEAAA;AAAA,QACA,sEAAA;AAAA,QACA,kEAAA;AAAA,QACA,8DAAA;AAAA,QACA,0HAAA;AAAA,QACA,iFAAA;AAAA,QACA;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;AC1CO,IAAM,eAAA,GAAkBK,2BAAI,iCAAA,EAAmC;AAAA,EAClE,QAAA,EAAU;AAAA,IACN,IAAA,EAAM;AAAA,MACF,MAAA,EAAQ,+BAAA;AAAA,MACR,IAAA,EAAM,8BAAA;AAAA,MACN,GAAA,EAAK,oCAAA;AAAA,MACL,KAAA,EAAO;AAAA,KACX;AAAA,IACA,KAAA,EAAO;AAAA,MACH,IAAA,EAAM,EAAA;AAAA,MACN,EAAA,EAAI,gBAAA;AAAA,MACJ,EAAA,EAAI,aAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACR,GACJ;AAAA,EACA,eAAA,EAAiB,EAAE,IAAA,EAAM,QAAA,EAAU,OAAO,IAAA;AAC9C,CAAC;AAOM,SAAS,OAAA,CAAQ,EAAE,IAAA,EAAM,KAAA,EAAO,SAAA,GAAY,MAAM,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAiB;AACpG,EAAA,uBACIL,eAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,eAAA,CAAgB,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EACpE,QAAA,EAAA,SAAA,mBAAYA,cAAAA,CAAC,SAAI,SAAA,EAAU,eAAA,EAAiB,QAAA,EAAS,CAAA,GAAS,QAAA,EACnE,CAAA;AAER;AAEO,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AAC/E,EAAA,uBAAOA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,eAAA,EAAiB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACtE;AAGO,SAAS,YAAA,CAAa;AAAA,EACzB,SAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR,GAAG;AACP,CAAA,EAAoE;AAChE,EAAA,uBACIA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,SAAA,EAAW,EAAA;AAAA,QACP,8BAAA;AAAA,QACA,UAAU,QAAA,IAAY,kCAAA;AAAA,QACtB;AAAA,OACJ;AAAA,MACC,GAAG;AAAA;AAAA,GACR;AAER;ACrCA,IAAM,GAAA,GAAM,CAAC,CAAA,KAAc,MAAA,CAAO,IAAI,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AAEjD,SAAS,SAAS,EAAE,KAAA,EAAO,IAAA,GAAO,OAAA,EAAS,WAAU,EAAkB;AAC1E,EAAA,MAAM,IAAA,GAAO,MAAM,MAAA,IAAU,CAAA,GAAI,mBAAmB,KAAA,CAAM,MAAA,KAAW,IAAI,gBAAA,GAAmB,EAAA;AAC5F,EAAA,uBACIA,eAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,qBAAA,EAAuB,IAAA,EAAM,SAAS,CAAA,EACnD,QAAA,EAAA,KAAA,CAAM,GAAA;AAAA,IAAI,CAAC,IAAI,CAAA,KACZ,IAAA,KAAS,0BACLD,eAAAA,CAAC,IAAA,EAAA,EAAW,SAAA,EAAU,0BAAA,EAClB,QAAA,EAAA;AAAA,sBAAAC,eAAC,WAAA,EAAA,EAAa,QAAA,EAAA,EAAA,CAAG,OAAA,IAAW,GAAA,CAAI,CAAC,CAAA,EAAE,CAAA;AAAA,sBACnCD,eAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,cAAA,EAChB,QAAA,EAAA;AAAA,QAAA,EAAA,CAAG,KAAA;AAAA,QACH,GAAG,KAAA,mBAAQC,eAAC,KAAA,EAAA,EAAO,QAAA,EAAA,EAAA,CAAG,OAAM,CAAA,GAAW;AAAA,OAAA,EAC5C,CAAA;AAAA,sBACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EAA6B,aAAG,IAAA,EAAK;AAAA,KAAA,EAAA,EAN/C,CAOT,CAAA,GACA,IAAA,KAAS,KAAA,mBACTA,cAAAA,CAAC,IAAA,EAAA,EACG,QAAA,kBAAAD,eAAAA,CAAC,QAAK,IAAA,EAAK,KAAA,EAAM,OAAA,EAAQ,IAAA,EAAK,WAAU,QAAA,EACpC,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,oBAAA,EAChB,QAAA,EAAA;AAAA,QAAA,EAAA,CAAG,KAAA;AAAA,QACH,EAAA,CAAG,wBAAQC,cAAAA,CAAC,SAAM,IAAA,EAAK,OAAA,EAAS,QAAA,EAAA,EAAA,CAAG,KAAA,EAAM,CAAA,GAAW;AAAA,OAAA,EACzD,CAAA;AAAA,sBACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDAAA,EAAuD,aAAG,IAAA,EAAK;AAAA,KAAA,EAClF,CAAA,EAAA,EAPK,CAQT,CAAA,mBAEAA,cAAAA,CAAC,IAAA,EAAA,EACG,QAAA,kBAAAD,eAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,IAAA,EAAK,SAAA,EAAU,4BAAA,EACzB,QAAA,EAAA;AAAA,sBAAAC,eAAC,WAAA,EAAA,EAAa,QAAA,EAAA,EAAA,CAAG,OAAA,IAAW,GAAA,CAAI,CAAC,CAAA,EAAE,CAAA;AAAA,sBACnCD,gBAAC,SAAA,EAAA,EACI,QAAA,EAAA;AAAA,QAAA,EAAA,CAAG,KAAA;AAAA,QACH,GAAG,KAAA,mBAAQC,eAAC,KAAA,EAAA,EAAO,QAAA,EAAA,EAAA,CAAG,OAAM,CAAA,GAAW;AAAA,OAAA,EAC5C,CAAA;AAAA,sBACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EAAY,aAAG,IAAA,EAAK;AAAA,KAAA,EACvC,KARK,CAST;AAAA,GAER,EACJ,CAAA;AAER;AChDA,IAAM,IAAA,GAAO;AAAA,EACT,OAAA,EAAS,uBAAA;AAAA,EACT,GAAA,EAAK,mBAAA;AAAA,EACL,IAAA,EAAM;AACV,CAAA;AAEO,SAAS,WAAA,CAAY,EAAE,KAAA,EAAO,SAAA,EAAU,EAAiD;AAC5F,EAAA,uBACIA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,SAAA,EAAW,EAAA;AAAA,QACP,sIAAA;AAAA,QACA;AAAA,OACJ;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,EAAI,CAAA,KAAM;AAElB,QAAA,MAAM,IAAA,mBAAOA,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,kBAAA,EAAoB,IAAA,CAAK,EAAA,CAAG,IAAA,IAAQ,SAAS,CAAC,CAAA,EAAI,aAAG,IAAA,EAAK,CAAA;AAC3F,QAAA,uBACID,eAAAA,CAAC,KAAA,EAAA,EAAY,SAAA,EAAU,+BAAA,EACnB,QAAA,EAAA;AAAA,0BAAAC,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,qEAAA,EAAuE,aAAG,KAAA,EAAM,CAAA;AAAA,UAC7F,EAAA,CAAG,IAAA,mBACAA,cAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,EAAA,CAAG,IAAA,EAAM,SAAA,EAAU,oFAAA,EACvB,QAAA,EAAA,IAAA,EACL,CAAA,GAEA,IAAA;AAAA,UAEH,GAAG,IAAA,mBACAD,eAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,sDAAA,EACT,QAAA,EAAA;AAAA,4BAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAW,IAAA,EAAE,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YACxB,EAAA,CAAG;AAAA,WAAA,EACR,CAAA,GACA;AAAA,SAAA,EAAA,EAdE,CAeV,CAAA;AAAA,MAER,CAAC;AAAA;AAAA,GACL;AAER;AAGO,SAAS,SAAA,CAAU;AAAA,EACtB,IAAA;AAAA,EACA,OAAA;AAAA,EACA;AACJ,CAAA,EAIG;AACC,EAAA,uBACID,eAAAA,CAAC,QAAA,EAAA,EAAO,WAAW,EAAA,CAAG,8EAAA,EAAgF,SAAS,CAAA,EAC1G,QAAA,EAAA;AAAA,IAAA,OAAA,mBACGC,cAAAA,CAAC,YAAA,EAAA,EAAW,SAAA,EAAU,6EAAA,EACjB,mBACL,CAAA,GACA,IAAA;AAAA,oBACJA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oFACX,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,EAAK,CAAA,EAChB;AAAA,GAAA,EACJ,CAAA;AAER;ACrEA,IAAM,KAAA,GAAqC;AAAA,EACvC,GAAA,EAAK,KAAA;AAAA,EACL,OAAA,EAAS,YAAA;AAAA,EACT,SAAA,EAAW,SAAA;AAAA,EACX,EAAA,EAAI;AACR,CAAA;AAEA,IAAM,IAAA,GAAoC;AAAA,EACtC,GAAA,EAAK,qBAAA;AAAA,EACL,OAAA,EAAS,iBAAA;AAAA,EACT,SAAA,EAAW,uBAAA;AAAA,EACX,EAAA,EAAI;AACR,CAAA;AAOO,SAAS,UAAA,CAAW;AAAA,EACvB,IAAA;AAAA,EACA,aAAA,GAAgB,QAAA;AAAA,EAChB,WAAA,GAAc,MAAA;AAAA,EACd;AACJ,CAAA,EAKG;AACC,EAAA,uBACIA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,8DAAA,EAAgE,SAAS,CAAA,EACxF,QAAA,kBAAAD,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,kEAAA,EACb,QAAA,EAAA;AAAA,oBAAAC,eAAC,OAAA,EAAA,EAAM,SAAA,EAAU,mBAAA,EACb,QAAA,kBAAAD,gBAAC,IAAA,EAAA,EACG,QAAA,EAAA;AAAA,sBAAAC,eAAC,IAAA,EAAA,EAAG,KAAA,EAAM,KAAA,EAAM,SAAA,EAAU,kFACrB,QAAA,EAAA,aAAA,EACL,CAAA;AAAA,sBACAA,cAAAA,CAAC,IAAA,EAAA,EAAG,OAAM,KAAA,EAAM,SAAA,EAAU,wEACrB,QAAA,EAAA,WAAA,EACL;AAAA,KAAA,EACJ,CAAA,EACJ,CAAA;AAAA,oBACAA,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,WACZ,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACVD,eAAAA,CAAC,IAAA,EAAA,EAAW,WAAU,WAAA,EAClB,QAAA,EAAA;AAAA,sBAAAC,cAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACG,SAAA,EAAW,EAAA;AAAA,YACP,2DAAA;AAAA,YACA,MAAM,CAAA,IAAK,YAAA;AAAA,YACX,IAAA,CAAK,EAAE,MAAM;AAAA,WACjB;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM,EAAE,MAAM;AAAA;AAAA,OACnB;AAAA,sBACAA,cAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACG,SAAA,EAAW,EAAA;AAAA,YACP,wEAAA;AAAA,YACA,MAAM,CAAA,IAAK;AAAA,WACf;AAAA,UAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA;AACP,KAAA,EAAA,EAjBK,CAkBT,CACH,CAAA,EACL;AAAA,GAAA,EACJ,CAAA,EACJ,CAAA;AAER;ACvEA,IAAM,GAAA,GAAM,IAAI,IAAA,CAAK,YAAA,CAAa,SAAS,EAAE,qBAAA,EAAuB,GAAG,CAAA;AACvE,IAAM,OAAA,GAAU,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,EAAE,QAAA,EAAU,SAAA,EAAW,qBAAA,EAAuB,CAAA,EAAG,CAAA;AAYzF,SAAS,QAAA,CAAS,KAAA,EAAkC,IAAA,GAAwB,EAAC,EAAkB;AAClG,EAAA,IAAI,SAAS,IAAA,IAAQ,CAAC,OAAO,QAAA,CAAS,KAAK,GAAG,OAAO,IAAA;AACrD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAC9B,EAAA,MAAM,IAAA,GAAA,CAAQ,KAAK,OAAA,GAAU,OAAA,GAAU,KAAK,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAA;AAClE,EAAA,MAAM,IAAA,GAAO,QAAQ,CAAA,GAAI,QAAA,GAAM,KAAK,MAAA,IAAU,KAAA,GAAQ,IAAI,GAAA,GAAM,EAAA;AAChE,EAAA,MAAM,IAAA,GAAO,KAAK,IAAA,KAAS,MAAA,GAAS,KAAK,KAAA,KAAU,CAAA,IAAK,KAAA,KAAU,EAAA,GAAK,MAAA,GAAS,OAAA;AAChF,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,IAAI,GAAG,IAAI,CAAA,CAAA;AAChC;AAQO,SAAS,IAAA,CAAK,EAAE,KAAA,EAAO,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,OAAA,GAAU,QAAA,EAAK,SAAA,EAAW,GAAG,KAAA,EAAM,EAAc;AAClG,EAAA,MAAM,OAAO,QAAA,CAAS,KAAA,EAAO,EAAE,IAAA,EAAM,OAAA,EAAS,QAAQ,CAAA;AACtD,EAAA,IAAI,SAAS,IAAA,EAAM;AACf,IAAA,uBACID,gBAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,mCAAA,EAAqC,SAAS,CAAA,EAAI,GAAG,KAAA,EACrE,QAAA,EAAA;AAAA,sBAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAW,IAAA,EAAE,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,sBAC3BA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,SAAA,EAAO;AAAA,KAAA,EACrC,CAAA;AAAA,EAER;AACA,EAAA,uBACIA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,iCAAiC,SAAS,CAAA,EAAI,GAAG,KAAA,EAChE,QAAA,EAAA,IAAA,EACL,CAAA;AAER;AAGO,SAAS,SAAA,CAAU;AAAA,EACtB,IAAA;AAAA,EACA,SAAA;AAAA,EACA;AACJ,CAAA,EAIG;AACC,EAAA,IAAI,IAAA,IAAQ,IAAA,IAAQ,SAAA,IAAa,IAAA,IAAQ,CAAC,MAAA,CAAO,QAAA,CAAS,IAAI,CAAA,IAAK,CAAC,MAAA,CAAO,QAAA,CAAS,SAAS,GAAG,OAAO,IAAA;AACvG,EAAA,MAAM,GAAA,GAAO,OAAO,GAAA,GAAO,SAAA;AAC3B,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS;AAAA,IACxC,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,KAAA;AAAA,IACV,qBAAA,EAAuB,GAAA,GAAM,CAAA,GAAI,CAAA,GAAI;AAAA,GACxC,CAAA,CAAE,MAAA,CAAO,GAAG,CAAA;AACb,EAAA,uBAAOD,eAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA,EAAG,QAAA,EAAA;AAAA,IAAA,SAAA;AAAA,IAAG;AAAA,GAAA,EAAK,CAAA;AACxF;AAGO,SAAS,UAAA,CAAW;AAAA,EACvB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA;AACJ,CAAA,EAKG;AACC,EAAA,uBACIA,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS,CAAA,EACjD,QAAA,EAAA;AAAA,oBAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EAA0C,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAChED,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EACZ,QAAA,EAAA;AAAA,sBAAAC,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAc,IAAA,EAAK,MAAA,EAAO,CAAA;AAAA,sBAChCA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2DAA0D,QAAA,EAAA,MAAA,EAAI;AAAA,KAAA,EAClF,CAAA;AAAA,IACC,uBAAOA,cAAAA,CAAC,UAAK,SAAA,EAAU,uCAAA,EAAyC,gBAAK,CAAA,GAAU;AAAA,GAAA,EACpF,CAAA;AAER;ACzFO,SAAS,UAAA,CAAW;AAAA,EACvB,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA;AACJ,CAAA,EAMG;AACC,EAAA,uBACID,eAAAA,CAAC,QAAA,EAAA,EAAO,WAAW,EAAA,CAAG,iEAAA,EAAmE,SAAS,CAAA,EAC9F,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACV,QAAA,EAAA;AAAA,MAAA,OAAA,mBAAUC,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,aAAA,EAAe,mBAAQ,CAAA,GAAO,IAAA;AAAA,sBACtDA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,iBAAiB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MACpC,8BAAcA,cAAAA,CAAC,OAAE,SAAA,EAAU,2BAAA,EAA6B,uBAAY,CAAA,GAAO;AAAA,KAAA,EAChF,CAAA;AAAA,IACC,0BAAUA,cAAAA,CAAC,SAAI,SAAA,EAAU,4CAAA,EAA8C,mBAAQ,CAAA,GAAS;AAAA,GAAA,EAC7F,CAAA;AAER;AAIO,SAAS,QAAA,CAAS;AAAA,EACrB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA;AACJ,CAAA,EAKG;AACC,EAAA,uBACID,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,+EAAA,EAAiF,SAAS,CAAA,EACzG,QAAA,EAAA;AAAA,oBAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uCAAA,EAAyC,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC/DA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+DAA+D,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACpF,uBAAOA,cAAAA,CAAC,UAAK,SAAA,EAAU,qDAAA,EAAuD,gBAAK,CAAA,GAAU;AAAA,GAAA,EAClG,CAAA;AAER;AAEO,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAmC;AAC9E,EAAA,uBAAOA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,gDAAA,EAAkD,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACvG;AAUO,SAAS,YAAA,CAAa,EAAE,KAAA,EAAO,SAAA,EAAU,EAAkD;AAC9F,EAAA,uBACIA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,yEAAyE,SAAS,CAAA,EAC/F,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,EAAI,CAAA,qBACZD,eAAAA,CAAC,KAAA,EAAA,EAAY,WAAU,wEAAA,EACnB,QAAA,EAAA;AAAA,oBAAAC,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,wDAAA,EAA0D,aAAG,KAAA,EAAM,CAAA;AAAA,oBACjFA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,sCAAA,EAAwC,EAAA,CAAG,IAAA,IAAQ,2BAA2B,CAAA,EAC3F,QAAA,EAAA,EAAA,CAAG,KAAA,EACR;AAAA,GAAA,EAAA,EAJM,CAKV,CACH,CAAA,EACL,CAAA;AAER;AAaO,SAAS,SAAA,CAAa;AAAA,EACzB,OAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACJ,CAAA,EAOG;AACC,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,IAAK,KAAA,yBAAcA,cAAAA,CAAAQ,mBAAAA,EAAA,EAAG,QAAA,EAAA,KAAA,EAAM,CAAA;AAChD,EAAA,uBACIR,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,gEAAA,EAAkE,SAAS,CAAA,EAC1F,QAAA,kBAAAD,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,mDAAA,EACZ,QAAA,EAAA;AAAA,IAAA,OAAA,mBAAUC,cAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAU,SAAA,EAAW,mBAAQ,CAAA,GAAa,IAAA;AAAA,oBAC9DA,cAAAA,CAAC,OAAA,EAAA,EACG,QAAA,kBAAAA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,wBAAA,EACT,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,qBACVA,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QAEG,KAAA,EAAM,KAAA;AAAA,QACN,SAAA,EAAW,EAAA;AAAA,UACP,gFAAA;AAAA,UACA,CAAA,CAAE,UAAU,KAAA,IAAS,YAAA;AAAA,UACrB,EAAE,IAAA,IAAQ;AAAA,SACd;AAAA,QAEC,QAAA,EAAA,CAAA,CAAE;AAAA,OAAA;AAAA,MARE,CAAA,CAAE;AAAA,KAUd,GACL,CAAA,EACJ,CAAA;AAAA,oBACAA,cAAAA,CAAC,OAAA,EAAA,EAAM,WAAU,wBAAA,EACZ,QAAA,EAAA,IAAA,CAAK,IAAI,CAAC,CAAA,EAAG,sBACVA,cAAAA,CAAC,QAAsB,SAAA,EAAU,sCAAA,EAC5B,kBAAQ,GAAA,CAAI,CAAC,sBACVA,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QAEG,SAAA,EAAW,EAAA;AAAA,UACP,0BAAA;AAAA,UACA,CAAA,CAAE,UAAU,KAAA,IAAS,YAAA;AAAA,UACrB,EAAE,IAAA,IAAQ;AAAA,SACd;AAAA,QAEC,QAAA,EAAA,CAAA,CAAE,KAAK,CAAC;AAAA,OAAA;AAAA,MAPJ,CAAA,CAAE;AAAA,KASd,CAAA,EAAA,EAZI,MAAA,CAAO,GAAG,CAAC,CAapB,CACH,CAAA,EACL;AAAA,GAAA,EACJ,CAAA,EACJ,CAAA;AAER;AAIO,SAAS,UAAA,CAAW;AAAA,EACvB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACJ,CAAA,EAKG;AACC,EAAA,uBACID,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,SAAA,EAAW,EAAA;AAAA,QACP,2HAAA;AAAA,QACA;AAAA,OACJ;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,EAAA,EAAI,CAAA;AAAA,wBAChBA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,gBAAgB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QACnC,2BAAWA,cAAAA,CAAC,SAAI,SAAA,EAAU,oCAAA,EAAsC,UAAS,CAAA,GAAS,IAAA;AAAA,QAClF,yBAASA,cAAAA,CAAC,SAAI,SAAA,EAAU,0CAAA,EAA4C,kBAAO,CAAA,GAAS;AAAA;AAAA;AAAA,GACzF;AAER;AAIA,IAAM,MAAA,GAAqC;AAAA,EACvC,OAAA,EAAS,uBAAA;AAAA,EACT,IAAA,EAAM,gHAAA;AAAA,EACN,OAAA,EACI,sHAAA;AAAA,EACJ,OAAA,EACI,sHAAA;AAAA,EACJ,MAAA,EACI,8HAAA;AAAA,EACJ,KAAA,EAAO;AACX,CAAA;AAEA,IAAM,YAAA,GAA2C;AAAA,EAC7C,OAAA,EAAS,iBAAA;AAAA,EACT,IAAA,EAAM,WAAA;AAAA,EACN,OAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS,cAAA;AAAA,EACT,MAAA,EAAQ,kBAAA;AAAA,EACR,KAAA,EAAO;AACX,CAAA;AAEO,SAAS,MAAA,CAAO;AAAA,EACnB,IAAA,GAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACJ,CAAA,EAMG;AACC,EAAA,uBACID,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,IAAA,EAAM,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,YAAY,OAAA,GAAU,MAAA;AAAA,MAC1D,SAAA,EAAW,EAAA;AAAA,QACP,gGAAA;AAAA,QACA,OAAO,IAAI,CAAA;AAAA,QACX;AAAA,OACJ;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EACV,QAAA,EAAA;AAAA,UAAA,KAAA,mBAAQC,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,8BAAA,EAAgC,YAAA,CAAa,IAAI,CAAC,CAAA,EAAI,QAAA,EAAA,KAAA,EAAM,CAAA,GAAO,IAAA;AAAA,UAC5F,2BAAWA,cAAAA,CAAC,SAAI,SAAA,EAAU,qDAAA,EAAuD,UAAS,CAAA,GAAS;AAAA,SAAA,EACxG,CAAA;AAAA,QACC,yBAASA,cAAAA,CAAC,SAAI,SAAA,EAAU,UAAA,EAAY,kBAAO,CAAA,GAAS;AAAA;AAAA;AAAA,GACzD;AAER;AAIA,SAAS,MAAA,CAAO,CAAA,EAAW,IAAA,EAAc,IAAA,EAAc;AACnD,EAAA,OAAO,EAAE,MAAA,IAAU,IAAA,GAAO,IAAA,GAAO,CAAA,GAAI,IAAI,CAAA,EAAG,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,IAAI,CAAC,CAAA,MAAA,EAAI,EAAE,KAAA,CAAM,CAAC,IAAI,CAAC,CAAA,CAAA;AAClF;AAEO,SAAS,OAAA,CAAQ,YAAY,IAAA,EAAM;AACtC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIqD,eAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAA,GAAIC,aAA6C,IAAI,CAAA;AAC3D,EAAAC,eAAA,CAAU,MAAM,MAAM;AAClB,IAAA,IAAI,CAAA,CAAE,OAAA,EAAS,YAAA,CAAa,CAAA,CAAE,OAAO,CAAA;AAAA,EACzC,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,MAAM,IAAA,GAAOC,iBAAA;AAAA,IACT,OAAO,IAAA,KAAiB;AACpB,MAAA,IAAI;AACA,QAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,IAAI,CAAA;AACxC,QAAA,SAAA,CAAU,IAAI,CAAA;AACd,QAAA,IAAI,CAAA,CAAE,OAAA,EAAS,YAAA,CAAa,CAAA,CAAE,OAAO,CAAA;AACrC,QAAA,CAAA,CAAE,UAAU,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,GAAG,SAAS,CAAA;AAAA,MAC5D,CAAA,CAAA,MAAQ;AACJ,QAAA,SAAA,CAAU,KAAK,CAAA;AAAA,MACnB;AAAA,IACJ,CAAA;AAAA,IACA,CAAC,SAAS;AAAA,GACd;AACA,EAAA,OAAO,EAAE,QAAQ,IAAA,EAAK;AAC1B;AAEO,SAAS,WAAW,EAAE,KAAA,EAAO,KAAA,GAAQ,MAAA,EAAQ,WAAU,EAA0D;AACpH,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAI,OAAA,EAAQ;AACjC,EAAA,uBACIzD,eAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACG,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAS,MAAM,KAAK,IAAA,CAAK,KAAK,CAAA;AAAA,MAC9B,YAAA,EAAY,SAAS,QAAA,GAAW,KAAA;AAAA,MAChC,SAAA,EAAW,EAAA;AAAA,QACP,oJAAA;AAAA,QACA;AAAA,OACJ;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,MAAA,mBAASC,cAAAA,CAACsB,iBAAAA,EAAA,EAAM,SAAA,EAAU,qBAAA,EAAsB,CAAA,mBAAKtB,cAAAA,CAACyD,gBAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,wBAC/EzD,eAAC,MAAA,EAAA,EAAK,WAAA,EAAU,UAAS,SAAA,EAAU,SAAA,EAC9B,QAAA,EAAA,MAAA,GAAS,QAAA,GAAW,EAAA,EACzB;AAAA;AAAA;AAAA,GACJ;AAER;AAIO,SAAS,QAAA,CAAS;AAAA,EACrB,KAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP,IAAA,GAAO,CAAA;AAAA,EACP,IAAA,GAAO,IAAA;AAAA,EACP,IAAA;AAAA,EACA;AACJ,CAAA,EAOG;AACC,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,EAAO,IAAA,EAAM,IAAI,CAAA;AACtC,EAAA,MAAM,IAAA,mBACFA,cAAAA,CAAC,MAAA,EAAA,EAAK,OAAO,KAAA,EAAO,SAAA,EAAU,6BACzB,QAAA,EAAA,KAAA,EACL,CAAA;AAEJ,EAAA,uBACID,eAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA,EACrE,QAAA,EAAA;AAAA,IAAA,IAAA,mBACGC,cAAAA,CAAC,GAAA,EAAA,EAAE,MAAY,SAAA,EAAU,4EAAA,EACpB,gBACL,CAAA,GAEA,IAAA;AAAA,IAEH,uBAAOA,cAAAA,CAAC,cAAW,KAAA,EAAc,KAAA,EAAM,mBAAkB,CAAA,GAAK;AAAA,GAAA,EACnE,CAAA;AAER;AAYO,SAAS,aAAA,CAAc,EAAE,KAAA,EAAO,SAAA,EAAU,EAAkD;AAC/F,EAAA,uBACIA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EAC7C,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACjB,IAAA,MAAM,IAAA,GAAO,CAAA,KAAM,KAAA,CAAM,MAAA,GAAS,CAAA;AAClC,IAAA,uBACID,eAAAA,CAAC,IAAA,EAAA,EAAW,SAAA,EAAU,oCAAA,EAAqC,gBAAc,CAAA,CAAE,KAAA,KAAU,SAAA,GAAY,MAAA,GAAS,MAAA,EACrG,QAAA,EAAA;AAAA,MAAA,CAAC,uBACEC,cAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACG,aAAA,EAAW,IAAA;AAAA,UACX,SAAA,EAAW,EAAA;AAAA,YACP,uDAAA;AAAA,YACA,CAAA,CAAE,KAAA,KAAU,MAAA,GAAS,kBAAA,GAAqB;AAAA;AAC9C;AAAA,OACJ,GACA,IAAA;AAAA,sBACJA,cAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACG,SAAA,EAAW,EAAA;AAAA,YACP,sHAAA;AAAA,YACA,CAAA,CAAE,UAAU,MAAA,IAAU,mDAAA;AAAA,YACtB,CAAA,CAAE,UAAU,SAAA,IAAa,0CAAA;AAAA,YACzB,CAAA,CAAE,UAAU,UAAA,IAAc,6CAAA;AAAA,YAC1B,CAAA,CAAE,UAAU,SAAA,IAAa;AAAA,WAC7B;AAAA,UAEC,YAAE,KAAA,KAAU,MAAA,mBAASA,cAAAA,CAACsB,iBAAAA,EAAA,EAAM,SAAA,EAAU,UAAA,EAAW,WAAA,EAAa,CAAA,EAAG,IAAK,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG;AAAA;AAAA,OACxG;AAAA,sBACAvB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EACX,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,CAAA,CAAE,KAAA,KAAU,UAAA,GAAa,uBAAA,GAA0B,aAAa,CAAA,EACnG,QAAA,EAAA,CAAA,CAAE,KAAA,EACP,CAAA;AAAA,QACC,CAAA,CAAE,uBAAOA,cAAAA,CAAC,UAAK,SAAA,EAAU,oDAAA,EAAsD,QAAA,EAAA,CAAA,CAAE,IAAA,EAAK,CAAA,GAAU;AAAA,OAAA,EACrG;AAAA,KAAA,EAAA,EA1BK,CA2BT,CAAA;AAAA,EAER,CAAC,CAAA,EACL,CAAA;AAER;AAYO,SAAS,YAAA,CAAa,EAAE,KAAA,EAAO,KAAA,EAAO,WAAU,EAAqE;AACxH,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,IAAK,KAAA,yBAAcA,cAAAA,CAAAQ,mBAAAA,EAAA,EAAG,QAAA,EAAA,KAAA,EAAM,CAAA;AACjD,EAAA,uBACIR,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,uEAAA,EAAyE,SAAS,CAAA,EAC/F,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,KAAO;AACf,IAAA,MAAM,IAAA,mBACFD,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mDAAA,EACX,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACX,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EAA6B,aAAG,KAAA,EAAM,CAAA;AAAA,QACrD,EAAA,CAAG,uBAAOA,cAAAA,CAAC,UAAK,SAAA,EAAU,iDAAA,EAAmD,QAAA,EAAA,EAAA,CAAG,IAAA,EAAK,CAAA,GAAU;AAAA,OAAA,EACpG,CAAA;AAAA,MACC,EAAA,CAAG,2BAAWA,cAAAA,CAAC,SAAI,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,EAAA,CAAG,QAAA,EAAS,CAAA,GAAS;AAAA,KAAA,EAC9E,CAAA;AAEJ,IAAA,uBACIA,cAAAA,CAAC,IAAA,EAAA,EACI,QAAA,EAAA,EAAA,CAAG,IAAA,mBACAA,cAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,EAAA,CAAG,MAAM,SAAA,EAAU,4CAAA,EACvB,gBACL,CAAA,GAEA,IAAA,EAAA,EANC,GAAG,EAQZ,CAAA;AAAA,EAER,CAAC,CAAA,EACL,CAAA;AAER;ACxYA,SAAS,OAAA,CAAQ,EAAE,IAAA,EAAM,SAAA,EAAW,YAAW,EAAmE;AAC9G,EAAA,MAAM,GAAA,GAAM,EAAA;AAAA,IACR,2DAAA;AAAA,IACA,IAAA,CAAK,SAAS,iBAAA,GAAoB,6CAAA;AAAA,IAClC;AAAA,GACJ;AACA,EAAA,IAAI,KAAK,QAAA,EAAU;AACf,IAAA,uBACIA,cAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,SAAA,EAAW,GAAA,EAAK,GAAA,EAAI,YAAA,EAAa,OAAA,EAAS,UAAA,EACzD,eAAK,KAAA,EACV,CAAA;AAAA,EAER;AACA,EAAA,uBACIA,cAAAA,CAAC0D,sBAAA,EAAA,EAAK,IAAA,EAAM,IAAA,CAAK,MAAM,SAAA,EAAW,GAAA,EAAK,cAAA,EAAc,IAAA,CAAK,SAAS,MAAA,GAAS,MAAA,EAAW,OAAA,EAAS,UAAA,EAC3F,eAAK,KAAA,EACV,CAAA;AAER;AAMO,SAAS,UAAA,CAAW;AAAA,EACvB,IAAA,GAAO,GAAA;AAAA,EACP,KAAA;AAAA,EACA,MAAM,EAAC;AAAA,EACP,OAAA;AAAA,EACA;AACJ,CAAA,EAMG;AACC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIL,eAAS,KAAK,CAAA;AACtC,EAAA,uBACIrD,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACG,SAAA,EAAW,EAAA;AAAA,QACP,oIAAA;AAAA,QACA;AAAA,OACJ;AAAA,MAEA,QAAA,kBAAAD,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0EAAA,EACX,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC0D,sBAAA,EAAA,EAAK,IAAA,EAAM,IAAA,EAAM,WAAU,sBAAA,EAAuB,YAAA,EAAW,MAAA,EACzD,QAAA,EAAA,KAAA,oBAAS1D,cAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,IAAI,CAAA,EAChC,CAAA;AAAA,QACC,GAAA,CAAI,SAAS,CAAA,mBACVA,eAAC,KAAA,EAAA,EAAI,YAAA,EAAW,MAAA,EAAO,SAAA,EAAU,mCAAA,EAC5B,QAAA,EAAA,GAAA,CAAI,IAAI,CAAC,CAAA,qBACNA,cAAAA,CAAC,OAAA,EAAA,EAAqB,IAAA,EAAM,KAAd,CAAA,CAAE,IAAe,CAClC,CAAA,EACL,CAAA,GACA,IAAA;AAAA,wBACJD,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACV,QAAA,EAAA;AAAA,UAAA,OAAA;AAAA,UACA,GAAA,CAAI,SAAS,CAAA,mBACVA,gBAAC,KAAA,EAAA,EAAM,IAAA,EAAY,cAAc,OAAA,EAC7B,QAAA,EAAA;AAAA,4BAAAC,cAAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACG,SAAA,EAAU,wGAAA;AAAA,gBACV,YAAA,EAAW,WAAA;AAAA,gBAEX,QAAA,kBAAAA,cAAAA,CAAC2D,gBAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,aAC7B;AAAA,4BACA5D,eAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAK,OAAA,EAAQ,WAAU,OAAA,EACjC,QAAA,EAAA;AAAA,8BAAAC,cAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,8BACpCA,cAAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAW,MAAA,EAAO,SAAA,EAAU,eAAA,EAC5B,QAAA,EAAA,GAAA,CAAI,GAAA,CAAI,CAAC,CAAA,qBACNA,cAAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA;AAAA,kBAEG,IAAA,EAAM,CAAA;AAAA,kBACN,SAAA,EAAU,uCAAA;AAAA,kBACV,UAAA,EAAY,MAAM,OAAA,CAAQ,KAAK;AAAA,iBAAA;AAAA,gBAH1B,CAAA,CAAE;AAAA,eAKd,CAAA,EACL;AAAA,aAAA,EACJ;AAAA,WAAA,EACJ,CAAA,GACA;AAAA,SAAA,EACR;AAAA,OAAA,EACJ;AAAA;AAAA,GACJ;AAER;AAWO,SAAS,UAAA,CAAW;AAAA,EACvB,UAAU,EAAC;AAAA,EACX,SAAA;AAAA,EACA,IAAA;AAAA,EACA;AACJ,CAAA,EAKG;AACC,EAAA,uBACID,eAAAA,CAAC,QAAA,EAAA,EAAO,WAAW,EAAA,CAAG,sCAAA,EAAwC,SAAS,CAAA,EACnE,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6EAAA,EACX,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACX,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,EAAA,EAAI,CAAA;AAAA,QACjB,4BAAYA,cAAAA,CAAC,OAAE,SAAA,EAAU,iEAAA,EAAmE,qBAAU,CAAA,GAAO;AAAA,OAAA,EAClH,CAAA;AAAA,MACC,OAAA,CAAQ,IAAI,CAAC,GAAA,qBACVD,eAAAA,CAAC,KAAA,EAAA,EAAsB,WAAU,qBAAA,EAC7B,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,kCAAA,EAAoC,cAAI,OAAA,EAAQ,CAAA;AAAA,QAC5D,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,sBACZA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YAEG,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAU;AAAA,WAAA;AAAA,UAFL,CAAA,CAAE;AAAA,SAId;AAAA,OAAA,EAAA,EARK,GAAA,CAAI,OASd,CACH;AAAA,KAAA,EACL,CAAA;AAAA,IACC,uBACGA,cAAAA,CAAC,SAAI,SAAA,EAAU,iFAAA,EAAmF,gBAAK,CAAA,GACvG;AAAA,GAAA,EACR,CAAA;AAER;ACjHA,SAAS,OAAA,CAAQ,EAAE,MAAA,EAAQ,UAAA,EAAW,EAAyD;AAC3F,EAAA,uBACIA,cAAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAW,UAAA,EAAW,WAAU,qBAAA,EAChC,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,GAAG,EAAA,qBACZD,eAAAA,CAAC,KAAA,EAAA,EAAwB,WAAU,uBAAA,EAC9B,QAAA,EAAA;AAAA,IAAA,CAAA,CAAE,KAAA,mBAAQC,cAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,oDAAA,EAAsD,QAAA,EAAA,CAAA,CAAE,OAAM,CAAA,GAAO,IAAA;AAAA,IAC5F,CAAA,CAAE,KAAA,CAAM,GAAA,CAAI,CAAC,uBACVD,eAAAA;AAAA,MAAC2D,sBAAAA;AAAA,MAAA;AAAA,QAEG,MAAM,EAAA,CAAG,IAAA;AAAA,QACT,OAAA,EAAS,UAAA;AAAA,QACT,cAAA,EAAc,EAAA,CAAG,MAAA,GAAS,MAAA,GAAS,MAAA;AAAA,QACnC,SAAA,EAAW,EAAA;AAAA,UACP,iFAAA;AAAA,UACA,0CAAA;AAAA,UACA,EAAA,CAAG,SACG,8EAAA,GACA;AAAA,SACV;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,EAAA,CAAG,IAAA;AAAA,0BACJ1D,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAA,EAA2B,aAAG,KAAA,EAAM,CAAA;AAAA,UACnD,EAAA,CAAG,wBAAQA,cAAAA,CAAC,UAAK,SAAA,EAAU,UAAA,EAAY,QAAA,EAAA,EAAA,CAAG,KAAA,EAAM,CAAA,GAAU;AAAA;AAAA,OAAA;AAAA,MAdtD,EAAA,CAAG;AAAA,KAgBf;AAAA,GAAA,EAAA,EApBK,CAAA,CAAE,KAAA,IAAS,EAqBrB,CACH,CAAA,EACL,CAAA;AAER;AAOO,SAAS,QAAA,CAAS;AAAA,EACrB,GAAA;AAAA,EACA,IAAA,GAAO,GAAA;AAAA,EACP,OAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACJ,CAAA,EAQG;AACC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIqD,eAAS,KAAK,CAAA;AACtC,EAAA,uBACItD,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA,EACnD,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kIAAA,EACX,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAM,IAAA,EAAY,YAAA,EAAc,OAAA,EAC7B,QAAA,EAAA;AAAA,wBAAAC,cAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACG,SAAA,EAAU,8EAAA;AAAA,YACV,YAAA,EAAW,iBAAA;AAAA,YAEX,QAAA,kBAAAA,cAAAA,CAAC2D,gBAAAA,EAAA,EAAK,WAAU,QAAA,EAAS;AAAA;AAAA,SAC7B;AAAA,wBACA5D,eAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAK,MAAA,EAAO,WAAU,WAAA,EAChC,QAAA,EAAA;AAAA,0BAAAC,cAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,0BAC1CA,eAAC,OAAA,EAAA,EAAQ,MAAA,EAAQ,KAAK,UAAA,EAAY,MAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAAA,SAAA,EAC5D;AAAA,OAAA,EACJ,CAAA;AAAA,sBACAA,cAAAA,CAAC0D,sBAAAA,EAAA,EAAK,IAAA,EAAM,IAAA,EAAM,YAAA,EAAW,MAAA,EACzB,QAAA,kBAAA1D,cAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,IAAI,CAAA,EACvB,CAAA;AAAA,sBACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAqB,QAAA,EAAA,OAAA,EAAQ;AAAA,KAAA,EAChD,CAAA;AAAA,oBACAD,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACX,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,0FAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC0D,sBAAAA,EAAA,EAAK,IAAA,EAAM,MAAM,SAAA,EAAU,MAAA,EAAO,YAAA,EAAW,MAAA,EAC1C,QAAA,kBAAA1D,cAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,IAAI,CAAA,EACtB,CAAA;AAAA,wBACAA,cAAAA,CAAC,OAAA,EAAA,EAAQ,MAAA,EAAQ,GAAA,EAAK,CAAA;AAAA,wBACtBA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAA+B,QAAA,EAAA,MAAA,EAAO;AAAA,OAAA,EACzD,CAAA;AAAA,sBACAD,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACX,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+DAAA,EAAiE,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QACvF,yBAASA,cAAAA,CAAC,SAAI,SAAA,EAAU,gCAAA,EAAkC,kBAAO,CAAA,GAAS,IAAA;AAAA,wBAC3EA,cAAAA,CAAC,MAAA,EAAA,EAAK,IAAG,cAAA,EAAe,SAAA,EAAU,0CAC7B,QAAA,EACL;AAAA,OAAA,EACJ;AAAA,KAAA,EACJ;AAAA,GAAA,EACJ,CAAA;AAER;AAWO,SAAS,WAAA,CAAY;AAAA,EACxB,IAAA;AAAA,EACA,MAAA;AAAA,EACA;AACJ,CAAA,EAKG;AACC,EAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK,CAAE,OAAO,CAAC,CAAA,CAAE,aAAY,IAAK,MAAA;AACvD,EAAA,uBACID,gBAAC,YAAA,EAAA,EACG,QAAA,EAAA;AAAA,oBAAAA,eAAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACG,SAAA,EAAU,2NAAA;AAAA,QACV,YAAA,EAAY,YAAY,IAAI,CAAA,CAAA;AAAA,QAE5B,QAAA,EAAA;AAAA,0BAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iHAAA,EACX,QAAA,EAAA,OAAA,EACL,CAAA;AAAA,0BACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAA0B,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA;AAAA,KACnD;AAAA,oBACAD,eAAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAM,KAAA,EAAM,WAAU,MAAA,EACvC,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAU,uBAAA,EACzB,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uDAAA,EAAyD,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,QAC7E,yBAASA,cAAAA,CAAC,UAAK,SAAA,EAAU,mCAAA,EAAqC,kBAAO,CAAA,GAAU;AAAA,OAAA,EACpF,CAAA;AAAA,sBACAA,eAAC,qBAAA,EAAA,EAAsB,CAAA;AAAA,MACtB,KAAA,CAAM,GAAA;AAAA,QAAI,CAAC,EAAA,EAAI,CAAA,KACZ,EAAA,KAAO,WAAA,mBACHA,cAAAA,CAAC,qBAAA,EAAA,EAAA,EAA2B,CAAA,IAAA,EAAO,CAAC,CAAA,CAAI,CAAA,GACxC,EAAA,CAAG,IAAA,mBACHA,cAAAA,CAAC,gBAAA,EAAA,EAAgC,OAAA,EAAO,IAAA,EAAC,WAAA,EAAa,EAAA,CAAG,WAAA,EACrD,QAAA,kBAAAD,eAAAA,CAAC2D,sBAAAA,EAAA,EAAK,IAAA,EAAM,EAAA,CAAG,IAAA,EACV,QAAA,EAAA;AAAA,UAAA,EAAA,CAAG,IAAA;AAAA,UACH,EAAA,CAAG;AAAA,SAAA,EACR,CAAA,EAAA,EAJmB,EAAA,CAAG,KAK1B,CAAA,mBAEA3D,eAAAA,CAAC,gBAAA,EAAA,EAAgC,QAAA,EAAU,EAAA,CAAG,QAAA,EAAU,WAAA,EAAa,EAAA,CAAG,WAAA,EACnE,QAAA,EAAA;AAAA,UAAA,EAAA,CAAG,IAAA;AAAA,UACH,EAAA,CAAG;AAAA,SAAA,EAAA,EAFe,GAAG,KAG1B;AAAA;AAER,KAAA,EACJ;AAAA,GAAA,EACJ,CAAA;AAER;AAGO,SAAS,WAAA,CAAY,EAAE,SAAA,EAAU,EAA2B;AAC/D,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI6D,mBAAA,EAAS;AACrC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIP,eAAS,KAAK,CAAA;AAC5C,EAAAE,gBAAU,MAAM,UAAA,CAAW,IAAI,CAAA,EAAG,EAAE,CAAA;AACpC,EAAA,MAAM,OAAA,GAAU,OAAA,GAAW,KAAA,IAAS,QAAA,GAAY,QAAA;AAChD,EAAA,MAAM,OAAO,OAAA,KAAY,OAAA,GAAU,MAAA,GAAS,OAAA,KAAY,SAAS,QAAA,GAAW,OAAA;AAC5E,EAAA,MAAMM,QAAO,OAAA,KAAY,OAAA,GAAUC,eAAA,GAAM,OAAA,KAAY,SAASC,gBAAA,GAAOC,mBAAA;AACrE,EAAA,uBACIhE,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACG,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAS,MAAM,QAAA,CAAS,IAAI,CAAA;AAAA,MAC5B,YAAA,EAAY,CAAA,OAAA,EAAU,OAAO,CAAA,YAAA,EAAe,IAAI,CAAA,CAAA;AAAA,MAChD,KAAA,EAAO,UAAU,OAAO,CAAA,CAAA;AAAA,MACxB,SAAA,EAAW,EAAA;AAAA,QACP,4IAAA;AAAA,QACA;AAAA,OACJ;AAAA,MAEA,QAAA,kBAAAA,cAAAA,CAAC6D,KAAAA,EAAA,EAAK,WAAU,iBAAA,EAAkB;AAAA;AAAA,GACtC;AAER","file":"index.js","sourcesContent":["/*\n * The ochk.app palette as data, for places CSS variables cannot reach: OG\n * images, canvas, charts, email. Must match styles/tokens.css; the contrast\n * check reads both.\n */\nexport const APP_ATTRIBUTE = 'data-oc-app';\nexport const APP_ID = 'ochk';\n\nexport const appColors = {\n light: {\n background: '#FAFAFA',\n foreground: '#0A0A0A',\n card: '#FFFFFF',\n muted: '#F2F2F2',\n mutedForeground: '#54585E',\n subtleForeground: '#686C72',\n border: '#ECECEC',\n hairlineStrong: '#DADADA',\n accentDisplay: '#F55819',\n accentInk: '#C73F09',\n },\n dark: {\n background: '#0A0A0A',\n foreground: '#FAFAFA',\n card: '#161616',\n muted: '#1E1E1E',\n mutedForeground: '#A3A6AA',\n subtleForeground: '#8B8E93',\n border: '#262626',\n hairlineStrong: '#333333',\n accentDisplay: '#F66D36',\n accentInk: '#F0835A',\n },\n brand: {\n orange: '#F66D36',\n orangeLight: '#FB933C',\n orangeDeep: '#EA580B',\n peach: '#FED8AB',\n ink: '#0A0A0A',\n inkCard: '#1E1E1E',\n },\n} as const;\n\nexport const appFonts = {\n sans: \"'OCA Inter', 'OCA Inter Fallback', ui-sans-serif, system-ui, sans-serif\",\n mono: \"'OCA JetBrains Mono', 'OCA JetBrains Mono Fallback', ui-monospace, monospace\",\n} as const;\n","import { clsx, type ClassValue } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\n// tailwind-merge would treat `oca-display-1` and `text-foreground` as the same\n// group and drop one; teach it the package's own type utilities.\nconst merge = extendTailwindMerge<'oca-type'>({\n extend: {\n classGroups: {\n 'oca-type': [\n 'oca-display-1',\n 'oca-display-2',\n 'oca-display-3',\n 'oca-title',\n 'oca-title-sm',\n 'oca-eyebrow',\n 'oca-lead',\n 'oca-body',\n 'oca-numeral',\n ],\n },\n },\n});\n\nexport function cn(...inputs: ClassValue[]): string {\n return merge(clsx(inputs));\n}\n","import * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef, type HTMLAttributes } from 'react';\nimport { Toaster as SonnerToaster, type ToasterProps } from 'sonner';\n\nimport { cn } from '../lib/cn';\n\nexport function Spinner({ className, label }: { className?: string; label?: string }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n role={label ? 'status' : undefined}\n aria-label={label}\n aria-hidden={label ? undefined : true}\n className={cn('size-4 animate-spin', className)}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.2\" strokeWidth=\"2.5\" />\n <path d=\"M21 12a9 9 0 0 0-9-9\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nexport function Skeleton({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div data-ui=\"skeleton\" className={cn('animate-pulse rounded-lg bg-muted', className)} {...props} />;\n}\n\nexport const Separator = forwardRef<\n ElementRef<typeof SeparatorPrimitive.Root>,\n ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(function Separator({ className, orientation = 'horizontal', decorative = true, ...props }, ref) {\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-px w-full' : 'h-full w-px',\n className\n )}\n {...props}\n />\n );\n});\n\nexport function Kbd({ className, ...props }: HTMLAttributes<HTMLElement>) {\n return (\n <kbd\n className={cn(\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-md border border-border bg-card px-1.5 font-mono text-[11px] text-muted-foreground',\n className\n )}\n {...props}\n />\n );\n}\n\n/** Live-region status dot: a calm pulse for \"running\", solid otherwise. */\nexport function StatusDot({\n tone = 'neutral',\n pulse = false,\n className,\n}: {\n tone?: 'neutral' | 'success' | 'warning' | 'danger' | 'brand';\n pulse?: boolean;\n className?: string;\n}) {\n const color = {\n neutral: 'bg-oca-subtle',\n success: 'bg-success',\n warning: 'bg-warning',\n danger: 'bg-destructive',\n brand: 'bg-brand',\n }[tone];\n return (\n <span\n aria-hidden\n className={cn('inline-block size-2 shrink-0 rounded-full', color, pulse && 'oca-animate-pulse-dot', className)}\n />\n );\n}\n\n/** Toasts in the system's type and surfaces. Mount once. */\nexport function Toaster(props: ToasterProps) {\n return (\n <SonnerToaster\n position=\"bottom-right\"\n toastOptions={{\n classNames: {\n toast: 'oca-toast rounded-2xl border border-border bg-popover text-popover-foreground shadow-lg font-sans',\n title: 'text-[0.9375rem] font-medium',\n description: 'text-sm text-muted-foreground',\n actionButton: 'rounded-full bg-primary text-primary-foreground',\n cancelButton: 'rounded-full bg-muted text-foreground',\n },\n }}\n {...props}\n />\n );\n}\n\nexport { toast } from 'sonner';\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { forwardRef, type ButtonHTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Spinner } from './feedback';\n\n/*\n * Pills, as the deck draws them: the black filled pill leads, the white\n * outlined pill follows. `brand` is for the orange band only; `onInk` and\n * `onInkOutline` are the same pair inverted for dark bands.\n */\nexport const buttonVariants = cva(\n [\n 'inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-full font-medium',\n 'transition-[background-color,border-color,color,box-shadow,transform] duration-150',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n 'active:translate-y-px disabled:pointer-events-none disabled:opacity-45',\n '[&_svg]:pointer-events-none [&_svg]:size-[1.1em] [&_svg]:shrink-0',\n ],\n {\n variants: {\n variant: {\n primary: 'bg-primary text-primary-foreground hover:bg-primary/85',\n secondary:\n 'border border-border bg-secondary text-secondary-foreground hover:border-oca-hairline-strong hover:bg-accent',\n brand: 'bg-brand text-brand-foreground hover:bg-oca-orange-deep',\n ghost: 'text-foreground hover:bg-accent',\n danger: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n link: 'h-auto rounded-none px-0 text-foreground underline decoration-border underline-offset-4 hover:decoration-foreground',\n onInk: 'bg-white text-oca-ink hover:bg-white/90',\n onInkOutline: 'border border-white/20 text-white hover:bg-white/10',\n },\n size: {\n sm: 'h-9 px-4 text-sm',\n md: 'h-11 px-5 text-[0.9375rem]',\n lg: 'h-14 px-7 text-[1.0625rem]',\n icon: 'size-10',\n 'icon-sm': 'size-8',\n },\n },\n compoundVariants: [{ variant: 'link', className: 'h-auto px-0' }],\n defaultVariants: { variant: 'primary', size: 'md' },\n }\n);\n\nexport interface ButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /** Render the child element (a Link, an <a>) with the button's styles. */\n asChild?: boolean;\n /** Shows a spinner and disables the button. */\n loading?: boolean;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { className, variant, size, asChild = false, loading = false, disabled, children, type, ...props },\n ref\n) {\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp\n ref={ref}\n data-ui=\"button\"\n className={cn(buttonVariants({ variant, size }), className)}\n disabled={asChild ? undefined : disabled || loading}\n aria-busy={loading || undefined}\n type={asChild ? undefined : (type ?? 'button')}\n {...props}\n >\n {asChild ? (\n children\n ) : (\n <>\n {loading ? <Spinner className=\"size-[1.1em]\" /> : null}\n {children}\n </>\n )}\n </Comp>\n );\n});\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The small white pill from the deck (\"in testing\", \"on the path\"), plus soft\n * status tints. Text stays on the token that clears 4.5:1 against its tint.\n */\nexport const badgeVariants = cva(\n 'inline-flex h-6 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-full border px-2.5 text-[0.8125rem] font-medium leading-none',\n {\n variants: {\n tone: {\n neutral: 'border-border bg-card text-foreground',\n muted: 'border-transparent bg-muted text-muted-foreground',\n brand: 'border-transparent bg-[color-mix(in_oklab,var(--oca-orange)_12%,var(--card))] text-oca-accent-ink',\n success: 'border-transparent bg-[color-mix(in_oklab,var(--success)_12%,var(--card))] text-success',\n warning: 'border-transparent bg-[color-mix(in_oklab,var(--warning)_14%,var(--card))] text-warning',\n danger: 'border-transparent bg-[color-mix(in_oklab,var(--destructive)_12%,var(--card))] text-destructive',\n info: 'border-transparent bg-[color-mix(in_oklab,var(--info)_12%,var(--card))] text-info',\n ink: 'border-transparent bg-oca-ink text-oca-ink-foreground',\n onInk: 'border-white/15 bg-white/5 text-white/90',\n },\n },\n defaultVariants: { tone: 'neutral' },\n }\n);\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {}\n\nexport function Badge({ className, tone, ...props }: BadgeProps) {\n return <span data-ui=\"badge\" className={cn(badgeVariants({ tone }), className)} {...props} />;\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport { forwardRef, type HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * White on the canvas with one hairline and a generous radius; no shadow. The\n * `ink` card is the deck's #1E1E1E panel, dark in both modes.\n */\nexport const cardVariants = cva('relative rounded-[1.25rem] border', {\n variants: {\n tone: {\n default: 'border-border bg-card text-card-foreground',\n sunken: 'border-transparent bg-muted text-foreground',\n ink: 'border-oca-ink-line bg-oca-ink-card text-oca-ink-foreground',\n outline: 'border-border bg-transparent text-foreground',\n },\n padding: {\n none: '',\n sm: 'p-5',\n md: 'p-6 md:p-8',\n lg: 'p-8 md:p-10',\n },\n interactive: {\n true: 'transition-colors hover:border-oca-hairline-strong focus-within:border-oca-hairline-strong',\n false: '',\n },\n },\n defaultVariants: { tone: 'default', padding: 'md', interactive: false },\n});\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { className, tone, padding, interactive, ...props },\n ref\n) {\n return (\n <div ref={ref} data-ui=\"card\" className={cn(cardVariants({ tone, padding, interactive }), className)} {...props} />\n );\n});\n\nexport function CardHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('flex flex-col gap-2', className)} {...props} />;\n}\n\n/** The small \"01\" above a card title. */\nexport function CardNumeral({ className, ...props }: HTMLAttributes<HTMLSpanElement>) {\n return <span className={cn('oca-numeral block', className)} {...props} />;\n}\n\nexport function CardTitle({ className, ...props }: HTMLAttributes<HTMLHeadingElement>) {\n return <h3 className={cn('oca-title flex flex-wrap items-center gap-2.5', className)} {...props} />;\n}\n\nexport function CardDescription({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('oca-body', className)} {...props} />;\n}\n\nexport function CardContent({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mt-5', className)} {...props} />;\n}\n\nexport function CardFooter({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mt-6 flex flex-wrap items-center gap-3', className)} {...props} />;\n}\n","import * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport { Check, ChevronDown } from 'lucide-react';\nimport {\n cloneElement,\n forwardRef,\n isValidElement,\n useId,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type InputHTMLAttributes,\n type ReactElement,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from 'react';\n\nimport { cn } from '../lib/cn';\n\n/* Fields: 44px tall, a hairline that darkens on focus with a soft orange halo,\n 16px text on phones so iOS never zooms. */\nconst fieldBase = [\n 'w-full rounded-xl border border-input bg-card text-foreground placeholder:text-oca-subtle',\n 'text-base md:text-[0.9375rem] outline-none transition-[border-color,box-shadow]',\n 'focus:border-foreground/35 focus:ring-4 focus:ring-[color-mix(in_oklab,var(--oca-orange)_16%,transparent)]',\n 'disabled:cursor-not-allowed disabled:opacity-55',\n 'aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:ring-[color-mix(in_oklab,var(--destructive)_14%,transparent)]',\n];\n\nexport const Input = forwardRef<HTMLInputElement, InputHTMLAttributes<HTMLInputElement>>(function Input(\n { className, type = 'text', ...props },\n ref\n) {\n return <input ref={ref} type={type} data-ui=\"input\" className={cn(fieldBase, 'h-11 px-3.5', className)} {...props} />;\n});\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaHTMLAttributes<HTMLTextAreaElement>>(\n function Textarea({ className, ...props }, ref) {\n return (\n <textarea\n ref={ref}\n data-ui=\"textarea\"\n className={cn(fieldBase, 'min-h-28 px-3.5 py-3 leading-relaxed', className)}\n {...props}\n />\n );\n }\n);\n\nexport const Label = forwardRef<\n ElementRef<typeof LabelPrimitive.Root>,\n ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(function Label({ className, ...props }, ref) {\n return (\n <LabelPrimitive.Root\n ref={ref}\n className={cn('text-sm font-medium leading-none text-foreground', className)}\n {...props}\n />\n );\n});\n\nexport interface FieldProps {\n label: ReactNode;\n /** One line under the label, before the control. */\n hint?: ReactNode;\n /** Shown in place of nothing; marks the control invalid. */\n error?: ReactNode;\n /** The control. Receives id, aria-describedby and aria-invalid. */\n children: ReactElement;\n className?: string;\n /** Render the label visually hidden (it is still the accessible name). */\n hideLabel?: boolean;\n}\n\n/** Label, hint, control and error, wired together by id. */\nexport function Field({ label, hint, error, children, className, hideLabel }: FieldProps) {\n const id = useId();\n const hintId = hint ? `${id}-hint` : undefined;\n const errorId = error ? `${id}-error` : undefined;\n const describedBy = [hintId, errorId].filter(Boolean).join(' ') || undefined;\n const control = isValidElement(children)\n ? cloneElement(children as ReactElement<Record<string, unknown>>, {\n id,\n 'aria-describedby': describedBy,\n 'aria-invalid': error ? true : undefined,\n })\n : children;\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n <Label htmlFor={id} className={hideLabel ? 'sr-only' : undefined}>\n {label}\n </Label>\n {hint ? (\n <p id={hintId} className=\"text-[0.8125rem] leading-snug text-muted-foreground\">\n {hint}\n </p>\n ) : null}\n {control}\n {error ? (\n <p id={errorId} role=\"alert\" className=\"text-[0.8125rem] leading-snug text-destructive\">\n {error}\n </p>\n ) : null}\n </div>\n );\n}\n\n/* ── Select ───────────────────────────────────────────────────────────── */\n\nexport const Select = SelectPrimitive.Root;\nexport const SelectGroup = SelectPrimitive.Group;\nexport const SelectValue = SelectPrimitive.Value;\n\nexport const SelectTrigger = forwardRef<\n ElementRef<typeof SelectPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(function SelectTrigger({ className, children, ...props }, ref) {\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(fieldBase, 'flex h-11 items-center justify-between gap-2 px-3.5 text-left', className)}\n {...props}\n >\n <span className=\"truncate\">{children}</span>\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"size-4 shrink-0 text-muted-foreground\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n});\n\nexport const SelectContent = forwardRef<\n ElementRef<typeof SelectPrimitive.Content>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(function SelectContent({ className, children, position = 'popper', ...props }, ref) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n position={position}\n sideOffset={6}\n className={cn(\n 'oca-animate-fade z-50 max-h-[min(24rem,var(--radix-select-content-available-height))] min-w-[var(--radix-select-trigger-width)] overflow-hidden rounded-xl border border-border bg-popover p-1 text-popover-foreground shadow-lg',\n className\n )}\n {...props}\n >\n <SelectPrimitive.Viewport>{children}</SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n});\n\nexport const SelectItem = forwardRef<\n ElementRef<typeof SelectPrimitive.Item>,\n ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(function SelectItem({ className, children, ...props }, ref) {\n return (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex h-10 cursor-default select-none items-center rounded-lg pl-3 pr-9 text-[0.9375rem] outline-none',\n 'data-[highlighted]:bg-accent data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className=\"absolute right-3\">\n <Check className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n});\n\n/* ── Checkbox, Switch, Radio ──────────────────────────────────────────── */\n\nexport const Checkbox = forwardRef<\n ElementRef<typeof CheckboxPrimitive.Root>,\n ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(function Checkbox({ className, ...props }, ref) {\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer inline-flex size-5 shrink-0 items-center justify-center rounded-[6px] border border-input bg-card',\n 'outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator>\n <Check className=\"size-3.5\" strokeWidth={3} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\n\nexport const Switch = forwardRef<\n ElementRef<typeof SwitchPrimitive.Root>,\n ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\n>(function Switch({ className, ...props }, ref) {\n return (\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(\n 'peer inline-flex h-6 w-11 shrink-0 items-center rounded-full border border-transparent bg-input p-0.5',\n 'outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'data-[state=checked]:bg-brand disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb className=\"pointer-events-none block size-5 rounded-full bg-white shadow-sm transition-transform data-[state=checked]:translate-x-5\" />\n </SwitchPrimitive.Root>\n );\n});\n\nexport const RadioGroup = forwardRef<\n ElementRef<typeof RadioGroupPrimitive.Root>,\n ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(function RadioGroup({ className, ...props }, ref) {\n return <RadioGroupPrimitive.Root ref={ref} className={cn('grid gap-3', className)} {...props} />;\n});\n\nexport const RadioGroupItem = forwardRef<\n ElementRef<typeof RadioGroupPrimitive.Item>,\n ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(function RadioGroupItem({ className, ...props }, ref) {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'inline-flex size-5 shrink-0 items-center justify-center rounded-full border border-input bg-card',\n 'outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'data-[state=checked]:border-primary disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"block size-2.5 rounded-full bg-primary\" />\n </RadioGroupPrimitive.Item>\n );\n});\n","import * as DialogPrimitive from '@radix-ui/react-dialog';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { X } from 'lucide-react';\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef, type HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/* ── Dialog ───────────────────────────────────────────────────────────── */\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogClose = DialogPrimitive.Close;\n\nconst overlayClass =\n 'oca-animate-fade fixed inset-0 z-50 bg-[rgb(10_10_10/0.38)] backdrop-blur-[2px] data-[state=closed]:opacity-0';\n\nexport const DialogContent = forwardRef<\n ElementRef<typeof DialogPrimitive.Content>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & { hideClose?: boolean }\n>(function DialogContent({ className, children, hideClose, ...props }, ref) {\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className={overlayClass} />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'oca-animate-rise fixed left-1/2 top-1/2 z-50 w-[min(92vw,34rem)] -translate-x-1/2 -translate-y-1/2',\n 'max-h-[88vh] overflow-y-auto rounded-[1.5rem] border border-border bg-popover p-6 text-popover-foreground shadow-xl md:p-8',\n 'outline-none',\n className\n )}\n {...props}\n >\n {children}\n {hideClose ? null : (\n <DialogPrimitive.Close\n className=\"absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground\"\n aria-label=\"Close\"\n >\n <X className=\"size-4\" />\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n});\n\nexport function DialogHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mb-5 flex flex-col gap-2 pr-8', className)} {...props} />;\n}\n\nexport function DialogFooter({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mt-7 flex flex-col-reverse gap-3 sm:flex-row sm:justify-end', className)} {...props} />;\n}\n\nexport const DialogTitle = forwardRef<\n ElementRef<typeof DialogPrimitive.Title>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(function DialogTitle({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-[1.5rem] font-normal leading-tight tracking-[-0.02em]', className)}\n {...props}\n />\n );\n});\n\nexport const DialogDescription = forwardRef<\n ElementRef<typeof DialogPrimitive.Description>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(function DialogDescription({ className, ...props }, ref) {\n return <DialogPrimitive.Description ref={ref} className={cn('oca-body', className)} {...props} />;\n});\n\n/* ── Sheet: a dialog from an edge ────────────────────────────────────── */\n\nexport const Sheet = DialogPrimitive.Root;\nexport const SheetTrigger = DialogPrimitive.Trigger;\nexport const SheetClose = DialogPrimitive.Close;\nexport const SheetTitle = DialogTitle;\nexport const SheetDescription = DialogDescription;\n\nconst sheetSide = {\n right: 'inset-y-0 right-0 h-full w-[min(88vw,24rem)] border-l',\n left: 'inset-y-0 left-0 h-full w-[min(88vw,24rem)] border-r',\n bottom: 'inset-x-0 bottom-0 max-h-[88vh] rounded-t-[1.5rem] border-t',\n} as const;\n\nexport const SheetContent = forwardRef<\n ElementRef<typeof DialogPrimitive.Content>,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & { side?: keyof typeof sheetSide }\n>(function SheetContent({ className, children, side = 'right', ...props }, ref) {\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className={overlayClass} />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'oca-animate-fade fixed z-50 flex flex-col gap-4 overflow-y-auto border-border bg-popover p-6 text-popover-foreground shadow-xl outline-none',\n sheetSide[side],\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n className=\"absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-full text-muted-foreground hover:bg-accent hover:text-foreground\"\n aria-label=\"Close\"\n >\n <X className=\"size-4\" />\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n});\n\n/* ── Popover ──────────────────────────────────────────────────────────── */\n\nexport const Popover = PopoverPrimitive.Root;\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\n\nexport const PopoverContent = forwardRef<\n ElementRef<typeof PopoverPrimitive.Content>,\n ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(function PopoverContent({ className, align = 'center', sideOffset = 8, ...props }, ref) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'oca-animate-fade z-50 w-72 rounded-2xl border border-border bg-popover p-4 text-popover-foreground shadow-lg outline-none',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n});\n\n/* ── Tooltip: ink, small, quick ───────────────────────────────────────── */\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\nexport const Tooltip = TooltipPrimitive.Root;\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\n\nexport const TooltipContent = forwardRef<\n ElementRef<typeof TooltipPrimitive.Content>,\n ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(function TooltipContent({ className, sideOffset = 6, ...props }, ref) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'oca-animate-fade z-50 max-w-xs rounded-lg bg-oca-ink px-2.5 py-1.5 text-[0.8125rem] leading-snug text-oca-ink-foreground',\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n );\n});\n\n/* ── Menu ─────────────────────────────────────────────────────────────── */\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nexport const DropdownMenuContent = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Content>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(function DropdownMenuContent({ className, sideOffset = 8, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'oca-animate-fade z-50 min-w-56 overflow-hidden rounded-2xl border border-border bg-popover p-1.5 text-popover-foreground shadow-lg',\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n});\n\nexport const DropdownMenuItem = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Item>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & { destructive?: boolean }\n>(function DropdownMenuItem({ className, destructive, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'flex h-10 cursor-default select-none items-center gap-2.5 rounded-xl px-3 text-[0.9375rem] outline-none',\n 'data-[highlighted]:bg-accent data-[disabled]:opacity-50 [&_svg]:size-4 [&_svg]:text-muted-foreground',\n destructive && 'text-destructive [&_svg]:text-destructive',\n className\n )}\n {...props}\n />\n );\n});\n\nexport const DropdownMenuLabel = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Label>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label>\n>(function DropdownMenuLabel({ className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn('px-3 pb-1.5 pt-2 text-[0.8125rem] text-muted-foreground', className)}\n {...props}\n />\n );\n});\n\nexport const DropdownMenuSeparator = forwardRef<\n ElementRef<typeof DropdownMenuPrimitive.Separator>,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(function DropdownMenuSeparator({ className, ...props }, ref) {\n return <DropdownMenuPrimitive.Separator ref={ref} className={cn('my-1.5 h-px bg-border', className)} {...props} />;\n});\n","import * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { createContext, forwardRef, useContext, type ComponentPropsWithoutRef, type ElementRef } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * Two looks for one behaviour: `pill` is a segmented control for switching a\n * view in place; `line` is page-level navigation between sections.\n */\ntype TabsLook = 'pill' | 'line';\nconst LookContext = createContext<TabsLook>('pill');\n\nexport const Tabs = forwardRef<\n ElementRef<typeof TabsPrimitive.Root>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Root> & { look?: TabsLook }\n>(function Tabs({ look = 'pill', ...props }, ref) {\n return (\n <LookContext.Provider value={look}>\n <TabsPrimitive.Root ref={ref} {...props} />\n </LookContext.Provider>\n );\n});\n\nexport const TabsList = forwardRef<\n ElementRef<typeof TabsPrimitive.List>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(function TabsList({ className, ...props }, ref) {\n const look = useContext(LookContext);\n return (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n look === 'pill'\n ? 'inline-flex max-w-full items-center gap-1 overflow-x-auto rounded-full bg-muted p-1'\n : 'flex max-w-full items-center gap-6 overflow-x-auto border-b border-border',\n className\n )}\n {...props}\n />\n );\n});\n\nexport const TabsTrigger = forwardRef<\n ElementRef<typeof TabsPrimitive.Trigger>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(function TabsTrigger({ className, ...props }, ref) {\n const look = useContext(LookContext);\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap text-[0.9375rem] outline-none transition-colors',\n 'focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n look === 'pill'\n ? 'h-9 rounded-full px-4 text-muted-foreground hover:text-foreground data-[state=active]:bg-card data-[state=active]:text-foreground data-[state=active]:shadow-sm'\n : '-mb-px h-11 border-b-2 border-transparent text-muted-foreground hover:text-foreground data-[state=active]:border-foreground data-[state=active]:text-foreground',\n className\n )}\n {...props}\n />\n );\n});\n\nexport const TabsContent = forwardRef<\n ElementRef<typeof TabsPrimitive.Content>,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(function TabsContent({ className, ...props }, ref) {\n return <TabsPrimitive.Content ref={ref} className={cn('mt-6 outline-none', className)} {...props} />;\n});\n","import type { SVGProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The isometric check, measured from Sou's deck (slide 9) onto a 16×8 grid:\n * a chevron with a 3-unit short arm and a 5-unit long arm, one unit thick,\n * extruded two units. Three faces, three oranges.\n */\n\nconst TOP = '0,3 2,2 6,4 14,0 16,1 6,6';\nconst LEFT = '0,3 6,6 6,8 0,5';\nconst RIGHT = '6,6 16,1 16,3 6,8';\n\nexport const MARK_FACES = { top: '#FED8AB', left: '#FB933C', right: '#EA580B' } as const;\n\nexport interface MarkProps extends Omit<SVGProps<SVGSVGElement>, 'children'> {\n /** Accessible name. Omit to render the mark as decoration. */\n title?: string;\n /** Rendered width in px; height follows the 2:1 grid. */\n size?: number;\n}\n\nexport function Mark({ title, size, className, ...rest }: MarkProps) {\n return (\n <svg\n viewBox=\"0 0 16 8\"\n width={size}\n height={size ? size / 2 : undefined}\n role={title ? 'img' : undefined}\n aria-hidden={title ? undefined : true}\n className={cn('shrink-0', className)}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n <polygon points={LEFT} fill={MARK_FACES.left} />\n <polygon points={RIGHT} fill={MARK_FACES.right} />\n <polygon points={TOP} fill={MARK_FACES.top} />\n </svg>\n );\n}\n\nexport interface AppIconProps extends Omit<SVGProps<SVGSVGElement>, 'children'> {\n title?: string;\n size?: number;\n}\n\n/** The app icon: the mark on an ink squircle, as in the deck's lockup. */\nexport function AppIcon({ title, size = 32, className, ...rest }: AppIconProps) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n role={title ? 'img' : undefined}\n aria-hidden={title ? undefined : true}\n className={cn('shrink-0', className)}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n <rect\n width=\"24\"\n height=\"24\"\n rx=\"6.25\"\n style={{ fill: 'var(--oca-icon-tile, #0A0A0A)', stroke: 'var(--oca-icon-ring, transparent)' }}\n strokeWidth=\"0.5\"\n />\n <g transform=\"translate(4.25 8.1) scale(0.97)\">\n <polygon points={LEFT} fill={MARK_FACES.left} />\n <polygon points={RIGHT} fill={MARK_FACES.right} />\n <polygon points={TOP} fill={MARK_FACES.top} />\n </g>\n </svg>\n );\n}\n\nexport interface LockupProps {\n /** The word beside the icon. */\n name?: string;\n /** Icon size in px; the word scales with it. */\n size?: number;\n className?: string;\n}\n\n/** Icon and wordmark, lowercase, as the deck sets it. */\nexport function Lockup({ name = 'orangecheck', size = 28, className }: LockupProps) {\n return (\n <span\n className={cn('inline-flex items-center font-medium tracking-[-0.01em]', className)}\n style={{ gap: size * 0.32, fontSize: size * 0.56 }}\n >\n <AppIcon size={size} />\n <span>{name}</span>\n </span>\n );\n}\n","import type { CSSProperties } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The deck's photograph: a halftone portrait on an orange sphere that glows\n * near-white behind the subject and saturates at the rim, with a hairline\n * stadium behind it. The dot layer is an image of black dots on transparent,\n * made by scripts/halftone.py from any photo, so the sphere stays CSS and the\n * dots stay crisp at any size.\n */\n\nexport const SPHERE_GRADIENT =\n 'radial-gradient(circle at 50% 42%, #fff8f3 0%, #ffe2d3 22%, #ffb48d 45%, #ff8a55 68%, #ff6a2c 100%)';\n\nexport interface HalftoneSphereProps {\n /** The dot layer (black dots on transparent, already circular). */\n src: string;\n /** Describe the person or subject; empty string marks it decorative. */\n alt: string;\n /** Draw the hairline stadium behind the sphere, as the hero does. */\n stadium?: boolean;\n /** Let the sphere drift a few pixels. Off under reduced motion. */\n float?: boolean;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function HalftoneSphere({ src, alt, stadium = false, float = false, className, style }: HalftoneSphereProps) {\n return (\n <div className={cn('relative aspect-square w-full', className)} style={style}>\n {stadium ? (\n // Measured from the deck's title slide: a rounded square, its corners\n // 17% of the sphere, level with the sphere's foot, reaching left behind\n // the headline. On phones a ring inside the gutter, since the offset\n // would push the page sideways.\n <div\n aria-hidden\n className=\"oca-stadium pointer-events-none absolute inset-[-6%] rounded-full md:[inset:-12%_14%_0%_-26%] md:rounded-[17%]\"\n />\n ) : null}\n <div\n className={cn('relative size-full overflow-hidden rounded-full', float && 'oca-animate-float')}\n style={{ background: SPHERE_GRADIENT }}\n >\n {/* eslint-disable-next-line @next/next/no-img-element -- a static dot layer, sized by CSS */}\n <img src={src} alt={alt} className=\"absolute inset-0 size-full select-none\" draggable={false} />\n </div>\n </div>\n );\n}\n","import { cn } from '../lib/cn';\nimport { Mark } from './mark';\n\nexport interface IsoCheckProps {\n /** Width in px; the check keeps its 2:1 grid. */\n size?: number;\n /** Drop it into place on first paint, the deck's closing gesture. */\n settle?: boolean;\n /** A soft floor shadow, so it reads as an object on the canvas. */\n shadow?: boolean;\n title?: string;\n className?: string;\n}\n\n/** The isometric check as an object: the deck's closing illustration. */\nexport function IsoCheck({ size = 360, settle = false, shadow = true, title, className }: IsoCheckProps) {\n return (\n <div className={cn('relative inline-block', settle && 'oca-animate-settle', className)} style={{ width: size }}>\n <Mark size={size} title={title} className=\"relative z-10 block\" />\n {shadow ? (\n <div\n aria-hidden\n className=\"absolute left-[8%] right-[8%] rounded-[50%] opacity-60 blur-xl\"\n style={{ height: size * 0.08, bottom: -size * 0.04, background: 'rgb(234 88 11 / 0.18)' }}\n />\n ) : null}\n </div>\n );\n}\n","import { createElement, type HTMLAttributes, type ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/** The small orange line above a heading (\"How it works\", \"The honest version\"). */\nexport function Eyebrow({ className, onInk, ...props }: HTMLAttributes<HTMLParagraphElement> & { onInk?: boolean }) {\n return <p className={cn('oca-eyebrow', onInk && 'text-oca-ink-eyebrow', className)} {...props} />;\n}\n\ntype DisplayLevel = 1 | 2 | 3;\n\nexport interface DisplayProps extends HTMLAttributes<HTMLHeadingElement> {\n /** Visual size. The element follows unless `as` says otherwise. */\n level?: DisplayLevel;\n as?: 'h1' | 'h2' | 'h3' | 'p';\n}\n\n/** Headlines: regular weight, tight, balanced. */\nexport function Display({ level = 2, as, className, ...props }: DisplayProps) {\n const tag = as ?? (`h${level}` as const);\n return createElement(tag, { className: cn(`oca-display-${level}`, className), ...props });\n}\n\n/** The one orange word (\"cost something *real*.\"). Display sizes only: as small\n * text this orange would fail contrast. */\nexport function Accent({ children, className }: { children: ReactNode; className?: string }) {\n return <span className={cn('text-oca-accent-display', className)}>{children}</span>;\n}\n\nexport function Lead({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('oca-lead max-w-[40rem]', className)} {...props} />;\n}\n\n/** Fine print under a section (\"Who holds what today: …\"). */\nexport function Footnote({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('text-[0.9375rem] text-muted-foreground', className)} {...props} />;\n}\n\n/** Body copy for long-form pages: measured line length, calm rhythm. */\nexport function Prose({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n 'max-w-[42rem] text-[1.0625rem] leading-[1.7] text-muted-foreground',\n '[&_h2]:oca-display-3 [&_h2]:mb-4 [&_h2]:mt-14 [&_h2]:text-foreground',\n '[&_h3]:oca-title [&_h3]:mb-3 [&_h3]:mt-10 [&_h3]:text-foreground',\n '[&_p]:my-4 [&_strong]:font-medium [&_strong]:text-foreground',\n '[&_a]:text-foreground [&_a]:underline [&_a]:decoration-border [&_a]:underline-offset-4 hover:[&_a]:decoration-foreground',\n '[&_ul]:my-4 [&_ul]:list-disc [&_ul]:pl-5 [&_li]:my-1.5 [&_code]:text-foreground',\n className\n )}\n {...props}\n />\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The deck alternates three grounds: the light canvas, the ink band and the\n * orange band. A section owns its ground edge to edge and its content sits in\n * the container. On the orange band text is ink, never white (2.9:1).\n */\n// overflow-x: clip, not hidden: decoration may not widen the page, and a sticky\n// child still sticks.\nexport const sectionVariants = cva('relative w-full overflow-x-clip', {\n variants: {\n tone: {\n canvas: 'bg-background text-foreground',\n card: 'bg-card text-card-foreground',\n ink: 'bg-oca-ink text-oca-ink-foreground',\n brand: 'bg-brand text-brand-foreground',\n },\n space: {\n none: '',\n sm: 'py-12 md:py-16',\n md: 'oca-section',\n lg: 'py-24 md:py-40',\n },\n },\n defaultVariants: { tone: 'canvas', space: 'md' },\n});\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement>, VariantProps<typeof sectionVariants> {\n /** Put children in the standard container. Default true. */\n contained?: boolean;\n}\n\nexport function Section({ tone, space, contained = true, className, children, ...props }: SectionProps) {\n return (\n <section className={cn(sectionVariants({ tone, space }), className)} {...props}>\n {contained ? <div className=\"oca-container\">{children}</div> : children}\n </section>\n );\n}\n\nexport function Container({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('oca-container', className)} {...props} />;\n}\n\n/** Eyebrow + headline + lead, the opening of every deck slide. */\nexport function SectionIntro({\n className,\n align = 'start',\n ...props\n}: HTMLAttributes<HTMLDivElement> & { align?: 'start' | 'center' }) {\n return (\n <div\n className={cn(\n 'flex flex-col gap-4 md:gap-5',\n align === 'center' && 'mx-auto items-center text-center',\n className\n )}\n {...props}\n />\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Badge } from '../primitives/badge';\nimport { Card, CardNumeral, CardTitle } from '../primitives/card';\n\nexport interface StepItem {\n title: ReactNode;\n body: ReactNode;\n /** A small pill beside the title (\"in testing\", \"on the path\"). */\n badge?: ReactNode;\n /** Overrides the automatic 01, 02, 03. */\n numeral?: ReactNode;\n}\n\nexport interface StepGridProps {\n items: StepItem[];\n /**\n * `cards` (white cards, \"Sign in. Earn. Own.\"), `plain` (open columns,\n * \"Ask for something a bot can't fake cheaply.\") or `ink` (dark cards,\n * \"Why partner now\"). Numerals are dropped on `ink`, as the deck does.\n */\n look?: 'cards' | 'plain' | 'ink';\n className?: string;\n}\n\nconst pad = (n: number) => String(n + 1).padStart(2, '0');\n\nexport function StepGrid({ items, look = 'cards', className }: StepGridProps) {\n const cols = items.length >= 3 ? 'md:grid-cols-3' : items.length === 2 ? 'md:grid-cols-2' : '';\n return (\n <ol className={cn('grid gap-4 md:gap-5', cols, className)}>\n {items.map((it, i) =>\n look === 'plain' ? (\n <li key={i} className=\"flex flex-col gap-3 pr-4\">\n <CardNumeral>{it.numeral ?? pad(i)}</CardNumeral>\n <CardTitle className=\"oca-title-sm\">\n {it.title}\n {it.badge ? <Badge>{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"oca-body text-[0.9375rem]\">{it.body}</div>\n </li>\n ) : look === 'ink' ? (\n <li key={i}>\n <Card tone=\"ink\" padding=\"md\" className=\"h-full\">\n <CardTitle className=\"text-oca-ink-title\">\n {it.title}\n {it.badge ? <Badge tone=\"onInk\">{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"mt-3 text-[1rem] leading-relaxed text-oca-ink-muted\">{it.body}</div>\n </Card>\n </li>\n ) : (\n <li key={i}>\n <Card padding=\"md\" className=\"flex h-full flex-col gap-3\">\n <CardNumeral>{it.numeral ?? pad(i)}</CardNumeral>\n <CardTitle>\n {it.title}\n {it.badge ? <Badge>{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"oca-body\">{it.body}</div>\n </Card>\n </li>\n )\n )}\n </ol>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The deck's \"What you get\" panel: a dark card of packages, each a peach title,\n * a coloured identifier and a // comment. The identifier's colour says what it\n * is, the way an editor would: a package, a component tag, a licence link.\n */\nexport interface PackageItem {\n title: ReactNode;\n /** The thing itself: an npm name, a JSX tag, a licence line. */\n code: ReactNode;\n kind?: 'package' | 'tag' | 'link';\n /** Rendered after `// `. */\n note?: ReactNode;\n href?: string;\n}\n\nconst KIND = {\n package: 'text-oca-code-package',\n tag: 'text-oca-code-tag',\n link: 'text-oca-code-link',\n} as const;\n\nexport function PackageCard({ items, className }: { items: PackageItem[]; className?: string }) {\n return (\n <div\n className={cn(\n 'grid gap-x-10 gap-y-7 rounded-[1.25rem] border border-oca-ink-line bg-oca-ink-card p-6 text-oca-ink-foreground md:grid-cols-2 md:p-9',\n className\n )}\n >\n {items.map((it, i) => {\n // Sou sets identifiers in the text face, not mono: they read as names here.\n const code = <span className={cn('text-[0.9375rem]', KIND[it.kind ?? 'package'])}>{it.code}</span>;\n return (\n <div key={i} className=\"flex min-w-0 flex-col gap-1.5\">\n <h3 className=\"text-[1.125rem] font-semibold tracking-[-0.01em] text-oca-ink-title\">{it.title}</h3>\n {it.href ? (\n <a href={it.href} className=\"w-fit underline decoration-transparent underline-offset-4 hover:decoration-current\">\n {code}\n </a>\n ) : (\n code\n )}\n {it.note ? (\n <p className=\"text-[0.9375rem] leading-relaxed text-oca-ink-subtle\">\n <span aria-hidden>{'// '}</span>\n {it.note}\n </p>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n}\n\n/** A dark block of code with an optional caption, for snippets. */\nexport function CodeBlock({\n code,\n caption,\n className,\n}: {\n code: string;\n caption?: ReactNode;\n className?: string;\n}) {\n return (\n <figure className={cn('overflow-hidden rounded-[1.25rem] border border-oca-ink-line bg-oca-ink-card', className)}>\n {caption ? (\n <figcaption className=\"border-b border-oca-ink-line px-5 py-3 text-[0.8125rem] text-oca-ink-subtle\">\n {caption}\n </figcaption>\n ) : null}\n <pre className=\"overflow-x-auto p-5 font-mono text-[0.875rem] leading-relaxed text-oca-ink-muted\">\n <code>{code}</code>\n </pre>\n </figure>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * \"What's true today.\" A two-column table: a status and what it covers. Sou's\n * note on the slide is the brief for this component: say it plainly; being\n * clear about what isn't done yet is part of the pitch. So the statuses are\n * fixed words, never icons, and a row cannot be written without one.\n */\nexport type TruthStatus = 'yes' | 'testing' | 'not-yet' | 'no';\n\nconst LABEL: Record<TruthStatus, string> = {\n yes: 'Yes',\n testing: 'In testing',\n 'not-yet': 'Not yet',\n no: 'No',\n};\n\nconst TONE: Record<TruthStatus, string> = {\n yes: 'text-oca-accent-ink',\n testing: 'text-foreground',\n 'not-yet': 'text-muted-foreground',\n no: 'text-muted-foreground',\n};\n\nexport interface TruthRow {\n status: TruthStatus;\n what: ReactNode;\n}\n\nexport function TruthTable({\n rows,\n statusHeading = 'Status',\n whatHeading = 'What',\n className,\n}: {\n rows: TruthRow[];\n statusHeading?: string;\n whatHeading?: string;\n className?: string;\n}) {\n return (\n <div className={cn('overflow-hidden rounded-xl border border-oca-hairline-strong', className)}>\n <table className=\"w-full border-collapse text-left text-[0.9375rem] md:text-[1rem]\">\n <thead className=\"bg-oca-table-head\">\n <tr>\n <th scope=\"col\" className=\"w-[30%] border-b border-oca-hairline-strong px-4 py-3 font-semibold md:w-[22%]\">\n {statusHeading}\n </th>\n <th scope=\"col\" className=\"border-b border-l border-oca-hairline-strong px-4 py-3 font-semibold\">\n {whatHeading}\n </th>\n </tr>\n </thead>\n <tbody className=\"bg-card\">\n {rows.map((r, i) => (\n <tr key={i} className=\"align-top\">\n <td\n className={cn(\n 'border-t border-oca-hairline-strong px-4 py-3 font-medium',\n i === 0 && 'border-t-0',\n TONE[r.status]\n )}\n >\n {LABEL[r.status]}\n </td>\n <td\n className={cn(\n 'border-l border-t border-oca-hairline-strong px-4 py-3 leading-relaxed',\n i === 0 && 'border-t-0'\n )}\n >\n {r.what}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","import type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * Sats, always as whole integers with tabular figures. An amount nobody has\n * measured renders as \"—\" with \"unknown\" for screen readers, never as 0: a\n * missing balance shown as zero is a false statement about someone's money.\n */\n\nconst INT = new Intl.NumberFormat('en-US', { maximumFractionDigits: 0 });\nconst COMPACT = new Intl.NumberFormat('en-US', { notation: 'compact', maximumFractionDigits: 1 });\n\nexport interface SatsTextOptions {\n /** Append \" sats\" (default) or nothing. */\n unit?: 'sats' | 'none';\n /** 1.2K, 3.4M. For dense tables and charts only. */\n compact?: boolean;\n /** Prefix + for positive amounts (credits). */\n signed?: boolean;\n}\n\n/** A sats amount as text. Returns null for an unknown amount. */\nexport function satsText(value: number | null | undefined, opts: SatsTextOptions = {}): string | null {\n if (value == null || !Number.isFinite(value)) return null;\n const whole = Math.trunc(value);\n const body = (opts.compact ? COMPACT : INT).format(Math.abs(whole));\n const sign = whole < 0 ? '−' : opts.signed && whole > 0 ? '+' : '';\n const unit = opts.unit === 'none' ? '' : whole === 1 || whole === -1 ? ' sat' : ' sats';\n return `${sign}${body}${unit}`;\n}\n\nexport interface SatsProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'>, SatsTextOptions {\n value: number | null | undefined;\n /** What to show for an unknown amount. */\n unknown?: string;\n}\n\nexport function Sats({ value, unit, compact, signed, unknown = '—', className, ...props }: SatsProps) {\n const text = satsText(value, { unit, compact, signed });\n if (text === null) {\n return (\n <span className={cn('oca-tabular text-muted-foreground', className)} {...props}>\n <span aria-hidden>{unknown}</span>\n <span className=\"sr-only\">unknown</span>\n </span>\n );\n }\n return (\n <span className={cn('oca-tabular whitespace-nowrap', className)} {...props}>\n {text}\n </span>\n );\n}\n\n/** \"≈ $12.34\" beside an amount, when a price is known. Renders nothing otherwise. */\nexport function UsdApprox({\n sats,\n usdPerBtc,\n className,\n}: {\n sats: number | null | undefined;\n usdPerBtc: number | null | undefined;\n className?: string;\n}) {\n if (sats == null || usdPerBtc == null || !Number.isFinite(sats) || !Number.isFinite(usdPerBtc)) return null;\n const usd = (sats / 1e8) * usdPerBtc;\n const text = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: usd < 1 ? 4 : 2,\n }).format(usd);\n return <span className={cn('oca-tabular text-muted-foreground', className)}>≈ {text}</span>;\n}\n\n/** A large figure with its label: balances, totals. */\nexport function SatsFigure({\n label,\n value,\n hint,\n className,\n}: {\n label: string;\n value: number | null | undefined;\n hint?: React.ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-col gap-1.5', className)}>\n <span className=\"text-[0.9375rem] text-muted-foreground\">{label}</span>\n <span className=\"oca-display-3 oca-tabular\">\n <Sats value={value} unit=\"none\" />\n <span className=\"ml-2 text-[0.5em] tracking-normal text-muted-foreground\">sats</span>\n </span>\n {hint ? <span className=\"text-[0.875rem] text-muted-foreground\">{hint}</span> : null}\n </div>\n );\n}\n","import { Check, Copy } from 'lucide-react';\nimport { useCallback, useEffect, useRef, useState, type HTMLAttributes, type ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Mark } from '../brand/mark';\n\n/* ── Page header ─────────────────────────────────────────────────────── */\n\nexport function PageHeader({\n eyebrow,\n title,\n description,\n actions,\n className,\n}: {\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n className?: string;\n}) {\n return (\n <header className={cn('flex flex-col gap-5 md:flex-row md:items-end md:justify-between', className)}>\n <div className=\"flex max-w-[44rem] flex-col gap-3\">\n {eyebrow ? <p className=\"oca-eyebrow\">{eyebrow}</p> : null}\n <h1 className=\"oca-display-3\">{title}</h1>\n {description ? <p className=\"oca-body text-[1.0625rem]\">{description}</p> : null}\n </div>\n {actions ? <div className=\"flex shrink-0 flex-wrap items-center gap-3\">{actions}</div> : null}\n </header>\n );\n}\n\n/* ── Stats ───────────────────────────────────────────────────────────── */\n\nexport function StatCard({\n label,\n value,\n hint,\n className,\n}: {\n label: ReactNode;\n value: ReactNode;\n hint?: ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-col gap-2 rounded-[1.25rem] border border-border bg-card p-5 md:p-6', className)}>\n <span className=\"text-[0.875rem] text-muted-foreground\">{label}</span>\n <span className=\"oca-tabular text-[1.75rem] leading-tight tracking-[-0.02em]\">{value}</span>\n {hint ? <span className=\"text-[0.8125rem] leading-snug text-muted-foreground\">{hint}</span> : null}\n </div>\n );\n}\n\nexport function StatGrid({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('grid grid-cols-2 gap-3 md:grid-cols-4 md:gap-4', className)} {...props} />;\n}\n\n/* ── Key / value ─────────────────────────────────────────────────────── */\n\nexport interface KeyValueItem {\n label: ReactNode;\n value: ReactNode;\n mono?: boolean;\n}\n\nexport function KeyValueList({ items, className }: { items: KeyValueItem[]; className?: string }) {\n return (\n <dl className={cn('divide-y divide-border rounded-[1.25rem] border border-border bg-card', className)}>\n {items.map((it, i) => (\n <div key={i} className=\"flex flex-col gap-1 px-5 py-3.5 sm:flex-row sm:items-baseline sm:gap-6\">\n <dt className=\"shrink-0 text-[0.875rem] text-muted-foreground sm:w-48\">{it.label}</dt>\n <dd className={cn('min-w-0 break-words text-[0.9375rem]', it.mono && 'font-mono text-[0.875rem]')}>\n {it.value}\n </dd>\n </div>\n ))}\n </dl>\n );\n}\n\n/* ── Table ───────────────────────────────────────────────────────────── */\n\nexport interface Column<T> {\n key: string;\n header: ReactNode;\n cell: (row: T) => ReactNode;\n align?: 'start' | 'end';\n /** Hide below md. */\n wide?: boolean;\n}\n\nexport function DataTable<T>({\n columns,\n rows,\n rowKey,\n empty,\n caption,\n className,\n}: {\n columns: Column<T>[];\n rows: T[];\n rowKey: (row: T, i: number) => string;\n empty?: ReactNode;\n caption?: string;\n className?: string;\n}) {\n if (rows.length === 0 && empty) return <>{empty}</>;\n return (\n <div className={cn('overflow-x-auto rounded-[1.25rem] border border-border bg-card', className)}>\n <table className=\"w-full border-collapse text-left text-[0.9375rem]\">\n {caption ? <caption className=\"sr-only\">{caption}</caption> : null}\n <thead>\n <tr className=\"border-b border-border\">\n {columns.map((c) => (\n <th\n key={c.key}\n scope=\"col\"\n className={cn(\n 'whitespace-nowrap px-5 py-3 text-[0.8125rem] font-medium text-muted-foreground',\n c.align === 'end' && 'text-right',\n c.wide && 'hidden md:table-cell'\n )}\n >\n {c.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {rows.map((r, i) => (\n <tr key={rowKey(r, i)} className=\"transition-colors hover:bg-accent/60\">\n {columns.map((c) => (\n <td\n key={c.key}\n className={cn(\n 'px-5 py-3.5 align-middle',\n c.align === 'end' && 'text-right',\n c.wide && 'hidden md:table-cell'\n )}\n >\n {c.cell(r)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\n/* ── Empty, notice ───────────────────────────────────────────────────── */\n\nexport function EmptyState({\n title,\n children,\n action,\n className,\n}: {\n title: ReactNode;\n children?: ReactNode;\n action?: ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center gap-4 rounded-[1.25rem] border border-dashed border-oca-hairline-strong px-6 py-12 text-center',\n className\n )}\n >\n <Mark size={56} />\n <h3 className=\"oca-title-sm\">{title}</h3>\n {children ? <div className=\"oca-body max-w-md text-[0.9375rem]\">{children}</div> : null}\n {action ? <div className=\"mt-1 flex flex-wrap justify-center gap-3\">{action}</div> : null}\n </div>\n );\n}\n\ntype NoticeTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'brand';\n\nconst NOTICE: Record<NoticeTone, string> = {\n neutral: 'border-border bg-card',\n info: 'border-[color-mix(in_oklab,var(--info)_30%,var(--border))] bg-[color-mix(in_oklab,var(--info)_6%,var(--card))]',\n success:\n 'border-[color-mix(in_oklab,var(--success)_30%,var(--border))] bg-[color-mix(in_oklab,var(--success)_6%,var(--card))]',\n warning:\n 'border-[color-mix(in_oklab,var(--warning)_35%,var(--border))] bg-[color-mix(in_oklab,var(--warning)_7%,var(--card))]',\n danger:\n 'border-[color-mix(in_oklab,var(--destructive)_32%,var(--border))] bg-[color-mix(in_oklab,var(--destructive)_6%,var(--card))]',\n brand: 'border-[color-mix(in_oklab,var(--oca-orange)_35%,var(--border))] bg-[color-mix(in_oklab,var(--oca-orange)_7%,var(--card))]',\n};\n\nconst NOTICE_TITLE: Record<NoticeTone, string> = {\n neutral: 'text-foreground',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-destructive',\n brand: 'text-oca-accent-ink',\n};\n\nexport function Notice({\n tone = 'neutral',\n title,\n children,\n action,\n className,\n}: {\n tone?: NoticeTone;\n title?: ReactNode;\n children?: ReactNode;\n action?: ReactNode;\n className?: string;\n}) {\n return (\n <div\n role={tone === 'danger' || tone === 'warning' ? 'alert' : 'note'}\n className={cn(\n 'flex flex-col gap-3 rounded-2xl border px-5 py-4 sm:flex-row sm:items-start sm:justify-between',\n NOTICE[tone],\n className\n )}\n >\n <div className=\"flex min-w-0 flex-col gap-1\">\n {title ? <p className={cn('text-[0.9375rem] font-medium', NOTICE_TITLE[tone])}>{title}</p> : null}\n {children ? <div className=\"text-[0.9375rem] leading-relaxed text-foreground/85\">{children}</div> : null}\n </div>\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </div>\n );\n}\n\n/* ── Hashes, addresses, ids ──────────────────────────────────────────── */\n\nfunction middle(v: string, head: number, tail: number) {\n return v.length <= head + tail + 1 ? v : `${v.slice(0, head)}…${v.slice(-tail)}`;\n}\n\nexport function useCopy(timeoutMs = 1600) {\n const [copied, setCopied] = useState(false);\n const t = useRef<ReturnType<typeof setTimeout> | null>(null);\n useEffect(() => () => {\n if (t.current) clearTimeout(t.current);\n }, []);\n const copy = useCallback(\n async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n if (t.current) clearTimeout(t.current);\n t.current = setTimeout(() => setCopied(false), timeoutMs);\n } catch {\n setCopied(false);\n }\n },\n [timeoutMs]\n );\n return { copied, copy };\n}\n\nexport function CopyButton({ value, label = 'Copy', className }: { value: string; label?: string; className?: string }) {\n const { copied, copy } = useCopy();\n return (\n <button\n type=\"button\"\n onClick={() => void copy(value)}\n aria-label={copied ? 'Copied' : label}\n className={cn(\n 'inline-flex size-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n className\n )}\n >\n {copied ? <Check className=\"size-4 text-success\" /> : <Copy className=\"size-4\" />}\n <span aria-live=\"polite\" className=\"sr-only\">\n {copied ? 'Copied' : ''}\n </span>\n </button>\n );\n}\n\n/** A long identifier shown as head…tail in mono, with copy. The full value is\n * the title and the copied text, never lost to the truncation. */\nexport function HashChip({\n value,\n head = 8,\n tail = 6,\n copy = true,\n href,\n className,\n}: {\n value: string;\n head?: number;\n tail?: number;\n copy?: boolean;\n href?: string;\n className?: string;\n}) {\n const shown = middle(value, head, tail);\n const text = (\n <span title={value} className=\"font-mono text-[0.875rem]\">\n {shown}\n </span>\n );\n return (\n <span className={cn('inline-flex max-w-full items-center gap-1', className)}>\n {href ? (\n <a href={href} className=\"underline decoration-border underline-offset-4 hover:decoration-foreground\">\n {text}\n </a>\n ) : (\n text\n )}\n {copy ? <CopyButton value={value} label=\"Copy full value\" /> : null}\n </span>\n );\n}\n\n/* ── Progress ────────────────────────────────────────────────────────── */\n\nexport type StepState = 'done' | 'current' | 'upcoming' | 'blocked';\n\nexport interface ProgressStep {\n label: ReactNode;\n hint?: ReactNode;\n state: StepState;\n}\n\nexport function ProgressSteps({ steps, className }: { steps: ProgressStep[]; className?: string }) {\n return (\n <ol className={cn('flex flex-col gap-0', className)}>\n {steps.map((s, i) => {\n const last = i === steps.length - 1;\n return (\n <li key={i} className=\"relative flex gap-4 pb-6 last:pb-0\" aria-current={s.state === 'current' ? 'step' : undefined}>\n {!last ? (\n <span\n aria-hidden\n className={cn(\n 'absolute left-[11px] top-7 h-[calc(100%-1.5rem)] w-px',\n s.state === 'done' ? 'bg-foreground/30' : 'bg-border'\n )}\n />\n ) : null}\n <span\n className={cn(\n 'relative z-10 mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-full border text-[0.75rem] oca-tabular',\n s.state === 'done' && 'border-primary bg-primary text-primary-foreground',\n s.state === 'current' && 'border-brand bg-card text-oca-accent-ink',\n s.state === 'upcoming' && 'border-border bg-card text-muted-foreground',\n s.state === 'blocked' && 'border-destructive bg-card text-destructive'\n )}\n >\n {s.state === 'done' ? <Check className=\"size-3.5\" strokeWidth={3} /> : String(i + 1).padStart(2, '0')}\n </span>\n <div className=\"flex min-w-0 flex-col gap-1\">\n <span className={cn('text-[0.9375rem]', s.state === 'upcoming' ? 'text-muted-foreground' : 'font-medium')}>\n {s.label}\n </span>\n {s.hint ? <span className=\"text-[0.875rem] leading-snug text-muted-foreground\">{s.hint}</span> : null}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n\n/* ── Activity ────────────────────────────────────────────────────────── */\n\nexport interface ActivityItem {\n id: string;\n title: ReactNode;\n meta?: ReactNode;\n trailing?: ReactNode;\n href?: string;\n}\n\nexport function ActivityList({ items, empty, className }: { items: ActivityItem[]; empty?: ReactNode; className?: string }) {\n if (items.length === 0 && empty) return <>{empty}</>;\n return (\n <ul className={cn('divide-y divide-border rounded-[1.25rem] border border-border bg-card', className)}>\n {items.map((it) => {\n const body = (\n <div className=\"flex items-center justify-between gap-4 px-5 py-4\">\n <div className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"truncate text-[0.9375rem]\">{it.title}</span>\n {it.meta ? <span className=\"truncate text-[0.8125rem] text-muted-foreground\">{it.meta}</span> : null}\n </div>\n {it.trailing ? <div className=\"shrink-0 text-right\">{it.trailing}</div> : null}\n </div>\n );\n return (\n <li key={it.id}>\n {it.href ? (\n <a href={it.href} className=\"block transition-colors hover:bg-accent/60\">\n {body}\n </a>\n ) : (\n body\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n","import { Menu } from 'lucide-react';\nimport Link from 'next/link';\nimport { useState, type ReactNode } from 'react';\n\nimport { Lockup } from '../brand/mark';\nimport { cn } from '../lib/cn';\nimport { Sheet, SheetContent, SheetTitle, SheetTrigger } from '../primitives/overlay';\n\nexport interface NavItem {\n href: string;\n label: ReactNode;\n /** Marks the current section for styling and aria-current. */\n active?: boolean;\n external?: boolean;\n}\n\nfunction NavLink({ item, className, onNavigate }: { item: NavItem; className?: string; onNavigate?: () => void }) {\n const cls = cn(\n 'rounded-full px-3 py-2 text-[0.9375rem] transition-colors',\n item.active ? 'text-foreground' : 'text-muted-foreground hover:text-foreground',\n className\n );\n if (item.external) {\n return (\n <a href={item.href} className={cls} rel=\"noreferrer\" onClick={onNavigate}>\n {item.label}\n </a>\n );\n }\n return (\n <Link href={item.href} className={cls} aria-current={item.active ? 'page' : undefined} onClick={onNavigate}>\n {item.label}\n </Link>\n );\n}\n\n/**\n * The public header: lockup, a few words of navigation, actions on the right.\n * Below md the navigation moves into a sheet; the actions stay.\n */\nexport function SiteHeader({\n home = '/',\n brand,\n nav = [],\n actions,\n className,\n}: {\n home?: string;\n brand?: ReactNode;\n nav?: NavItem[];\n actions?: ReactNode;\n className?: string;\n}) {\n const [open, setOpen] = useState(false);\n return (\n <header\n className={cn(\n 'sticky top-0 z-40 w-full border-b border-transparent bg-background/85 backdrop-blur-md supports-[backdrop-filter]:bg-background/70',\n className\n )}\n >\n <div className=\"oca-container flex h-16 items-center justify-between gap-4 md:h-[4.5rem]\">\n <Link href={home} className=\"-ml-1 rounded-lg p-1\" aria-label=\"Home\">\n {brand ?? <Lockup size={28} />}\n </Link>\n {nav.length > 0 ? (\n <nav aria-label=\"Main\" className=\"hidden items-center gap-1 md:flex\">\n {nav.map((n) => (\n <NavLink key={n.href} item={n} />\n ))}\n </nav>\n ) : null}\n <div className=\"flex items-center gap-2\">\n {actions}\n {nav.length > 0 ? (\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger\n className=\"inline-flex size-10 items-center justify-center rounded-full text-foreground hover:bg-accent md:hidden\"\n aria-label=\"Open menu\"\n >\n <Menu className=\"size-5\" />\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"pt-16\">\n <SheetTitle className=\"sr-only\">Menu</SheetTitle>\n <nav aria-label=\"Main\" className=\"flex flex-col\">\n {nav.map((n) => (\n <NavLink\n key={n.href}\n item={n}\n className=\"rounded-xl px-3 py-3 text-[1.0625rem]\"\n onNavigate={() => setOpen(false)}\n />\n ))}\n </nav>\n </SheetContent>\n </Sheet>\n ) : null}\n </div>\n </div>\n </header>\n );\n}\n\nexport interface FooterColumn {\n heading: string;\n links: NavItem[];\n}\n\n/**\n * The footer, in the deck's register: a line of fine print, the support credit,\n * and a few columns of links. Links are 44px tall on phones.\n */\nexport function SiteFooter({\n columns = [],\n fineprint,\n meta,\n className,\n}: {\n columns?: FooterColumn[];\n fineprint?: ReactNode;\n meta?: ReactNode;\n className?: string;\n}) {\n return (\n <footer className={cn('border-t border-border bg-background', className)}>\n <div className=\"oca-container grid gap-10 py-14 md:grid-cols-[1.3fr_repeat(3,1fr)] md:py-16\">\n <div className=\"flex flex-col gap-4\">\n <Lockup size={26} />\n {fineprint ? <p className=\"max-w-xs text-[0.9375rem] leading-relaxed text-muted-foreground\">{fineprint}</p> : null}\n </div>\n {columns.map((col) => (\n <div key={col.heading} className=\"flex flex-col gap-1\">\n <p className=\"mb-2 text-[0.875rem] font-medium\">{col.heading}</p>\n {col.links.map((l) => (\n <NavLink\n key={l.href}\n item={l}\n className=\"-mx-3 py-2.5 text-[0.9375rem] md:py-1.5\"\n />\n ))}\n </div>\n ))}\n </div>\n {meta ? (\n <div className=\"oca-container border-t border-border py-6 text-[0.875rem] text-muted-foreground\">{meta}</div>\n ) : null}\n </footer>\n );\n}\n","import { Menu, Moon, Sun, SunMoon } from 'lucide-react';\nimport Link from 'next/link';\nimport { useTheme } from 'next-themes';\nimport { useEffect, useState, type ReactNode } from 'react';\n\nimport { AppIcon, Lockup } from '../brand/mark';\nimport { cn } from '../lib/cn';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Sheet,\n SheetContent,\n SheetTitle,\n SheetTrigger,\n} from '../primitives/overlay';\n\nexport interface ShellNavItem {\n href: string;\n label: string;\n icon?: ReactNode;\n active?: boolean;\n /** A count or a dot beside the label (unread, needs attention). */\n badge?: ReactNode;\n}\n\nexport interface ShellNavGroup {\n /** Omit for the first, unlabeled group. */\n label?: string;\n items: ShellNavItem[];\n}\n\nfunction SideNav({ groups, onNavigate }: { groups: ShellNavGroup[]; onNavigate?: () => void }) {\n return (\n <nav aria-label=\"Sections\" className=\"flex flex-col gap-6\">\n {groups.map((g, gi) => (\n <div key={g.label ?? gi} className=\"flex flex-col gap-0.5\">\n {g.label ? <p className=\"px-3 pb-1.5 text-[0.8125rem] text-muted-foreground\">{g.label}</p> : null}\n {g.items.map((it) => (\n <Link\n key={it.href}\n href={it.href}\n onClick={onNavigate}\n aria-current={it.active ? 'page' : undefined}\n className={cn(\n 'flex h-10 items-center gap-3 rounded-xl px-3 text-[0.9375rem] transition-colors',\n '[&_svg]:size-[1.125rem] [&_svg]:shrink-0',\n it.active\n ? 'bg-card text-foreground shadow-sm ring-1 ring-border [&_svg]:text-foreground'\n : 'text-muted-foreground hover:bg-accent hover:text-foreground'\n )}\n >\n {it.icon}\n <span className=\"min-w-0 flex-1 truncate\">{it.label}</span>\n {it.badge ? <span className=\"shrink-0\">{it.badge}</span> : null}\n </Link>\n ))}\n </div>\n ))}\n </nav>\n );\n}\n\n/**\n * The signed-in frame: a quiet sidebar on the canvas, content on the right. On\n * phones the sidebar becomes a sheet behind a top bar. The account control and\n * any banner are slots, so the shell knows nothing about sessions.\n */\nexport function AppShell({\n nav,\n home = '/',\n account,\n banner,\n footer,\n children,\n className,\n}: {\n nav: ShellNavGroup[];\n home?: string;\n account?: ReactNode;\n banner?: ReactNode;\n footer?: ReactNode;\n children: ReactNode;\n className?: string;\n}) {\n const [open, setOpen] = useState(false);\n return (\n <div className={cn('min-h-dvh bg-background', className)}>\n <div className=\"sticky top-0 z-40 flex h-14 items-center justify-between border-b border-border bg-background/85 px-4 backdrop-blur-md lg:hidden\">\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger\n className=\"inline-flex size-10 items-center justify-center rounded-full hover:bg-accent\"\n aria-label=\"Open navigation\"\n >\n <Menu className=\"size-5\" />\n </SheetTrigger>\n <SheetContent side=\"left\" className=\"p-4 pt-16\">\n <SheetTitle className=\"sr-only\">Navigation</SheetTitle>\n <SideNav groups={nav} onNavigate={() => setOpen(false)} />\n </SheetContent>\n </Sheet>\n <Link href={home} aria-label=\"Home\">\n <AppIcon size={28} />\n </Link>\n <div className=\"flex items-center\">{account}</div>\n </div>\n <div className=\"mx-auto flex w-full max-w-[90rem]\">\n <aside className=\"sticky top-0 hidden h-dvh w-64 shrink-0 flex-col gap-8 overflow-y-auto px-4 py-6 lg:flex\">\n <Link href={home} className=\"px-2\" aria-label=\"Home\">\n <Lockup size={26} />\n </Link>\n <SideNav groups={nav} />\n <div className=\"mt-auto flex flex-col gap-3\">{footer}</div>\n </aside>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <div className=\"hidden h-[4.5rem] items-center justify-end gap-3 px-8 lg:flex\">{account}</div>\n {banner ? <div className=\"px-4 pb-2 pt-4 md:px-8 lg:pt-0\">{banner}</div> : null}\n <main id=\"main-content\" className=\"flex-1 px-4 pb-16 pt-6 md:px-8 lg:pt-2\">\n {children}\n </main>\n </div>\n </div>\n </div>\n );\n}\n\nexport interface AccountMenuItem {\n label: string;\n href?: string;\n onSelect?: () => void;\n icon?: ReactNode;\n destructive?: boolean;\n}\n\n/** The account button: initial + short id, a menu of items. */\nexport function AccountMenu({\n name,\n detail,\n items,\n}: {\n name: string;\n /** A second line: the short did, an address. */\n detail?: string;\n items: (AccountMenuItem | 'separator')[];\n}) {\n const initial = name.trim().charAt(0).toUpperCase() || '·';\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n className=\"inline-flex h-10 items-center gap-2.5 rounded-full border border-border bg-card pl-1 pr-3.5 text-[0.9375rem] outline-none transition-colors hover:border-oca-hairline-strong focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={`Account: ${name}`}\n >\n <span className=\"flex size-8 items-center justify-center rounded-full bg-foreground text-[0.8125rem] font-medium text-background\">\n {initial}\n </span>\n <span className=\"max-w-[10rem] truncate\">{name}</span>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-64\">\n <DropdownMenuLabel className=\"flex flex-col gap-0.5\">\n <span className=\"truncate text-[0.9375rem] font-medium text-foreground\">{name}</span>\n {detail ? <span className=\"truncate font-mono text-[0.75rem]\">{detail}</span> : null}\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n {items.map((it, i) =>\n it === 'separator' ? (\n <DropdownMenuSeparator key={`sep-${i}`} />\n ) : it.href ? (\n <DropdownMenuItem key={it.label} asChild destructive={it.destructive}>\n <Link href={it.href}>\n {it.icon}\n {it.label}\n </Link>\n </DropdownMenuItem>\n ) : (\n <DropdownMenuItem key={it.label} onSelect={it.onSelect} destructive={it.destructive}>\n {it.icon}\n {it.label}\n </DropdownMenuItem>\n )\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n/** Light, dark, or follow the system: one button that cycles. */\nexport function ThemeToggle({ className }: { className?: string }) {\n const { theme, setTheme } = useTheme();\n const [mounted, setMounted] = useState(false);\n useEffect(() => setMounted(true), []);\n const current = mounted ? (theme ?? 'system') : 'system';\n const next = current === 'light' ? 'dark' : current === 'dark' ? 'system' : 'light';\n const Icon = current === 'light' ? Sun : current === 'dark' ? Moon : SunMoon;\n return (\n <button\n type=\"button\"\n onClick={() => setTheme(next)}\n aria-label={`Theme: ${current}. Switch to ${next}`}\n title={`Theme: ${current}`}\n className={cn(\n 'inline-flex size-10 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n className\n )}\n >\n <Icon className=\"size-[1.125rem]\" />\n </button>\n );\n}\n"]}
|