@theme{--color-fd-background: #f5f5f5; --color-fd-foreground: #0a0a0a; --color-fd-muted: #f5f5f5; --color-fd-muted-foreground: #737373; --color-fd-popover: #fafafa; --color-fd-popover-foreground: #272727; --color-fd-card: #f1f1f1; --color-fd-card-foreground: #0a0a0a; --color-fd-border: #cccccc80; --color-fd-primary: #171717; --color-fd-primary-foreground: #fafafa; --color-fd-secondary: #ededed; --color-fd-secondary-foreground: #171717; --color-fd-accent: #d1d1d180; --color-fd-accent-foreground: #171717; --color-fd-ring: #a3a3a3; --color-fd-overlay: #0003;}.dark{--color-fd-background:#121212;--color-fd-foreground:#ebebeb;--color-fd-muted:#212121;--color-fd-muted-foreground:#b3b3b3cc;--color-fd-popover:#1e1e1e;--color-fd-popover-foreground:#dedede;--color-fd-card:#191919;--color-fd-card-foreground:#fafafa;--color-fd-border:#6663;--color-fd-primary:#fafafa;--color-fd-primary-foreground:#171717;--color-fd-secondary:#212121;--color-fd-secondary-foreground:#ebebeb;--color-fd-accent:#6868684d;--color-fd-accent-foreground:#e6e6e6;--color-fd-ring:#8c8c8c;--color-fd-overlay:#0003}@theme static{--color-fd-info: oklch(62.3% .214 259.815); --color-fd-warning: oklch(76.9% .188 70.08); --color-fd-error: oklch(63.7% .237 25.331); --color-fd-success: oklch(72.3% .219 149.579); --color-fd-idea: oklch(70.5% .209 60.849); --color-fd-diff-remove: #c80a641f; --color-fd-diff-remove-symbol: #e60a64; --color-fd-diff-add: #0eb4641a; --color-fd-diff-add-symbol: #0ac864;}
.dark #nd-sidebar{--color-fd-muted:#292929;--color-fd-secondary:#2e2e2e;--color-fd-muted-foreground:#b8b8b8}
:root{--fd-sidebar-drawer-offset:100%}[dir=rtl]{--fd-sidebar-drawer-offset:-100%}@theme{--animate-fd-fade-in: fd-fade-in .3s ease; --animate-fd-fade-out: fd-fade-out .3s ease;  --animate-fd-roll-in: fd-roll-in .32s cubic-bezier(.22, 1, .36, 1); --animate-fd-dialog-in: fd-dialog-in .3s cubic-bezier(.16, 1, .3, 1); --animate-fd-dialog-out: fd-dialog-out .3s cubic-bezier(.16, 1, .3, 1); --animate-fd-popover-in: fd-popover-in .1s ease; --animate-fd-popover-out: fd-popover-out .1s ease; --animate-fd-sidebar-in: fd-sidebar-in .25s ease; --animate-fd-sidebar-out: fd-sidebar-out .25s ease; @keyframes fd-sidebar-in { from { transform: translateX(var(--fd-sidebar-drawer-offset)); } } @keyframes fd-sidebar-out { to { transform: translateX(var(--fd-sidebar-drawer-offset)); } } @keyframes fd-dialog-in { from { transform: scale(1.06); opacity: 0; } to { transform: scale(1); } } @keyframes fd-dialog-out { from { transform: scale(1); } to { transform: scale(1.04); opacity: 0; } } @keyframes fd-popover-in { from { opacity: 0; transform: scale(.9); } } @keyframes fd-popover-out { to { opacity: 0; transform: scale(.9); } } @keyframes fd-fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes fd-roll-in { from { opacity: 0; translate: 0 calc(var(--fd-roll,1) * .6em); filter: blur(2px); } } @keyframes fd-fade-out { from { opacity: 1; } to { opacity: 0; } }}@layer base{*,:after,:before,::backdrop{border-color:var(--color-fd-border,currentColor)}::file-selector-button{border-color:var(--color-fd-border,currentColor)}body{background-color:var(--color-fd-background);color:var(--color-fd-foreground)}}@utility fd-scroll-container{&::-webkit-scrollbar { width: 5px; height: 5px; } &::-webkit-scrollbar-thumb { border-radius: 5px; background: var(--color-fd-border); } &::-webkit-scrollbar-track { background: transparent; } &::-webkit-scrollbar-corner { display: none; }}@utility fd-steps{counter-reset: step; position: relative; @apply ps-6 ms-2 border-s sm:ms-4 sm:ps-7;}@utility fd-step{&:before { background-color: var(--color-fd-secondary); color: var(--color-fd-secondary-foreground); content: counter(step); counter-increment: step; justify-content: center; align-items: center; font-size: .875rem; line-height: 1.25rem; display: flex; position: absolute; @apply size-8 -inset-s-4 rounded-full; }}@utility prose-no-margin{& > :first-child { margin-top: 0; } & > :last-child { margin-bottom: 0; }}@variant dark (&:where(.dark, .dark *));@variant layout{#nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&), #fd-glass-layout:has(&), #fd-spacious-layout:has(&) { @slot; }}@property --fd-sidebar-col{syntax:"<length>";inherits:true;initial-value:0}@property --fd-ai-chat-col{syntax:"<length>";inherits:true;initial-value:0}.fd-page-tree-item-name{@apply inline-flex items-center gap-1 w-full;}
.shiki:not(.not-fumadocs-codeblock *){--padding-left:calc(var(--spacing) * 4);--padding-right:calc(var(--spacing) * 4)}.shiki:not(.not-fumadocs-codeblock *) code span{color:var(--shiki-light);font-style:var(--shiki-light-font-style)}.shiki:not(.not-fumadocs-codeblock *) .line{padding-left:var(--padding-left);padding-right:var(--padding-right);position:relative}.shiki:not(.not-fumadocs-codeblock *) .line:empty{height:1lh}.shiki:not(.not-fumadocs-codeblock *).has-focused .line:not(.focused){filter:blur(2px);transition:filter .2s}.shiki:not(.not-fumadocs-codeblock *).has-focused:hover .line:not(.focused){filter:blur()}.shiki:not(.not-fumadocs-codeblock *) .diff:before{left:calc(var(--spacing) * 1.5);position:absolute}.shiki:not(.not-fumadocs-codeblock *) .diff.remove{opacity:.7;--fd-counter-color:var(--color-fd-diff-remove-symbol);@apply bg-fd-diff-remove;}.shiki:not(.not-fumadocs-codeblock *) .diff.remove:before{content:"-";@apply text-fd-diff-remove-symbol;}.shiki:not(.not-fumadocs-codeblock *) .diff.add{--fd-counter-color:var(--color-fd-diff-add-symbol);@apply bg-fd-diff-add;}.shiki:not(.not-fumadocs-codeblock *) .diff.add:before{content:"+";@apply text-fd-diff-add-symbol;}.shiki:not(.not-fumadocs-codeblock *) .highlighted{--fd-counter-color:var(--color-fd-primary);@apply bg-fd-primary/10;}.shiki:not(.not-fumadocs-codeblock *) .highlighted:after{content:"";position:absolute;@apply inset-y-0 left-0 border-l-2 border-fd-primary/50;}.shiki:not(.not-fumadocs-codeblock *) .highlighted-word{padding:1px;@apply border -my-px border-fd-primary/30 bg-fd-primary/10 rounded-md font-medium;}.shiki:not(.not-fumadocs-codeblock *)[data-line-numbers] .twoslash-meta-line{padding-left:calc(var(--padding-left) + 7 * var(--spacing))}.shiki:not(.not-fumadocs-codeblock *)[data-line-numbers] .line{counter-increment:line;padding-left:calc(var(--padding-left) + 7 * var(--spacing))}.shiki:not(.not-fumadocs-codeblock *)[data-line-numbers] .line:after{content:counter(line);color:color-mix(in oklab, var(--fd-counter-color,var(--color-fd-muted-foreground)) 60%, transparent);position:absolute;@apply inset-y-0 left-0 w-7 text-right;}.dark .shiki:not(.not-fumadocs-codeblock *) code span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style)}code.shiki:not(.not-fumadocs-code *) span{color:var(--shiki-light);font-style:var(--shiki-light-font-style)}.dark code.shiki:not(.not-fumadocs-code *) span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style)}
@source inline("!enabled !header *:rounded-lg --removed-body-scroll-bar-size -mx-1 [&_svg]:shrink-0 [grid-area:main] animate-fd-fade-in aria-valuemax aria-valuemin aria-valuenow article available backdrop-blur-md backdrop-blur-sm before:absolute before:bg-fd-border before:content-[''] before:inset-y-1 before:start-2.5 before:w-px bg-fd-background/60 bg-fd-popover/80 border-x bottom-26 breadcrumb breadcrumbEnabled circleProps circumference clerk click containerProps createLinkItemRenderer createPortal data-[active=true]:before:absolute data-[active=true]:before:bg-fd-primary data-[active=true]:before:content-[''] data-[active=true]:before:inset-y-2.5 data-[active=true]:before:start-2.5 data-[active=true]:before:w-px data-[active=true]:bg-fd-primary/10 data-[active=true]:hover:transition-colors data-full data-layout-content data-layout-main data-toc-popover data-toc-popover-content data-toc-popover-trigger defaultChildren defaultSlots defaultTabs duration ease edit exit flex-row-reverse flux-layout-slot font-semibold footer footerEnabled footerList fumadocs-core/breadcrumb gap-2.5 getBreadcrumbItemsFromPath grid-cols-1 h-8.5 h-9 head hide hideIfDisabled hover:bg-fd-accent/50 hover:opacity-80 hover:text-fd-accent-foreground/80 hover:transition-none including information initial inset-x-0 justify-items-center layout-level lg:text-sm linkItems mask-[linear-gradient(to_bottom,transparent,white_--spacing(14),white_calc(100%---spacing(14)),transparent)] max max-h-[50vh] max-w-[1200px] max-w-[900px] max-w-svw mb-4 mb-8 mb-auto md:pt-8 md:px-6 min min-h-11 motion motion/react ms-1 ms-px nd-flux-layout nd-page no normalizedValue onAnimationComplete opacity overflow-y-hidden pagination pb-24 pointer-events-none popLayout pr-(--removed-body-scroll-bar-size,0) progress progressbar provided ps-2.5 py-10 py-16 py-6 radius react-remove-scroll renderNavigationPanel replace restSvgProps rotate-180 scale selectedIdx setBlockScroll setContainer setDate sidebarEnabled sidebarProps single size-4.5 sm:border sm:bottom-6 sm:max-w-[380px] sm:max-w-[400px] sm:p-1 sm:rounded-2xl spanProps stroke-current/25 strokeDasharray strokeDashoffset tabDropdown tableOfContent text-[1.75em] text-end timezone tocEnabled tocProps tool transition translate-x-[calc(-50%-var(--removed-body-scroll-bar-size,0px)/2)] translateY typography under updated useBaseSlots useDocsPage useFluxLayout useFooterItems w-[calc(100%-var(--removed-body-scroll-bar-size,0px))] wait xl:pt-14 xl:px-8 z-30");
@source inline("!header !showItem *:col-start-1 *:my-auto *:pointer-events-auto *:rounded-md *:row-start-1 *:w-(--fd-sidebar-width) --fd-docs-height --fd-docs-row-1 --fd-docs-row-2 --fd-docs-row-3 --fd-header-height --fd-layout-width --fd-sidebar-col --fd-sidebar-width --fd-toc-popover-height --fd-toc-width -mx-1 -translate-x-(--fd-sidebar-width) -translate-y-full [&_svg]:shrink-0 [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-sidebar-width:0px] [--fd-toc-popover-height:0px] [--fd-toc-width:0px] [grid-area:header] [grid-area:main] [grid-area:sidebar] [grid-area:tabs] [grid-area:toc-popover] [grid-area:toc] aiChat aria-valuemax aria-valuemin aria-valuenow article available backdrop-blur-sm before:absolute before:bg-fd-border before:content-[''] before:inset-s-2.5 before:inset-y-1 before:w-px bg-fd-background/80 border-b-2 border-e border-e-0 border-fd-primary border-y-0 breadcrumb breadcrumbEnabled circleProps circumference clerk click containerProps createLinkItemRenderer data-[active=true]:before:absolute data-[active=true]:before:bg-fd-primary data-[active=true]:before:content-[''] data-[active=true]:before:inset-s-2.5 data-[active=true]:before:inset-y-2.5 data-[active=true]:before:w-px data-[active=true]:bg-fd-primary/10 data-[active=true]:hover:transition-colors data-[state=closed]:animate-fd-fade-out data-[state=closed]:animate-fd-sidebar-out data-[state=open]:animate-fd-fade-in data-[state=open]:animate-fd-sidebar-in data-[transparent=false]:bg-fd-background/80 data-full data-hovered data-layout-content data-layout-main data-sidebar-collapsed data-sidebar-panel data-sidebar-placeholder data-toc-popover data-toc-popover-content data-toc-popover-trigger data-transparent defaultSlots duration-250 edit flex-row-reverse font-semibold footer footerEnabled footerList fumadocs-core/breadcrumb gap-2.5 gap-6 getBreadcrumbItemsFromPath grid-cols-1 gridTemplate h-(--fd-header-height) h-(--fd-toc-popover-height) h-10 h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] hideIfDisabled hover:bg-fd-accent/50 hover:opacity-80 hover:text-fd-accent-foreground/80 hover:transition-none iconLinks including inert information inset-e-0 inset-s-4 inset-y-2 isNavTransparent isTop items-end justify-items-center justify-self-end justify-start layout-level layoutTabs linkItems max max-h-[50vh] max-md:layout:[--fd-header-height:--spacing(14)] max-w-[1168px] max-w-[380px] max-w-[900px] max-xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)] mb-4 mb-8 mb-auto md:in-data-[sidebar-collapsed=true]:pt-16 md:layout:[--fd-sidebar-width:268px] md:pt-8 md:px-6 min min-h-(--fd-docs-height) ms-px mx-0.5 navEnabled navTransparentMode nd-docs-layout nd-page nd-subnav nd-toc nd-toc-placeholder no normalizedValue onClickItem onClickOutside pagination pb-1.5 pe-0 pe-4 pointer-events-none popover progress progressbar provided pt-0.5 pt-12 pt-2 pt-3 px-6 py-0 py-6 radius restSvgProps rotate-180 rounded-none rtl:-translate-x-2 rtl:translate-x-full selectedIdx setDate showItem sidebarEnabled sidebarProps single size-4.5 stroke-current/25 strokeDasharray strokeDashoffset tabMode tableOfContent tableOfContentPopover takes text-[1.75em] text-end timezone toc-popover toc-title tocEnabled tocPopover tocPopoverEnabled tocPopoverProps tocProps top-(--fd-docs-row-1) top-(--fd-docs-row-2) top-[calc(--spacing(4)+var(--fd-docs-row-3))] transition-[--fd-sidebar-col] transition-[opacity,translate,color] transition-[opacity,translate] transition-[opacity,visibility] transition-[width,inset-block,translate,background-color] translate-x-2 translate-y-full transparentMode typography under unlisted updated useBaseSlots useDocsLayout useDocsPage useFooterItems useIsScrollTop useTreeContext viewport w-(--fd-sidebar-width) w-(--fd-toc-width) w-4 w-[85%] xl:border-s xl:h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] xl:hidden xl:in-data-[sidebar-collapsed=true]:pt-14 xl:layout:[--fd-toc-width:268px] xl:pt-14 xl:px-8 xl:sticky xl:top-(--fd-docs-row-1) z-10 z-20 z-30");
@source inline("!isNavTransparent --available-width --duration --easing --fd-layout-width --popup-height --positioner-height -me-1.5 -ms-1.5 -mx-1 [--fd-layout-width:1400px] asChild backdrop-blur-md been before:absolute before:content-[''] bg-fd-background/80 bg-fd-popover/80 box-border but click collisionPadding data-[active=true]:font-medium data-[side=bottom]:before:h-2.5 data-[side=bottom]:before:left-0 data-[side=bottom]:before:right-0 data-[side=bottom]:before:top-[-10px] data-[side=left]:before:bottom-0 data-[side=left]:before:right-[-10px] data-[side=left]:before:top-0 data-[side=left]:before:w-2.5 data-[side=right]:before:bottom-0 data-[side=right]:before:left-[-10px] data-[side=right]:before:top-0 data-[side=right]:before:w-2.5 data-[side=top]:before:bottom-[-10px] data-[side=top]:before:h-2.5 data-[side=top]:before:left-0 data-[side=top]:before:right-0 data-ending-style:data-[activation-direction=left]:translate-x-1/2 data-ending-style:data-[activation-direction=right]:-translate-x-1/2 data-ending-style:duration-150 data-instant:transition-none data-starting-style:data-[activation-direction=left]:-translate-x-1/2 data-starting-style:data-[activation-direction=right]:translate-x-1/2 defaultVariants defaults does duration-(--duration) ease-(--easing) enableHoverToOpen first:ms-0 font-bold font-semibold gap-2.5 grid-cols-1 h-(--popup-height) h-(--positioner-height) had headerRef hideIfDisabled home hover:text-fd-popover-foreground/50 isNavTransparent isTop justify-end last:me-0 lg:grid-cols-3 lg:hidden linkItems list-none listRef looking max-lg:hidden max-lg:rounded-b-2xl max-lg:shadow-lg max-sm:hidden max-sm:mt-2 max-w-(--available-width) max-w-(--fd-layout-width) max-w-[240px] max-w-md mb-4 md:grid-cols-2 might mobile navEnabled navItemVariants nd-home-layout nd-nav ps-2.5 pt-2 px-6 px-8 rotate-180 sm:flex-row sm:hidden sm:items-center sm:justify-end temporarily text-2xl text-6xl text-base transition-[box-shadow,background-color,border-radius] transition-[opacity,transform,translate] transition-[opacity,width,height] transparentMode under useBaseSlots useHomeLayout useIsScrollTop valid");
@source inline("!footer !isSelected !showItem *:col-start-1 *:max-w-[1285px] *:max-w-[900px] *:my-auto *:pointer-events-auto *:row-start-1 *:w-(--fd-sidebar-width) --fd-ai-chat-col --fd-ai-chat-col_300ms_ease-in-out --fd-docs-height --fd-docs-row-1 --fd-docs-row-2 --fd-docs-row-3 --fd-header-height --fd-layout-width --fd-sidebar-col --fd-sidebar-col_150ms --fd-sidebar-width --fd-toc-col --fd-toc-popover-height --fd-toc-width -me-1.5 -ms-1.5 -mx-1 -translate-x-(--fd-sidebar-width) -translate-y-full [&_svg]:shrink-0 [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-sidebar-width:0px] [--fd-toc-col:max(var(--fd-toc-width),var(--fd-ai-chat-col))] [--fd-toc-popover-height:0px] [--fd-toc-width:0px] [grid-area:header] [grid-area:main] [grid-area:sidebar] [grid-area:toc-popover] [grid-area:toc] [transition:--fd-sidebar-col_150ms,--fd-ai-chat-col_300ms_ease-in-out] aiChat aiChatOpen aria-valuemax aria-valuemin aria-valuenow article auto-cols-auto auto-rows-auto available backdrop-blur-sm before:absolute before:bg-fd-border before:content-[''] before:inset-y-1 before:start-2.5 before:w-px bg-fd-background/80 border-b-2 border-e border-fd-primary breadcrumb breadcrumbEnabled circleProps circumference clerk click collapseTrigger containerProps createLinkItemRenderer data-[active=true]:before:absolute data-[active=true]:before:bg-fd-primary data-[active=true]:before:content-[''] data-[active=true]:before:inset-y-2.5 data-[active=true]:before:start-2.5 data-[active=true]:before:w-px data-[active=true]:bg-fd-primary/10 data-[active=true]:hover:transition-colors data-[collapsed=false]:hidden data-[state=closed]:animate-fd-fade-out data-[state=closed]:animate-fd-sidebar-out data-[state=open]:animate-fd-fade-in data-[state=open]:animate-fd-sidebar-in data-[transparent=false]:bg-fd-background/80 data-full data-header-body data-header-tabs data-hovered data-layout-content data-layout-main data-sidebar-collapsed data-sidebar-placeholder data-toc-popover data-toc-popover-content data-toc-popover-trigger data-transparent defaultSlots delaySetOpen duration-250 edit end-0 flex-row-reverse font-semibold footer footerEnabled footerList freezeUntil fumadocs-core/breadcrumb gap-2.5 gap-6 getBreadcrumbItemsFromPath grid-cols-1 gridTemplate h-(--fd-toc-popover-height) h-10 h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] h-[calc(var(--fd-docs-height)-var(--fd-docs-row-2))] h-[calc(var(--fd-docs-height)-var(--fd-docs-row-3))] has-data-[active=true]:text-fd-primary has-data-[collapsed=true]:md:flex hideIfDisabled hover:bg-fd-accent/50 hover:opacity-80 hover:text-fd-accent-foreground/80 hover:transition-none hoverDelay iconLinks including information inset-y-2 isLayoutTabActive isNavTransparent isSelected isTop items-end justify-end justify-self-end layout-level layout:[--fd-header-height:--spacing(14)] lg:hidden lg:layout:[--fd-header-height:--spacing(24)] linkItems max max-h-[50vh] max-lg:flex max-lg:hidden max-md:flex max-w-[240px] max-w-[380px] max-w-sm max-xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)] maxTouchPoints mb-4 mb-8 mb-auto md:gap-2 md:layout:[--fd-sidebar-width:268px] md:pt-8 md:px-6 min min-h-(--fd-docs-height) ms-px mt-px mx-0.5 navEnabled navMode navTransparentMode navbar nd-notebook-layout nd-page nd-subnav nd-toc nd-toc-placeholder no normalizedValue onClickItem onClickOutside ontouchstart pageCol pagination pb-1.5 pe-4 pointer-events-none popover progress progressbar provided ps-2.5 pt-0.5 pt-12 pt-2 px-6 py-6 radius resolvedTabs restSvgProps rotate-180 rtl:-translate-x-2 rtl:translate-x-full selectedIdx setDate showItem showLayoutTabs sidebarCollapsible sidebarProps single size-4.5 start-0 stroke-current/25 strokeDasharray strokeDashoffset tabMode tableOfContent tableOfContentPopover takes text-[1.75em] text-end timeoutRef timezone toc-popover toc-title tocEnabled tocPopover tocPopoverEnabled tocPopoverProps tocProps top-(--fd-docs-row-1) top-(--fd-docs-row-2) top-(--fd-docs-row-3) transition-[opacity,translate,color] transition-[opacity,translate] transition-[opacity,visibility] transition-[width,inset-block,translate,background-color] translate-x-2 translate-y-full transparentMode typedTabs typography under unlisted updated useBaseSlots useDocsPage useFooterItems useIsScrollTop useNotebookLayout viewport w-(--fd-sidebar-width) w-(--fd-toc-width) w-4 w-[85%] xl:[--fd-ai-chat-col:var(--fd-ai-chat-width)] xl:border-s xl:h-[calc(var(--fd-docs-height)-var(--fd-docs-row-3))] xl:hidden xl:layout:[--fd-toc-width:268px] xl:max-w-full xl:pt-14 xl:px-8 xl:sticky xl:top-(--fd-docs-row-3) z-10 z-20");
@source inline("!collapsed !isActive !items !nested !open !title *:border-b *:data-[empty=true]:border-b-0 *:first:font-medium *:first:text-fd-primary *:flex *:flex-col *:has-[+:last-child[data-empty=true]]:border-b-0 *:last:border-b-0 *:mask-[linear-gradient(to_bottom,white,white_30px,transparent_80px)] *:not-first:text-fd-muted-foreground *:nth-2:text-xs *:rounded-full ---spacing --accordion-panel-height --anchor-width --available-height --callout-color --collapsible-panel-height --color-fd- --color-fd-muted --fd-ai-chat-width --fd-animated-height --fd-banner-height --offset-distance --opacity --padding-right --shiki-dark-bg --shiki-light-bg --spacing --track-bottom --track-top --transform-origin -mb-px -me-0.5 -me-2 -mx-px -rotate-90 -top-1.5 -translate-x-1/2 -translate-y-1/2 -z-1 @container @defaultValue @deprecated @fuma-translate/react @keyframes @max-lg:col-span-full @max-xl:hidden @param @ts-expect-error @typescript-eslint/no-namespace [&:focus-visible_img]:ring-2 [&:focus-visible_img]:ring-fd-ring [&>figure:only-child]:-m-4 [&>figure:only-child]:border-none [&[hidden]:not([hidden='until-found'])]:hidden [&_::highlight(fd-search)]:text-fd-primary [&_::highlight(fd-search)]:underline [&_img]:cursor-zoom-in [&_svg]:size-3.5 [&_svg]:size-4 [&_svg]:size-4.5 [&_svg]:size-5 [&_svg]:size-full [&_svg]:text-fd-muted-foreground [clip-path:inset(0_0_100%)] [container-type:size] [offset-distance:var(--offset-distance,0)] [scrollbar-width:none] a abcdefghijklmnopqrstuvwxyz234567 about above absolute accordion action actions active activeItem add addEventListener advanced after align align-text-bottom align-top alignItems alignmentBaseline all allowClear allowCopy allows alphabet alt altKey always an anchor and animate animate-pulse animation another application/json are areaRef aria-activedescendant aria-autocomplete aria-controls aria-describedby aria-expanded aria-haspopup aria-hidden aria-label aria-labelledby aria-live aria-selected as aside ask aspectRatio assume assumes async at auto await b backdrop-blur-lg backdrop-blur-xs background background-position backgroundColor backgroundImage backgroundSize backward banner basePath baseProps baseSlots baseUrl based became before behavior behaviour belongs beside between bg-(--callout-color)/50 bg-(--shiki-light-bg) bg-cover bg-fd-accent bg-fd-background bg-fd-border bg-fd-card bg-fd-muted bg-fd-overlay bg-fd-popover bg-fd-popover/60 bg-fd-primary bg-fd-primary/10 bg-fd-secondary bg-fd-secondary/50 bg-linear-to-r bg-transparent bind bitsLeft black block blockRef boolean border border-b border-l border-none border-s border-t border-transparent borderBottom bottom bottom-0 bottom-1.5 bound boundary box buffer bundle button buttonVariants by cache cached callbacks can canonical caption cards case cells center central change changeLayout changes chat child children chooseLanguage class-variance-authority className clear client client-side clientHeight clientWidth clients clipPath clone close closeOnRedirect closed closing cn code col-span-full collapsed collapsible collapsing collection color colors column columns com combobox compact compat compatibility compatible component components composedRef computed config const container containerRef containing content contents context controlled/uncontrolled copy core counterSet createContext createRelativeLink css ctx current currentColor currentSrc cursor-default cursor-zoom-out custom customize cva cx cy d dangerouslySetInnerHTML dark dark:bg-(--shiki-dark-bg) dashed data data-[active=true]:text-fd-primary data-[active]:border-fd-primary data-[active]:text-fd-primary data-[inactive]:hidden data-[popup-open]:bg-fd-accent data-[popup-open]:text-fd-accent-foreground data-accordion-value data-active data-card data-checked data-checked:text-fd-accent-foreground data-closed:animate-fd-dialog-out data-closed:animate-fd-fade-out data-closed:animate-fd-popover-out data-collapsed data-empty data-ending-style:h-0 data-ending-style:opacity-0 data-fd-search-dialog-input data-highlight-ignore data-icon data-line-numbers data-line-numbers-start data-open:animate-fd-dialog-in data-open:animate-fd-fade-in data-open:animate-fd-popover-in data-ready data-ready:transition-[clip-path] data-search data-search-full data-starting-style:h-0 data-starting-style:opacity-0 data-state data-theme-toggle date debounced declare default defaultColor defaultFormatter defaultIndex defaultItems defaultLanguage defaultMdxComponents defaultOpen defaultOpenLevel defaultShikiFactory defaultTransform defaultUrl defaultValue defineI18nUI defined delay delayMs depends deprecated depth description desktop detect development dialog dialogHandle dir direction disabled disabled:opacity-50 disabled:pointer-events-none display displayName displayed distance div divide-fd-border divide-x divide-y docked document documented dominantBaseline don drawer dropdown duration-100 duration-200 duration-300 duration-400 during each ease-in-out ease-out element else empty empty:hidden empty:mb-0 enabled encoded endIdx endpoint env environment equal error escape eslint-disable-next-line event export expose extends external extraProps failed false fd-lightbox fd-moving-banner fd-scroll-container fd-search-dialog-content fd-search-list fd-step fd-steps fetch fetchClient fetchOptions field fieldVariants figcaption figure file fill fill-(--callout-color) fill-fd-muted fill-fd-muted-foreground fill-fd-primary fill-fd-primary-foreground filter filters final finally first:mt-0 fixed flex flex-1 flex-col flex-row flex-wrap flexDirection floating flushSync focus focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring focus-visible:ring-inset folder folders font-medium font-mono fontSize fontWeight for forks formatter formatterOptions found free from from-fd-primary/10 full fumadocs-core/framework fumadocs-core/highlight fumadocs-core/i18n fumadocs-core/link fumadocs-core/page-tree fumadocs-core/search fumadocs-core/source fumadocs-core/toc function gap gap-0.5 gap-1 gap-1.5 gap-2 gap-3 gap-3.5 gap-4 gap-x-3 gap-y-4 generated getActive ghost github-dark github-light githubUrl given global globalKey grid grid-cols-2 grid-cols-[1fr_3fr] grid-cols-subgrid gridTemplateColumns group group-data-[active=true]:bg-fd-primary group-data-[active=true]:text-fd-primary-foreground group-data-[open]:rotate-180 group-data-active:bg-fd-primary group-data-open:rotate-180 group-data-panel-open:rotate-90 group-hover/heading:opacity-100 group/heading groupListeners groups guides h h-(--accordion-panel-height) h-(--collapsible-panel-height) h-(--fd-animated-height) h-14 h-9.5 h-[calc(100%+--spacing(1.5))] h-full h-px h1 h2 h3 h4 h5 h6 hand handle handleThemeChange has has-focus-visible:bg-fd-accent hash hashchange hast-util-to-jsx-runtime hastContent have header headerId headers heading height hidden hideLocale highlight highlightRef highlighter hints hover:bg-fd-accent hover:bg-fd-accent/80 hover:bg-fd-primary/80 hover:text-fd-accent-foreground hovered hovering href html hydration i i18n i18nProvider icon icon-sm icon-xs iconClass id idea idx if if-needed ignore ignoreTyping image images img import in inTab index infinite info initialFocus inline inline-flex input inputType inset-0 inset-e-2 inset-e-2.5 inset-s-0 inset-s-2.5 inset-s-3 inset-s-6 inset-x-2 inset-y-0 inside instanceof instant instantly instead integration interface intersect into invisible is isActive isComposing isFirst isLast isLoading isUp it item itemLineLengths itemVariants items items-baseline items-center itemsProp its js justify-between justify-center keepBackground keepMounted key keyCode keydown keys l l0 l1 l2 label lang language languageSelect last last:line-clamp-2 last:rounded-b-xl layer layout layout:[--fd-ai-chat-width:min(--spacing(100),100vw---spacing(4))] lays lazy leading-none leaving left-0 left-1/2 length let letting level light light-dark light-dark-system lightbox like line line-through linear link links list listbox listener listeners loading localRef locale localeTranslations locales lower ltr lucide lucide-book lucide-book-icon lucide-react m-0 made main make mapped margin marginTop mark markdownUrl marked mask-[linear-gradient(to_bottom,transparent,white_12px,white_calc(100%-12px),transparent)] mask-[linear-gradient(to_bottom,transparent,white_16px,white_calc(100%-16px),transparent)] maskComposite maskImage matches max-h-(--available-height) max-h-20 max-h-[460px] max-h-[600px] max-h-full max-h-none max-md:bg-fd-secondary max-md:border max-md:hidden max-md:p-1.5 max-md:rounded-md max-w-[1400px] max-w-[98vw] max-w-full max-w-none max-w-screen-sm max-width max-xl:border max-xl:end-2 max-xl:fixed max-xl:inset-y-2 max-xl:rounded-2xl max-xl:shadow-xl max-xl:translate-x-[calc(100%+--spacing(2))] max-xl:w-(--fd-ai-chat-width) maximumFractionDigits mb-1 mb-1.5 mb-2 md:hidden md:mb-auto md:px-16 md:size-5 md:top-[calc(50%-250px)] mdComponents mdx/types.js me-1 me-1.5 me-2 me-auto measured menu menuItems mergeRefs message metaKey middle min-h-0 min-w-0 min-w-[240px] min-w-fit min-w-full mode module morph motion-reduce:transition-none mount mounted mouse ms-2 ms-3 ms-auto mt-1 mt-4 mt-6 must mx-auto my-0 my-0! my-0.5 my-4 my-6 my-auto n name names namespace naturalHeight naturalWidth nav navItems navTitle navigate navigation nd-copy-ignore nd-sidebar nd-sidebar-mobile nearest needed nested nested-url never new newTheme next next-themes next/og node nodes none noop noopener noreferrer normal normalize not not-empty:border-b not-empty:p-3 not-first:border-t not-last:mb-2 not-last:truncate not-prose notation note now null number numbers object observer of offsetHeight offsetPath offsetTop on onAnimationEnd onCancel onChange onClick onClose onCopy onKey onKeyDown onOpenChange onOpenChangeCallback onPointerEnter onPointerLeave onPointerMove onPrint onSearchChange onSearchChangeCallback onSelect onSelectCallback onTagChange onTagChangeCallback onValueChange once one only opacity-(--opacity,0) opacity-0 open openFromHash opened option optional options or order origin-(--transform-origin) origin-center original other out outline outline-none output over overflow overflow-auto overflow-clip overflow-hidden overflow-x-auto overflow-x-clip overflow-y-auto override overscroll-contain overscroll-x-contain own owner p p-0 p-0.5 p-1 p-1.5 p-2 p-3 p-4 padding paddingBottom paddingInlineStart page pageUrl pageUrlProp panel panels parameters params parentId pass passed path pathname paths pb-0 pb-2 pb-6 pe-2 pe-2.5 per performing persist persistent place placed placeholder placeholder:text-fd-muted-foreground please pointerType points polite populated pos positions possible powered pre pre-rendering predate prefers-reduced-motion prefetch prev preventScroll previous previousRef primary primaryColor primaryTextColor production promises prompt prompts prop props prose prose-no-margin prose-sm provide provider ps-1 ps-2 ps-3.25 ps-4 ps-8 pt-0 pure px px-0.5 px-1 px-1.5 px-2 px-2.5 px-3 px-4 py-0.5 py-1 py-1.5 py-12 py-2 py-2.5 py-3 py-3.5 q query querySelector questions rainbow rainbowColors ratio raw re-create re-render react react-dom react-hooks/rules-of-hooks react-medium-image-zoom react/jsx-runtime read reader ref referenced region register registering rel relative remove removeEventListener render renderOptions repo repository required resize resizing resolve resolved resolvedTheme response rest result results return returned revalidate right-2 role root rootRef round rounded-2xl rounded-[inherit] rounded-full rounded-lg rounded-md rounded-sm rounded-xl router row rowRenderOptions rows rtl rtl:-scale-x-100 rtl:max-xl:-translate-x-[calc(100%+--spacing(2))] rtl:rotate-180 rtl:rotate-90 runs s same scroll scroll-into-view-if-needed scroll-m-20 scroll-m-24 scroll-m-28 scroll-m-4 scrollIntoView scrollMode scroller scrollerRef search searchOptions searchToggle searchToggleEnabled searchTrigger secondary see select-none selected separate separator server set setActive setCollapsed setHidden setHover setLoading setMounted setOpen setSlides setSvg setTag setValue shadow-2xl shadow-lg shadow-md shadow-sm shiftKey shiki shikiOptions shortcuts should show showAlgolia showOrama showing shown shows shrink-0 side sideOffset sidebar signature simple since site size size-1 size-3 size-3.5 size-4 size-5 size-6.5 size-9 size-full sized sizes slide slots sm smaller smooth snap-always snap-mandatory snap-start snap-x so solid some source space span specific sr-only src stars start startIdx startViewTransition state static status stay step sticky still str string stroke stroke-fd-foreground/10 stroke-fd-primary strokeLinecap strokeLinejoin strokeWidth style styles subscribe subscribeActive success successful supported supposed sure svg switch switcher system t tab tabIndex table tableRenderOptions tables tabs tabsRef tabular-nums tag tagName tags take target tbody td text text-(--callout-color) text-[0.8125rem] text-[0.8125rem]/5 text-[0.9375rem] text-[10px] text-center text-fd-accent-foreground text-fd-card text-fd-card-foreground text-fd-error text-fd-foreground text-fd-foreground/80 text-fd-muted-foreground text-fd-muted-foreground/50 text-fd-popover-foreground text-fd-popover-foreground/80 text-fd-primary text-fd-primary-foreground text-fd-primary/50 text-fd-secondary-foreground text-inherit text-lg text-nowrap text-sm text-start text-xs text/plain textAnchor textContent th that the thead their them theme themeAriaLabels themeSwitch themeSwitchEnabled themes then they this throw thumbBox tier timerRef tip title to toJsxRuntime toc tocInfo toolbar top top-0 top-1/2 top-2 top-2.5 top-3.25 top-4 touch tr transform transition-[clip-path] transition-[height,opacity] transition-[height] transition-[opacity,offset-distance] transition-[width,margin,translate,visibility] transition-[width,margin,translate] transition-all transition-colors transition-opacity transition-transform translationKeys translations translations/keys.json transparent tree trigger triggers true truncate try twice type typeof types unchanged undefined underline underlying understand unknown unnecessarily unused update updateAnchor updates upperX url urls us usage use useAlgoliaSearch useCopyButton useDocsSearch useHotKey useI18n useId useIsDocsLayout useItems useMediaQuery useMemo useOnChange useOramaCloudSearch usePathname useProps useRef useRouter useSearchContext useSidebar useState useSyncExternalStore useTOCItems useTheme useTranslations useTreePath useful users using usually v v17 value valueToIdMap values variables variant variants vertical viewBox viewRef viewTransitionName viewer viewportProps visible vite void w w-(--anchor-width) w-(--fd-ai-chat-width) w-0 w-0.5 w-1.5 w-1/4 w-[calc(100%-1rem)] w-fit w-full w-max w-px want warn warning what when where which while white whitespace-nowrap whitespaces wide width will window with without work wrap wrap-anywhere wrapElement wrapInSuspense wrapped x x1 x2 xl:w-(--fd-ai-chat-width) xmlns y y1 y2 you your z-2 z-40 z-50 zoom zoomImg zoomInProps zoomMargin zoomable");
@plugin "../dist/tailwind/typography.js";
.landing{max-width:880px;margin:0 auto;padding:96px 24px 64px}.landing .badge{border:1px solid var(--fd-border);color:var(--fd-muted-foreground);border-radius:999px;margin-bottom:20px;padding:4px 12px;font-size:13px;display:inline-block}.landing h1{letter-spacing:-.02em;margin:0 0 16px;font-size:44px;line-height:1.1}.landing p.lead{color:var(--fd-muted-foreground);max-width:640px;margin:0 0 32px;font-size:18px}.landing .actions{flex-wrap:wrap;gap:12px;margin-bottom:56px;display:flex}.landing .btn{border:1px solid var(--fd-border);border-radius:8px;padding:10px 20px;font-size:15px;font-weight:600;text-decoration:none;display:inline-block}.landing .btn-primary{background:var(--fd-primary);color:var(--fd-primary-foreground);border-color:#0000}.landing .cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.landing .card{border:1px solid var(--fd-border);color:inherit;border-radius:12px;padding:20px;text-decoration:none}.landing .card h3{margin:0 0 8px;font-size:16px}.landing .card p{color:var(--fd-muted-foreground);margin:0;font-size:14px}.landing pre{border:1px solid var(--fd-border);border-radius:12px;margin:0 0 56px;padding:16px 20px;font-size:14px;overflow-x:auto}.landing .lang-switch{color:var(--fd-muted-foreground);margin-top:48px;font-size:14px}.landing .lang-switch a{color:inherit;margin-right:12px}
