diff --git a/examples/astro/src/lib/docs.config.ts b/examples/astro/src/lib/docs.config.ts index edcdf680..cbb1efcf 100644 --- a/examples/astro/src/lib/docs.config.ts +++ b/examples/astro/src/lib/docs.config.ts @@ -61,6 +61,7 @@ export default defineDocs({ sitemap: { enabled: true, baseUrl: "https://docs.farming-labs.dev" }, lastUpdated: { enabled: true, position: "below-title" }, themeToggle: { enabled: true, default: "dark" }, + tweaks: { reader: true, author: process.env.NODE_ENV !== "production" }, breadcrumb: { enabled: true }, metadata: { titleTemplate: "%s – Docs", diff --git a/examples/next/docs.config.tsx b/examples/next/docs.config.tsx index efde8a24..8ba5ec87 100644 --- a/examples/next/docs.config.tsx +++ b/examples/next/docs.config.tsx @@ -194,6 +194,7 @@ export default defineDocs({ enabled: true, default: "dark", }, + tweaks: { reader: true, author: process.env.NODE_ENV !== "production", position: "both" }, og: { enabled: true, type: "dynamic", diff --git a/examples/nuxt/docs.config.ts b/examples/nuxt/docs.config.ts index bb385efc..8f10b90a 100644 --- a/examples/nuxt/docs.config.ts +++ b/examples/nuxt/docs.config.ts @@ -31,6 +31,7 @@ export default defineDocs({ ], }, themeToggle: { enabled: true, default: "dark" }, + tweaks: { reader: true, author: process.env.NODE_ENV !== "production" }, breadcrumb: { enabled: true }, metadata: { titleTemplate: "%s – Docs", diff --git a/examples/sveltekit/src/lib/docs.config.ts b/examples/sveltekit/src/lib/docs.config.ts index bd93ae45..49e86de7 100644 --- a/examples/sveltekit/src/lib/docs.config.ts +++ b/examples/sveltekit/src/lib/docs.config.ts @@ -39,6 +39,7 @@ export default defineDocs({ }, readingTime: { enabled: true, wordsPerMinute: 220 }, themeToggle: { enabled: true, default: "dark" }, + tweaks: { reader: true, author: process.env.NODE_ENV !== "production" }, breadcrumb: { enabled: true }, metadata: { titleTemplate: "%s – Docs", diff --git a/examples/tanstack-start/docs.config.tsx b/examples/tanstack-start/docs.config.tsx index 427d8ac6..e059ff7a 100644 --- a/examples/tanstack-start/docs.config.tsx +++ b/examples/tanstack-start/docs.config.tsx @@ -47,4 +47,5 @@ export default defineDocs({ enabled: true, default: "dark", }, + tweaks: { reader: true, author: process.env.NODE_ENV !== "production" }, }); diff --git a/packages/docs/src/define-docs.ts b/packages/docs/src/define-docs.ts index 9c5ebf2f..03edd246 100644 --- a/packages/docs/src/define-docs.ts +++ b/packages/docs/src/define-docs.ts @@ -23,6 +23,7 @@ export function defineDocs(config: DocsConfig): DocsConfig { onCopyClick: config.onCopyClick, codeBlocks: config.codeBlocks, feedback: config.feedback, + tweaks: config.tweaks, search: config.search, mcp: config.mcp, icons: config.icons, diff --git a/packages/docs/src/index.ts b/packages/docs/src/index.ts index b18162a7..69bc57ae 100644 --- a/packages/docs/src/index.ts +++ b/packages/docs/src/index.ts @@ -608,6 +608,7 @@ export type { DocsAgentFeedbackData, FeedbackConfig, AgentFeedbackConfig, + TweaksConfig, DocsAskAIMcpConfig, DocsSearchAdapter, DocsSearchAdapterContext, diff --git a/packages/docs/src/types.ts b/packages/docs/src/types.ts index 35f6d68d..e3b3f832 100644 --- a/packages/docs/src/types.ts +++ b/packages/docs/src/types.ts @@ -3018,6 +3018,96 @@ export interface FeedbackConfig { agent?: boolean | AgentFeedbackConfig; } +/** + * Built-in "Tweaks" dialog configuration. + * + * The dialog has two modes, each independently opt-in. **Both are off by + * default** — site authors must explicitly enable whichever they want. + * + * - **Reader mode** (`reader: true`) exposes a limited knob set (accent, + * density, radius, preset, font) to anyone visiting the docs. Choices + * persist per-browser via `localStorage` and re-apply pre-paint on the + * next load. + * - **Author mode** (`author: true`) exposes the *full* knob set — every + * color token, sidebar/TOC style, layout dimensions — plus a code-export + * panel that emits a ready-to-paste `createTheme({...})` snippet. Use + * while iterating on a theme locally; typically gated to development: + * `author: process.env.NODE_ENV !== "production"`. + * + * When both are enabled, author mode supersedes reader mode for the docs + * author. Public visitors still see only the reader-mode dialog. + * + * @example Reader-only — let visitors tweak their view in production + * ```ts + * export default defineDocs({ + * entry: "docs", + * theme: fumadocs(), + * tweaks: { reader: true }, + * }); + * ``` + * + * @example Author-only — fast theme iteration during local dev + * ```ts + * export default defineDocs({ + * entry: "docs", + * theme: fumadocs(), + * tweaks: { author: process.env.NODE_ENV !== "production" }, + * }); + * ``` + */ +export interface TweaksConfig { + /** + * Show the limited reader-mode Tweaks dialog to all visitors. + * @default false + */ + reader?: boolean; + /** + * Show the full author-mode Tweaks dialog (extra knobs + code export). + * Typically gated to development. Supersedes reader mode when both are + * enabled. + * @default false + */ + author?: boolean; + /** + * Which knobs to show in **reader mode**. Author mode always shows the + * full set regardless of this value. + * @default ["color", "density", "radius", "preset", "font-family"] + */ + knobs?: Array<"color" | "density" | "radius" | "preset" | "font-family">; + /** + * Where the trigger button is mounted. + * + * - `"sidebar-footer"` — portaled next to the theme toggle (recommended). + * - `"floating"` — fixed bottom-right button only. + * - `"both"` — sidebar trigger on wide screens, floating fallback below `md`. + * - `"manual"` — neither trigger is auto-mounted; render + * `` yourself wherever you want. The dialog still + * mounts and opens when your trigger toggles it (shared state). + * + * @default "both" + */ + position?: "sidebar-footer" | "floating" | "both" | "manual"; + /** Label shown on the trigger button. @default "Tweaks" */ + label?: string; + /** localStorage key used to persist selections. @default "fd:tweaks:v1" */ + storageKey?: string; + /** Persist selections across page loads. @default true */ + persist?: boolean; + /** + * Curated list of sans-serif fonts the reader can pick from. Each value is + * written into `--fd-font-sans`; the font must already be loaded on the + * page (the framework does not fetch arbitrary fonts at runtime). + * + * @default ["Inter", "Geist", "system-ui", "serif"] + */ + fontOptions?: string[]; + /** + * Async callback fired whenever a tweak is applied (color pick, preset + * change, slider drag-end, etc.). Useful for analytics. + */ + onApply?: (state: Record) => void | Promise; +} + export interface DocsI18nConfig { /** Supported locale identifiers (e.g. ["en", "fr"]). */ locales: string[]; @@ -4288,6 +4378,29 @@ export interface DocsConfig { * ``` */ feedback?: boolean | FeedbackConfig; + /** + * Built-in "Tweaks" dialog for live-tweaking theme tokens at runtime. + * + * Both modes are **off by default** — pick which audiences you want: + * + * - `{ reader: true }` → reader-mode dialog visible to all visitors. + * - `{ author: true }` → author-mode dialog (extra knobs + code export), + * typically gated to development with + * `author: process.env.NODE_ENV !== "production"`. + * - `true` → shorthand for `{ author: true }` (fast local iteration). + * - `false` / omitted → no dialog at all. + * + * @example Reader-facing, persisted per-browser + * ```ts + * tweaks: { reader: true } + * ``` + * + * @example Author-only, dev-time theme iteration + * ```ts + * tweaks: { author: process.env.NODE_ENV !== "production" } + * ``` + */ + tweaks?: boolean | TweaksConfig; /** * Built-in MCP server for agent/assistant access to your docs content. * diff --git a/packages/farmjs/src/browser-css.generated.ts b/packages/farmjs/src/browser-css.generated.ts index 17e33d2d..51005c3a 100644 --- a/packages/farmjs/src/browser-css.generated.ts +++ b/packages/farmjs/src/browser-css.generated.ts @@ -1,4 +1,4 @@ // Generated by scripts/generate-browser-css.mjs. Do not edit. -const farmDocsBrowserCss = ":root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-black: #000;\n --spacing: 0.25rem;\n --breakpoint-sm: 40rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --blur-xs: 4px;\n --blur-sm: 8px;\n --blur-md: 12px;\n --blur-lg: 16px;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-fd-background: hsl(0, 0%, 96%);\n --color-fd-foreground: hsl(0, 0%, 3.9%);\n --color-fd-muted: hsl(0, 0%, 96.1%);\n --color-fd-muted-foreground: hsl(0, 0%, 45.1%);\n --color-fd-popover: hsl(0, 0%, 98%);\n --color-fd-popover-foreground: hsl(0, 0%, 15.1%);\n --color-fd-card: hsl(0, 0%, 94.7%);\n --color-fd-card-foreground: hsl(0, 0%, 3.9%);\n --color-fd-border: hsla(0, 0%, 80%, 50%);\n --color-fd-primary: hsl(0, 0%, 9%);\n --color-fd-primary-foreground: hsl(0, 0%, 98%);\n --color-fd-secondary: hsl(0, 0%, 93.1%);\n --color-fd-secondary-foreground: hsl(0, 0%, 9%);\n --color-fd-accent: hsla(0, 0%, 82%, 50%);\n --color-fd-accent-foreground: hsl(0, 0%, 9%);\n --color-fd-ring: hsl(0, 0%, 63.9%);\n --color-fd-overlay: hsla(0, 0%, 0%, 0.2);\n --color-fd-info: oklch(62.3% 0.214 259.815);\n --color-fd-warning: oklch(76.9% 0.188 70.08);\n --color-fd-error: oklch(63.7% 0.237 25.331);\n --color-fd-success: oklch(72.3% 0.219 149.579);\n --color-fd-idea: oklch(70.5% 0.209 60.849);\n --color-fd-diff-remove: rgba(200, 10, 100, 0.12);\n --color-fd-diff-remove-symbol: rgb(230, 10, 100);\n --color-fd-diff-add: rgba(14, 180, 100, 0.1);\n --color-fd-diff-add-symbol: rgb(10, 200, 100);\n --animate-fd-fade-in: fd-fade-in 300ms ease;\n --animate-fd-fade-out: fd-fade-out 300ms ease;\n --animate-fd-dialog-in: fd-dialog-in 300ms cubic-bezier(0.16, 1, 0.3, 1);\n --animate-fd-dialog-out: fd-dialog-out 300ms cubic-bezier(0.16, 1, 0.3, 1);\n --animate-fd-popover-in: fd-popover-in 100ms ease;\n --animate-fd-popover-out: fd-popover-out 100ms ease;\n --animate-fd-enterFromLeft: fd-enterFromLeft 250ms ease;\n --animate-fd-enterFromRight: fd-enterFromRight 250ms ease;\n --animate-fd-sidebar-in: fd-sidebar-in 250ms ease;\n --animate-fd-sidebar-out: fd-sidebar-out 250ms ease;\n --animate-fd-exitToLeft: fd-exitToLeft 250ms ease;\n --animate-fd-exitToRight: fd-exitToRight 250ms ease;\n --animate-fd-collapsible-down: fd-collapsible-down 150ms cubic-bezier(0.45, 0, 0.55, 1);\n --animate-fd-collapsible-up: fd-collapsible-up 150ms cubic-bezier(0.45, 0, 0.55, 1);\n --animate-fd-accordion-down: fd-accordion-down 200ms ease-out;\n --animate-fd-accordion-up: fd-accordion-up 200ms ease-out;\n --animate-fd-nav-menu-in: fd-nav-menu-in 200ms ease;\n --animate-fd-nav-menu-out: fd-nav-menu-out 200ms ease;\n }\n*, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\nhtml, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\nhr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\nh1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\na {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\nb, strong {\n font-weight: bolder;\n }\ncode, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\nsmall {\n font-size: 80%;\n }\nsub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\nsub {\n bottom: -0.25em;\n }\nsup {\n top: -0.5em;\n }\ntable {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n:-moz-focusring {\n outline: auto;\n }\nprogress {\n vertical-align: baseline;\n }\nsummary {\n display: list-item;\n }\nol, ul, menu {\n list-style: none;\n }\nimg, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\nimg, video {\n max-width: 100%;\n height: auto;\n }\nbutton, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n:where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n:where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n::file-selector-button {\n margin-inline-end: 4px;\n }\n::placeholder {\n opacity: 1;\n }\n@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\ntextarea {\n resize: vertical;\n }\n::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n::-webkit-datetime-edit {\n display: inline-flex;\n }\n::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n:-moz-ui-invalid {\n box-shadow: none;\n }\nbutton, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n[hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n.\\@container {\n container-type: inline-size;\n }\n.pointer-events-none {\n pointer-events: none;\n }\n.collapse {\n visibility: collapse;\n }\n.invisible {\n visibility: hidden;\n }\n.visible {\n visibility: visible;\n }\n.fd-step {\n &:before {\n background-color: var(--color-fd-secondary);\n color: var(--color-fd-secondary-foreground);\n content: counter(step);\n counter-increment: step;\n justify-content: center;\n align-items: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n display: flex;\n position: absolute;\n inset-inline-start: calc(var(--spacing) * -4);\n width: calc(var(--spacing) * 8);\n height: calc(var(--spacing) * 8);\n border-radius: calc(infinity * 1px);\n }\n }\n.fd-steps {\n counter-reset: step;\n position: relative;\n margin-inline-start: calc(var(--spacing) * 2);\n border-inline-start-style: var(--tw-border-style);\n border-inline-start-width: 1px;\n padding-inline-start: calc(var(--spacing) * 6);\n @media (width >= 40rem) {\n margin-inline-start: calc(var(--spacing) * 4);\n }\n @media (width >= 40rem) {\n padding-inline-start: calc(var(--spacing) * 7);\n }\n }\n.absolute {\n position: absolute;\n }\n.fixed {\n position: fixed;\n }\n.relative {\n position: relative;\n }\n.static {\n position: static;\n }\n.sticky {\n position: sticky;\n }\n.inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n.inset-x-0 {\n inset-inline: calc(var(--spacing) * 0);\n }\n.inset-x-2 {\n inset-inline: calc(var(--spacing) * 2);\n }\n.inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n.inset-y-2 {\n inset-block: calc(var(--spacing) * 2);\n }\n.inset-s-0 {\n inset-inline-start: calc(var(--spacing) * 0);\n }\n.inset-s-4 {\n inset-inline-start: calc(var(--spacing) * 4);\n }\n.start {\n inset-inline-start: var(--spacing);\n }\n.start-0 {\n inset-inline-start: calc(var(--spacing) * 0);\n }\n.start-3 {\n inset-inline-start: calc(var(--spacing) * 3);\n }\n.start-6 {\n inset-inline-start: calc(var(--spacing) * 6);\n }\n.end-0 {\n inset-inline-end: calc(var(--spacing) * 0);\n }\n.end-2 {\n inset-inline-end: calc(var(--spacing) * 2);\n }\n.inset-e-0 {\n inset-inline-end: calc(var(--spacing) * 0);\n }\n.-top-1\\.5 {\n top: calc(var(--spacing) * -1.5);\n }\n.top-\\(--fd-docs-row-1\\) {\n top: var(--fd-docs-row-1);\n }\n.top-\\(--fd-docs-row-2\\) {\n top: var(--fd-docs-row-2);\n }\n.top-\\(--fd-docs-row-3\\) {\n top: var(--fd-docs-row-3);\n }\n.top-0 {\n top: calc(var(--spacing) * 0);\n }\n.top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n.top-1\\/2 {\n top: calc(1 / 2 * 100%);\n }\n.top-2\\.5 {\n top: calc(var(--spacing) * 2.5);\n }\n.top-3 {\n top: calc(var(--spacing) * 3);\n }\n.top-4 {\n top: calc(var(--spacing) * 4);\n }\n.top-\\[calc\\(--spacing\\(4\\)\\+var\\(--fd-docs-row-3\\)\\)\\] {\n top: calc(calc(var(--spacing) * 4) + var(--fd-docs-row-3));\n }\n.right-2 {\n right: calc(var(--spacing) * 2);\n }\n.bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n.bottom-1\\.5 {\n bottom: calc(var(--spacing) * 1.5);\n }\n.bottom-26 {\n bottom: calc(var(--spacing) * 26);\n }\n.left-1\\/2 {\n left: calc(1 / 2 * 100%);\n }\n.-z-1 {\n z-index: calc(1 * -1);\n }\n.z-2 {\n z-index: 2;\n }\n.z-10 {\n z-index: 10;\n }\n.z-20 {\n z-index: 20;\n }\n.z-30 {\n z-index: 30;\n }\n.z-40 {\n z-index: 40;\n }\n.z-50 {\n z-index: 50;\n }\n.z-\\[-1\\] {\n z-index: -1;\n }\n.col-span-full {\n grid-column: 1 / -1;\n }\n.container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n.-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n.-mx-px {\n margin-inline: -1px;\n }\n.mx-0\\.5 {\n margin-inline: calc(var(--spacing) * 0.5);\n }\n.mx-auto {\n margin-inline: auto;\n }\n.my-0 {\n margin-block: calc(var(--spacing) * 0);\n }\n.my-0\\! {\n margin-block: calc(var(--spacing) * 0) !important;\n }\n.my-0\\.5 {\n margin-block: calc(var(--spacing) * 0.5);\n }\n.my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n.my-6 {\n margin-block: calc(var(--spacing) * 6);\n }\n.my-auto {\n margin-block: auto;\n }\n.-ms-1\\.5 {\n margin-inline-start: calc(var(--spacing) * -1.5);\n }\n.ms-1 {\n margin-inline-start: calc(var(--spacing) * 1);\n }\n.ms-2 {\n margin-inline-start: calc(var(--spacing) * 2);\n }\n.ms-auto {\n margin-inline-start: auto;\n }\n.ms-px {\n margin-inline-start: 1px;\n }\n.-me-0\\.5 {\n margin-inline-end: calc(var(--spacing) * -0.5);\n }\n.-me-1\\.5 {\n margin-inline-end: calc(var(--spacing) * -1.5);\n }\n.-me-2 {\n margin-inline-end: calc(var(--spacing) * -2);\n }\n.me-1 {\n margin-inline-end: calc(var(--spacing) * 1);\n }\n.me-2 {\n margin-inline-end: calc(var(--spacing) * 2);\n }\n.me-auto {\n margin-inline-end: auto;\n }\n.prose {\n color: var(--tw-prose-body);\n max-width: none;\n font-size: 1rem;\n line-height: 1.75rem;\n :where([class~=\"lead\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-size: 1.25em;\n line-height: 1.6;\n margin-top: 1.2em;\n margin-bottom: 1.2em;\n color: var(--tw-prose-lead);\n }\n :where(ul):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-inline-start: 1rem;\n list-style-type: disc;\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n }\n :where(li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n }\n :where(ol > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-inline-start: 0.375em;\n }\n :where(ul > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-inline-start: 0;\n }\n :where(.prose > ul > li p):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n }\n :where(.prose > ul > li > p:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n }\n :where(.prose > ul > li > p:last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-bottom: 1.25em;\n }\n :where(.prose > ol > li > p:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n }\n :where(.prose > ol > li > p:last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-bottom: 1.25em;\n }\n :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n }\n :where(dl):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n }\n :where(dt):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n margin-top: 1.25em;\n }\n :where(dd):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.5em;\n padding-inline-start: 1.625em;\n }\n :where(hr):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-color: var(--tw-prose-hr);\n border-top-width: 1px;\n margin-top: 3em;\n margin-bottom: 3em;\n }\n :where(p):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n }\n :where(strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-bold);\n font-weight: 500;\n }\n :where(a strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(blockquote strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(thead th strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(ol):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: decimal;\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n padding-inline-start: 1.625em;\n }\n :where(ol[type=\"A\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-alpha;\n }\n :where(ol[type=\"a\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-alpha;\n }\n :where(ol[type=\"A\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-alpha;\n }\n :where(ol[type=\"a\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-alpha;\n }\n :where(ol[type=\"I\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-roman;\n }\n :where(ol[type=\"i\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-roman;\n }\n :where(ol[type=\"I\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-roman;\n }\n :where(ol[type=\"i\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-roman;\n }\n :where(ol[type=\"1\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: decimal;\n }\n :where(ol > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::marker {\n font-weight: 400;\n color: var(--tw-prose-counters);\n }\n :where(ul > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::marker {\n color: var(--tw-prose-bullets);\n }\n :where(blockquote):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.6em;\n margin-bottom: 1.6em;\n padding-inline-start: 1em;\n font-weight: 500;\n font-style: italic;\n color: var(--tw-prose-quotes);\n border-inline-start-width: 0.25rem;\n border-inline-start-color: var(--tw-prose-quote-borders);\n quotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n }\n :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::before {\n content: open-quote;\n }\n :where(blockquote p:last-of-type):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::after {\n content: close-quote;\n }\n :where(h1):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 800;\n font-size: var(--text-3xl);\n margin-top: 0;\n margin-bottom: 0.8888889em;\n line-height: 1.1111111;\n }\n :where(h1 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 900;\n color: inherit;\n }\n :where(h2):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-size: 1.5em;\n margin-top: 2em;\n margin-bottom: 1em;\n line-height: 1.3333333;\n font-weight: 600;\n }\n :where(h2 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 800;\n color: inherit;\n }\n :where(h3):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n font-size: 1.25em;\n margin-top: 1.6em;\n margin-bottom: 0.6em;\n line-height: 1.6;\n }\n :where(h3 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 700;\n color: inherit;\n }\n :where(h4):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n margin-top: 1.5em;\n margin-bottom: 0.5em;\n line-height: 1.5;\n }\n :where(h4 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 700;\n color: inherit;\n }\n :where(hr + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n }\n :where(h2 + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n }\n :where(h3 + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n }\n :where(h4 + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n }\n :where(img):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n }\n :where(picture):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n display: block;\n margin-top: 2em;\n margin-bottom: 2em;\n }\n :where(picture > img):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n }\n :where(video):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n }\n :where(kbd):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-size: 0.875em;\n border-radius: 0.3125rem;\n padding-top: 0.1875em;\n padding-inline-end: 0.375em;\n padding-bottom: 0.1875em;\n padding-inline-start: 0.375em;\n font-weight: 500;\n font-family: inherit;\n color: var(--tw-prose-kbd);\n box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);\n }\n :where(code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding: 3px;\n border: solid 1px;\n font-size: 13px;\n border-color: var(--color-fd-border);\n border-radius: 5px;\n font-weight: 400;\n background: var(--color-fd-muted);\n color: var(--tw-prose-code);\n }\n :where(a code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(h1 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n font-size: var(--text-2xl);\n }\n :where(h2 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n font-size: 0.875em;\n }\n :where(h3 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n font-size: 0.9em;\n }\n :where(h4 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(blockquote code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(thead th code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(thead th):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n }\n :where(figure):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n }\n :where(figure > *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n }\n :where(figcaption):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-captions);\n font-size: 0.875em;\n line-height: 1.4285714;\n margin-top: 0.8571429em;\n }\n :where(a:not([data-card])):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-links);\n transition: opacity .2s;\n font-weight: 500;\n text-decoration: underline;\n text-underline-offset: 3.5px;\n text-decoration-color: var(--color-fd-primary);\n text-decoration-thickness: 1.5px;\n }\n :where(a:not([data-card]):hover):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n opacity: 80%;\n }\n --tw-prose-body: color-mix(in srgb, hsl(0, 0%, 3.9%) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-prose-body: color-mix(in oklab, var(--color-fd-foreground) 90%, transparent);\n }\n --tw-prose-headings: var(--color-fd-foreground);\n --tw-prose-lead: var(--color-fd-foreground);\n --tw-prose-links: var(--color-fd-foreground);\n --tw-prose-bold: var(--color-fd-foreground);\n --tw-prose-counters: var(--color-fd-muted-foreground);\n --tw-prose-bullets: var(--color-fd-muted-foreground);\n --tw-prose-hr: var(--color-fd-border);\n --tw-prose-quotes: var(--color-fd-foreground);\n --tw-prose-quote-borders: var(--color-fd-border);\n --tw-prose-captions: var(--color-fd-foreground);\n --tw-prose-code: var(--color-fd-foreground);\n --tw-prose-th-borders: var(--color-fd-border);\n --tw-prose-td-borders: var(--color-fd-border);\n --tw-prose-kbd: var(--color-fd-foreground);\n --tw-prose-kbd-shadows: color-mix(in srgb, hsl(0, 0%, 9%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-prose-kbd-shadows: color-mix(in oklab, var(--color-fd-primary) 50%, transparent);\n }\n :where(.prose > :first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n }\n :where(.prose > :last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-bottom: 0;\n }\n :where(table):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-size: 0.875em;\n line-height: 1.7142857;\n width: 100%;\n table-layout: auto;\n margin-top: 2em;\n margin-bottom: 2em;\n border-collapse: separate;\n border-spacing: 0;\n background: var(--color-fd-card);\n border-radius: var(--radius-lg);\n border: 1px solid var(--color-fd-border);\n overflow: hidden;\n }\n :where(th):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n text-align: start;\n padding: calc(var(--spacing) * 2.5);\n border-inline-start: 1px solid var(--color-fd-border);\n background: var(--color-fd-muted);\n }\n :where(th:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-inline-start: none;\n }\n :where(th:not(tr:last-child *), td:not(tr:last-child *)):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-bottom: 1px solid var(--color-fd-border);\n }\n :where(td):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n text-align: start;\n border-inline-start: 1px solid var(--color-fd-border);\n padding: calc(var(--spacing) * 2.5);\n }\n :where(td:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-inline-start: none;\n }\n :where(tfoot th, tfoot td):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-top-width: 1px;\n border-top-color: var(--tw-prose-th-borders);\n }\n :where(thead th, thead td):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-bottom-width: 1px;\n border-bottom-color: var(--tw-prose-th-borders);\n }\n }\n.prose-no-margin {\n & > :first-child {\n margin-top: 0;\n }\n & > :last-child {\n margin-bottom: 0;\n }\n }\n.mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n.mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n.mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n.mt-px {\n margin-top: 1px;\n }\n.-mb-px {\n margin-bottom: -1px;\n }\n.mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n.mb-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n.mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n.mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n.mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n.mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n.mb-auto {\n margin-bottom: auto;\n }\n.fd-scroll-container {\n &::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n }\n &::-webkit-scrollbar-thumb {\n border-radius: 5px;\n background: var(--color-fd-border);\n }\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n &::-webkit-scrollbar-corner {\n display: none;\n }\n }\n.block {\n display: block;\n }\n.contents {\n display: contents;\n }\n.flex {\n display: flex;\n }\n.grid {\n display: grid;\n }\n.hidden {\n display: none;\n }\n.inline {\n display: inline;\n }\n.inline-flex {\n display: inline-flex;\n }\n.table {\n display: table;\n }\n.size-1 {\n width: calc(var(--spacing) * 1);\n height: calc(var(--spacing) * 1);\n }\n.size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n.size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n.size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n.size-4\\.5 {\n width: calc(var(--spacing) * 4.5);\n height: calc(var(--spacing) * 4.5);\n }\n.size-5 {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n.size-6\\.5 {\n width: calc(var(--spacing) * 6.5);\n height: calc(var(--spacing) * 6.5);\n }\n.size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n.size-full {\n width: 100%;\n height: 100%;\n }\n.h-\\(--fd-animated-height\\) {\n height: var(--fd-animated-height);\n }\n.h-\\(--fd-header-height\\) {\n height: var(--fd-header-height);\n }\n.h-\\(--fd-toc-popover-height\\) {\n height: var(--fd-toc-popover-height);\n }\n.h-\\(--radix-navigation-menu-viewport-height\\) {\n height: var(--radix-navigation-menu-viewport-height);\n }\n.h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n.h-8\\.5 {\n height: calc(var(--spacing) * 8.5);\n }\n.h-9 {\n height: calc(var(--spacing) * 9);\n }\n.h-9\\.5 {\n height: calc(var(--spacing) * 9.5);\n }\n.h-10 {\n height: calc(var(--spacing) * 10);\n }\n.h-14 {\n height: calc(var(--spacing) * 14);\n }\n.h-\\[400px\\] {\n height: 400px;\n }\n.h-\\[calc\\(var\\(--fd-docs-height\\)-var\\(--fd-docs-row-1\\)\\)\\] {\n height: calc(var(--fd-docs-height) - var(--fd-docs-row-1));\n }\n.h-\\[calc\\(var\\(--fd-docs-height\\)-var\\(--fd-docs-row-2\\)\\)\\] {\n height: calc(var(--fd-docs-height) - var(--fd-docs-row-2));\n }\n.h-\\[calc\\(var\\(--fd-docs-height\\)-var\\(--fd-docs-row-3\\)\\)\\] {\n height: calc(var(--fd-docs-height) - var(--fd-docs-row-3));\n }\n.h-full {\n height: 100%;\n }\n.h-px {\n height: 1px;\n }\n.max-h-\\(--radix-popover-content-available-height\\) {\n max-height: var(--radix-popover-content-available-height);\n }\n.max-h-20 {\n max-height: calc(var(--spacing) * 20);\n }\n.max-h-\\[50vh\\] {\n max-height: 50vh;\n }\n.max-h-\\[80svh\\] {\n max-height: 80svh;\n }\n.max-h-\\[460px\\] {\n max-height: 460px;\n }\n.max-h-\\[600px\\] {\n max-height: 600px;\n }\n.min-h-\\(--fd-docs-height\\) {\n min-height: var(--fd-docs-height);\n }\n.min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n.min-h-11 {\n min-height: calc(var(--spacing) * 11);\n }\n.w-\\(--fd-sidebar-width\\) {\n width: var(--fd-sidebar-width);\n }\n.w-\\(--fd-toc-width\\) {\n width: var(--fd-toc-width);\n }\n.w-\\(--radix-popover-trigger-width\\) {\n width: var(--radix-popover-trigger-width);\n }\n.w-0 {\n width: calc(var(--spacing) * 0);\n }\n.w-0\\.5 {\n width: calc(var(--spacing) * 0.5);\n }\n.w-1\\.5 {\n width: calc(var(--spacing) * 1.5);\n }\n.w-1\\/4 {\n width: calc(1 / 4 * 100%);\n }\n.w-4 {\n width: calc(var(--spacing) * 4);\n }\n.w-\\[85\\%\\] {\n width: 85%;\n }\n.w-\\[calc\\(100\\%-1rem\\)\\] {\n width: calc(100% - 1rem);\n }\n.w-\\[calc\\(100\\%-var\\(--removed-body-scroll-bar-size\\,0px\\)\\)\\] {\n width: calc(100% - var(--removed-body-scroll-bar-size,0px));\n }\n.w-fit {\n width: fit-content;\n }\n.w-full {\n width: 100%;\n }\n.w-max {\n width: max-content;\n }\n.w-px {\n width: 1px;\n }\n.max-w-\\[98vw\\] {\n max-width: 98vw;\n }\n.max-w-\\[240px\\] {\n max-width: 240px;\n }\n.max-w-\\[380px\\] {\n max-width: 380px;\n }\n.max-w-\\[900px\\] {\n max-width: 900px;\n }\n.max-w-\\[1168px\\] {\n max-width: 1168px;\n }\n.max-w-\\[1200px\\] {\n max-width: 1200px;\n }\n.max-w-\\[1400px\\] {\n max-width: 1400px;\n }\n.max-w-full {\n max-width: 100%;\n }\n.max-w-md {\n max-width: var(--container-md);\n }\n.max-w-screen-sm {\n max-width: var(--breakpoint-sm);\n }\n.max-w-sm {\n max-width: var(--container-sm);\n }\n.max-w-svw {\n max-width: 100svw;\n }\n.min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n.min-w-\\[240px\\] {\n min-width: 240px;\n }\n.min-w-fit {\n min-width: fit-content;\n }\n.min-w-full {\n min-width: 100%;\n }\n.flex-1 {\n flex: 1;\n }\n.shrink {\n flex-shrink: 1;\n }\n.shrink-0 {\n flex-shrink: 0;\n }\n.origin-\\(--radix-popover-content-transform-origin\\) {\n transform-origin: var(--radix-popover-content-transform-origin);\n }\n.origin-\\[top_center\\] {\n transform-origin: top center;\n }\n.-translate-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.-translate-x-\\(--fd-sidebar-width\\) {\n --tw-translate-x: calc(var(--fd-sidebar-width) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.translate-x-2 {\n --tw-translate-x: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.translate-x-\\[calc\\(-50\\%-var\\(--removed-body-scroll-bar-size\\,0px\\)\\/2\\)\\] {\n --tw-translate-x: calc(-50% - var(--removed-body-scroll-bar-size,0px) / 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.-translate-y-full {\n --tw-translate-y: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.translate-y-full {\n --tw-translate-y: 100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.-rotate-90 {\n rotate: calc(90deg * -1);\n }\n.rotate-180 {\n rotate: 180deg;\n }\n.transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n.animate-fd-fade-in {\n animation: var(--animate-fd-fade-in);\n }\n.animate-pulse {\n animation: var(--animate-pulse);\n }\n.scroll-m-4 {\n scroll-margin: calc(var(--spacing) * 4);\n }\n.scroll-m-20 {\n scroll-margin: calc(var(--spacing) * 20);\n }\n.scroll-m-24 {\n scroll-margin: calc(var(--spacing) * 24);\n }\n.scroll-m-28 {\n scroll-margin: calc(var(--spacing) * 28);\n }\n.list-none {\n list-style-type: none;\n }\n.auto-cols-auto {\n grid-auto-columns: auto;\n }\n.auto-rows-auto {\n grid-auto-rows: auto;\n }\n.grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n.grid-cols-\\[1fr_3fr\\] {\n grid-template-columns: 1fr 3fr;\n }\n.flex-col {\n flex-direction: column;\n }\n.flex-row {\n flex-direction: row;\n }\n.flex-row-reverse {\n flex-direction: row-reverse;\n }\n.flex-wrap {\n flex-wrap: wrap;\n }\n.items-center {\n align-items: center;\n }\n.items-end {\n align-items: flex-end;\n }\n.justify-between {\n justify-content: space-between;\n }\n.justify-center {\n justify-content: center;\n }\n.justify-end {\n justify-content: flex-end;\n }\n.justify-start {\n justify-content: flex-start;\n }\n.gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n.gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n.gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n.gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n.gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n.gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n.gap-3\\.5 {\n gap: calc(var(--spacing) * 3.5);\n }\n.gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n.gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n.gap-y-4 {\n row-gap: calc(var(--spacing) * 4);\n }\n.divide-x {\n :where(& > :not(:last-child)) {\n --tw-divide-x-reverse: 0;\n border-inline-style: var(--tw-border-style);\n border-inline-start-width: calc(1px * var(--tw-divide-x-reverse));\n border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));\n }\n }\n.divide-y {\n :where(& > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n }\n.divide-fd-border {\n :where(& > :not(:last-child)) {\n border-color: var(--color-fd-border);\n }\n }\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n.overflow-auto {\n overflow: auto;\n }\n.overflow-hidden {\n overflow: hidden;\n }\n.overflow-x-auto {\n overflow-x: auto;\n }\n.overflow-x-clip {\n overflow-x: clip;\n }\n.overflow-y-auto {\n overflow-y: auto;\n }\n.overflow-y-hidden {\n overflow-y: hidden;\n }\n.overscroll-contain {\n overscroll-behavior: contain;\n }\n.rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n }\n.rounded-full {\n border-radius: calc(infinity * 1px);\n }\n.rounded-lg {\n border-radius: var(--radius-lg);\n }\n.rounded-md {\n border-radius: var(--radius-md);\n }\n.rounded-none {\n border-radius: 0;\n }\n.rounded-sm {\n border-radius: var(--radius-sm);\n }\n.rounded-xl {\n border-radius: var(--radius-xl);\n }\n.border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n.border-x {\n border-inline-style: var(--tw-border-style);\n border-inline-width: 1px;\n }\n.border-y-0 {\n border-block-style: var(--tw-border-style);\n border-block-width: 0px;\n }\n.border-s {\n border-inline-start-style: var(--tw-border-style);\n border-inline-start-width: 1px;\n }\n.border-e {\n border-inline-end-style: var(--tw-border-style);\n border-inline-end-width: 1px;\n }\n.border-e-0 {\n border-inline-end-style: var(--tw-border-style);\n border-inline-end-width: 0px;\n }\n.border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n.border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n.border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n.border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n.border-none {\n --tw-border-style: none;\n border-style: none;\n }\n.border-fd-foreground\\/10 {\n border-color: color-mix(in srgb, hsl(0, 0%, 3.9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-fd-foreground) 10%, transparent);\n }\n }\n.border-fd-primary {\n border-color: var(--color-fd-primary);\n }\n.border-transparent {\n border-color: transparent;\n }\n.bg-\\(--callout-color\\)\\/50 {\n background-color: var(--callout-color);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--callout-color) 50%, transparent);\n }\n }\n.bg-\\(--shiki-light-bg\\) {\n background-color: var(--shiki-light-bg);\n }\n.bg-fd-accent {\n background-color: var(--color-fd-accent);\n }\n.bg-fd-background {\n background-color: var(--color-fd-background);\n }\n.bg-fd-background\\/60 {\n background-color: color-mix(in srgb, hsl(0, 0%, 96%) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-background) 60%, transparent);\n }\n }\n.bg-fd-background\\/80 {\n background-color: color-mix(in srgb, hsl(0, 0%, 96%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-background) 80%, transparent);\n }\n }\n.bg-fd-border {\n background-color: var(--color-fd-border);\n }\n.bg-fd-card {\n background-color: var(--color-fd-card);\n }\n.bg-fd-foreground\\/10 {\n background-color: color-mix(in srgb, hsl(0, 0%, 3.9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-foreground) 10%, transparent);\n }\n }\n.bg-fd-muted {\n background-color: var(--color-fd-muted);\n }\n.bg-fd-overlay {\n background-color: var(--color-fd-overlay);\n }\n.bg-fd-popover {\n background-color: var(--color-fd-popover);\n }\n.bg-fd-popover\\/60 {\n background-color: color-mix(in srgb, hsl(0, 0%, 98%) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-popover) 60%, transparent);\n }\n }\n.bg-fd-popover\\/80 {\n background-color: color-mix(in srgb, hsl(0, 0%, 98%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-popover) 80%, transparent);\n }\n }\n.bg-fd-primary {\n background-color: var(--color-fd-primary);\n }\n.bg-fd-primary\\/10 {\n background-color: color-mix(in srgb, hsl(0, 0%, 9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-primary) 10%, transparent);\n }\n }\n.bg-fd-secondary {\n background-color: var(--color-fd-secondary);\n }\n.bg-fd-secondary\\/50 {\n background-color: color-mix(in srgb, hsl(0, 0%, 93.1%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-secondary) 50%, transparent);\n }\n }\n.bg-transparent {\n background-color: transparent;\n }\n.mask-\\[linear-gradient\\(to_bottom\\,transparent\\,white_--spacing\\(14\\)\\,white_calc\\(100\\%---spacing\\(14\\)\\)\\,transparent\\)\\] {\n mask-image: linear-gradient(to bottom,transparent,white calc(var(--spacing) * 14),white calc(100% - calc(var(--spacing) * 14)),transparent);\n }\n.mask-\\[linear-gradient\\(to_bottom\\,transparent\\,white_12px\\,white_calc\\(100\\%-12px\\)\\,transparent\\)\\] {\n mask-image: linear-gradient(to bottom,transparent,white 12px,white calc(100% - 12px),transparent);\n }\n.mask-\\[linear-gradient\\(to_bottom\\,transparent\\,white_16px\\,white_calc\\(100\\%-16px\\)\\,transparent\\)\\] {\n mask-image: linear-gradient(to bottom,transparent,white 16px,white calc(100% - 16px),transparent);\n }\n.mask-\\[linear-gradient\\(to_bottom\\,white\\,white_30px\\,transparent_80px\\)\\] {\n mask-image: linear-gradient(to bottom,white,white 30px,transparent 80px);\n }\n.fill-\\(--callout-color\\) {\n fill: var(--callout-color);\n }\n.fill-fd-primary {\n fill: var(--color-fd-primary);\n }\n.fill-fd-primary-foreground {\n fill: var(--color-fd-primary-foreground);\n }\n.stroke-current\\/25 {\n stroke: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n stroke: color-mix(in oklab, currentcolor 25%, transparent);\n }\n }\n.stroke-fd-foreground\\/10 {\n stroke: color-mix(in srgb, hsl(0, 0%, 3.9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n stroke: color-mix(in oklab, var(--color-fd-foreground) 10%, transparent);\n }\n }\n.stroke-fd-primary {\n stroke: var(--color-fd-primary);\n }\n.p-0 {\n padding: calc(var(--spacing) * 0);\n }\n.p-0\\.5 {\n padding: calc(var(--spacing) * 0.5);\n }\n.p-1 {\n padding: calc(var(--spacing) * 1);\n }\n.p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n.p-2 {\n padding: calc(var(--spacing) * 2);\n }\n.p-3 {\n padding: calc(var(--spacing) * 3);\n }\n.p-4 {\n padding: calc(var(--spacing) * 4);\n }\n.px-0\\.5 {\n padding-inline: calc(var(--spacing) * 0.5);\n }\n.px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n.px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n.px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n.px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n.px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n.px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n.px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n.px-8 {\n padding-inline: calc(var(--spacing) * 8);\n }\n.px-px {\n padding-inline: 1px;\n }\n.py-0 {\n padding-block: calc(var(--spacing) * 0);\n }\n.py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n.py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n.py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n.py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n.py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n.py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n.py-3\\.5 {\n padding-block: calc(var(--spacing) * 3.5);\n }\n.py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n.py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n.py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n.py-16 {\n padding-block: calc(var(--spacing) * 16);\n }\n.ps-1 {\n padding-inline-start: calc(var(--spacing) * 1);\n }\n.ps-2 {\n padding-inline-start: calc(var(--spacing) * 2);\n }\n.ps-2\\.5 {\n padding-inline-start: calc(var(--spacing) * 2.5);\n }\n.ps-3 {\n padding-inline-start: calc(var(--spacing) * 3);\n }\n.ps-4 {\n padding-inline-start: calc(var(--spacing) * 4);\n }\n.ps-6 {\n padding-inline-start: calc(var(--spacing) * 6);\n }\n.ps-8 {\n padding-inline-start: calc(var(--spacing) * 8);\n }\n.pe-0 {\n padding-inline-end: calc(var(--spacing) * 0);\n }\n.pe-2 {\n padding-inline-end: calc(var(--spacing) * 2);\n }\n.pe-2\\.5 {\n padding-inline-end: calc(var(--spacing) * 2.5);\n }\n.pe-4 {\n padding-inline-end: calc(var(--spacing) * 4);\n }\n.pt-0 {\n padding-top: calc(var(--spacing) * 0);\n }\n.pt-0\\.5 {\n padding-top: calc(var(--spacing) * 0.5);\n }\n.pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n.pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n.pt-12 {\n padding-top: calc(var(--spacing) * 12);\n }\n.pr-\\(--removed-body-scroll-bar-size\\,0\\) {\n padding-right: var(--removed-body-scroll-bar-size,0);\n }\n.pb-0 {\n padding-bottom: calc(var(--spacing) * 0);\n }\n.pb-1\\.5 {\n padding-bottom: calc(var(--spacing) * 1.5);\n }\n.pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n.pb-24 {\n padding-bottom: calc(var(--spacing) * 24);\n }\n.text-center {\n text-align: center;\n }\n.text-end {\n text-align: end;\n }\n.text-start {\n text-align: start;\n }\n.font-mono {\n font-family: var(--font-mono);\n }\n.text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n.text-6xl {\n font-size: var(--text-6xl);\n line-height: var(--tw-leading, var(--text-6xl--line-height));\n }\n.text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n.text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n.text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n.text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n.text-\\[0\\.8125rem\\] {\n font-size: 0.8125rem;\n }\n.text-\\[0\\.9375rem\\] {\n font-size: 0.9375rem;\n }\n.text-\\[1\\.75em\\] {\n font-size: 1.75em;\n }\n.leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n.font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n.font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n.font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n.text-nowrap {\n text-wrap: nowrap;\n }\n.wrap-anywhere {\n overflow-wrap: anywhere;\n }\n.whitespace-nowrap {\n white-space: nowrap;\n }\n.text-\\(--callout-color\\) {\n color: var(--callout-color);\n }\n.text-fd-accent-foreground {\n color: var(--color-fd-accent-foreground);\n }\n.text-fd-card {\n color: var(--color-fd-card);\n }\n.text-fd-card-foreground {\n color: var(--color-fd-card-foreground);\n }\n.text-fd-foreground {\n color: var(--color-fd-foreground);\n }\n.text-fd-foreground\\/80 {\n color: color-mix(in srgb, hsl(0, 0%, 3.9%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-foreground) 80%, transparent);\n }\n }\n.text-fd-muted-foreground {\n color: var(--color-fd-muted-foreground);\n }\n.text-fd-muted-foreground\\/50 {\n color: color-mix(in srgb, hsl(0, 0%, 45.1%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-muted-foreground) 50%, transparent);\n }\n }\n.text-fd-popover-foreground {\n color: var(--color-fd-popover-foreground);\n }\n.text-fd-popover-foreground\\/80 {\n color: color-mix(in srgb, hsl(0, 0%, 15.1%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-popover-foreground) 80%, transparent);\n }\n }\n.text-fd-primary {\n color: var(--color-fd-primary);\n }\n.text-fd-primary-foreground {\n color: var(--color-fd-primary-foreground);\n }\n.text-fd-primary\\/50 {\n color: color-mix(in srgb, hsl(0, 0%, 9%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-primary) 50%, transparent);\n }\n }\n.text-fd-secondary-foreground {\n color: var(--color-fd-secondary-foreground);\n }\n.line-through {\n text-decoration-line: line-through;\n }\n.underline {\n text-decoration-line: underline;\n }\n.opacity-\\(--opacity\\,0\\) {\n opacity: var(--opacity,0);\n }\n.opacity-0 {\n opacity: 0%;\n }\n.shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n.shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n.shadow-black\\/50 {\n --tw-shadow-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-black) 50%, transparent) var(--tw-shadow-alpha), transparent);\n }\n }\n.outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n.filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n.backdrop-blur-lg {\n --tw-backdrop-blur: blur(var(--blur-lg));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n.backdrop-blur-md {\n --tw-backdrop-blur: blur(var(--blur-md));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n.backdrop-blur-xs {\n --tw-backdrop-blur: blur(var(--blur-xs));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n.transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[clip-path\\] {\n transition-property: clip-path;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[height\\] {\n transition-property: height;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[opacity\\,offset-distance\\] {\n transition-property: opacity,offset-distance;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[opacity\\,translate\\,color\\] {\n transition-property: opacity,translate,color;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[opacity\\,translate\\] {\n transition-property: opacity,translate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[width\\,height\\] {\n transition-property: width,height;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[width\\,inset-block\\,translate\\,background-color\\] {\n transition-property: width,inset-block,translate,background-color;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n.duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n.duration-250 {\n --tw-duration: 250ms;\n transition-duration: 250ms;\n }\n.duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n.duration-400 {\n --tw-duration: 400ms;\n transition-duration: 400ms;\n }\n.outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n.select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n.\\[--fd-docs-height\\:100dvh\\] {\n --fd-docs-height: 100dvh;\n }\n.\\[--fd-header-height\\:0px\\] {\n --fd-header-height: 0px;\n }\n.\\[--fd-layout-width\\:1400px\\] {\n --fd-layout-width: 1400px;\n }\n.\\[--fd-sidebar-width\\:0px\\] {\n --fd-sidebar-width: 0px;\n }\n.\\[--fd-toc-popover-height\\:0px\\] {\n --fd-toc-popover-height: 0px;\n }\n.\\[--fd-toc-width\\:0px\\] {\n --fd-toc-width: 0px;\n }\n.\\[grid-area\\:header\\] {\n grid-area: header;\n }\n.\\[grid-area\\:main\\] {\n grid-area: main;\n }\n.\\[grid-area\\:sidebar\\] {\n grid-area: sidebar;\n }\n.\\[grid-area\\:toc-popover\\] {\n grid-area: toc-popover;\n }\n.\\[grid-area\\:toc\\] {\n grid-area: toc;\n }\n.\\[offset-distance\\:var\\(--offset-distance\\,0\\)\\] {\n offset-distance: var(--offset-distance,0);\n }\n.\\[scrollbar-width\\:none\\] {\n scrollbar-width: none;\n }\n.\\*\\:pointer-events-auto {\n :is(& > *) {\n pointer-events: auto;\n }\n }\n.\\*\\:col-start-1 {\n :is(& > *) {\n grid-column-start: 1;\n }\n }\n.\\*\\:row-start-1 {\n :is(& > *) {\n grid-row-start: 1;\n }\n }\n.\\*\\:mx-auto {\n :is(& > *) {\n margin-inline: auto;\n }\n }\n.\\*\\:my-auto {\n :is(& > *) {\n margin-block: auto;\n }\n }\n.\\*\\:flex {\n :is(& > *) {\n display: flex;\n }\n }\n.\\*\\:flex\\! {\n :is(& > *) {\n display: flex !important;\n }\n }\n.\\*\\:w-\\(--fd-sidebar-width\\) {\n :is(& > *) {\n width: var(--fd-sidebar-width);\n }\n }\n.\\*\\:max-w-\\(--fd-layout-width\\) {\n :is(& > *) {\n max-width: var(--fd-layout-width);\n }\n }\n.\\*\\:max-w-\\[900px\\] {\n :is(& > *) {\n max-width: 900px;\n }\n }\n.\\*\\:max-w-\\[1285px\\] {\n :is(& > *) {\n max-width: 1285px;\n }\n }\n.\\*\\:flex-col {\n :is(& > *) {\n flex-direction: column;\n }\n }\n.\\*\\:flex-col\\! {\n :is(& > *) {\n flex-direction: column !important;\n }\n }\n.\\*\\:gap-0\\! {\n :is(& > *) {\n gap: calc(var(--spacing) * 0) !important;\n }\n }\n.\\*\\:gap-0\\.5\\! {\n :is(& > *) {\n gap: calc(var(--spacing) * 0.5) !important;\n }\n }\n.\\*\\:rounded-full {\n :is(& > *) {\n border-radius: calc(infinity * 1px);\n }\n }\n.\\*\\:rounded-lg {\n :is(& > *) {\n border-radius: var(--radius-lg);\n }\n }\n.\\*\\:rounded-md {\n :is(& > *) {\n border-radius: var(--radius-md);\n }\n }\n.\\*\\:border-b {\n :is(& > *) {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n.not-last\\:mb-2 {\n &:not(*:last-child) {\n margin-bottom: calc(var(--spacing) * 2);\n }\n }\n.group-data-\\[state\\=active\\]\\:bg-fd-primary {\n &:is(:where(.group)[data-state=\"active\"] *) {\n background-color: var(--color-fd-primary);\n }\n }\n.group-data-\\[state\\=open\\]\\:rotate-90 {\n &:is(:where(.group)[data-state=\"open\"] *) {\n rotate: 90deg;\n }\n }\n.group-data-\\[state\\=open\\]\\:rotate-180 {\n &:is(:where(.group)[data-state=\"open\"] *) {\n rotate: 180deg;\n }\n }\n.peer-hover\\:opacity-100 {\n &:is(:where(.peer):hover ~ *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n.placeholder\\:text-fd-muted-foreground {\n &::placeholder {\n color: var(--color-fd-muted-foreground);\n }\n }\n.before\\:absolute {\n &::before {\n content: var(--tw-content);\n position: absolute;\n }\n }\n.before\\:inset-y-1 {\n &::before {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * 1);\n }\n }\n.before\\:inset-s-2\\.5 {\n &::before {\n content: var(--tw-content);\n inset-inline-start: calc(var(--spacing) * 2.5);\n }\n }\n.before\\:start-2\\.5 {\n &::before {\n content: var(--tw-content);\n inset-inline-start: calc(var(--spacing) * 2.5);\n }\n }\n.before\\:w-px {\n &::before {\n content: var(--tw-content);\n width: 1px;\n }\n }\n.before\\:bg-fd-border {\n &::before {\n content: var(--tw-content);\n background-color: var(--color-fd-border);\n }\n }\n.before\\:content-\\[\\'\\'\\] {\n &::before {\n --tw-content: '';\n content: var(--tw-content);\n }\n }\n.first\\:ms-0 {\n &:first-child {\n margin-inline-start: calc(var(--spacing) * 0);\n }\n }\n.first\\:mt-0 {\n &:first-child {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n.first\\:pt-0 {\n &:first-child {\n padding-top: calc(var(--spacing) * 0);\n }\n }\n.last\\:me-0 {\n &:last-child {\n margin-inline-end: calc(var(--spacing) * 0);\n }\n }\n.last\\:rounded-b-xl {\n &:last-child {\n border-bottom-right-radius: var(--radius-xl);\n border-bottom-left-radius: var(--radius-xl);\n }\n }\n.last\\:pb-0 {\n &:last-child {\n padding-bottom: calc(var(--spacing) * 0);\n }\n }\n.\\*\\:last\\:border-b-0 {\n :is(& > *) {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n.empty\\:mb-0 {\n &:empty {\n margin-bottom: calc(var(--spacing) * 0);\n }\n }\n.empty\\:hidden {\n &:empty {\n display: none;\n }\n }\n.hover\\:bg-fd-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-fd-accent);\n }\n }\n }\n.hover\\:bg-fd-accent\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsla(0, 0%, 82%, 50%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-accent) 50%, transparent);\n }\n }\n }\n }\n.hover\\:bg-fd-accent\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsla(0, 0%, 82%, 50%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-accent) 80%, transparent);\n }\n }\n }\n }\n.hover\\:bg-fd-primary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsl(0, 0%, 9%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-primary) 80%, transparent);\n }\n }\n }\n }\n.hover\\:text-fd-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--color-fd-accent-foreground);\n }\n }\n }\n.hover\\:text-fd-accent-foreground\\/80 {\n &:hover {\n @media (hover: hover) {\n color: color-mix(in srgb, hsl(0, 0%, 9%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-accent-foreground) 80%, transparent);\n }\n }\n }\n }\n.hover\\:text-fd-popover-foreground\\/50 {\n &:hover {\n @media (hover: hover) {\n color: color-mix(in srgb, hsl(0, 0%, 15.1%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-popover-foreground) 50%, transparent);\n }\n }\n }\n }\n.hover\\:opacity-80 {\n &:hover {\n @media (hover: hover) {\n opacity: 80%;\n }\n }\n }\n.hover\\:transition-none {\n &:hover {\n @media (hover: hover) {\n transition-property: none;\n }\n }\n }\n.focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n.focus-visible\\:ring-fd-ring {\n &:focus-visible {\n --tw-ring-color: var(--color-fd-ring);\n }\n }\n.focus-visible\\:outline-none {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n.focus-visible\\:ring-inset {\n &:focus-visible {\n --tw-ring-inset: inset;\n }\n }\n.disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n.disabled\\:bg-fd-secondary {\n &:disabled {\n background-color: var(--color-fd-secondary);\n }\n }\n.disabled\\:text-fd-secondary-foreground {\n &:disabled {\n color: var(--color-fd-secondary-foreground);\n }\n }\n.disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n.has-focus-visible\\:bg-fd-accent {\n &:has(*:focus-visible) {\n background-color: var(--color-fd-accent);\n }\n }\n.has-data-\\[active\\=true\\]\\:text-fd-primary {\n &:has(*[data-active=\"true\"]) {\n color: var(--color-fd-primary);\n }\n }\n.\\*\\:has-\\[\\+\\:last-child\\[data-empty\\=true\\]\\]\\:border-b-0 {\n :is(& > *) {\n &:has(+:last-child[data-empty=true]) {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n.data-checked\\:text-fd-accent-foreground {\n &[data-checked] {\n color: var(--color-fd-accent-foreground);\n }\n }\n.data-\\[active\\=true\\]\\:bg-fd-primary\\/10 {\n &[data-active=\"true\"] {\n background-color: color-mix(in srgb, hsl(0, 0%, 9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-primary) 10%, transparent);\n }\n }\n }\n.data-\\[active\\=true\\]\\:font-medium {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n.data-\\[active\\=true\\]\\:text-fd-primary {\n &[data-active=\"true\"] {\n color: var(--color-fd-primary);\n }\n }\n.data-\\[active\\=true\\]\\:before\\:absolute {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n position: absolute;\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:inset-y-2\\.5 {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * 2.5);\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:inset-s-2\\.5 {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n inset-inline-start: calc(var(--spacing) * 2.5);\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:start-2\\.5 {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n inset-inline-start: calc(var(--spacing) * 2.5);\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:w-px {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n width: 1px;\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:bg-fd-primary {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n background-color: var(--color-fd-primary);\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:content-\\[\\'\\'\\] {\n &[data-active=\"true\"] {\n &::before {\n --tw-content: '';\n content: var(--tw-content);\n }\n }\n }\n.data-\\[active\\=true\\]\\:hover\\:transition-colors {\n &[data-active=\"true\"] {\n &:hover {\n @media (hover: hover) {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n }\n }\n.data-\\[collapsed\\=false\\]\\:hidden {\n &[data-collapsed=\"false\"] {\n display: none;\n }\n }\n.data-\\[column-changed\\=true\\]\\:transition-\\[grid-template-columns\\] {\n &[data-column-changed=\"true\"] {\n transition-property: grid-template-columns;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n.\\*\\:data-\\[empty\\=true\\]\\:border-b-0 {\n :is(& > *) {\n &[data-empty=\"true\"] {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n.data-\\[motion\\=from-end\\]\\:animate-fd-enterFromRight {\n &[data-motion=\"from-end\"] {\n animation: var(--animate-fd-enterFromRight);\n }\n }\n.data-\\[motion\\=from-start\\]\\:animate-fd-enterFromLeft {\n &[data-motion=\"from-start\"] {\n animation: var(--animate-fd-enterFromLeft);\n }\n }\n.data-\\[motion\\=to-end\\]\\:animate-fd-exitToRight {\n &[data-motion=\"to-end\"] {\n animation: var(--animate-fd-exitToRight);\n }\n }\n.data-\\[motion\\=to-start\\]\\:animate-fd-exitToLeft {\n &[data-motion=\"to-start\"] {\n animation: var(--animate-fd-exitToLeft);\n }\n }\n.data-\\[state\\=active\\]\\:border-fd-primary {\n &[data-state=\"active\"] {\n border-color: var(--color-fd-primary);\n }\n }\n.data-\\[state\\=active\\]\\:text-fd-primary {\n &[data-state=\"active\"] {\n color: var(--color-fd-primary);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-accordion-up {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-accordion-up);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-collapsible-up {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-collapsible-up);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-dialog-out {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-dialog-out);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-fade-out {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-fade-out);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-nav-menu-out {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-nav-menu-out);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-popover-out {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-popover-out);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-sidebar-out {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-sidebar-out);\n }\n }\n.data-\\[state\\=hidden\\]\\:animate-fd-fade-out {\n &[data-state=\"hidden\"] {\n animation: var(--animate-fd-fade-out);\n }\n }\n.data-\\[state\\=inactive\\]\\:hidden {\n &[data-state=\"inactive\"] {\n display: none;\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-accordion-down {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-accordion-down);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-collapsible-down {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-collapsible-down);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-dialog-in {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-dialog-in);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-fade-in {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-fade-in);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-nav-menu-in {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-nav-menu-in);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-popover-in {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-popover-in);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-sidebar-in {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-sidebar-in);\n }\n }\n.data-\\[state\\=open\\]\\:bg-fd-accent {\n &[data-state=\"open\"] {\n background-color: var(--color-fd-accent);\n }\n }\n.data-\\[state\\=open\\]\\:bg-fd-accent\\/50 {\n &[data-state=\"open\"] {\n background-color: color-mix(in srgb, hsla(0, 0%, 82%, 50%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-accent) 50%, transparent);\n }\n }\n }\n.data-\\[state\\=open\\]\\:text-fd-accent-foreground {\n &[data-state=\"open\"] {\n color: var(--color-fd-accent-foreground);\n }\n }\n.data-\\[transparent\\=false\\]\\:bg-fd-background\\/80 {\n &[data-transparent=\"false\"] {\n background-color: color-mix(in srgb, hsl(0, 0%, 96%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-background) 80%, transparent);\n }\n }\n }\n.max-xl\\:hidden {\n @media (width < 80rem) {\n display: none;\n }\n }\n.max-lg\\:flex {\n @media (width < 64rem) {\n display: flex;\n }\n }\n.max-lg\\:hidden {\n @media (width < 64rem) {\n display: none;\n }\n }\n.max-lg\\:rounded-b-2xl {\n @media (width < 64rem) {\n border-bottom-right-radius: var(--radius-2xl);\n border-bottom-left-radius: var(--radius-2xl);\n }\n }\n.max-lg\\:shadow-lg {\n @media (width < 64rem) {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n.max-md\\:flex {\n @media (width < 48rem) {\n display: flex;\n }\n }\n.max-md\\:hidden {\n @media (width < 48rem) {\n display: none;\n }\n }\n.max-md\\:rounded-md {\n @media (width < 48rem) {\n border-radius: var(--radius-md);\n }\n }\n.max-md\\:border {\n @media (width < 48rem) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n.max-md\\:bg-fd-secondary {\n @media (width < 48rem) {\n background-color: var(--color-fd-secondary);\n }\n }\n.max-md\\:p-1\\.5 {\n @media (width < 48rem) {\n padding: calc(var(--spacing) * 1.5);\n }\n }\n.max-sm\\:mt-2 {\n @media (width < 40rem) {\n margin-top: calc(var(--spacing) * 2);\n }\n }\n.max-sm\\:hidden {\n @media (width < 40rem) {\n display: none;\n }\n }\n.sm\\:bottom-6 {\n @media (width >= 40rem) {\n bottom: calc(var(--spacing) * 6);\n }\n }\n.sm\\:hidden {\n @media (width >= 40rem) {\n display: none;\n }\n }\n.sm\\:max-w-\\[380px\\] {\n @media (width >= 40rem) {\n max-width: 380px;\n }\n }\n.sm\\:max-w-\\[400px\\] {\n @media (width >= 40rem) {\n max-width: 400px;\n }\n }\n.sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n.sm\\:items-center {\n @media (width >= 40rem) {\n align-items: center;\n }\n }\n.sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n.sm\\:rounded-2xl {\n @media (width >= 40rem) {\n border-radius: var(--radius-2xl);\n }\n }\n.sm\\:border {\n @media (width >= 40rem) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n.sm\\:p-1 {\n @media (width >= 40rem) {\n padding: calc(var(--spacing) * 1);\n }\n }\n.md\\:top-\\[calc\\(50\\%-250px\\)\\] {\n @media (width >= 48rem) {\n top: calc(50% - 250px);\n }\n }\n.md\\:mb-auto {\n @media (width >= 48rem) {\n margin-bottom: auto;\n }\n }\n.md\\:hidden {\n @media (width >= 48rem) {\n display: none;\n }\n }\n.md\\:size-5 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n }\n.md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n.md\\:gap-2 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 2);\n }\n }\n.md\\:px-6 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 6);\n }\n }\n.md\\:pt-8 {\n @media (width >= 48rem) {\n padding-top: calc(var(--spacing) * 8);\n }\n }\n.has-data-\\[collapsed\\=true\\]\\:md\\:flex {\n &:has(*[data-collapsed=\"true\"]) {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n }\n.lg\\:hidden {\n @media (width >= 64rem) {\n display: none;\n }\n }\n.lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n.lg\\:text-sm {\n @media (width >= 64rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n.xl\\:hidden {\n @media (width >= 80rem) {\n display: none;\n }\n }\n.xl\\:px-8 {\n @media (width >= 80rem) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n.xl\\:pt-14 {\n @media (width >= 80rem) {\n padding-top: calc(var(--spacing) * 14);\n }\n }\n.\\@max-xl\\:hidden {\n @container (width < 36rem) {\n display: none;\n }\n }\n.\\@max-lg\\:col-span-full {\n @container (width < 32rem) {\n grid-column: 1 / -1;\n }\n }\n.rtl\\:-translate-x-2 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n.rtl\\:translate-x-full {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: 100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n.rtl\\:rotate-90 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n rotate: 90deg;\n }\n }\n.rtl\\:rotate-180 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n rotate: 180deg;\n }\n }\n.dark\\:bg-\\(--shiki-dark-bg\\) {\n &:where(.dark, .dark *) {\n background-color: var(--shiki-dark-bg);\n }\n }\n.layout\\:\\[--fd-header-height\\:--spacing\\(14\\)\\] {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-header-height: calc(var(--spacing) * 14);\n }\n }\n.max-xl\\:layout\\:\\[--fd-toc-popover-height\\:--spacing\\(10\\)\\] {\n @media (width < 80rem) {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-toc-popover-height: calc(var(--spacing) * 10);\n }\n }\n }\n.max-md\\:layout\\:\\[--fd-header-height\\:--spacing\\(14\\)\\] {\n @media (width < 48rem) {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-header-height: calc(var(--spacing) * 14);\n }\n }\n }\n.md\\:layout\\:\\[--fd-sidebar-width\\:268px\\] {\n @media (width >= 48rem) {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-sidebar-width: 268px;\n }\n }\n }\n.lg\\:layout\\:\\[--fd-header-height\\:--spacing\\(24\\)\\] {\n @media (width >= 64rem) {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-header-height: calc(var(--spacing) * 24);\n }\n }\n }\n.xl\\:layout\\:\\[--fd-toc-width\\:268px\\] {\n @media (width >= 80rem) {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-toc-width: 268px;\n }\n }\n }\n.\\[\\&_svg\\]\\:size-3\\.5 {\n & svg {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n }\n.\\[\\&_svg\\]\\:size-4 {\n & svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n.\\[\\&_svg\\]\\:size-4\\.5 {\n & svg {\n width: calc(var(--spacing) * 4.5);\n height: calc(var(--spacing) * 4.5);\n }\n }\n.\\[\\&_svg\\]\\:size-5 {\n & svg {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n }\n.\\[\\&_svg\\]\\:size-5\\.5 {\n & svg {\n width: calc(var(--spacing) * 5.5);\n height: calc(var(--spacing) * 5.5);\n }\n }\n.\\[\\&_svg\\]\\:size-full {\n & svg {\n width: 100%;\n height: 100%;\n }\n }\n.\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n.\\[\\&_svg\\]\\:text-fd-muted-foreground {\n & svg {\n color: var(--color-fd-muted-foreground);\n }\n }\n.\\[\\&\\>figure\\:only-child\\]\\:-m-4 {\n &>figure:only-child {\n margin: calc(var(--spacing) * -4);\n }\n }\n.\\[\\&\\>figure\\:only-child\\]\\:border-none {\n &>figure:only-child {\n --tw-border-style: none;\n border-style: none;\n }\n }\n.dark {\n --color-fd-background: hsl(0, 0%, 7.04%);\n --color-fd-foreground: hsl(0, 0%, 92%);\n --color-fd-muted: hsl(0, 0%, 12.9%);\n --color-fd-muted-foreground: hsla(0, 0%, 70%, 0.8);\n --color-fd-popover: hsl(0, 0%, 11.6%);\n --color-fd-popover-foreground: hsl(0, 0%, 86.9%);\n --color-fd-card: hsl(0, 0%, 9.8%);\n --color-fd-card-foreground: hsl(0, 0%, 98%);\n --color-fd-border: hsla(0, 0%, 40%, 20%);\n --color-fd-primary: hsl(0, 0%, 98%);\n --color-fd-primary-foreground: hsl(0, 0%, 9%);\n --color-fd-secondary: hsl(0, 0%, 12.9%);\n --color-fd-secondary-foreground: hsl(0, 0%, 92%);\n --color-fd-accent: hsla(0, 0%, 40.9%, 30%);\n --color-fd-accent-foreground: hsl(0, 0%, 90%);\n --color-fd-ring: hsl(0, 0%, 54.9%);\n --color-fd-overlay: hsla(0, 0%, 0%, 0.2);\n}\n.dark #nd-sidebar {\n --color-fd-muted: hsl(0, 0%, 16%);\n --color-fd-secondary: hsl(0, 0%, 18%);\n --color-fd-muted-foreground: hsl(0, 0%, 72%);\n}\n:root {\n --fd-sidebar-drawer-offset: 100%;\n}\n[dir='rtl'] {\n --fd-sidebar-drawer-offset: -100%;\n}\n*, ::after, ::before, ::backdrop, ::file-selector-button {\n border-color: var(--color-fd-border, currentColor);\n }\nbody {\n background-color: var(--color-fd-background);\n color: var(--color-fd-foreground);\n }\n.fd-page-tree-item-name {\n display: inline-flex;\n width: 100%;\n align-items: center;\n gap: calc(var(--spacing) * 1);\n}\n.shiki:not(.not-fumadocs-codeblock *) {\n --padding-left: calc(var(--spacing) * 4);\n --padding-right: calc(var(--spacing) * 4);\n code span {\n color: var(--shiki-light);\n font-style: var(--shiki-light-font-style);\n }\n .line {\n position: relative;\n padding-left: var(--padding-left);\n padding-right: var(--padding-right);\n }\n .line:empty {\n height: 1lh;\n }\n &.has-focused .line:not(.focused) {\n filter: blur(2px);\n transition: filter 200ms;\n }\n &.has-focused:hover .line:not(.focused) {\n filter: blur(0);\n }\n .diff::before {\n position: absolute;\n left: calc(var(--spacing) * 1.5);\n }\n .diff.remove {\n opacity: 0.7;\n --fd-counter-color: var(--color-fd-diff-remove-symbol);\n background-color: var(--color-fd-diff-remove);\n }\n .diff.remove::before {\n content: '-';\n color: var(--color-fd-diff-remove-symbol);\n }\n .diff.add {\n --fd-counter-color: var(--color-fd-diff-add-symbol);\n background-color: var(--color-fd-diff-add);\n }\n .diff.add::before {\n content: '+';\n color: var(--color-fd-diff-add-symbol);\n }\n .highlighted {\n --fd-counter-color: var(--color-fd-primary);\n background-color: color-mix(in srgb, hsl(0, 0%, 9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-primary) 10%, transparent);\n }\n }\n .highlighted::after {\n position: absolute;\n content: '';\n inset-block: calc(var(--spacing) * 0);\n left: calc(var(--spacing) * 0);\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n border-color: color-mix(in srgb, hsl(0, 0%, 9%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-fd-primary) 50%, transparent);\n }\n }\n .highlighted-word {\n padding: 1px;\n margin-block: -1px;\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: color-mix(in srgb, hsl(0, 0%, 9%) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-fd-primary) 30%, transparent);\n }\n background-color: color-mix(in srgb, hsl(0, 0%, 9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-primary) 10%, transparent);\n }\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n &[data-line-numbers] .twoslash-meta-line {\n padding-left: calc(var(--padding-left) + 7 * var(--spacing));\n }\n &[data-line-numbers] .line {\n counter-increment: line;\n padding-left: calc(var(--padding-left) + 7 * var(--spacing));\n }\n &[data-line-numbers] .line::after {\n position: absolute;\n content: counter(line);\n color: var(--fd-counter-color, hsl(0, 0%, 45.1%));\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix( in oklab, var(--fd-counter-color, var(--color-fd-muted-foreground)) 60%, transparent );\n }\n inset-block: calc(var(--spacing) * 0);\n left: calc(var(--spacing) * 0);\n width: calc(var(--spacing) * 7);\n text-align: right;\n }\n}\n.dark .shiki:not(.not-fumadocs-codeblock *) {\n code span {\n color: var(--shiki-dark);\n font-style: var(--shiki-dark-font-style);\n }\n}\ncode.shiki span {\n color: var(--shiki-light);\n font-style: var(--shiki-light-font-style);\n}\n.dark code.shiki span {\n color: var(--shiki-dark);\n font-style: var(--shiki-dark-font-style);\n}\n@property --radix-collapsible-content-height {\n syntax: '';\n inherits: false;\n initial-value: 0px;\n}\nbody {\n display: flex;\n min-height: 100vh;\n flex-direction: column;\n }\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-divide-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-content {\n syntax: \"*\";\n initial-value: \"\";\n inherits: false;\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes fd-sidebar-in {\n from {\n transform: translateX(var(--fd-sidebar-drawer-offset));\n }\n}\n@keyframes fd-sidebar-out {\n to {\n transform: translateX(var(--fd-sidebar-drawer-offset));\n }\n}\n@keyframes fd-dialog-in {\n from {\n transform: scale(1.06);\n opacity: 0;\n }\n to {\n transform: scale(1);\n }\n}\n@keyframes fd-dialog-out {\n from {\n transform: scale(1);\n }\n to {\n transform: scale(1.04);\n opacity: 0;\n }\n}\n@keyframes fd-popover-in {\n from {\n opacity: 0;\n transform: scale(0.9);\n }\n}\n@keyframes fd-popover-out {\n to {\n opacity: 0;\n transform: scale(0.9);\n }\n}\n@keyframes fd-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fd-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes fd-enterFromRight {\n from {\n opacity: 0;\n transform: translateX(200px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n@keyframes fd-enterFromLeft {\n from {\n opacity: 0;\n transform: translateX(-200px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n@keyframes fd-exitToRight {\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(200px);\n }\n}\n@keyframes fd-exitToLeft {\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(-200px);\n }\n}\n@keyframes fd-collapsible-down {\n from {\n height: 0;\n opacity: 0;\n }\n to {\n height: var(--radix-collapsible-content-height);\n }\n}\n@keyframes fd-collapsible-up {\n from {\n height: var(--radix-collapsible-content-height);\n }\n to {\n height: 0;\n opacity: 0;\n }\n}\n@keyframes fd-accordion-down {\n from {\n height: 0;\n opacity: 0.5;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n@keyframes fd-accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n opacity: 0.5;\n }\n}\n@keyframes fd-nav-menu-in {\n from {\n opacity: 0;\n height: 0px;\n }\n to {\n opacity: 1;\n height: var(--radix-navigation-menu-viewport-height);\n }\n}\n@keyframes fd-nav-menu-out {\n from {\n opacity: 1;\n height: var(--radix-navigation-menu-viewport-height);\n }\n to {\n opacity: 0;\n height: 0px;\n }\n}\n@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-border-style: solid;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-divide-x-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-content: \"\";\n --radix-collapsible-content-height: 0px;\n }\n }\n\n@keyframes fd-ai-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fd-ai-slide-up {\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n@keyframes fd-ai-float-in {\n from {\n opacity: 0;\n transform: translateY(12px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes fd-ai-float-center-in {\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n.fd-ai-overlay {\n position: fixed;\n inset: 0;\n z-index: 9998;\n background: color-mix(in srgb, var(--color-fd-background, #000) 70%, transparent);\n backdrop-filter: blur(6px);\n animation: fd-ai-fade-in 150ms ease-out;\n}\n\n.fd-ai-dialog {\n position: fixed;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n background: var(--color-fd-popover, var(--color-fd-background, #0c0c0c));\n border: 1px solid var(--color-fd-border, #1f1f2e);\n border-radius: var(--radius, 12px);\n box-shadow: 0 20px 60px color-mix(in srgb, var(--color-fd-background, #000) 60%, transparent);\n overflow: hidden;\n color: var(--color-fd-foreground, #e4e4e7);\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n}\n\n.fd-ai-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-header-title {\n font-size: 14px;\n font-weight: 600;\n flex: 1;\n}\n\n.fd-ai-esc {\n padding: 2px 6px;\n border-radius: var(--radius, 4px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n font-size: 10px;\n font-family: inherit;\n margin-right: 4px;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: var(--radius, 6px);\n border: none;\n cursor: pointer;\n background: transparent;\n color: var(--color-fd-muted-foreground, #71717a);\n transition: all 150ms;\n}\n\n.fd-ai-close-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-tab-bar {\n display: flex;\n align-items: center;\n gap: 2px;\n padding: 10px 12px 0;\n border-bottom: 1px solid var(--color-fd-border, #1f1f2e);\n}\n\n.fd-ai-tab {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n font-size: 13px;\n font-weight: 500;\n border: none;\n border-radius: var(--radius, 8px) var(--radius, 8px) 0 0;\n cursor: pointer;\n transition: all 150ms;\n background: transparent;\n color: var(--color-fd-muted-foreground, #71717a);\n border-bottom: 2px solid transparent;\n font-family: inherit;\n}\n\n.fd-ai-tab[data-active=\"true\"] {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-foreground, #e4e4e7);\n border-bottom-color: var(--color-fd-primary, #6366f1);\n}\n\n.fd-ai-tab:hover:not([data-active=\"true\"]) {\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-search-wrap {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-input {\n flex: 1;\n background: transparent;\n border: none;\n outline: none;\n color: var(--color-fd-foreground, #e4e4e7);\n font-size: 14px;\n font-family: inherit;\n}\n\n.fd-ai-input::placeholder {\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-results {\n flex: 1;\n overflow-y: auto;\n padding: 4px 8px;\n}\n\n.fd-ai-result {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 12px;\n border: none;\n border-radius: var(--radius, 8px);\n cursor: pointer;\n text-align: left;\n font-size: 13px;\n font-family: inherit;\n transition: background 100ms;\n background: transparent;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-result[data-active=\"true\"] {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-accent-foreground, #fff);\n}\n\n.fd-ai-result-empty {\n padding: 32px 16px;\n text-align: center;\n color: var(--color-fd-muted-foreground, #71717a);\n font-size: 13px;\n}\n\n.fd-ai-messages {\n flex: 1;\n overflow-y: auto;\n padding: 12px 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.fd-ai-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n gap: 12px;\n padding: 24px 0;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-empty-title {\n font-size: 14px;\n font-weight: 500;\n}\n\n.fd-ai-empty-desc {\n font-size: 12px;\n opacity: 0.7;\n text-align: center;\n max-width: 300px;\n line-height: 1.5;\n}\n\n.fd-ai-suggestions {\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n max-width: 360px;\n margin-top: 8px;\n}\n\n.fd-ai-suggestion {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: var(--radius, 8px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.08));\n background: var(--color-fd-background, rgba(255, 255, 255, 0.01));\n opacity: 0.6;\n color: var(--color-fd-foreground, #e4e4e7);\n font-size: 13px;\n font-family: inherit;\n cursor: pointer;\n text-align: left;\n line-height: 1.4;\n transition: all 150ms;\n}\n\n.fd-ai-suggestion:hover {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n border-color: var(--color-fd-ring, rgba(255, 255, 255, 0.15));\n}\n\n.fd-ai-msg {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.fd-ai-msg[data-role=\"user\"] {\n align-items: flex-end;\n}\n\n.fd-ai-msg[data-role=\"assistant\"] {\n align-items: flex-start;\n}\n\n.fd-ai-msg-label {\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--color-fd-muted-foreground, #71717a);\n padding: 0 2px;\n}\n\n.fd-ai-bubble-user {\n background: var(--color-fd-primary, #6366f1);\n color: var(--color-fd-primary-foreground, #fff);\n padding: 8px 14px;\n border-radius: var(--radius, 14px);\n font-size: 13px;\n line-height: 1.5;\n max-width: 85%;\n word-break: break-word;\n}\n\n.fd-ai-bubble-ai {\n background: var(--color-fd-muted, rgba(255, 255, 255, 0.04));\n padding: 10px 14px;\n border-radius: var(--radius, 14px);\n font-size: 13px;\n line-height: 1.6;\n max-width: 95%;\n word-break: break-word;\n animation: fd-ai-msg-in 300ms ease-out;\n}\n\n.fd-ai-feedback {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-top: 10px;\n padding-top: 8px;\n border-top: 1px solid color-mix(in srgb, var(--color-fd-border, #1f1f2e) 70%, transparent);\n}\n\n.fd-ai-feedback-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: 1px solid transparent;\n border-radius: var(--radius, 6px);\n background: transparent;\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n transition:\n background 150ms,\n border-color 150ms,\n color 150ms;\n}\n\n.fd-ai-feedback-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-feedback-btn[data-active=\"true\"] {\n color: var(--color-fd-primary, #6366f1);\n border-color: color-mix(in srgb, var(--color-fd-primary, #6366f1) 40%, transparent);\n background: color-mix(in srgb, var(--color-fd-primary, #6366f1) 10%, transparent);\n}\n\n.fd-ai-feedback-btn[data-copied=\"true\"] {\n color: var(--color-fd-primary, #6366f1);\n background: color-mix(in srgb, var(--color-fd-primary, #6366f1) 10%, transparent);\n}\n\n@keyframes fd-ai-msg-in {\n from { opacity: 0; transform: translateY(6px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.fd-ai-chat-footer {\n padding: 8px 12px 12px;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-model-select-row {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n position: relative;\n overflow: visible;\n margin-bottom: 6px;\n}\n\n.fd-ai-model-select-row--fm {\n padding: 8px 12px 0;\n}\n\n.fd-ai-model-dropdown {\n position: relative;\n margin-left: auto;\n}\n\n.fd-ai-model-dropdown-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n background: transparent;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.12));\n border-radius: var(--radius, 6px);\n cursor: pointer;\n transition: all 150ms;\n}\n\n.fd-ai-model-dropdown-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n border-color: var(--color-fd-border, rgba(255, 255, 255, 0.25));\n}\n\n.fd-ai-model-dropdown-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.fd-ai-model-dropdown-menu {\n position: absolute;\n bottom: calc(100% + 6px);\n right: 0;\n z-index: 99999;\n min-width: 220px;\n padding: 4px;\n background: var(--color-fd-popover, var(--color-fd-background, #0c0c0c));\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius, 8px);\n box-shadow: 2px 2px 0 0 var(--color-fd-border, #262626);\n animation: fd-ai-fade-in 100ms ease-out;\n}\n\n.fd-ai-model-dropdown-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 6px 10px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n font-size: 13px;\n font-family: inherit;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #e4e4e7));\n background: transparent;\n cursor: pointer;\n transition: background 100ms;\n}\n\n.fd-ai-model-dropdown-item:hover {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-model-dropdown-item[data-active=\"true\"] {\n color: var(--color-fd-primary, #6366f1);\n}\n\n.fd-ai-model-dropdown-label {\n flex: 1;\n text-align: left;\n}\n\n.fd-ai-clear-btn {\n font-size: 11px;\n color: var(--color-fd-muted-foreground, #71717a);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 2px 8px;\n border-radius: var(--radius, 4px);\n font-family: inherit;\n}\n\n.fd-ai-clear-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-input-wrap {\n display: flex;\n align-items: center;\n gap: 8px;\n background: var(--color-fd-muted, rgba(255, 255, 255, 0.04));\n border-radius: var(--radius, 10px);\n padding: 4px 4px 4px 14px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.08));\n}\n\n.fd-ai-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--radius, 8px);\n border: none;\n transition: all 150ms;\n cursor: default;\n background: var(--color-fd-muted, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-send-btn[data-active=\"true\"] {\n cursor: pointer;\n background: var(--color-fd-primary, #6366f1);\n color: var(--color-fd-primary-foreground, #fff);\n}\n\n.fd-ai-loader {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n animation: fd-ai-loader-in 300ms ease-out;\n}\n\n@keyframes fd-ai-loader-in {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.fd-ai-loader-shimmer-text {\n font-size: 13px;\n font-weight: 500;\n background: linear-gradient(\n to right,\n var(--color-fd-muted-foreground, #888) 40%,\n var(--color-fd-foreground, #fff) 60%,\n var(--color-fd-muted-foreground, #888) 80%\n );\n background-size: 200% auto;\n background-clip: text;\n -webkit-background-clip: text;\n color: transparent;\n animation: fd-ai-shimmer-text 3s linear infinite;\n}\n\n@keyframes fd-ai-shimmer-text {\n 0% { background-position: 150% center; }\n 100% { background-position: -150% center; }\n}\n\n.fd-ai-loader-typing-dots {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n}\n\n.fd-ai-loader-typing-dot {\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-typing 1s infinite;\n}\n\n.fd-ai-loader-typing-dot:nth-child(2) { animation-delay: 250ms; }\n.fd-ai-loader-typing-dot:nth-child(3) { animation-delay: 500ms; }\n\n@keyframes fd-ai-typing {\n 0%, 100% { transform: translateY(0); opacity: 0.5; }\n 50% { transform: translateY(-2px); opacity: 1; }\n}\n\n.fd-ai-loader-circular {\n width: 16px;\n height: 16px;\n border: 2px solid var(--color-fd-primary, #6366f1);\n border-top-color: transparent;\n border-radius: 50%;\n animation: fd-ai-spin 0.8s linear infinite;\n}\n\n@keyframes fd-ai-spin {\n to { transform: rotate(360deg); }\n}\n\n.fd-ai-loader-dots {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n}\n\n.fd-ai-loader-bounce-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-bounce-dots 1.4s ease-in-out infinite;\n}\n\n.fd-ai-loader-bounce-dot:nth-child(2) { animation-delay: 160ms; }\n.fd-ai-loader-bounce-dot:nth-child(3) { animation-delay: 320ms; }\n\n@keyframes fd-ai-bounce-dots {\n 0%, 100% { transform: scale(0.8); opacity: 0.5; }\n 50% { transform: scale(1.2); opacity: 1; }\n}\n\n.fd-ai-loader-wave {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n height: 16px;\n}\n\n.fd-ai-loader-wave-bar {\n width: 2px;\n border-radius: 2px;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-wave 1s ease-in-out infinite;\n}\n\n.fd-ai-loader-wave-bar:nth-child(1) { height: 6px; animation-delay: 0ms; }\n.fd-ai-loader-wave-bar:nth-child(2) { height: 10px; animation-delay: 100ms; }\n.fd-ai-loader-wave-bar:nth-child(3) { height: 14px; animation-delay: 200ms; }\n.fd-ai-loader-wave-bar:nth-child(4) { height: 10px; animation-delay: 300ms; }\n.fd-ai-loader-wave-bar:nth-child(5) { height: 6px; animation-delay: 400ms; }\n\n@keyframes fd-ai-wave {\n 0%, 100% { transform: scaleY(1); }\n 50% { transform: scaleY(0.6); }\n}\n\n.fd-ai-loader-pulse {\n width: 16px;\n height: 16px;\n border: 2px solid var(--color-fd-primary, #6366f1);\n border-radius: 50%;\n animation: fd-ai-pulse 1.5s ease-in-out infinite;\n}\n\n@keyframes fd-ai-pulse {\n 0%, 100% { transform: scale(0.95); opacity: 0.8; }\n 50% { transform: scale(1.05); opacity: 0.4; }\n}\n\n.fd-ai-loader-pulse-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-pulse-dot 1.2s ease-in-out infinite;\n}\n\n@keyframes fd-ai-pulse-dot {\n 0%, 100% { transform: scale(1); opacity: 0.8; }\n 50% { transform: scale(1.5); opacity: 1; }\n}\n\n.fd-ai-loader-terminal {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n}\n\n.fd-ai-loader-terminal-prompt {\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n font-size: 13px;\n color: var(--color-fd-primary, #6366f1);\n}\n\n.fd-ai-loader-terminal-cursor {\n width: 7px;\n height: 14px;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-blink 1s step-end infinite;\n}\n\n@keyframes fd-ai-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0; }\n}\n\n.fd-ai-loader-text-blink {\n font-size: 13px;\n font-weight: 500;\n animation: fd-ai-text-blink 2s ease-in-out infinite;\n}\n\n@keyframes fd-ai-text-blink {\n 0%, 100% { color: var(--color-fd-primary, #6366f1); }\n 50% { color: var(--color-fd-muted-foreground, #888); }\n}\n\n.fd-ai-loader-text {\n font-size: 13px;\n font-weight: 500;\n color: var(--color-fd-primary, #6366f1);\n}\n\n.fd-ai-loader-text-dots {\n display: inline-flex;\n}\n\n.fd-ai-loader-text-dot {\n font-size: 13px;\n font-weight: 500;\n color: var(--color-fd-primary, #6366f1);\n animation: fd-ai-loading-dots 1.4s infinite;\n}\n\n.fd-ai-loader-text-dot:nth-child(1) { animation-delay: 200ms; }\n.fd-ai-loader-text-dot:nth-child(2) { animation-delay: 400ms; }\n.fd-ai-loader-text-dot:nth-child(3) { animation-delay: 600ms; }\n\n@keyframes fd-ai-loading-dots {\n 0%, 100% { opacity: 0; }\n 50% { opacity: 1; }\n}\n\n.fd-ai-loader-bars {\n display: inline-flex;\n align-items: stretch;\n gap: 3px;\n height: 16px;\n}\n\n.fd-ai-loader-bar {\n width: 4px;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-wave-bars 1.2s ease-in-out infinite;\n}\n\n.fd-ai-loader-bar:nth-child(1) { animation-delay: 0s; }\n.fd-ai-loader-bar:nth-child(2) { animation-delay: 0.2s; }\n.fd-ai-loader-bar:nth-child(3) { animation-delay: 0.4s; }\n\n@keyframes fd-ai-wave-bars {\n 0%, 100% { transform: scaleY(1); opacity: 0.5; }\n 50% { transform: scaleY(0.6); opacity: 1; }\n}\n\n.fd-ai-streaming {\n text-rendering: optimizeLegibility;\n}\n\n.fd-ai-streaming::after {\n content: \"\";\n display: inline-block;\n width: 2px;\n height: 0.95em;\n background: var(--color-fd-primary, #6366f1);\n border-radius: 999px;\n margin-left: 3px;\n vertical-align: text-bottom;\n animation: fd-ai-cursor-blink 900ms ease-in-out infinite;\n box-shadow: 0 0 10px color-mix(in srgb, var(--color-fd-primary, #6366f1) 35%, transparent);\n}\n\n@keyframes fd-ai-cursor-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.25; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fd-ai-streaming::after {\n animation: none;\n }\n}\n\n.fd-ai-floating-btn {\n position: fixed;\n z-index: 9997;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 12px;\n height: 40px;\n border-radius: 16px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: color-mix(in srgb, var(--color-fd-secondary, #f4f4f5) 80%, transparent);\n backdrop-filter: blur(4px);\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n font-size: 14px;\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);\n transition:\n transform 150ms,\n background 150ms,\n color 150ms;\n animation: fd-ai-fade-in 300ms ease-out;\n}\n\n.fd-ai-floating-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n transform: scale(1.03);\n}\n\n.fd-ai-floating-btn:active {\n transform: scale(0.97);\n}\n\n.fd-ai-floating-trigger {\n position: fixed;\n z-index: 9997;\n cursor: pointer;\n animation: fd-ai-fade-in 300ms ease-out;\n}\n\n.fd-ai-floating-trigger .ask-ai-trigger {\n font-size: 14px;\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n}\n\n.fd-ai-bubble-ai code {\n background: var(--color-fd-muted, #1a1a2e);\n padding: 2px 6px;\n border-radius: var(--radius, 4px);\n font-size: 0.875em;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n}\n\n.fd-ai-bubble-ai a {\n color: var(--color-fd-primary, #6366f1);\n text-decoration: underline;\n}\n\n.fd-ai-bubble-ai .fd-ai-code-block code {\n background: transparent;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n}\n\n.fd-ai-bubble-ai table {\n width: 100%;\n border-collapse: collapse;\n margin: 8px 0;\n font-size: 13px;\n}\n\n.fd-ai-bubble-ai th,\n.fd-ai-bubble-ai td {\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n padding: 6px 12px;\n text-align: left;\n}\n\n.fd-ai-bubble-ai th {\n background: var(--color-fd-muted, #1a1a2e);\n font-weight: 600;\n font-size: 12px;\n}\n\n.fd-ai-bubble-ai h2 {\n font-size: 1.125rem;\n font-weight: 600;\n margin: 12px 0 6px;\n line-height: 1.3;\n color: inherit;\n}\n\n.fd-ai-bubble-ai h3 {\n font-size: 1rem;\n font-weight: 600;\n margin: 10px 0 4px;\n line-height: 1.4;\n color: inherit;\n}\n\n.fd-ai-bubble-ai h4 {\n font-size: 0.9375rem;\n font-weight: 600;\n margin: 8px 0 4px;\n line-height: 1.4;\n color: inherit;\n}\n\n.fd-ai-bubble-ai h5 {\n font-size: 0.875rem;\n font-weight: 600;\n margin: 8px 0 4px;\n line-height: 1.4;\n color: inherit;\n}\n\n.fd-ai-bubble-ai ul,\n.fd-ai-bubble-ai ol {\n margin: 6px 0 8px;\n padding-left: 1.25rem;\n}\n\n.fd-ai-bubble-ai li {\n margin: 3px 0;\n padding-left: 2px;\n}\n\n.fd-ai-bubble-ai li::marker {\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-bubble-ai .fd-ai-hr {\n border: 0;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n margin: 12px 0;\n}\n\n.fd-ai-bubble-ai strong {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-bubble-ai em {\n font-style: italic;\n}\n\n.fd-ai-bubble-ai p {\n margin: 0 0 6px;\n}\n\n.fd-ai-bubble-ai br {\n content: \"\";\n display: block;\n margin-top: 2px;\n}\n\n.fd-ai-bubble-ai pre {\n margin: 8px 0;\n border-radius: 0;\n border: none;\n background: transparent;\n padding: 0;\n}\n\n.fd-ai-bubble-ai > div > div[style*=\"height:8px\"] {\n height: 6px;\n}\n\n.fd-ai-code-block {\n --sh-class: #8be9fd;\n --sh-identifier: #c9d1d9;\n --sh-keyword: #ff7b72;\n --sh-string: #a5d6ff;\n --sh-property: #79c0ff;\n --sh-entity: #7ee787;\n --sh-sign: #8b949e;\n --sh-comment: #6e7681;\n --sh-jsxliterals: #d2a8ff;\n --sh-space: inherit;\n\n margin: 10px 0;\n border-radius: var(--radius, 8px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-muted, #1a1a2e);\n overflow: hidden;\n}\n\n.fd-ai-code-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.08));\n background: color-mix(in srgb, var(--color-fd-muted, #1a1a2e) 80%, black);\n min-height: 32px;\n}\n\n.fd-ai-code-lang {\n font-size: 11px;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground, #71717a);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.fd-ai-code-copy {\n font-size: 11px;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground, #71717a);\n background: transparent;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius, 4px);\n padding: 2px 8px;\n cursor: pointer;\n transition: all 150ms;\n}\n\n.fd-ai-code-copy:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n background: color-mix(\n in srgb,\n var(--color-fd-accent, rgba(255, 255, 255, 0.05)) 60%,\n transparent\n );\n}\n\n.fd-ai-code-block pre {\n margin: 0;\n padding: 12px 16px;\n overflow-x: auto;\n background: transparent;\n border: none;\n border-radius: 0;\n}\n\n.fd-ai-code-block code {\n font-size: 13px;\n line-height: 1.45;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n background: transparent;\n padding: 0;\n border-radius: 0;\n}\n\n.fd-ai-code-block .sh__line {\n display: block;\n min-height: 1.2em;\n}\n\n:root:not(.dark) .fd-ai-code-block {\n --sh-class: #b45309;\n --sh-identifier: #1f2937;\n --sh-keyword: #7c3aed;\n --sh-string: #0d9488;\n --sh-property: #dc2626;\n --sh-entity: #059669;\n --sh-sign: #374151;\n --sh-comment: #6b7280;\n --sh-jsxliterals: #7c3aed;\n border-color: rgba(0, 0, 0, 0.12);\n background: #f4f4f5;\n}\n\n:root:not(.dark) .fd-ai-code-header {\n border-bottom-color: rgba(0, 0, 0, 0.1);\n background: color-mix(in srgb, #e4e4e7 80%, transparent);\n}\n\n:root:not(.dark) .fd-ai-code-lang {\n color: #52525b;\n}\n\n:root:not(.dark) .fd-ai-code-copy {\n color: #52525b;\n border-color: rgba(0, 0, 0, 0.15);\n}\n\n:root:not(.dark) .fd-ai-code-copy:hover {\n color: #18181b;\n background: color-mix(in srgb, #d4d4d8 60%, transparent);\n}\n\n:root:not(.dark) .fd-ai-code-block code {\n color: #1f2937;\n}\n\n.fd-ai-fm-overlay {\n position: fixed;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n background: color-mix(in srgb, var(--color-fd-background, #000) 80%, transparent);\n backdrop-filter: blur(8px);\n z-index: 9998;\n animation: fd-ai-fade-in 200ms ease-out;\n padding: 0 8px;\n}\n\n.fd-ai-fm-topbar {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n width: min(800px, 100%);\n padding: 12px 0;\n position: sticky;\n top: 0;\n z-index: 2;\n}\n\n.fd-ai-fm-close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--radius, 9999px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-secondary, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-foreground, #e4e4e7);\n cursor: pointer;\n transition: all 150ms;\n}\n\n.fd-ai-fm-close-btn:hover {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.1));\n}\n\n.fd-ai-fm-messages {\n flex: 1;\n overflow-y: auto;\n width: min(800px, 100%);\n padding: 24px 0 120px;\n mask-image: linear-gradient(\n to bottom,\n transparent,\n white 3rem,\n white calc(100% - 8rem),\n transparent 100%\n );\n -webkit-mask-image: linear-gradient(\n to bottom,\n transparent,\n white 3rem,\n white calc(100% - 8rem),\n transparent 100%\n );\n}\n\n.fd-ai-fm-messages-inner {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.fd-ai-fm-msg {\n display: flex;\n flex-direction: column;\n}\n\n.fd-ai-fm-msg-label {\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 4px;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-fm-msg-label[data-role=\"assistant\"] {\n color: var(--color-fd-primary, #6366f1);\n}\n\n.fd-ai-fm-msg-content {\n font-size: 14px;\n line-height: 1.7;\n color: var(--color-fd-foreground, #e4e4e7);\n word-break: break-word;\n overflow-wrap: break-word;\n}\n\n.fd-ai-fm-msg-content code {\n background: var(--color-fd-muted, #1a1a2e);\n padding: 2px 6px;\n border-radius: var(--radius, 4px);\n font-size: 0.875em;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n}\n.fd-ai-fm-msg-content .fd-ai-code-block pre {\n padding-bottom: 2px;\n}\n\n.fd-ai-fm-msg-content .fd-ai-code-block code {\n background: transparent;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n}\n\n.fd-ai-fm-msg-content a {\n color: var(--color-fd-primary, #6366f1);\n text-decoration: underline;\n}\n\n.fd-ai-fm-msg-content table {\n width: 100%;\n border-collapse: collapse;\n margin: 8px 0;\n font-size: 13px;\n}\n\n.fd-ai-fm-msg-content th,\n.fd-ai-fm-msg-content td {\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n padding: 6px 12px;\n text-align: left;\n}\n\n.fd-ai-fm-msg-content th {\n background: var(--color-fd-muted, #1a1a2e);\n font-weight: 600;\n font-size: 12px;\n}\n\n.fd-ai-fm-msg-content h2 {\n font-size: 1.25rem;\n font-weight: 600;\n margin: 16px 0 8px;\n line-height: 1.3;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-msg-content h3 {\n font-size: 1.0625rem;\n font-weight: 600;\n margin: 12px 0 6px;\n line-height: 1.4;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-msg-content h4 {\n font-size: 1rem;\n font-weight: 600;\n margin: 10px 0 4px;\n line-height: 1.4;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-msg-content h5 {\n font-size: 0.9375rem;\n font-weight: 600;\n margin: 10px 0 4px;\n line-height: 1.4;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-msg-content ul,\n.fd-ai-fm-msg-content ol {\n margin: 8px 0 10px;\n padding-left: 1.35rem;\n}\n\n.fd-ai-fm-msg-content li {\n margin: 4px 0;\n padding-left: 2px;\n}\n\n.fd-ai-fm-msg-content li::marker {\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-fm-msg-content .fd-ai-hr {\n border: 0;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n margin: 16px 0;\n}\n\n.fd-ai-fm-msg-content strong {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-msg-content em {\n font-style: italic;\n}\n\n.fd-ai-fm-msg-content p {\n margin: 0 0 8px;\n}\n\n.fd-ai-fm-msg-content br {\n content: \"\";\n display: block;\n margin-top: 2px;\n}\n\n.fd-ai-fm-msg-content pre {\n margin: 8px 0;\n border-radius: 0;\n border: none;\n background: transparent;\n padding: 0;\n}\n\n.fd-ai-fm-msg-content > div > div[style*=\"height:8px\"] {\n height: 6px;\n}\n\n.fd-ai-fm-input-bar {\n position: fixed;\n z-index: 9999;\n transition:\n width 300ms cubic-bezier(0.34, 1.56, 0.64, 1),\n height 300ms cubic-bezier(0.34, 1.56, 0.64, 1),\n transform 200ms ease-out;\n}\n\n.fd-ai-fm-input-bar--closed {\n\n}\n\n.fd-ai-fm-input-bar--open {\n bottom: 16px;\n left: 50%;\n right: auto;\n transform: translateX(-50%);\n width: min(800px, calc(100vw - 32px));\n}\n\n.fd-ai-fm-input-container {\n display: flex;\n flex-direction: column;\n border-radius: var(--radius, 12px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-background, #0c0c0c);\n box-shadow: 0 20px 60px color-mix(in srgb, var(--color-fd-background, #000) 70%, transparent);\n overflow: visible;\n}\n\n.fd-ai-fm-input-wrap {\n display: flex;\n align-items: flex-start;\n padding-right: 8px;\n}\n\n.fd-ai-fm-input {\n flex: 1;\n padding: 16px;\n background: transparent;\n border: none;\n outline: none;\n resize: none;\n color: var(--color-fd-foreground, #e4e4e7);\n font-size: 14px;\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n line-height: 1.5;\n min-height: 0;\n max-height: 120px;\n}\n\n.fd-ai-fm-input::placeholder {\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-fm-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 12px;\n width: 32px;\n height: 32px;\n border-radius: 9999px;\n border: none;\n cursor: default;\n transition: all 150ms;\n background: var(--color-fd-secondary, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-fm-send-btn[data-active=\"true\"] {\n cursor: pointer;\n background: var(--color-fd-primary, #6366f1);\n color: var(--color-fd-primary-foreground, #fff);\n}\n\n.fd-ai-fm-suggestions-area {\n padding: 12px 16px 4px;\n}\n\n.fd-ai-fm-suggestions-label {\n font-size: 12px;\n font-weight: 500;\n color: var(--color-fd-muted-foreground, #71717a);\n margin-bottom: 8px;\n}\n\n.fd-ai-fm-suggestions {\n display: flex;\n gap: 8px;\n overflow-x: auto;\n padding-bottom: 4px;\n mask-image: linear-gradient(\n to right,\n transparent 0%,\n black 1rem,\n black calc(100% - 1rem),\n transparent 100%\n );\n -webkit-mask-image: linear-gradient(\n to right,\n transparent 0%,\n black 1rem,\n black calc(100% - 1rem),\n transparent 100%\n );\n}\n\n.fd-ai-fm-suggestions-two-rows {\n flex-wrap: wrap;\n overflow-x: visible;\n mask-image: none;\n -webkit-mask-image: none;\n}\n\n.fd-ai-fm-suggestion {\n flex-shrink: 0;\n white-space: nowrap;\n padding: 6px 14px;\n font-size: 12px;\n font-family: inherit;\n border-radius: 9999px;\n border: 1px solid\n color-mix(in srgb, var(--color-fd-border, rgba(255, 255, 255, 0.1)) 50%, transparent);\n background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 30%, transparent);\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n transition: all 200ms;\n}\n\n.fd-ai-fm-suggestion:hover {\n background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 50%, transparent);\n color: var(--color-fd-foreground, #e4e4e7);\n border-color: var(--color-fd-border, rgba(255, 255, 255, 0.1));\n}\n\n.fd-ai-fm-footer-bar {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px 16px;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n background: color-mix(\n in srgb,\n var(--color-fd-accent, rgba(255, 255, 255, 0.03)) 40%,\n transparent\n );\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-fm-clear-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-family: inherit;\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n transition: color 200ms;\n padding: 0;\n}\n\n.fd-ai-fm-clear-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-clear-btn[aria-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.fd-ai-fm-footer-hint {\n flex: 1;\n}\n\n.fd-ai-modal-pure {\n display: flex;\n flex-direction: column;\n}\n\n.fd-ai-modal-footer {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px 16px;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n background: color-mix(\n in srgb,\n var(--color-fd-accent, rgba(255, 255, 255, 0.03)) 40%,\n transparent\n );\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n border-radius: 0 0 var(--radius, 12px) var(--radius, 12px);\n flex-shrink: 0;\n}\n\n.fd-ai-modal-footer-hint {\n flex: 1;\n}\n\n.fd-ai-fm-trigger-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 12px;\n height: 40px;\n border-radius: 16px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: color-mix(in srgb, var(--color-fd-secondary, #f4f4f5) 80%, transparent);\n backdrop-filter: blur(4px);\n color: var(--color-fd-muted-foreground, #71717a);\n font-family: inherit;\n font-size: 14px;\n cursor: pointer;\n box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);\n transition:\n transform 150ms,\n background 150ms,\n color 150ms;\n animation: fd-ai-fade-in 300ms ease-out;\n white-space: nowrap;\n}\n\n.fd-ai-fm-trigger-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n transform: scale(1.03);\n}\n\n.fd-ai-fm-trigger-btn:active {\n transform: scale(0.97);\n}\n\n@keyframes omni-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes omni-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes omni-scale-in {\n from {\n opacity: 0;\n transform: translateX(-50%) scale(0.98) translateY(-6px);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) scale(1) translateY(0);\n }\n}\n@keyframes omni-scale-out {\n from {\n opacity: 1;\n transform: translateX(-50%) scale(1) translateY(0);\n }\n to {\n opacity: 0;\n transform: translateX(-50%) scale(0.98) translateY(-6px);\n }\n}\n\n@keyframes omni-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.omni-spin {\n animation: omni-spin 1s linear infinite;\n}\n\n.omni-overlay {\n position: fixed;\n inset: 0;\n z-index: 50;\n background: rgba(0, 0, 0, 0.2);\n backdrop-filter: blur(2px);\n animation: omni-fade-in 150ms ease-out;\n}\n\n.omni-content {\n --omni-content-top: clamp(5rem, 16vh, 7rem);\n position: fixed;\n z-index: 51;\n top: var(--omni-content-top);\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n flex-direction: column;\n width: min(720px, calc(100% - 1rem));\n border-radius: 0.75rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border, #d4d4d4) 70%, transparent);\n background: var(--color-fd-popover, #fafafa);\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n font-family: var(--font-sans, system-ui, -apple-system, BlinkMacSystemFont, \"SF Pro Text\",\n ui-sans-serif, sans-serif);\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\n outline: none;\n overscroll-behavior: contain;\n animation: omni-scale-in 200ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n@media (max-width: 639px) {\n .omni-content {\n --omni-content-top: 1rem;\n top: var(--omni-content-top);\n width: calc(100% - 1rem);\n max-height: calc(100vh - 2rem);\n }\n}\n\n.omni-header {\n border-bottom: 1px solid var(--color-fd-border, #262626);\n}\n.omni-search-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem;\n}\n.omni-search-icon {\n color: var(--color-fd-muted-foreground, #a3a3a3);\n flex-shrink: 0;\n}\n.omni-search-icon svg {\n width: 1.25rem;\n height: 1.25rem;\n}\n.omni-search-input {\n width: 0;\n flex: 1;\n background: transparent;\n outline: none;\n font-size: 1.125rem;\n line-height: 1.75rem;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n border: none;\n}\n.omni-search-input::placeholder {\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-kbd {\n border-radius: 0.375rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n background: transparent;\n padding: 0.375rem 0.5rem;\n font-size: 0.75rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n \"Liberation Mono\", \"Courier New\", monospace);\n line-height: 1rem;\n}\n.omni-close-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n min-width: 2.5rem;\n border-radius: 0.375rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n padding: 0.375rem 0.5rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n \"Liberation Mono\", \"Courier New\", monospace);\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n transition:\n background 120ms,\n color 120ms;\n cursor: pointer;\n background: none;\n}\n.omni-close-btn:hover {\n color: var(--color-fd-accent-foreground, var(--color-fd-foreground, #171717));\n background: var(--color-fd-accent, #e5e5e5);\n}\n.omni-close-btn svg {\n display: none;\n}\n\n.omni-body {\n flex: 1 1 auto;\n min-height: 0;\n max-height: min(540px, calc(100vh - var(--omni-content-top, 7rem) - 8rem));\n overflow: auto;\n overscroll-behavior: contain;\n padding: 0.5rem;\n}\n.omni-body::-webkit-scrollbar {\n width: 6px;\n}\n.omni-body::-webkit-scrollbar-track {\n background: transparent;\n}\n.omni-body::-webkit-scrollbar-thumb {\n background: var(--color-fd-muted, #262626);\n border-radius: 3px;\n}\n\n.omni-loading {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 0.625rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n font-size: 0.875rem;\n}\n\n.omni-group {\n padding: 0;\n}\n.omni-group-label {\n display: none;\n}\n.omni-group-items {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n\n.omni-item {\n position: relative;\n display: block;\n width: 100%;\n flex-shrink: 0;\n border-radius: 0.5rem;\n padding: 0.75rem 0.875rem;\n text-align: left;\n font-size: 0.875rem;\n line-height: 1.25rem;\n cursor: pointer;\n border: none;\n background: transparent;\n color: var(--color-fd-foreground, #fafafa);\n transition: background 80ms;\n}\n.omni-item:hover,\n.omni-item-active {\n background: var(--color-fd-accent, rgba(209, 209, 209, 0.5));\n}\n.omni-item-active {\n color: var(--color-fd-accent-foreground, #171717);\n}\n.omni-item-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.omni-item-icon {\n display: none;\n}\n.omni-item-active .omni-item-icon {\n color: var(--color-fd-accent-foreground, #fafafa);\n}\n.omni-item-text {\n min-width: 0;\n}\n.omni-item-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n font-weight: 500;\n line-height: 1.35;\n}\n.omni-item-subtitle {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 0.75rem;\n line-height: 1rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n opacity: 1;\n}\n.omni-item-active .omni-item-subtitle {\n color: var(--color-fd-muted-foreground, #737373);\n opacity: 1;\n}\n.omni-item-description {\n min-width: 0;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n margin-top: 0.625rem;\n padding-left: 0.75rem;\n border-left: 1px solid color-mix(in srgb, var(--color-fd-border, #d4d4d4) 70%, transparent);\n color: color-mix(in srgb, var(--color-fd-popover-foreground, #272727) 82%, transparent);\n font-size: 0.875rem;\n line-height: 1.5rem;\n font-weight: 400;\n}\n.omni-item-badge {\n display: none;\n}\n.omni-item-ext {\n display: none;\n}\n.omni-item-ext:hover {\n color: var(--color-fd-foreground, #fafafa);\n background: var(--color-fd-muted, #262626);\n}\n.omni-item-shortcuts {\n display: none;\n align-items: center;\n gap: 0.25rem;\n font-size: 10px;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n@media (min-width: 640px) {\n .omni-item-shortcuts {\n display: flex;\n }\n}\n.omni-kbd-sm {\n border-radius: 0.25rem;\n background: var(--color-fd-muted, #262626);\n padding: 0.125rem 0.25rem;\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n \"Liberation Mono\", \"Courier New\", monospace);\n}\n.omni-item-chevron {\n display: none;\n}\n\n.omni-highlight {\n border-radius: 0;\n background: transparent;\n padding: 0;\n color: var(--color-fd-primary, #ca8a04);\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n\n.omni-empty-group {\n padding: 0.5rem 0.75rem;\n font-size: 0.75rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-empty {\n padding: 1.5rem 0.75rem;\n text-align: center;\n font-size: 0.875rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-empty-icon {\n width: 2rem;\n height: 2rem;\n margin: 0 auto 0.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n background: var(--color-fd-muted, #262626);\n}\n\n.omni-footer {\n border-top: 1px solid var(--color-fd-border, #262626);\n background: color-mix(in srgb, var(--color-fd-secondary, #f5f5f5) 50%, transparent);\n}\n.omni-footer-inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n padding: 0.625rem 0.75rem;\n font-size: 0.75rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-footer-hints {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0.75rem;\n}\n.omni-footer-hint {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n white-space: nowrap;\n}\n.omni-footer-hint svg {\n box-sizing: border-box;\n width: 1.375rem;\n height: 1.375rem;\n padding: 0.25rem;\n border-radius: 0.375rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n background: color-mix(in srgb, var(--color-fd-muted, #e5e5e5) 70%, transparent);\n color: var(--color-fd-muted-foreground, #737373);\n flex-shrink: 0;\n}\n.omni-footer-hint-desktop {\n display: none;\n}\n.omni-footer-filter {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n margin-left: auto;\n white-space: nowrap;\n}\n@media (min-width: 640px) {\n .omni-footer-hint-desktop {\n display: flex;\n }\n}\n.omni-filter-label {\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-filter-value {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n}\n.omni-filter-button {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n border: 0;\n background: transparent;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n font: inherit;\n cursor: pointer;\n padding: 0;\n}\n.omni-filter-button:hover {\n color: var(--color-fd-accent-foreground, var(--color-fd-foreground, #171717));\n}\n.omni-filter-menu {\n position: absolute;\n right: 0;\n bottom: calc(100% + 0.5rem);\n z-index: 1;\n width: 10rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n border-radius: 0.5rem;\n background: var(--color-fd-popover, #fafafa);\n padding: 0.25rem;\n box-shadow: 0 16px 32px -20px rgba(0, 0, 0, 0.45);\n}\n.omni-filter-option {\n display: flex;\n width: 100%;\n align-items: center;\n border: 0;\n border-radius: 0.375rem;\n background: transparent;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n cursor: pointer;\n font: inherit;\n padding: 0.5rem 0.625rem;\n text-align: left;\n}\n.omni-filter-option:hover,\n.omni-filter-option-active {\n background: var(--color-fd-accent, rgba(209, 209, 209, 0.5));\n}\n\nbody {\n font-family: var(--fd-font-sans, var(--font-geist-sans, ui-sans-serif, system-ui, sans-serif));\n}\n\n:where(.fd-sidebar, aside#nd-sidebar, aside#nd-sidebar-mobile)\n button[aria-controls][aria-expanded] {\n appearance: none;\n -webkit-appearance: none;\n background: none;\n border: 0;\n color: inherit;\n font: inherit;\n letter-spacing: inherit;\n line-height: inherit;\n text-transform: inherit;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: var(\n --fd-font-mono,\n var(\n --font-geist-mono,\n ui-monospace,\n \"Cascadia Code\",\n \"Source Code Pro\",\n Menlo,\n Consolas,\n monospace\n )\n );\n}\n\n.prose h1,\narticle h1 {\n font-size: var(--fd-h1-size, 2.25rem);\n font-weight: var(--fd-h1-weight, 700);\n line-height: var(--fd-h1-line-height, 1.2);\n letter-spacing: var(--fd-h1-letter-spacing, -0.02em);\n}\n\n.prose h2,\narticle h2 {\n font-size: var(--fd-h2-size, 1.5rem);\n font-weight: var(--fd-h2-weight, 600);\n line-height: var(--fd-h2-line-height, 1.3);\n letter-spacing: var(--fd-h2-letter-spacing, -0.01em);\n}\n\n.prose h3,\narticle h3 {\n font-size: var(--fd-h3-size, 1.25rem);\n font-weight: var(--fd-h3-weight, 600);\n line-height: var(--fd-h3-line-height, 1.4);\n letter-spacing: var(--fd-h3-letter-spacing, normal);\n}\n\n.prose h4,\narticle h4 {\n font-size: var(--fd-h4-size, 1.125rem);\n font-weight: var(--fd-h4-weight, 600);\n line-height: var(--fd-h4-line-height, 1.4);\n letter-spacing: var(--fd-h4-letter-spacing, normal);\n}\n\n.prose p,\n.prose li,\n.prose td,\narticle p {\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n}\n\n.prose small,\narticle small,\n.text-sm {\n font-size: var(--fd-small-size, 0.875rem);\n font-weight: var(--fd-small-weight, 400);\n line-height: var(--fd-small-line-height, 1.5);\n}\n\n[style*=\"--callout-color\"] {\n align-items: start;\n}\n\n[style*=\"--callout-color\"] > [role=\"none\"] {\n align-self: stretch;\n}\n\n[style*=\"--callout-color\"] > svg {\n flex-shrink: 0;\n margin-top: 0;\n}\n\nfigure.shiki pre {\n padding: 0.15rem 0.5rem;\n white-space: pre;\n}\n\nfigure.shiki pre > code {\n display: block;\n white-space: inherit;\n}\n\nfigure.shiki pre > code:has(> .line),\nfigure.shiki pre > code:has(> [data-line]) {\n display: grid;\n}\n\nfigure.shiki pre > code > .line,\nfigure.shiki pre > code > [data-line] {\n white-space: inherit;\n}\n\nfigure.shiki [data-fd-code-space] {\n display: inline-block;\n white-space: pre;\n}\n\nfigure.shiki [data-fd-code-space=\"gap\"] {\n width: var(--fd-code-token-gap, 1.75ch);\n}\n\nfigure.shiki [data-fd-code-space=\"indent\"] {\n width: calc(var(--fd-code-space-count, 1) * 1ch);\n}\n\nfigure.shiki pre > code > [data-line] {\n padding: 0 0.25rem;\n}\n\n.fd-code-group-panel[data-state=\"inactive\"] {\n display: none;\n}\n\n.fd-code-group-panel[data-state=\"active\"] {\n display: block;\n}\n\nfigure.shiki:has(figcaption) > div:first-child {\n position: relative;\n}\n\nfigure.shiki:has(figcaption) > div:first-child::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: repeating-linear-gradient(\n -45deg,\n currentColor,\n currentColor 1px,\n transparent 1px,\n transparent 6px\n );\n opacity: 0.03;\n pointer-events: none;\n}\n\n.dark figure.shiki:has(figcaption) > div:first-child::before {\n opacity: 0.05;\n}\n\nfigure.shiki:has(figcaption) figcaption {\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n SFMono-Regular,\n \"SF Mono\",\n Menlo,\n Consolas,\n monospace\n );\n font-size: 0.75rem;\n letter-spacing: 0.01em;\n}\n\n.fd-page-meta {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.375rem;\n margin-bottom: 0.75rem;\n}\n\n.fd-page-meta-dot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n SFMono-Regular,\n \"SF Mono\",\n Menlo,\n Consolas,\n monospace\n );\n font-size: 0.8rem;\n line-height: 1;\n color: color-mix(in srgb, var(--color-fd-muted-foreground) 78%, transparent);\n}\n\n.fd-page-meta-item {\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n SFMono-Regular,\n \"SF Mono\",\n Menlo,\n Consolas,\n monospace\n );\n font-size: 0.6875rem;\n font-weight: 500;\n letter-spacing: 0;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-page-description {\n margin-bottom: 1rem;\n font-size: 1.125rem;\n line-height: 1.75;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-breadcrumb {\n display: flex;\n align-items: center;\n gap: 0;\n font-size: 0.8rem;\n color: var(--color-fd-muted-foreground);\n margin-bottom: 0.5rem;\n}\n\n.fd-breadcrumb-item {\n display: inline-flex;\n align-items: center;\n}\n\n.fd-breadcrumb-sep {\n margin: 0 0.375rem;\n opacity: 0.4;\n font-size: 0.75rem;\n}\n\n.fd-breadcrumb-parent {\n opacity: 0.6;\n font-weight: 400;\n}\n\n.fd-breadcrumb-link {\n color: inherit;\n text-decoration: none;\n cursor: pointer;\n transition:\n opacity 0.15s,\n color 0.15s;\n}\n\n.fd-breadcrumb-link:hover {\n opacity: 1;\n color: var(--color-fd-foreground);\n}\n\n.fd-breadcrumb-current {\n font-weight: 500;\n color: var(--color-fd-foreground);\n}\n\n.fd-below-title-block {\n margin-top: 0.5rem;\n margin-bottom: 1.5rem;\n}\n\n.fd-last-updated-inline {\n color: var(--color-fd-muted-foreground);\n font-size: 0.75rem;\n font-weight: 400;\n margin: 0 0 0.75rem;\n line-height: 1.5;\n}\n\n.fd-title-separator {\n border: none;\n border-top: 1px solid var(--color-fd-border);\n margin: 0 0 0.75rem;\n}\n\n.fd-actions-portal [data-page-actions] {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.fd-page-actions,\n[data-page-actions] {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n margin-bottom: 0.75rem;\n margin-top: 0.25rem;\n width: 100%;\n}\n\n[data-page-actions][data-actions-alignment=\"right\"],\n.fd-page-actions[data-actions-alignment=\"right\"],\n[data-actions-alignment=\"right\"] > [data-page-actions] {\n justify-content: flex-end;\n}\n\n[data-page-actions][data-actions-alignment=\"left\"],\n.fd-page-actions[data-actions-alignment=\"left\"],\n[data-actions-alignment=\"left\"] > [data-page-actions] {\n justify-content: flex-start;\n}\n\n.fd-page-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.375rem 0.75rem;\n font-size: 0.8125rem;\n font-weight: 500;\n line-height: 1;\n height: 2rem;\n color: var(--color-fd-muted-foreground);\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 0.375rem;\n cursor: pointer;\n white-space: nowrap;\n transition:\n color 0.15s,\n background 0.15s,\n border-color 0.15s;\n user-select: none;\n}\n.fd-ai-fm-msg-content .fd-ai-code-block pre {\n padding:10px !important;\n}\n.fd-page-action-btn:hover {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n.fd-page-action-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.fd-page-action-btn[data-copied=\"true\"] {\n color: var(--color-fd-foreground);\n}\n\n.fd-page-action-btn[data-selected=\"true\"] {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n.fd-page-action-btn svg {\n flex-shrink: 0;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-page-action-btn[data-selected=\"true\"] svg {\n color: currentColor;\n}\n\n.fd-page-action-dropdown {\n position: relative;\n}\n\n.fd-page-action-menu {\n position: absolute;\n top: calc(100% + 0.375rem);\n right: 0;\n z-index: 50;\n min-width: 220px;\n padding: 0.375rem;\n background: var(--color-fd-popover);\n border: 1px solid var(--color-fd-border);\n border-radius: 0.5rem;\n box-shadow: 0 4px 24px hsl(0 0% 0% / 0.15);\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n animation: fd-page-actions-fade-in 0.12s ease-out;\n}\n\n@keyframes fd-page-actions-fade-in {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.fd-page-action-menu-item,\n.fd-prompt-menu-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n font-size: 0.8125rem;\n font-weight: 400;\n color: var(--color-fd-popover-foreground);\n background: transparent;\n border: none;\n border-radius: 0.25rem;\n cursor: pointer;\n text-align: left;\n transition:\n background 0.1s,\n color 0.1s;\n}\n\n.fd-page-action-menu-item {\n padding: 0.2rem 0.625rem;\n}\n\n.fd-page-action-menu-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.25rem;\n height: 1.25rem;\n flex-shrink: 0;\n}\n\n.fd-page-action-menu-icon svg {\n width: 1rem;\n height: 1rem;\n}\n\n.fd-page-action-menu-label {\n flex: 1;\n}\n\n.fd-prompt {\n display: flex;\n flex-direction: column;\n gap: 0.875rem;\n margin: 1.25rem 0;\n padding: 1rem;\n border: 1px solid var(--color-fd-border);\n border-radius: 0.75rem;\n background: color-mix(in srgb, var(--color-fd-card) 78%, transparent);\n}\n\n.fd-prompt-header {\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n}\n\n.fd-prompt-icon,\n.fd-prompt-action-icon,\n.fd-prompt-menu-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.fd-prompt-icon {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 0.5rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 80%, transparent);\n background: color-mix(in srgb, var(--color-fd-background) 55%, transparent);\n color: var(--color-fd-foreground);\n}\n\n.fd-prompt-icon svg,\n.fd-prompt-action-icon svg,\n.fd-prompt-menu-icon svg {\n width: 1rem;\n height: 1rem;\n}\n\n.fd-prompt-copy {\n min-width: 0;\n}\n\n.fd-prompt-title {\n margin: 0;\n color: var(--color-fd-foreground);\n font-size: 0.9375rem;\n font-weight: 600;\n line-height: 1.35;\n}\n\n.fd-prompt-description {\n margin: -0.05rem 0 0;\n color: var(--color-fd-muted-foreground);\n font-size: 0.875rem;\n line-height: 1.55;\n}\n\n.fd-prompt-body {\n margin: 0;\n padding: 0.875rem 1rem;\n border-radius: 0.625rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 82%, transparent);\n background: color-mix(in srgb, var(--color-fd-background) 45%, transparent);\n overflow-x: auto;\n}\n\n.fd-prompt-body > pre.fd-prompt-code {\n margin: 0;\n padding: 0 !important;\n border: 0 !important;\n border-radius: 0 !important;\n background: transparent !important;\n box-shadow: none !important;\n color: var(--color-fd-foreground);\n font-size: 0.875rem;\n line-height: 1.65;\n white-space: pre-wrap;\n word-break: break-word;\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n \"SF Mono\",\n SFMono-Regular,\n Menlo,\n Consolas,\n monospace\n );\n}\n\n.fd-prompt-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n align-items: center;\n justify-content: flex-end;\n}\n\n.fd-prompt-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.4375rem;\n min-height: 2rem;\n padding: 0.375rem 0.75rem;\n border: 1px solid var(--color-fd-border);\n border-radius: 0.375rem;\n background: var(--color-fd-secondary);\n color: var(--color-fd-muted-foreground);\n font-size: 0.8125rem;\n font-weight: 500;\n line-height: 1;\n cursor: pointer;\n transition:\n color 0.15s,\n background 0.15s,\n border-color 0.15s;\n}\n\n.fd-prompt-action-btn:hover {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n.fd-prompt-action-btn[data-copied=\"true\"] {\n color: var(--color-fd-foreground);\n}\n\n.fd-prompt-action-icon-copied[hidden] {\n display: none;\n}\n\n.fd-prompt-dropdown {\n position: relative;\n}\n\n.fd-prompt-menu {\n position: absolute;\n top: calc(100% + 0.375rem);\n right: 0;\n z-index: 50;\n min-width: 220px;\n padding: 0.375rem;\n background: var(--color-fd-popover);\n border: 1px solid var(--color-fd-border);\n border-radius: 0.5rem;\n box-shadow: 0 4px 24px hsl(0 0% 0% / 0.15);\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n animation: fd-page-actions-fade-in 0.12s ease-out;\n}\n\n.fd-prompt-menu-item {\n padding: 0.25rem 0.625rem;\n}\n\n.fd-page-action-menu-item:hover,\n.fd-prompt-menu-item:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n.fd-prompt-menu-label {\n flex: 1;\n}\n\n.fd-feedback {\n margin-top: 2rem;\n margin-bottom: 1.25rem;\n padding-top: 1.25rem;\n border-top: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n}\n\n.fd-feedback-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n flex-wrap: wrap;\n}\n\n.fd-feedback-question {\n margin: 0;\n font-size: 0.9375rem;\n font-weight: 600;\n line-height: 1.5;\n color: var(--color-fd-foreground);\n}\n\n.fd-feedback-actions {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n\n.fd-feedback-form {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n margin-top: 0.875rem;\n}\n\n.fd-feedback-choice[data-selected=\"true\"] {\n background: var(--color-fd-accent, hsl(0 0% 96%));\n color: var(--color-fd-foreground);\n border-color: color-mix(in srgb, var(--color-fd-primary, currentColor) 65%, transparent);\n}\n\n.fd-feedback-input {\n width: 100%;\n min-height: 4.75rem;\n resize: vertical;\n padding: 0.875rem 1rem;\n border: 1px solid\n color-mix(in srgb, var(--color-fd-border, hsl(0 0% 80% / 50%)) 78%, var(--color-fd-foreground) 22%);\n background: var(--color-fd-card, transparent);\n color: var(--color-fd-foreground);\n font: inherit;\n line-height: 1.55;\n outline: none;\n transition:\n border-color 150ms ease,\n box-shadow 150ms ease,\n background-color 150ms ease;\n}\n\n.fd-feedback-input::placeholder {\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n}\n\n.fd-feedback-input:focus {\n border-color: var(--color-fd-ring, var(--color-fd-primary, currentColor));\n box-shadow: 0 0 0 1px var(--color-fd-ring, var(--color-fd-primary, currentColor));\n}\n\n.fd-feedback-submit-row {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n flex-wrap: nowrap;\n min-height: 2rem;\n}\n\n.fd-feedback-submit {\n min-width: 7rem;\n padding-inline: 0.875rem;\n justify-content: center;\n}\n\n.fd-feedback-submit:disabled {\n cursor: not-allowed;\n opacity: 0.65;\n}\n\n.fd-feedback-spinner {\n width: 0.875rem;\n height: 0.875rem;\n border-radius: 9999px;\n border: 2px solid currentColor;\n border-right-color: transparent;\n animation: fd-feedback-spin 0.8s linear infinite;\n}\n\n.fd-feedback-status {\n margin: 0 !important;\n font-size: 0.75rem;\n line-height: 1.3;\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n}\n\n.fd-feedback-status[data-status=\"success\"] {\n display: inline-flex;\n align-self: center;\n align-items: center;\n gap: 0.4rem;\n min-height: 2rem;\n}\n\n.fd-feedback-status[data-status=\"error\"] {\n color: var(--color-fd-foreground);\n}\n\nhtml[data-fd-route-kind=\"changelog\"] .fd-ai-fm-input-bar {\n display: none !important;\n}\n\n.fd-changelog-mobile-summary {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n}\n\n.fd-changelog-mobile-content {\n margin-top: 1.25rem;\n}\n\n.fd-changelog-frame {\n width: 100%;\n padding-inline: 1.5rem;\n}\n\n.fd-changelog-header-strip {\n margin-inline: -1.5rem;\n}\n\n.fd-changelog-search-row {\n display: flex;\n justify-content: flex-start;\n}\n\n.fd-changelog-search {\n position: relative;\n display: flex;\n align-items: center;\n width: min(100%, 22rem);\n}\n\n.fd-changelog-search-icon {\n pointer-events: none;\n position: absolute;\n left: 0.5rem;\n top: 50%;\n z-index: 1;\n display: inline-flex;\n width: 1.9rem;\n height: 1.9rem;\n align-items: center;\n justify-content: center;\n transform: translateY(-50%);\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 78%, transparent);\n border-radius: 0.75rem;\n background: color-mix(in srgb, var(--color-fd-muted) 58%, transparent);\n color: var(--color-fd-muted-foreground);\n box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.28);\n}\n\n.fd-changelog-search-icon svg {\n width: 1rem;\n height: 1rem;\n}\n\n.fd-changelog-search-input {\n width: 100%;\n min-height: 2.75rem;\n padding: 0 0.9rem 0 3rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 82%, transparent);\n border-radius: 1rem;\n background: color-mix(in srgb, var(--color-fd-card) 86%, transparent);\n color: var(--color-fd-foreground);\n font-size: 0.9rem;\n line-height: 1.4;\n outline: none;\n transition:\n border-color 0.16s ease,\n box-shadow 0.16s ease,\n background-color 0.16s ease;\n}\n\n.fd-changelog-search-input::placeholder {\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-search-input:focus-visible {\n border-color: color-mix(in srgb, var(--color-fd-primary) 34%, var(--color-fd-border));\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-fd-primary) 14%, transparent);\n}\n\n.dark .fd-changelog-search-icon {\n background: rgb(255 255 255 / 0.06);\n box-shadow: none;\n}\n\n.dark .fd-changelog-search-input {\n background: rgb(255 255 255 / 0.04);\n}\n\n.fd-changelog-shell {\n display: block;\n width: 100%;\n}\n\n.fd-changelog-main {\n min-width: 0;\n width: 100%;\n}\n\n.fd-changelog-toc {\n margin-top: 2.5rem;\n}\n\n.fd-changelog-toc-card {\n position: relative;\n border-left: 1px solid color-mix(in srgb, var(--color-fd-border) 70%, transparent);\n padding-left: 1rem;\n}\n\n.fd-changelog-toc-heading {\n margin: 0 0 0.75rem;\n font-family: var(--font-geist-mono);\n font-size: 0.7rem !important;\n font-weight: 500;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-toc-list {\n display: flex;\n flex-direction: column;\n gap: 0.15rem;\n}\n\n.fd-changelog-toc-link {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 0.18rem;\n margin-left: -1rem;\n border-left: 2px solid transparent;\n border-radius: 0 0.85rem 0.85rem 0;\n padding: 0.45rem 0.65rem 0.45rem calc(1rem - 1px);\n color: var(--color-fd-muted-foreground);\n text-decoration: none;\n transition:\n color 0.16s ease,\n border-color 0.16s ease,\n background-color 0.16s ease;\n}\n\n.fd-changelog-toc-link:hover {\n color: var(--color-fd-foreground);\n text-decoration: none;\n}\n\n.fd-changelog-toc-meta {\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-size: 10px;\n font-weight: 400;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-toc-title {\n font-size: 0.84rem;\n font-weight: 500;\n line-height: 1.45;\n color: inherit;\n}\n\n.fd-changelog-directory-line {\n display: none;\n}\n\n.fd-changelog-desktop-grid {\n display: none;\n}\n\n.fd-changelog-rail {\n position: relative;\n display: flex;\n width: 2rem;\n flex-shrink: 0;\n flex-direction: column;\n align-items: center;\n align-self: stretch;\n padding-top: 0.35rem;\n}\n\n.fd-changelog-timeline-line {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n width: 2px;\n transform: translateX(-50%);\n border-radius: 1px;\n background: color-mix(in srgb, var(--color-fd-foreground) 24%, var(--color-fd-border));\n pointer-events: none;\n}\n\n.fd-changelog-timeline-dot {\n position: relative;\n z-index: 2;\n flex-shrink: 0;\n width: 0.75rem;\n height: 0.75rem;\n border-radius: 9999px;\n background-color: var(--color-fd-primary);\n box-shadow:\n 0 0 0 2px var(--color-fd-background, var(--color-fd-card, #0a0a0a)),\n 0 0 0 1px color-mix(in srgb, var(--color-fd-foreground) 12%, transparent);\n pointer-events: none;\n}\n\n.fd-changelog-rail-end-mask {\n position: absolute;\n top: 1rem;\n bottom: 0;\n left: 50%;\n z-index: 1;\n width: 0.5rem;\n transform: translateX(-50%);\n background: var(--color-fd-background, var(--color-fd-card, #fff));\n pointer-events: none;\n}\n\n.fd-changelog-tag {\n display: inline-flex;\n height: 1.5rem;\n width: fit-content;\n align-items: center;\n justify-content: center;\n padding: 0 0.5rem;\n font-size: 0.75rem;\n font-weight: 500;\n line-height: 1;\n color: var(--color-fd-muted-foreground);\n background-color: color-mix(in srgb, var(--color-fd-muted) 85%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 65%, transparent);\n border-radius: 20px;\n text-transform: none;\n letter-spacing: normal;\n}\n\n.fd-changelog-date {\n display: block;\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-size: 11px;\n font-weight: 400;\n line-height: 1.2;\n letter-spacing: 0.14em;\n padding-bottom: 0.8rem;\n margin-top: 5px;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-version-box {\n position: relative;\n z-index: 1;\n display: inline-flex;\n align-self: flex-start;\n min-height: 2.25rem;\n min-width: 2.25rem;\n max-width: max-content;\n align-items: center;\n justify-content: center;\n padding: 0 0.5rem;\n border-radius: 0.5rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 70%, transparent);\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-size: 10px;\n font-weight: 700;\n line-height: 1.2;\n text-align: center;\n white-space: nowrap;\n text-transform: none;\n color: var(--color-fd-foreground);\n background-color: color-mix(in srgb, var(--color-fd-muted) 40%, transparent);\n}\n\n.fd-changelog-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 0.625rem;\n}\n\n.fd-changelog-actions :is(a, button),\n.fd-changelog-action-link {\n display: inline-flex;\n min-height: 2.5rem;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.625rem 1rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 75%, transparent);\n border-radius: 0.875rem !important;\n background: color-mix(in srgb, var(--color-fd-card) 82%, transparent);\n color: var(--color-fd-foreground);\n font-size: 0.82rem;\n font-weight: 500;\n line-height: 1;\n text-decoration: none !important;\n transition:\n background-color 0.15s ease,\n border-color 0.15s ease,\n color 0.15s ease;\n box-shadow: 0 1px 0 rgb(255 255 255 / 0.24);\n}\n\n.fd-changelog-actions :is(a, button):hover,\n.fd-changelog-action-link:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n text-decoration: none !important;\n}\n\n.fd-changelog-actions :is(a, button) svg,\n.fd-changelog-action-link svg {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n\n.dark .fd-changelog-actions :is(a, button),\n.dark .fd-changelog-action-link {\n background: rgb(255 255 255 / 0.06);\n box-shadow: none;\n}\n\n.dark .fd-changelog-actions :is(a, button):hover,\n.dark .fd-changelog-action-link:hover {\n background: rgb(255 255 255 / 0.1);\n}\n\n.fd-changelog-entry + .fd-changelog-entry {\n border-top: none;\n padding-top: 0;\n margin-top: 0;\n}\n\n@media (min-width: 768px) {\n .fd-changelog-mobile-summary,\n .fd-changelog-mobile-content {\n display: none;\n }\n\n .fd-changelog-directory-line {\n position: absolute;\n top: calc(0.35rem + 0.25rem + 0.375rem);\n bottom: 1rem;\n left: calc(5.75rem + 1rem + 1rem);\n display: block;\n width: 2px;\n transform: translateX(-50%);\n border-radius: 9999px;\n background: color-mix(in srgb, var(--color-fd-foreground) 24%, var(--color-fd-border));\n pointer-events: none;\n }\n\n .fd-changelog-desktop-grid {\n display: grid;\n grid-template-columns: 5.75rem 2rem minmax(0, 1fr);\n column-gap: 1rem;\n }\n}\n\n@media (min-width: 1024px) {\n .fd-changelog-frame {\n padding-left: 0;\n padding-right: 2.5rem;\n }\n\n .fd-changelog-header-strip {\n margin-left: 0;\n margin-right: -2.5rem;\n }\n\n .fd-changelog-shell-shifted {\n margin-left: -2rem;\n }\n}\n\n@media (min-width: 1280px) {\n .fd-changelog-shell {\n display: block;\n }\n\n .fd-changelog-main {\n width: min(64rem, 100%);\n max-width: 64rem;\n }\n\n .fd-changelog-toc {\n position: fixed;\n z-index: 10;\n top: calc(var(--fd-nav-height, 56px) + 3rem);\n right: 0;\n width: var(--fd-toc-width, 14rem);\n margin-top: 0;\n }\n}\n\n.fd-changelog-prose {\n color: var(--color-fd-muted-foreground);\n font-family: var(--fd-font-sans, inherit);\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n --tw-prose-body: var(--color-fd-muted-foreground);\n --tw-prose-headings: var(--color-fd-foreground);\n --tw-prose-links: var(--color-fd-primary);\n --tw-prose-bold: var(--color-fd-foreground);\n --tw-prose-counters: var(--color-fd-muted-foreground);\n --tw-prose-bullets: color-mix(in srgb, var(--color-fd-primary) 35%, transparent);\n --tw-prose-hr: color-mix(in srgb, var(--color-fd-primary) 14%, transparent);\n --tw-prose-quotes: var(--color-fd-foreground);\n --tw-prose-quote-borders: color-mix(in srgb, var(--color-fd-primary) 22%, transparent);\n --tw-prose-code: var(--color-fd-foreground);\n --tw-prose-pre-code: var(--color-fd-foreground);\n --tw-prose-pre-bg: color-mix(in srgb, var(--color-fd-muted) 70%, transparent);\n}\n\n.fd-changelog-prose > :first-child {\n margin-top: 0;\n}\n\n.fd-changelog-prose > :last-child {\n margin-bottom: 0;\n}\n\n.fd-changelog-prose h1,\n.fd-changelog-prose h2,\n.fd-changelog-prose h3,\n.fd-changelog-prose h4 {\n color: var(--color-fd-foreground) !important;\n margin-bottom: 0.75rem;\n scroll-margin-top: 2rem;\n text-wrap: balance;\n}\n\n.fd-changelog-prose h1 {\n margin-top: 2.5rem;\n font-size: var(--fd-h1-size, 2rem);\n font-weight: var(--fd-h1-weight, 600);\n line-height: var(--fd-h1-line-height, 1.2);\n letter-spacing: var(--fd-h1-letter-spacing, -0.02em);\n}\n\n.fd-changelog-prose h2 {\n\n margin-top: 1.75rem;\n font-size: 1.0625rem !important;\n font-weight: 600 !important;\n line-height: 1.35 !important;\n letter-spacing: -0.01em;\n color: var(--color-fd-foreground) !important;\n}\n\n#nd-docs-layout article#nd-page .fd-changelog-prose:is(.prose) h1,\n#nd-docs-layout article#nd-page .fd-changelog-prose:is(.prose) h2,\n#nd-docs-layout article#nd-page .fd-changelog-prose:is(.prose) h3 {\n color: var(--color-fd-foreground) !important;\n}\n\n.fd-changelog-prose h3 {\n margin-top: 1.55rem;\n font-size: var(--fd-h3-size, 1.25rem);\n font-weight: var(--fd-h3-weight, 600);\n line-height: var(--fd-h3-line-height, 1.4);\n letter-spacing: var(--fd-h3-letter-spacing, normal);\n}\n\n.fd-changelog-prose h4 {\n margin-top: 1.25rem;\n font-size: var(--fd-h4-size, 1.125rem);\n font-weight: var(--fd-h4-weight, 600);\n line-height: var(--fd-h4-line-height, 1.4);\n letter-spacing: var(--fd-h4-letter-spacing, normal);\n}\n\n.fd-changelog-prose p,\n.fd-changelog-prose ul,\n.fd-changelog-prose ol,\n.fd-changelog-prose blockquote,\n.fd-changelog-prose pre,\n.fd-changelog-prose table {\n margin-top: 1rem;\n margin-bottom: 0;\n}\n\n.fd-changelog-prose p {\n color: var(--color-fd-muted-foreground) !important;\n letter-spacing: normal;\n text-wrap: pretty;\n}\n\n.fd-changelog-prose a {\n color: var(--color-fd-primary);\n text-underline-offset: 0.2em;\n transition: color 180ms ease;\n}\n\n.fd-changelog-prose a:hover {\n color: color-mix(in srgb, var(--color-fd-primary) 82%, white 18%);\n}\n\n.fd-changelog-prose strong {\n color: var(--color-fd-foreground) !important;\n}\n\n.fd-changelog-prose ul,\n.fd-changelog-prose ol {\n padding-left: 1.35rem;\n}\n\n.fd-changelog-prose ul {\n list-style: disc;\n}\n\n.fd-changelog-prose ol {\n list-style: decimal;\n}\n\n.fd-changelog-prose li {\n margin-top: 0.45rem;\n color: var(--color-fd-muted-foreground) !important;\n}\n\n.fd-changelog-prose li::marker {\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-prose blockquote {\n border-left: none;\n padding: 0.75rem 1rem;\n border-radius: 0.75rem;\n background: color-mix(in srgb, var(--color-fd-muted) 55%, transparent);\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-prose code {\n border-radius: 0.5rem;\n background: color-mix(in srgb, var(--color-fd-muted) 72%, transparent);\n padding: 0.15rem 0.4rem;\n font-size: 0.92em;\n}\n\n.fd-changelog-prose pre {\n overflow-x: auto;\n border-radius: 1rem;\n background: color-mix(in srgb, var(--color-fd-muted) 68%, transparent);\n padding: 1rem;\n box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.4);\n}\n\n.fd-changelog-prose pre code {\n background: transparent;\n padding: 0;\n}\n\n.fd-changelog-prose img {\n display: block;\n width: 100%;\n border-radius: 1rem;\n margin-top: 10px;\n box-shadow: 0 24px 60px -32px rgb(15 23 42 / 0.35);\n}\n\n.fd-changelog-prose video {\n display: block;\n width: 100%;\n border-radius: 1rem;\n box-shadow: 0 24px 60px -32px rgb(15 23 42 / 0.35);\n}\n\n.fd-changelog-prose table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.fd-changelog-prose th,\n.fd-changelog-prose td {\n border: none;\n padding: 0.65rem 0.8rem;\n text-align: left;\n border-bottom: 1px solid color-mix(in srgb, var(--color-fd-border) 55%, transparent);\n}\n\n.fd-changelog-prose tr:last-child td {\n border-bottom: none;\n}\n\n.fd-changelog-prose th {\n background: transparent;\n color: var(--color-fd-foreground);\n font-weight: 600;\n}\n\n@keyframes fd-feedback-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.fd-page-footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.75rem 1rem;\n margin-top: auto;\n padding-top: 1.5rem;\n border-top: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n font-size: 0.8125rem;\n}\n\n.fd-last-updated {\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n font-size: 0.6875rem;\n}\n\n.fd-last-updated-footer {\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n font-size: 0.75rem;\n margin-left: auto;\n}\n\n.fd-page-nav {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 1rem;\n margin-top: 2rem;\n padding-top: 1.5rem;\n border-top: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n}\n\n.fd-page-nav-card {\n display: flex;\n min-width: 0;\n min-height: 8.75rem;\n flex-direction: column;\n justify-content: flex-start;\n gap: 0.375rem;\n padding: 1rem;\n border: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n border-radius: 0.5rem;\n color: var(--color-fd-foreground);\n text-decoration: none;\n transition:\n background-color 0.15s ease,\n border-color 0.15s ease,\n color 0.15s ease;\n}\n\n.fd-page-nav-card:hover {\n background: var(--color-fd-accent, hsl(0 0% 96%));\n border-color: var(--color-fd-border, hsl(0 0% 80% / 50%));\n}\n\n.fd-page-nav-next {\n align-items: flex-end;\n text-align: right;\n}\n\n.fd-page-nav-label {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n font-size: 0.75rem;\n font-weight: 500;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n}\n\n.fd-page-nav-title {\n display: -webkit-box;\n overflow: hidden;\n min-height: calc(1.4em * 2);\n font-size: 0.875rem;\n font-weight: 600;\n line-height: 1.4;\n color: var(--color-fd-foreground);\n overflow-wrap: anywhere;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n}\n\n.fd-page-nav-description {\n display: -webkit-box;\n overflow: hidden;\n min-height: calc(1.5em * 2);\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n font-size: 0.875rem;\n line-height: 1.5;\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n overflow-wrap: anywhere;\n}\n\n.fd-page-nav-description-empty {\n visibility: hidden;\n}\n\n@media (max-width: 640px) {\n .fd-feedback-content {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .fd-feedback-submit-row {\n flex-wrap: wrap;\n }\n\n .fd-last-updated-footer {\n margin-left: 0;\n width: 100%;\n }\n\n .fd-page-nav {\n grid-template-columns: 1fr;\n }\n\n .fd-page-nav-next {\n align-items: flex-start;\n text-align: left;\n }\n}\n\n.fd-llms-txt-links {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fd-llms-txt-link {\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n font-size: 0.75rem;\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace);\n text-decoration: none;\n padding: 0.125rem 0.375rem;\n border-radius: 0.25rem;\n border: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n transition: color 150ms, border-color 150ms;\n}\n\n.fd-llms-txt-link:hover {\n color: var(--color-fd-foreground, hsl(0 0% 10%));\n border-color: var(--color-fd-foreground, hsl(0 0% 10%));\n text-decoration: none;\n}\n\nfd-ai-code-block pre {\n padding-left: -10px !important;\n padding-right: -10px !important;\n padding-bottom: 2px !important;\n}\n\nfigure.shiki > button,\nfigure.shiki > div:first-child button {\n opacity: 0;\n transition: opacity 0.15s;\n}\n\nfigure.shiki:hover > button,\nfigure.shiki:hover > div:first-child button {\n opacity: 1;\n}\n\n.fd-sidebar-ai-trigger-wrapper {\n display: flex;\n gap: 8px;\n align-items: stretch;\n}\n\n.fd-sidebar-search-flex {\n flex: 1;\n min-width: 0;\n}\n\n.fd-sidebar-ai-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 38px;\n min-width: 38px;\n border-radius: 8px;\n border: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n background: var(--color-fd-secondary, hsl(0 0% 96%));\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n cursor: pointer;\n transition:\n background-color 150ms,\n color 150ms,\n border-color 150ms;\n}\n\n.fd-sidebar-ai-btn:hover {\n background: var(--color-fd-accent, hsl(0 0% 90%));\n color: var(--color-fd-primary, hsl(220 100% 50%));\n border-color: var(--color-fd-primary, hsl(220 100% 50%));\n}\n\n.fd-sidebar-ai-btn svg {\n width: 16px;\n height: 16px;\n}\n\n.inset-s-0 {\n inset-inline-start: 0;\n}\n\n.inset-s-4 {\n inset-inline-start: calc(var(--spacing) * 4);\n}\n\n.inset-e-0 {\n inset-inline-end: 0;\n}\n\n.before\\:inset-s-2\\.5::before {\n inset-inline-start: calc(var(--spacing) * 2.5);\n}\n\n.data-\\[active\\=true\\]\\:before\\:inset-s-2\\.5[data-active=\"true\"]::before {\n inset-inline-start: calc(var(--spacing) * 2.5);\n}\n\n#nd-docs-layout[data-fd-framework],\n#nd-docs-layout[data-fd-framework] *,\n#nd-docs-layout[data-fd-framework] *::before,\n#nd-docs-layout[data-fd-framework] *::after {\n box-sizing: border-box;\n margin: 0;\n}\n\n:where(#nd-docs-layout[data-fd-framework]) {\n --fd-sidebar-width: 268px;\n --fd-toc-width: 268px;\n --fd-content-width: 768px;\n --fd-header-height: 48px;\n --fd-nav-height: 48px;\n}\n\nhtml:has(#nd-docs-layout[data-fd-framework]) {\n scroll-behavior: smooth;\n scroll-padding-top: 80px;\n}\n\nbody:has(#nd-docs-layout[data-fd-framework]) {\n margin: 0;\n font-family: var(--fd-font-sans, ui-sans-serif, system-ui, -apple-system, sans-serif);\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n background: var(--color-fd-background);\n color: var(--color-fd-foreground);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n#nd-docs-layout[data-fd-framework] {\n scroll-behavior: smooth;\n scroll-padding-top: 80px;\n font-family: var(--fd-font-sans, ui-sans-serif, system-ui, -apple-system, sans-serif);\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n background: var(--color-fd-background);\n color: var(--color-fd-foreground);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n#nd-docs-layout[data-fd-framework] code,\n#nd-docs-layout[data-fd-framework] kbd,\n#nd-docs-layout[data-fd-framework] pre,\n#nd-docs-layout[data-fd-framework] samp {\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n \"Cascadia Code\",\n \"Source Code Pro\",\n Menlo,\n Consolas,\n monospace\n );\n}\n\n#nd-docs-layout[data-fd-framework]:not([data-fd-browser-adapter]) {\n display: grid;\n grid-template-columns: var(--fd-sidebar-width) 1fr;\n min-height: 100dvh;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-header {\n display: none;\n position: sticky;\n top: 0;\n z-index: 40;\n height: var(--fd-header-height);\n padding: 0 16px;\n background: var(--color-fd-background);\n border-bottom: 1px solid var(--color-fd-border);\n align-items: center;\n gap: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-header-title {\n font-weight: 600;\n font-size: 14px;\n color: var(--color-fd-foreground);\n text-decoration: none;\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-menu-btn,\n#nd-docs-layout[data-fd-framework] .fd-search-trigger-mobile {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: var(--color-fd-muted-foreground);\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-menu-btn:hover,\n#nd-docs-layout[data-fd-framework] .fd-search-trigger-mobile:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-foreground);\n}\n\n@media (max-width: 1023px) {\n #nd-docs-layout[data-fd-framework] .fd-header {\n display: flex;\n }\n\n #nd-docs-layout[data-fd-framework]:not([data-fd-browser-adapter]) {\n display: flex;\n flex-direction: column;\n }\n}\n\n@media (min-width: 1024px) {\n #nd-docs-layout[data-fd-framework]:not([data-fd-browser-adapter]) {\n grid-template-columns: var(--fd-sidebar-width) minmax(0, 1fr);\n }\n\n #nd-docs-layout[data-fd-framework] .fd-main {\n min-width: 0;\n }\n\n #nd-docs-layout[data-fd-framework] .fd-page-article,\n #nd-docs-layout[data-fd-framework] .fd-page-body,\n #nd-docs-layout[data-fd-framework] .fd-docs-content {\n max-width: none;\n margin-inline: 0;\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar {\n position: sticky;\n top: 0;\n width: var(--fd-sidebar-width);\n height: 100dvh;\n overflow-y: auto;\n overflow-x: hidden;\n border-right: 1px solid var(--color-fd-border);\n background: var(--color-fd-background);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n z-index: 50;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 12px 0;\n gap: 4px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-title {\n font-weight: 600;\n font-size: 14px;\n letter-spacing: 0.02em;\n color: var(--color-fd-foreground);\n text-decoration: none;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-title:hover {\n text-decoration: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-collapse-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n background: transparent;\n border: 1px solid var(--color-fd-border);\n border-radius: 6px;\n color: var(--color-fd-muted-foreground);\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s;\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-collapse-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search {\n padding: 8px 12px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 6px 10px;\n height: 36px;\n font-size: 14px;\n color: var(--color-fd-muted-foreground);\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 8px;\n cursor: pointer;\n transition:\n border-color 0.15s,\n background 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search-btn:hover {\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search-btn svg {\n flex-shrink: 0;\n opacity: 0.7;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search-btn span {\n flex: 1;\n text-align: left;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search-btn kbd {\n font-size: 11px;\n padding: 1px 6px;\n border: 1px solid var(--color-fd-border);\n border-radius: 4px;\n color: var(--color-fd-muted-foreground);\n font-family: inherit;\n background: var(--color-fd-background);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-nav {\n flex: 1;\n padding: 4px 12px;\n overflow-y: auto;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-link {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n font-size: 14px;\n font-weight: 400;\n color: var(--color-fd-muted-foreground);\n text-decoration: none;\n border-radius: 8px;\n position: relative;\n transition:\n color 0.15s,\n background 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-link:hover {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n text-decoration: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-link-active,\n#nd-docs-layout[data-fd-framework] .fd-sidebar-link[data-active=\"true\"] {\n color: var(--color-fd-foreground) !important;\n background: var(--color-fd-accent) !important;\n font-weight: 600;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-content .fd-sidebar-link-active::before {\n content: \"\";\n position: absolute;\n left: -9px;\n top: 25%;\n bottom: 25%;\n width: 2px;\n background: var(--color-fd-foreground);\n border-radius: 1px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder {\n margin: 2px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder summary {\n list-style: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder summary::-webkit-details-marker {\n display: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--color-fd-foreground);\n cursor: pointer;\n border-radius: 8px;\n transition: background 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-trigger:hover {\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-trigger-link {\n gap: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-parent-link {\n min-width: 0;\n flex: 1;\n padding: 0;\n color: inherit;\n background: transparent !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-parent-link:hover {\n color: inherit;\n background: transparent !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-chevron {\n transition: transform 0.2s;\n flex-shrink: 0;\n opacity: 0.5;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder[open] > .fd-sidebar-folder-trigger .fd-sidebar-chevron,\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder[open] > .fd-sidebar-folder-trigger-link .fd-sidebar-chevron {\n transform: rotate(180deg);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-content {\n position: relative;\n padding-left: 12px;\n margin-left: 10px;\n margin-top: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-content::before {\n content: \"\";\n position: absolute;\n left: 4px;\n top: 4px;\n bottom: 4px;\n width: 1px;\n background: var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-banner {\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-footer-custom {\n padding: 12px 16px;\n border-top: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-footer {\n padding: 12px 16px;\n border-top: 1px solid var(--color-fd-border);\n margin-top: auto;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-overlay {\n display: none;\n position: fixed;\n inset: 0;\n z-index: 45;\n background: rgba(0, 0, 0, 0.2);\n backdrop-filter: blur(2px);\n}\n\n@media (max-width: 1023px) {\n #nd-docs-layout[data-fd-framework] .fd-sidebar {\n position: fixed;\n left: 0;\n top: 0;\n transform: translateX(-100%);\n transition: transform 0.25s ease;\n z-index: 50;\n }\n\n #nd-docs-layout[data-fd-framework] .fd-sidebar-open {\n transform: translateX(0);\n }\n\n #nd-docs-layout[data-fd-framework] .fd-sidebar-open + .fd-sidebar-overlay {\n display: block;\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-main {\n min-width: 0;\n padding: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page {\n display: grid;\n --fd-article-width: calc(var(--fd-content-width, 860px) + 96px);\n grid-template-columns: var(\n --fd-framework-page-columns,\n minmax(0, min(100%, var(--fd-article-width)))\n );\n justify-content: var(--fd-framework-page-justify, center);\n width: 100%;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-article {\n min-width: 0;\n width: var(--fd-framework-article-width, auto);\n max-width: var(--fd-framework-article-max-width, 100%);\n padding: 24px 16px 48px;\n display: flex;\n flex-direction: column;\n min-height: calc(100dvh - var(--fd-nav-height, 56px));\n grid-column: var(--fd-framework-article-column, auto);\n justify-self: var(--fd-framework-article-justify, stretch);\n}\n\n@media (min-width: 768px) {\n #nd-docs-layout[data-fd-framework] .fd-page-article {\n padding: var(--fd-framework-article-padding, 32px 48px 64px);\n }\n}\n\n@media (min-width: 1280px) {\n #nd-docs-layout[data-fd-framework] .fd-page:has(.fd-toc) {\n grid-template-columns: var(\n --fd-framework-page-columns-with-toc,\n minmax(0, min(var(--fd-article-width), calc(100% - var(--fd-toc-width))))\n var(--fd-toc-width)\n );\n }\n\n #nd-docs-layout[data-fd-framework] .fd-toc {\n grid-column: var(--fd-framework-toc-column, auto);\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc {\n width: var(--fd-toc-width);\n position: sticky;\n top: 0;\n height: 100dvh;\n overflow-y: auto;\n padding: 40px 24px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-inner {\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--color-fd-foreground);\n margin-bottom: 12px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-title svg {\n opacity: 0.5;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-list {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 0;\n border-left: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-item {\n margin: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-link {\n display: block;\n padding: 4px 12px;\n font-size: 13px;\n color: var(--color-fd-muted-foreground);\n text-decoration: none;\n border-left: 2px solid transparent;\n margin-left: -1px;\n transition:\n color 0.15s,\n border-color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-link:hover {\n color: var(--color-fd-foreground);\n text-decoration: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-link-active {\n color: var(--color-fd-primary);\n border-left-color: var(--color-fd-primary);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk {\n border-left: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk .fd-toc-link {\n display: block;\n border-left: none;\n margin-left: 0;\n color: var(--color-fd-muted-foreground);\n text-decoration: none;\n transition: color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk .fd-toc-link:hover {\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk .fd-toc-link[data-active=\"true\"] {\n color: var(--color-fd-primary);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk-mask {\n overflow: hidden;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk-thumb {\n width: 100%;\n}\n\n@media (max-width: 1279px) {\n #nd-docs-layout[data-fd-framework] .fd-toc {\n display: none;\n }\n\n #nd-docs-layout[data-fd-framework] .fd-page {\n grid-template-columns: minmax(0, min(100%, var(--fd-article-width)));\n }\n\n #nd-docs-layout[data-fd-framework] .fd-page-article,\n #nd-docs-layout[data-fd-framework] .fd-toc {\n grid-column: auto;\n }\n}\n\n@media (max-width: 1023px) {\n #nd-docs-layout[data-fd-framework] .fd-toc {\n display: none;\n }\n\n #nd-docs-layout[data-fd-framework] .fd-page {\n grid-template-columns: minmax(0, min(100%, var(--fd-article-width)));\n }\n\n #nd-docs-layout[data-fd-framework] .fd-page-article,\n #nd-docs-layout[data-fd-framework] .fd-toc {\n grid-column: auto;\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-title {\n font-size: var(--fd-h1-size, 2.25rem);\n font-weight: var(--fd-h1-weight, 700);\n line-height: var(--fd-h1-line-height, 1.2);\n letter-spacing: var(--fd-h1-letter-spacing, -0.025em);\n margin: 0 0 0.5rem;\n scroll-margin-top: 80px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-description {\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: var(--fd-body-size, 1.125rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-actions-divider {\n border: none;\n border-top: 1px solid var(--color-fd-border);\n margin: 1rem 0 0.75rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-actions,\n#nd-docs-layout[data-fd-framework] [data-page-actions] {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n margin-top: 0;\n margin-bottom: 1rem;\n width: 100%;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-actions[data-actions-alignment=\"right\"],\n#nd-docs-layout[data-fd-framework] [data-page-actions][data-actions-alignment=\"right\"] {\n justify-content: flex-end;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-actions[data-actions-alignment=\"left\"],\n#nd-docs-layout[data-fd-framework] [data-page-actions][data-actions-alignment=\"left\"] {\n justify-content: flex-start;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.375rem 0.75rem;\n font-size: 0.8125rem;\n font-weight: 500;\n line-height: 1;\n min-height: 2rem;\n color: var(--color-fd-muted-foreground);\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 0.375rem;\n cursor: pointer;\n white-space: nowrap;\n transition:\n color 0.15s,\n background 0.15s,\n border-color 0.15s;\n user-select: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn:hover {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn[data-copied=\"true\"] {\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn[data-selected=\"true\"] {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn svg {\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn[data-selected=\"true\"] svg {\n color: currentColor;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-dropdown {\n position: relative;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu {\n position: absolute;\n top: calc(100% + 0.375rem);\n left: 0;\n z-index: 50;\n min-width: 220px;\n padding: 0.375rem;\n background: var(--color-fd-popover, var(--color-fd-background));\n border: 1px solid var(--color-fd-border);\n border-radius: 0.5rem;\n box-shadow: 0 4px 24px hsl(0 0% 0% / 0.15);\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu[hidden] {\n display: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.35rem 0.625rem;\n font-size: 0.8125rem;\n font-weight: 400;\n color: var(--color-fd-foreground);\n background: transparent;\n border: none;\n border-radius: 0.25rem;\n cursor: pointer;\n text-align: left;\n text-decoration: none;\n transition: background 0.1s, color 0.1s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu-item:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu-label {\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-actions a,\n#nd-docs-layout[data-fd-framework] .fd-page-actions button,\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu-item,\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn {\n text-decoration: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu-item:hover {\n text-decoration: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-last-modified-below-title {\n margin-top: 0.25rem;\n margin-bottom: 1rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-meta {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.375rem;\n margin-bottom: 0.75rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-meta-dot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace);\n font-size: 0.8rem;\n line-height: 1;\n color: color-mix(in srgb, var(--color-fd-muted-foreground) 78%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-meta-item {\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace);\n font-size: 0.6875rem;\n font-weight: 500;\n letter-spacing: 0;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback {\n margin-top: 2rem;\n margin-bottom: 1.25rem;\n padding-top: 1.25rem;\n border-top: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n flex-wrap: wrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-question {\n margin: 0;\n font-size: 0.9375rem;\n font-weight: 600;\n line-height: 1.5;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-actions {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-form {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n margin-top: 0.875rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-form[hidden],\n#nd-docs-layout[data-fd-framework] .fd-feedback-spinner[hidden],\n#nd-docs-layout[data-fd-framework] .fd-feedback-status[hidden],\n#nd-docs-layout[data-fd-framework] .fd-feedback-submit svg[hidden] {\n display: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-choice[data-selected=\"true\"] {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n border-color: color-mix(in srgb, var(--color-fd-primary, currentColor) 65%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-input {\n width: 100%;\n min-height: 4.75rem;\n resize: vertical;\n padding: 0.875rem 1rem;\n border: 1px solid\n color-mix(in srgb, var(--color-fd-border) 78%, var(--color-fd-foreground) 22%);\n border-radius: 0.5rem;\n background: var(--color-fd-card, transparent);\n color: var(--color-fd-foreground);\n font: inherit;\n line-height: 1.55;\n outline: none;\n transition:\n border-color 150ms ease,\n box-shadow 150ms ease,\n background-color 150ms ease;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-input::placeholder {\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-input:focus {\n border-color: var(--color-fd-ring, var(--color-fd-primary, currentColor));\n box-shadow: 0 0 0 1px var(--color-fd-ring, var(--color-fd-primary, currentColor));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-submit-row {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n flex-wrap: nowrap;\n min-height: 2rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-submit {\n min-width: 7rem;\n padding-inline: 0.875rem;\n justify-content: center;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-submit:disabled {\n cursor: not-allowed;\n opacity: 0.65;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-spinner {\n width: 0.875rem;\n height: 0.875rem;\n border-radius: 9999px;\n border: 2px solid currentColor;\n border-right-color: transparent;\n animation: fd-feedback-spin 0.8s linear infinite;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-status {\n margin: 0 !important;\n font-size: 0.75rem;\n line-height: 1.3;\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-status[data-status=\"success\"] {\n display: inline-flex;\n align-self: center;\n align-items: center;\n gap: 0.4rem;\n min-height: 2rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-status[data-status=\"success\"] {\n color: color-mix(in srgb, var(--color-fd-primary) 85%, var(--color-fd-foreground));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-status[data-status=\"error\"] {\n color: var(--color-fd-foreground);\n}\n\n@keyframes fd-feedback-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@media (max-width: 640px) {\n #nd-docs-layout[data-fd-framework] .fd-feedback-content {\n flex-direction: column;\n align-items: flex-start;\n }\n\n #nd-docs-layout[data-fd-framework] .fd-feedback-submit-row {\n flex-wrap: wrap;\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb {\n display: flex;\n align-items: center;\n gap: 0;\n font-size: var(--fd-small-size, 0.8125rem);\n font-family: var(--fd-font-sans, inherit);\n color: var(--color-fd-muted-foreground);\n margin-bottom: 2rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-item {\n display: inline-flex;\n align-items: center;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-sep {\n margin: 0 6px;\n opacity: 0.4;\n font-size: var(--fd-small-size, 0.75rem);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-parent {\n opacity: 0.7;\n font-weight: 400;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-link {\n color: inherit;\n text-decoration: none;\n cursor: pointer;\n transition:\n opacity 0.15s,\n color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-link:hover {\n opacity: 1;\n color: var(--color-fd-foreground);\n text-decoration: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-current {\n font-weight: 500;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt {\n display: flex;\n flex-direction: column;\n gap: 0.875rem;\n margin: 1.25rem 0;\n padding: 1rem;\n border: 1px solid var(--color-fd-border);\n border-radius: 0.75rem;\n background: color-mix(in srgb, var(--color-fd-card) 78%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-header {\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-icon,\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-icon,\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-icon {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 0.5rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 80%, transparent);\n background: color-mix(in srgb, var(--color-fd-background) 55%, transparent);\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-icon svg,\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-icon svg,\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu-icon svg {\n width: 1rem;\n height: 1rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-copy {\n min-width: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-title {\n margin: 0;\n color: var(--color-fd-foreground);\n font-size: 0.9375rem;\n font-weight: 600;\n line-height: 1.35;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-description {\n margin: 0.25rem 0 0;\n color: var(--color-fd-muted-foreground);\n font-size: 0.875rem;\n line-height: 1.55;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-body {\n margin: 0;\n padding: 0.875rem 1rem;\n border-radius: 0.625rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 82%, transparent);\n background: color-mix(in srgb, var(--color-fd-background) 45%, transparent);\n overflow-x: auto;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-body > pre.fd-prompt-code {\n margin: 0;\n padding: 0 !important;\n border: 0 !important;\n border-radius: 0 !important;\n background: transparent !important;\n box-shadow: none !important;\n color: var(--color-fd-foreground);\n font-size: 0.875rem;\n line-height: 1.65;\n white-space: pre-wrap;\n word-break: break-word;\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n \"SF Mono\",\n SFMono-Regular,\n Menlo,\n Consolas,\n monospace\n );\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n align-items: center;\n justify-content: flex-end;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.4375rem;\n min-height: 2rem;\n padding: 0.375rem 0.75rem;\n border: 1px solid var(--color-fd-border);\n border-radius: 0.375rem;\n background: var(--color-fd-secondary);\n color: var(--color-fd-muted-foreground);\n font-size: 0.8125rem;\n font-weight: 500;\n line-height: 1;\n cursor: pointer;\n transition: color 0.15s, background 0.15s, border-color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-btn:hover {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-btn[data-copied=\"true\"] {\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-icon-copied[hidden] {\n display: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-dropdown {\n position: relative;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu {\n position: absolute;\n top: calc(100% + 0.375rem);\n right: 0;\n z-index: 50;\n min-width: 220px;\n padding: 0.375rem;\n background: var(--color-fd-popover, var(--color-fd-background));\n border: 1px solid var(--color-fd-border);\n border-radius: 0.5rem;\n box-shadow: 0 4px 24px hsl(0 0% 0% / 0.15);\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu[hidden] {\n display: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.35rem 0.625rem;\n font-size: 0.8125rem;\n font-weight: 400;\n color: var(--color-fd-foreground);\n background: transparent;\n border: none;\n border-radius: 0.25rem;\n cursor: pointer;\n text-align: left;\n transition: background 0.1s, color 0.1s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu-item:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu-label {\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-theme-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: transparent;\n border: 1px solid var(--color-fd-border);\n border-radius: 8px;\n color: var(--color-fd-muted-foreground);\n cursor: pointer;\n transition:\n color 0.15s,\n background 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-theme-toggle:hover {\n color: var(--color-fd-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-overlay {\n position: fixed;\n inset: 0;\n z-index: 100;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 20vh;\n background: rgba(0, 0, 0, 0.2);\n backdrop-filter: blur(4px);\n animation: fd-fade-in 0.12s ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-dialog {\n width: 90%;\n max-width: 540px;\n background: var(--color-fd-popover);\n border: 1px solid var(--color-fd-border);\n border-radius: 12px;\n box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12);\n overflow: hidden;\n animation: fd-slide-up 0.15s ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-input-wrap {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-input-wrap svg {\n color: var(--color-fd-muted-foreground);\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-input {\n flex: 1;\n background: transparent;\n border: none;\n outline: none;\n font-size: 15px;\n color: var(--color-fd-foreground);\n font-family: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-input::placeholder {\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-kbd {\n font-size: 11px;\n padding: 2px 6px;\n border: 1px solid var(--color-fd-border);\n border-radius: 4px;\n color: var(--color-fd-muted-foreground);\n font-family: inherit;\n background: var(--color-fd-background);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-results {\n max-height: 360px;\n overflow-y: auto;\n padding: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-empty {\n padding: 32px;\n text-align: center;\n color: var(--color-fd-muted-foreground);\n font-size: 14px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-result {\n display: block;\n width: 100%;\n text-align: left;\n padding: 10px 12px;\n background: transparent;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.1s;\n font-family: inherit;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-result:hover {\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-result-title {\n display: block;\n font-size: 14px;\n font-weight: 500;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-result-url {\n display: block;\n font-size: 12px;\n color: var(--color-fd-muted-foreground);\n margin-top: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body {\n color: var(--color-fd-foreground);\n line-height: 1.75;\n font-size: 15px;\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body a {\n color: var(--color-fd-foreground);\n font-weight: 500;\n text-decoration: underline;\n text-underline-offset: 3px;\n text-decoration-color: var(--color-fd-primary);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body a:hover {\n opacity: 0.8;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link {\n position: relative;\n display: inline-block;\n vertical-align: baseline;\n max-width: 100%;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-trigger {\n display: inline !important;\n border: none;\n background: transparent;\n padding: 0;\n margin: 0;\n color: var(--color-fd-foreground);\n cursor: pointer;\n text-decoration: underline;\n text-decoration-style: dashed;\n text-decoration-thickness: 0.08em;\n text-underline-offset: 0.22em;\n text-decoration-color: color-mix(in srgb, var(--color-fd-foreground) 46%, transparent);\n font: inherit;\n line-height: inherit;\n vertical-align: baseline;\n appearance: none;\n transition: text-decoration-color 180ms ease, opacity 180ms ease;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-trigger:hover,\n#nd-docs-layout[data-fd-framework] .fd-hover-link-trigger:focus-visible,\n#nd-docs-layout[data-fd-framework] .fd-hover-link-open > .fd-hover-link-trigger {\n text-decoration-color: color-mix(in srgb, var(--color-fd-foreground) 68%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-trigger:focus-visible {\n outline: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-popover {\n --fd-hover-link-rest-x: -50%;\n --fd-hover-link-rest-y: 8px;\n --fd-hover-link-open-x: -50%;\n --fd-hover-link-open-y: 0;\n position: absolute;\n top: calc(100% + var(--fd-hover-link-side-offset, 12px));\n left: 50%;\n z-index: 40;\n width: min(22rem, calc(100vw - 2rem));\n max-width: min(22rem, calc(100vw - 2rem));\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transform: translate3d(var(--fd-hover-link-rest-x), var(--fd-hover-link-rest-y), 0);\n transition: opacity 180ms ease, transform 180ms ease, visibility 180ms linear;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-align=\"start\"] > .fd-hover-link-popover {\n left: 0;\n --fd-hover-link-rest-x: 0;\n --fd-hover-link-open-x: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-align=\"end\"] > .fd-hover-link-popover {\n left: auto;\n right: 0;\n --fd-hover-link-rest-x: 0;\n --fd-hover-link-open-x: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"top\"] > .fd-hover-link-popover {\n top: auto;\n bottom: calc(100% + var(--fd-hover-link-side-offset, 12px));\n --fd-hover-link-rest-y: -8px;\n --fd-hover-link-open-y: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"right\"] > .fd-hover-link-popover {\n top: 50%;\n left: calc(100% + var(--fd-hover-link-side-offset, 12px));\n right: auto;\n --fd-hover-link-rest-x: 8px;\n --fd-hover-link-rest-y: -50%;\n --fd-hover-link-open-x: 0;\n --fd-hover-link-open-y: -50%;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"right\"][data-align=\"start\"] > .fd-hover-link-popover {\n top: 0;\n --fd-hover-link-rest-y: 0;\n --fd-hover-link-open-y: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"right\"][data-align=\"end\"] > .fd-hover-link-popover {\n top: auto;\n bottom: 0;\n --fd-hover-link-rest-y: 0;\n --fd-hover-link-open-y: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"left\"] > .fd-hover-link-popover {\n top: 50%;\n left: auto;\n right: calc(100% + var(--fd-hover-link-side-offset, 12px));\n --fd-hover-link-rest-x: -8px;\n --fd-hover-link-rest-y: -50%;\n --fd-hover-link-open-x: 0;\n --fd-hover-link-open-y: -50%;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"left\"][data-align=\"start\"] > .fd-hover-link-popover {\n top: 0;\n --fd-hover-link-rest-y: 0;\n --fd-hover-link-open-y: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"left\"][data-align=\"end\"] > .fd-hover-link-popover {\n top: auto;\n bottom: 0;\n --fd-hover-link-rest-y: 0;\n --fd-hover-link-open-y: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-open > .fd-hover-link-popover {\n opacity: 1;\n visibility: visible;\n pointer-events: auto;\n transform: translate3d(var(--fd-hover-link-open-x), var(--fd-hover-link-open-y), 0);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-card {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n border-radius: calc(var(--radius, 0.75rem) + 2px);\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 88%, transparent);\n background: var(--color-fd-popover, var(--color-fd-background));\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground));\n padding: 0.95rem 1rem;\n box-shadow: 0 20px 45px color-mix(in srgb, var(--color-fd-background) 78%, transparent);\n backdrop-filter: blur(14px);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-body {\n display: flex;\n flex-direction: column;\n gap: 0.35rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-preview-label {\n font-size: 0.68rem;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n font-family: var(--fd-font-mono, var(--font-geist-mono, ui-monospace, monospace));\n color: color-mix(in srgb, var(--color-fd-popover-foreground, var(--color-fd-foreground)) 55%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-title,\n#nd-docs-layout[data-fd-framework] .fd-hover-link-cta {\n text-decoration: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-title {\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground));\n font-size: 1rem;\n font-weight: 600 !important;\n line-height: 1.3;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-title:hover,\n#nd-docs-layout[data-fd-framework] .fd-hover-link-cta:hover {\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-description {\n font-size: 0.92rem;\n line-height: 1.6;\n color: color-mix(in srgb, var(--color-fd-popover-foreground, var(--color-fd-foreground)) 74%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n padding-top: 0.25rem;\n border-top: 1px solid color-mix(in srgb, var(--color-fd-border) 72%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-cta {\n display: inline-flex !important;\n align-items: center;\n gap: 0.4rem;\n color: var(--color-fd-primary);\n font-size: 0.8rem;\n font-weight: 600 !important;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n font-family: var(--fd-font-mono, var(--font-geist-mono, ui-monospace, monospace));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body h1 {\n font-size: var(--fd-h1-size, 2.25rem);\n font-weight: var(--fd-h1-weight, 700);\n line-height: var(--fd-h1-line-height, 1.2);\n letter-spacing: var(--fd-h1-letter-spacing, -0.025em);\n margin: 0 0 16px;\n scroll-margin-top: 80px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body h2 {\n font-size: var(--fd-h2-size, 1.5rem);\n font-weight: var(--fd-h2-weight, 600);\n line-height: var(--fd-h2-line-height, 1.3);\n letter-spacing: var(--fd-h2-letter-spacing, -0.015em);\n margin: 40px 0 16px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--color-fd-border);\n scroll-margin-top: 80px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body h3 {\n font-size: var(--fd-h3-size, 1.25rem);\n font-weight: var(--fd-h3-weight, 600);\n line-height: var(--fd-h3-line-height, 1.4);\n margin: 32px 0 12px;\n scroll-margin-top: 80px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body h4 {\n font-size: var(--fd-h4-size, 1.125rem);\n font-weight: var(--fd-h4-weight, 600);\n line-height: var(--fd-h4-line-height, 1.4);\n margin: 24px 0 8px;\n scroll-margin-top: 80px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body p {\n margin: 0 0 16px;\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body ul,\n#nd-docs-layout[data-fd-framework] .fd-page-body ol {\n margin: 0 0 16px;\n padding-left: 24px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body ul {\n list-style: disc;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body ol {\n list-style: decimal;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body li {\n margin: 4px 0;\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body li::marker {\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body strong {\n font-weight: 600;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body hr {\n border: none;\n border-top: 1px solid var(--color-fd-border);\n margin: 32px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body blockquote {\n border-left: 3px solid var(--color-fd-border);\n padding: 8px 16px;\n margin: 16px 0;\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body code {\n font-size: 0.875em;\n padding: 2px 5px;\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 4px;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body pre {\n margin: 16px 0;\n padding: 14px 16px;\n background: var(--color-fd-card);\n border: 1px solid var(--color-fd-border);\n border-radius: 8px;\n overflow-x: auto;\n font-size: 13px;\n line-height: 1.5;\n position: relative;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body pre code {\n background: transparent;\n border: none;\n padding: 0;\n font-size: inherit;\n border-radius: 0;\n color: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body pre.shiki {\n background-color: var(--color-fd-card) !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body pre.shiki code {\n counter-reset: line;\n}\n\nhtml.dark #nd-docs-layout[data-fd-framework] .shiki,\nhtml.dark #nd-docs-layout[data-fd-framework] .shiki span {\n color: var(--shiki-dark) !important;\n background-color: transparent !important;\n}\n\nhtml.dark #nd-docs-layout[data-fd-framework] pre.shiki {\n background-color: var(--color-fd-card) !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock {\n position: relative;\n margin: 16px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock pre {\n margin: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n font-size: 13px;\n font-weight: 500;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground, #71717a);\n background: var(--color-fd-secondary, rgba(255, 255, 255, 0.04));\n border: 1px solid var(--color-fd-border);\n border-bottom: none;\n border-radius: var(--radius, 12px) var(--radius, 12px) 0 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title-text,\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title figcaption {\n min-width: 0;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title + .fd-copy-btn ~ pre {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock:has(.fd-codeblock-title) pre {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-actions {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n margin-left: auto;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-actions-floating {\n position: absolute;\n top: 4px;\n right: 4px;\n z-index: 2;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-copy-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n z-index: 2;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 6px;\n color: var(--color-fd-muted-foreground);\n cursor: pointer;\n opacity: 0;\n transition:\n opacity 0.15s,\n color 0.15s,\n background 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-actions .fd-copy-btn,\n#nd-docs-layout[data-fd-framework] .fd-codeblock-actions-floating .fd-copy-btn,\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title .fd-copy-btn {\n position: static;\n width: 28px;\n height: 28px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title .fd-copy-btn {\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock:hover .fd-copy-btn {\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-copy-btn:hover {\n color: var(--color-fd-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-copy-btn-copied {\n color: hsl(142, 71%, 45%) !important;\n opacity: 1 !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tabs {\n margin: 16px 0;\n border: 1px solid var(--color-fd-border);\n border-radius: 12px;\n overflow: hidden;\n background: var(--color-fd-card);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tabs-list {\n display: flex;\n border-bottom: 1px solid var(--color-fd-border);\n background: transparent;\n overflow-x: auto;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-trigger {\n padding: 8px 14px;\n font-size: 13px;\n font-weight: 500;\n font-family: inherit;\n color: var(--color-fd-muted-foreground);\n background: transparent;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n transition:\n color 0.15s,\n border-color 0.15s;\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-trigger:hover {\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-trigger.fd-tab-active,\n#nd-docs-layout[data-fd-framework] .fd-tab-trigger[data-state=\"active\"] {\n color: var(--color-fd-foreground);\n font-weight: 600;\n border-bottom-color: var(--color-fd-primary);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel {\n display: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel[data-state=\"inactive\"],\n#nd-docs-layout[data-fd-framework] .fd-code-group-panel[data-state=\"inactive\"] {\n display: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel-active,\n#nd-docs-layout[data-fd-framework] .fd-tab-panel[data-state=\"active\"],\n#nd-docs-layout[data-fd-framework] .fd-code-group-panel[data-state=\"active\"] {\n display: block;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel .fd-codeblock {\n margin: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel .fd-codeblock pre {\n border: none;\n border-radius: 0;\n margin: 0;\n background: transparent !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel .fd-copy-btn {\n top: 6px;\n right: 6px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body .fd-table-wrapper {\n margin: 0 0 24px;\n overflow-x: auto;\n border: 0;\n border-radius: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body table {\n width: 100%;\n table-layout: auto;\n border-collapse: separate;\n border-spacing: 0;\n overflow: hidden;\n border: 1px solid var(--color-fd-border);\n border-radius: var(--radius-lg, 8px);\n background: var(--color-fd-card);\n font-size: 0.875em;\n line-height: 1.7142857;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body th {\n padding: 10px;\n text-align: left;\n font-weight: 600;\n font-size: 0.875rem;\n color: var(--color-fd-foreground);\n background: var(--color-fd-muted);\n border-inline-start: 1px solid var(--color-fd-border);\n border-bottom: 1px solid var(--color-fd-border);\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body th:first-child {\n border-inline-start: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body td {\n padding: 10px;\n text-align: left;\n border-inline-start: 1px solid var(--color-fd-border);\n border-bottom: 1px solid var(--color-fd-border);\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body td:first-child {\n border-inline-start: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body tbody tr:last-child td {\n border-bottom: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body td code {\n font-size: 12px;\n padding: 1px 5px;\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 4px;\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body img {\n max-width: 100%;\n border-radius: 8px;\n margin: 16px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-empty {\n font-size: 13px;\n color: var(--color-fd-muted-foreground);\n padding: 4px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-label {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n@keyframes fd-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fd-slide-up {\n from {\n opacity: 0;\n transform: translateY(8px) scale(0.98);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout {\n position: relative;\n display: flex;\n gap: 10px;\n margin: 16px 0;\n padding: 12px 16px;\n border: 1px solid var(--color-fd-border);\n border-radius: 8px;\n background: var(--color-fd-card);\n font-size: 14px;\n line-height: 1.6;\n overflow: hidden;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-indicator {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n border-radius: 8px 0 0 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-note .fd-callout-indicator {\n background: hsl(221, 83%, 53%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-warning .fd-callout-indicator {\n background: hsl(38, 92%, 50%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-tip .fd-callout-indicator {\n background: hsl(142, 71%, 45%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-important .fd-callout-indicator {\n background: hsl(262, 83%, 58%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-caution .fd-callout-indicator {\n background: hsl(0, 72%, 51%);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-icon {\n flex-shrink: 0;\n margin-top: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-note .fd-callout-icon {\n color: hsl(221, 83%, 53%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-warning .fd-callout-icon {\n color: hsl(38, 92%, 50%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-tip .fd-callout-icon {\n color: hsl(142, 71%, 45%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-important .fd-callout-icon {\n color: hsl(262, 83%, 58%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-caution .fd-callout-icon {\n color: hsl(0, 72%, 51%);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-content {\n flex: 1;\n min-width: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-title {\n font-weight: 600;\n font-size: 13px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-note .fd-callout-title {\n color: hsl(221, 83%, 53%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-warning .fd-callout-title {\n color: hsl(38, 92%, 50%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-tip .fd-callout-title {\n color: hsl(142, 71%, 45%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-important .fd-callout-title {\n color: hsl(262, 83%, 58%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-caution .fd-callout-title {\n color: hsl(0, 72%, 51%);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-content p:last-child {\n margin-bottom: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-footer {\n display: block;\n margin-top: auto;\n padding-top: 24px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-edit-on-github {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n width: 100%;\n gap: 0.75rem 16px;\n margin-top: 0;\n padding-top: 0;\n border-top: 0;\n font-size: 13px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-edit-on-github > a {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 6px 8px;\n border: 1px solid var(--color-fd-border);\n border-radius: 0.375rem;\n background: var(--color-fd-secondary);\n color: var(--color-fd-secondary-foreground);\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n text-decoration: none;\n transition:\n background-color 0.15s,\n color 0.15s,\n border-color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-edit-on-github > a:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-last-modified {\n color: var(--color-fd-muted-foreground);\n font-size: var(--fd-small-size, 0.75rem);\n font-weight: var(--fd-small-weight, 400);\n}\n\n@media (max-width: 640px) {\n #nd-docs-layout[data-fd-framework] .fd-last-modified {\n width: 100%;\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-llms-txt-links {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-llms-txt-link {\n display: inline-flex;\n align-items: center;\n color: var(--color-fd-muted-foreground);\n font-size: 0.75rem;\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace);\n line-height: 1.75rem;\n text-decoration: none;\n padding: 0.125rem 0.375rem;\n border-radius: 0.25rem;\n border: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n transition: color 150ms, border-color 150ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-llms-txt-link:hover {\n color: var(--color-fd-foreground);\n border-color: var(--color-fd-foreground);\n text-decoration: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n margin-top: 16px;\n padding-top: 0;\n border-top: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav:has(.fd-page-nav-prev):has(.fd-page-nav-next) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav > div:empty {\n display: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-card {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n min-height: 95px;\n padding: 16px;\n border: 1px solid var(--color-fd-border);\n border-radius: 8px;\n text-decoration: none;\n color: var(--color-fd-foreground);\n transition:\n background-color 0.15s,\n border-color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-card:hover {\n background: var(--color-fd-accent);\n border-color: var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-next {\n text-align: right;\n align-items: flex-end;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-label,\n#nd-docs-layout[data-fd-framework] .fd-page-nav-title {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n max-width: 100%;\n min-height: 0;\n overflow: hidden;\n color: var(--color-fd-foreground);\n font-size: var(--fd-body-size, 1rem);\n font-weight: 500;\n line-height: var(--fd-body-line-height, 1.65);\n overflow-wrap: anywhere;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-title svg {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-description {\n display: block;\n max-width: 100%;\n min-height: 0;\n overflow: hidden;\n color: var(--color-fd-muted-foreground);\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.65);\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n opacity: 0.7;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-link-active .fd-sidebar-icon {\n opacity: 1;\n}\n\n@keyframes fd-ai-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fd-ai-slide-up {\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n@keyframes fd-ai-float-in {\n from {\n opacity: 0;\n transform: translateY(12px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes fd-ai-float-center-in {\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-overlay {\n position: fixed;\n inset: 0;\n z-index: 9998;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n animation: fd-ai-fade-in 150ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-dialog {\n position: fixed;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n background: var(--color-fd-popover);\n border: 1px solid var(--color-fd-border);\n border-radius: 12px;\n box-shadow:\n 0 0 0 1px color-mix(in srgb, var(--color-fd-foreground) 5%, transparent),\n 0 16px 48px -8px rgba(0, 0, 0, 0.35);\n overflow: hidden;\n color: var(--color-fd-foreground);\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab-bar {\n display: flex;\n align-items: stretch;\n gap: 0;\n padding: 0;\n border-bottom: 1px solid var(--color-fd-border);\n background: var(--color-fd-card);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 10px 20px;\n font-size: 13px;\n font-weight: 500;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n transition:\n color 150ms,\n border-color 150ms,\n background-color 150ms;\n background: transparent;\n color: var(--color-fd-muted-foreground);\n font-family: inherit;\n margin-bottom: -1px;\n position: relative;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab svg {\n opacity: 0.7;\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab[data-active=\"true\"] {\n color: var(--color-fd-foreground);\n border-bottom-color: var(--color-fd-primary);\n background: transparent;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab[data-active=\"true\"] svg {\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab:hover:not([data-active=\"true\"]) {\n color: var(--color-fd-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-esc {\n padding: 2px 8px;\n border-radius: 6px;\n border: 1px solid var(--color-fd-border);\n font-size: 11px;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground);\n background: var(--color-fd-secondary);\n line-height: 1.4;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-header-title {\n font-size: 14px;\n font-weight: 600;\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: var(--radius, 6px);\n border: none;\n cursor: pointer;\n background: transparent;\n color: var(--color-fd-muted-foreground, #71717a);\n transition: all 150ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-close-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-search-wrap {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border);\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-search-wrap svg {\n flex-shrink: 0;\n opacity: 0.5;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-input {\n flex: 1;\n background: transparent;\n border: none;\n outline: none;\n color: var(--color-fd-foreground);\n font-size: 14px;\n font-family: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-input::placeholder {\n color: var(--color-fd-muted-foreground);\n opacity: 0.7;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-results {\n flex: 1;\n overflow-y: auto;\n padding: 8px;\n max-height: 360px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 12px;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n text-align: left;\n font-size: 14px;\n font-family: inherit;\n transition:\n background 100ms,\n color 100ms;\n color: var(--color-fd-foreground);\n background: transparent;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result svg {\n flex-shrink: 0;\n opacity: 0.5;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result[data-active=\"true\"] {\n background: var(--color-fd-accent);\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result[data-active=\"true\"] svg {\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result-empty {\n padding: 48px 16px;\n text-align: center;\n color: var(--color-fd-muted-foreground);\n font-size: 14px;\n line-height: 1.6;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-messages {\n flex: 1;\n overflow-y: auto;\n padding: 12px 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n gap: 12px;\n padding: 24px 0;\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-empty-title {\n font-size: 14px;\n font-weight: 500;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-empty-desc {\n font-size: 12px;\n opacity: 0.7;\n text-align: center;\n max-width: 300px;\n line-height: 1.5;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-suggestions {\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n max-width: 360px;\n margin-top: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-suggestion {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n border: 1px solid var(--color-fd-border);\n background: var(--color-fd-background);\n opacity: 0.6;\n color: var(--color-fd-foreground);\n font-size: 13px;\n font-family: inherit;\n cursor: pointer;\n text-align: left;\n line-height: 1.4;\n transition: all 150ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-suggestion:hover {\n background: var(--color-fd-accent);\n border-color: var(--color-fd-ring);\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-msg {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-msg[data-role=\"user\"] {\n align-items: flex-end;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-msg[data-role=\"assistant\"] {\n align-items: flex-start;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-msg-label {\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--color-fd-muted-foreground);\n padding: 0 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-user {\n background: var(--color-fd-primary);\n color: var(--color-fd-primary-foreground);\n padding: 8px 14px;\n border-radius: 14px;\n font-size: 13px;\n line-height: 1.5;\n max-width: 85%;\n word-break: break-word;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai {\n background: var(--color-fd-muted, rgba(255, 255, 255, 0.04));\n padding: 10px 14px;\n border-radius: var(--radius, 14px);\n font-size: 13px;\n line-height: 1.6;\n max-width: 95%;\n word-break: break-word;\n animation: fd-ai-msg-in 300ms ease-out;\n}\n\n@keyframes fd-ai-msg-in {\n from { opacity: 0; transform: translateY(6px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-chat-footer {\n padding: 8px 12px 12px;\n border-top: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-clear-btn {\n font-size: 11px;\n color: var(--color-fd-muted-foreground);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 2px 8px;\n border-radius: 4px;\n font-family: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-clear-btn:hover {\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-input-wrap {\n display: flex;\n align-items: center;\n gap: 8px;\n background: var(--color-fd-muted);\n border-radius: 10px;\n padding: 4px 4px 4px 14px;\n border: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n border: none;\n transition: all 150ms;\n cursor: default;\n background: var(--color-fd-muted);\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-send-btn[data-active=\"true\"] {\n cursor: pointer;\n background: var(--color-fd-primary);\n color: var(--color-fd-primary-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-loader {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n animation: fd-ai-loader-in 300ms ease-out;\n}\n\n@keyframes fd-ai-loader-in {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-loader-shimmer-text {\n font-size: 13px;\n font-weight: 500;\n background: linear-gradient(to right, var(--color-fd-muted-foreground, #888) 40%, var(--color-fd-foreground, #fff) 60%, var(--color-fd-muted-foreground, #888) 80%);\n background-size: 200% auto;\n background-clip: text;\n -webkit-background-clip: text;\n color: transparent;\n animation: fd-ai-shimmer-text 3s linear infinite;\n}\n\n@keyframes fd-ai-shimmer-text {\n 0% { background-position: 150% center; }\n 100% { background-position: -150% center; }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-loader-typing-dots {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-loader-typing-dot {\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-typing 1s infinite;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-loader-typing-dot:nth-child(2) { animation-delay: 250ms; }\n#nd-docs-layout[data-fd-framework] .fd-ai-loader-typing-dot:nth-child(3) { animation-delay: 500ms; }\n\n@keyframes fd-ai-typing {\n 0%, 100% { transform: translateY(0); opacity: 0.5; }\n 50% { transform: translateY(-2px); opacity: 1; }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-streaming::after {\n content: \"\";\n display: inline-block;\n width: 2px;\n height: 1em;\n background: var(--color-fd-primary, #6366f1);\n margin-left: 2px;\n vertical-align: text-bottom;\n animation: fd-ai-cursor-blink 0.8s step-end infinite;\n}\n\n@keyframes fd-ai-cursor-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0; }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai code {\n background: var(--color-fd-muted, #1a1a2e);\n padding: 2px 6px;\n border-radius: var(--radius, 4px);\n font-size: 0.875em;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai a {\n color: var(--color-fd-primary, #6366f1);\n text-decoration: underline;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai .fd-ai-code-block code {\n background: transparent;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai .fd-table-wrapper {\n margin: 8px 0;\n overflow: auto;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius, 6px);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n margin: 0;\n font-size: 13px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai th,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai td {\n border: 0;\n border-right: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n padding: 6px 12px;\n text-align: left;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai tr > :last-child {\n border-right: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai tbody tr:last-child td {\n border-bottom: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai th {\n background: var(--color-fd-muted, #1a1a2e);\n font-weight: 600;\n font-size: 12px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h1,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h2,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h3,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h4,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h5,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h6 {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h1 {\n font-size: 1.25rem;\n margin: 14px 0 7px;\n line-height: 1.25;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h2 {\n font-size: 1.125rem;\n margin: 12px 0 6px;\n line-height: 1.3;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h3 {\n font-size: 1rem;\n font-weight: 600;\n margin: 10px 0 4px;\n line-height: 1.4;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h4 {\n font-size: 0.9375rem;\n margin: 8px 0 4px;\n line-height: 1.4;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h5,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h6 {\n font-size: 0.8125rem;\n margin: 8px 0 4px;\n line-height: 1.45;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai strong {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai em {\n font-style: italic;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai p {\n margin: 0 0 6px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai br {\n content: \"\";\n display: block;\n margin-top: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai ul,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai ol {\n margin: 6px 0 8px;\n padding-left: 1.25rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai li {\n margin: 3px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai blockquote {\n margin: 8px 0;\n padding: 6px 0 6px 12px;\n border-left: 2px solid var(--color-fd-border, rgba(255, 255, 255, 0.16));\n color: var(--color-fd-muted-foreground, #a1a1aa);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai blockquote p:last-child {\n margin-bottom: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai .fd-ai-hr {\n margin: 12px 0;\n border: none;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.12));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai del {\n color: var(--color-fd-muted-foreground, #a1a1aa);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai .fd-ai-task-list-item {\n list-style: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai .fd-ai-task-checkbox {\n width: 0.875rem;\n height: 0.875rem;\n margin: 0 0.45rem 0 -1.25rem;\n vertical-align: -0.12em;\n accent-color: var(--color-fd-primary, #6366f1);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai img {\n display: block;\n max-width: 100%;\n height: auto;\n margin: 8px 0;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.12));\n border-radius: var(--radius, 4px);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai pre {\n margin: 8px 0;\n border-radius: 0;\n border: none;\n background: transparent;\n padding: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-block {\n --sh-class: #8be9fd;\n --sh-identifier: #c9d1d9;\n --sh-keyword: #ff7b72;\n --sh-string: #a5d6ff;\n --sh-property: #79c0ff;\n --sh-entity: #7ee787;\n --sh-sign: #8b949e;\n --sh-comment: #6e7681;\n --sh-jsxliterals: #d2a8ff;\n --sh-space: inherit;\n\n margin: 10px 0;\n border-radius: var(--radius, 8px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-muted, #1a1a2e);\n overflow: hidden;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.08));\n background: color-mix(in srgb, var(--color-fd-muted, #1a1a2e) 80%, black);\n min-height: 32px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-lang {\n font-size: 11px;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground, #71717a);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-copy {\n font-size: 11px;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground, #71717a);\n background: transparent;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius, 4px);\n padding: 2px 8px;\n cursor: pointer;\n transition: all 150ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-copy:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n background: color-mix(\n in srgb,\n var(--color-fd-accent, rgba(255, 255, 255, 0.05)) 60%,\n transparent\n );\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-block pre {\n margin: 0;\n padding: 12px 16px;\n overflow-x: auto;\n background: transparent;\n border: none;\n border-radius: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-block code {\n font-size: 13px;\n line-height: 1.45;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n background: transparent;\n padding: 0;\n border-radius: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-block .sh__line {\n display: block;\n min-height: 1.2em;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-dialog {\n border-radius: 12px;\n box-shadow:\n 0 20px 60px rgba(99, 102, 241, 0.08),\n 0 8px 24px rgba(0, 0, 0, 0.12);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-user {\n border-radius: 16px 16px 4px 16px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai {\n border-radius: 16px 16px 16px 4px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-input-wrap {\n border-radius: 10px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-send-btn {\n border-radius: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-btn {\n border-radius: 26px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-suggestion {\n border-radius: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result {\n border-radius: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input-container {\n border-radius: 12px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-send-btn {\n border-radius: 9999px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestion {\n border-radius: 9999px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn {\n border-radius: 16px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-close-btn {\n border-radius: 9999px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-block {\n border-radius: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-copy {\n border-radius: 4px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-btn {\n position: fixed;\n z-index: 9997;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 12px;\n height: 40px;\n border-radius: 16px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: color-mix(in srgb, var(--color-fd-secondary, #f4f4f5) 80%, transparent);\n backdrop-filter: blur(4px);\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n font-size: var(--fd-small-size, 0.875rem);\n font-family: var(--fd-font-sans, inherit);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);\n transition:\n transform 150ms,\n background 150ms,\n color 150ms;\n animation: fd-ai-fade-in 300ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n transform: scale(1.03);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-btn:active {\n transform: scale(0.97);\n}\n\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-floating-btn,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-floating-btn,\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-fm-trigger-btn {\n background: color-mix(in srgb, var(--color-fd-secondary, rgba(255, 255, 255, 0.08)) 90%, transparent);\n color: var(--color-fd-foreground, #e4e4e7);\n border-color: var(--color-fd-border, rgba(255, 255, 255, 0.12));\n}\n\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-floating-btn:hover,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-floating-btn:hover,\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn:hover,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-fm-trigger-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger {\n position: fixed;\n z-index: 9997;\n cursor: pointer;\n animation: fd-ai-fade-in 300ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger .ask-ai-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 12px;\n height: 40px;\n border-radius: 16px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: color-mix(in srgb, var(--color-fd-secondary, #f4f4f5) 80%, transparent);\n backdrop-filter: blur(4px);\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n font-size: var(--fd-small-size, 0.875rem);\n font-family: var(--fd-font-sans, inherit);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);\n transition: transform 150ms, background 150ms, color 150ms;\n}\n\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger .ask-ai-trigger,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-floating-trigger .ask-ai-trigger {\n background: color-mix(in srgb, var(--color-fd-secondary, rgba(255, 255, 255, 0.08)) 90%, transparent);\n color: var(--color-fd-foreground, #e4e4e7);\n border-color: var(--color-fd-border, rgba(255, 255, 255, 0.12));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger .ask-ai-trigger:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n transform: scale(1.03);\n}\n\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger .ask-ai-trigger:hover,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-floating-trigger .ask-ai-trigger:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger .ask-ai-trigger:active {\n transform: scale(0.97);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-fixed {\n position: fixed;\n z-index: 9997;\n animation: fd-ai-fade-in 200ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger--static {\n position: static;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-overlay {\n position: fixed;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n background: color-mix(in srgb, var(--color-fd-background, #000) 80%, transparent);\n backdrop-filter: blur(8px);\n z-index: 9998;\n padding: 0 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-overlay--animate {\n animation: fd-ai-fade-in 200ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-topbar {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n width: min(800px, 100%);\n padding: 12px 0;\n position: sticky;\n top: 0;\n z-index: 2;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--radius, 9999px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-secondary, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-foreground, #e4e4e7);\n cursor: pointer;\n transition: all 150ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-close-btn:hover {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.1));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-messages {\n flex: 1;\n overflow-y: auto;\n width: min(800px, 100%);\n padding: 24px 0 120px;\n mask-image: linear-gradient(\n to bottom,\n transparent,\n white 3rem,\n white calc(100% - 8rem),\n transparent 100%\n );\n -webkit-mask-image: linear-gradient(\n to bottom,\n transparent,\n white 3rem,\n white calc(100% - 8rem),\n transparent 100%\n );\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-messages-inner {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg {\n display: flex;\n flex-direction: column;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-label {\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 4px;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-label[data-role=\"assistant\"] {\n color: var(--color-fd-primary, #6366f1);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content {\n font-size: 14px;\n line-height: 1.7;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content code {\n background: var(--color-fd-muted, #1a1a2e);\n padding: 2px 6px;\n border-radius: var(--radius, 4px);\n font-size: 0.875em;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content .fd-ai-code-block code {\n background: transparent;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content a {\n color: var(--color-fd-primary, #6366f1);\n text-decoration: underline;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content .fd-table-wrapper {\n margin: 8px 0;\n overflow: auto;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius, 6px);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n margin: 0;\n font-size: 13px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content th,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content td {\n border: 0;\n border-right: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n padding: 6px 12px;\n text-align: left;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content tr > :last-child {\n border-right: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content tbody tr:last-child td {\n border-bottom: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content th {\n background: var(--color-fd-muted, #1a1a2e);\n font-weight: 600;\n font-size: 12px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h1,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h2,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h3,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h4,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h5,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h6 {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h1 {\n font-size: 1.375rem;\n margin: 18px 0 9px;\n line-height: 1.25;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h2 {\n font-size: 1.25rem;\n margin: 16px 0 8px;\n line-height: 1.3;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h3 {\n font-size: 1.0625rem;\n font-weight: 600;\n margin: 12px 0 6px;\n line-height: 1.4;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h4 {\n font-size: 1rem;\n margin: 10px 0 4px;\n line-height: 1.4;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h5,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h6 {\n font-size: 0.875rem;\n margin: 10px 0 4px;\n line-height: 1.45;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content strong {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content em {\n font-style: italic;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content p {\n margin: 0 0 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content br {\n content: \"\";\n display: block;\n margin-top: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content ul,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content ol {\n margin: 8px 0 10px;\n padding-left: 1.35rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content li {\n margin: 4px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content blockquote {\n margin: 10px 0;\n padding: 7px 0 7px 14px;\n border-left: 2px solid var(--color-fd-border, rgba(255, 255, 255, 0.16));\n color: var(--color-fd-muted-foreground, #a1a1aa);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content blockquote p:last-child {\n margin-bottom: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content .fd-ai-hr {\n margin: 14px 0;\n border: none;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.12));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content del {\n color: var(--color-fd-muted-foreground, #a1a1aa);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content .fd-ai-task-list-item {\n list-style: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content .fd-ai-task-checkbox {\n width: 0.9rem;\n height: 0.9rem;\n margin: 0 0.5rem 0 -1.35rem;\n vertical-align: -0.12em;\n accent-color: var(--color-fd-primary, #6366f1);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content img {\n display: block;\n max-width: 100%;\n height: auto;\n margin: 10px 0;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.12));\n border-radius: var(--radius, 4px);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content pre {\n margin: 8px 0;\n border-radius: 0;\n border: none;\n background: transparent;\n padding: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input-bar {\n position: fixed;\n z-index: 9999;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input-bar--open {\n bottom: 16px;\n left: 50%;\n transform: translateX(-50%);\n width: min(800px, calc(100vw - 32px));\n animation: fd-ai-fade-in 200ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input-container {\n display: flex;\n flex-direction: column;\n border-radius: var(--radius, 12px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-background, #0c0c0c);\n box-shadow: 0 20px 60px color-mix(in srgb, var(--color-fd-background, #000) 70%, transparent);\n overflow: hidden;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input-wrap {\n display: flex;\n align-items: flex-start;\n padding-right: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input {\n flex: 1;\n padding: 16px;\n background: transparent;\n border: none;\n outline: none;\n resize: none;\n color: var(--color-fd-foreground, #e4e4e7);\n font-size: 14px;\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n line-height: 1.5;\n min-height: 0;\n max-height: 120px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input::placeholder {\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 12px;\n width: 32px;\n height: 32px;\n border-radius: 9999px;\n border: none;\n cursor: default;\n transition: all 150ms;\n background: var(--color-fd-secondary, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-send-btn[data-active=\"true\"] {\n cursor: pointer;\n background: var(--color-fd-primary, #6366f1);\n color: var(--color-fd-primary-foreground, #fff);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestions-area {\n padding: 12px 16px 4px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestions-label {\n font-size: 12px;\n font-weight: 500;\n color: var(--color-fd-muted-foreground, #71717a);\n margin-bottom: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestions {\n display: flex;\n gap: 8px;\n overflow-x: auto;\n padding-bottom: 4px;\n mask-image: linear-gradient(\n to right,\n transparent 0%,\n black 1rem,\n black calc(100% - 1rem),\n transparent 100%\n );\n -webkit-mask-image: linear-gradient(\n to right,\n transparent 0%,\n black 1rem,\n black calc(100% - 1rem),\n transparent 100%\n );\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestion {\n flex-shrink: 0;\n white-space: nowrap;\n padding: 6px 14px;\n font-size: 12px;\n font-family: inherit;\n border-radius: 9999px;\n border: 1px solid\n color-mix(in srgb, var(--color-fd-border, rgba(255, 255, 255, 0.1)) 50%, transparent);\n background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 30%, transparent);\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n transition: all 200ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestion:hover {\n background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 50%, transparent);\n color: var(--color-fd-foreground, #e4e4e7);\n border-color: var(--color-fd-border, rgba(255, 255, 255, 0.1));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-footer-bar {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px 16px;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n background: color-mix(\n in srgb,\n var(--color-fd-accent, rgba(255, 255, 255, 0.03)) 40%,\n transparent\n );\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-clear-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-family: inherit;\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n transition: color 200ms;\n padding: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-clear-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-clear-btn[aria-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-footer-hint {\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 12px;\n height: 40px;\n border-radius: 16px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: color-mix(in srgb, var(--color-fd-secondary, #f4f4f5) 80%, transparent);\n backdrop-filter: blur(4px);\n color: var(--color-fd-muted-foreground, #71717a);\n font-family: inherit;\n font-size: 14px;\n cursor: pointer;\n box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);\n transition:\n transform 150ms,\n background 150ms,\n color 150ms;\n animation: fd-ai-fade-in 300ms ease-out;\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n transform: scale(1.03);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn:active {\n transform: scale(0.97);\n}\n"; +const farmDocsBrowserCss = ":root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-black: #000;\n --spacing: 0.25rem;\n --breakpoint-sm: 40rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --blur-xs: 4px;\n --blur-sm: 8px;\n --blur-md: 12px;\n --blur-lg: 16px;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-fd-background: hsl(0, 0%, 96%);\n --color-fd-foreground: hsl(0, 0%, 3.9%);\n --color-fd-muted: hsl(0, 0%, 96.1%);\n --color-fd-muted-foreground: hsl(0, 0%, 45.1%);\n --color-fd-popover: hsl(0, 0%, 98%);\n --color-fd-popover-foreground: hsl(0, 0%, 15.1%);\n --color-fd-card: hsl(0, 0%, 94.7%);\n --color-fd-card-foreground: hsl(0, 0%, 3.9%);\n --color-fd-border: hsla(0, 0%, 80%, 50%);\n --color-fd-primary: hsl(0, 0%, 9%);\n --color-fd-primary-foreground: hsl(0, 0%, 98%);\n --color-fd-secondary: hsl(0, 0%, 93.1%);\n --color-fd-secondary-foreground: hsl(0, 0%, 9%);\n --color-fd-accent: hsla(0, 0%, 82%, 50%);\n --color-fd-accent-foreground: hsl(0, 0%, 9%);\n --color-fd-ring: hsl(0, 0%, 63.9%);\n --color-fd-overlay: hsla(0, 0%, 0%, 0.2);\n --color-fd-info: oklch(62.3% 0.214 259.815);\n --color-fd-warning: oklch(76.9% 0.188 70.08);\n --color-fd-error: oklch(63.7% 0.237 25.331);\n --color-fd-success: oklch(72.3% 0.219 149.579);\n --color-fd-idea: oklch(70.5% 0.209 60.849);\n --color-fd-diff-remove: rgba(200, 10, 100, 0.12);\n --color-fd-diff-remove-symbol: rgb(230, 10, 100);\n --color-fd-diff-add: rgba(14, 180, 100, 0.1);\n --color-fd-diff-add-symbol: rgb(10, 200, 100);\n --animate-fd-fade-in: fd-fade-in 300ms ease;\n --animate-fd-fade-out: fd-fade-out 300ms ease;\n --animate-fd-dialog-in: fd-dialog-in 300ms cubic-bezier(0.16, 1, 0.3, 1);\n --animate-fd-dialog-out: fd-dialog-out 300ms cubic-bezier(0.16, 1, 0.3, 1);\n --animate-fd-popover-in: fd-popover-in 100ms ease;\n --animate-fd-popover-out: fd-popover-out 100ms ease;\n --animate-fd-enterFromLeft: fd-enterFromLeft 250ms ease;\n --animate-fd-enterFromRight: fd-enterFromRight 250ms ease;\n --animate-fd-sidebar-in: fd-sidebar-in 250ms ease;\n --animate-fd-sidebar-out: fd-sidebar-out 250ms ease;\n --animate-fd-exitToLeft: fd-exitToLeft 250ms ease;\n --animate-fd-exitToRight: fd-exitToRight 250ms ease;\n --animate-fd-collapsible-down: fd-collapsible-down 150ms cubic-bezier(0.45, 0, 0.55, 1);\n --animate-fd-collapsible-up: fd-collapsible-up 150ms cubic-bezier(0.45, 0, 0.55, 1);\n --animate-fd-accordion-down: fd-accordion-down 200ms ease-out;\n --animate-fd-accordion-up: fd-accordion-up 200ms ease-out;\n --animate-fd-nav-menu-in: fd-nav-menu-in 200ms ease;\n --animate-fd-nav-menu-out: fd-nav-menu-out 200ms ease;\n }\n*, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\nhtml, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\nhr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\nh1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\na {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\nb, strong {\n font-weight: bolder;\n }\ncode, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\nsmall {\n font-size: 80%;\n }\nsub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\nsub {\n bottom: -0.25em;\n }\nsup {\n top: -0.5em;\n }\ntable {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n:-moz-focusring {\n outline: auto;\n }\nprogress {\n vertical-align: baseline;\n }\nsummary {\n display: list-item;\n }\nol, ul, menu {\n list-style: none;\n }\nimg, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\nimg, video {\n max-width: 100%;\n height: auto;\n }\nbutton, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n:where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n:where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n::file-selector-button {\n margin-inline-end: 4px;\n }\n::placeholder {\n opacity: 1;\n }\n@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\ntextarea {\n resize: vertical;\n }\n::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n::-webkit-datetime-edit {\n display: inline-flex;\n }\n::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n:-moz-ui-invalid {\n box-shadow: none;\n }\nbutton, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n[hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n.\\@container {\n container-type: inline-size;\n }\n.pointer-events-none {\n pointer-events: none;\n }\n.collapse {\n visibility: collapse;\n }\n.invisible {\n visibility: hidden;\n }\n.visible {\n visibility: visible;\n }\n.fd-step {\n &:before {\n background-color: var(--color-fd-secondary);\n color: var(--color-fd-secondary-foreground);\n content: counter(step);\n counter-increment: step;\n justify-content: center;\n align-items: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n display: flex;\n position: absolute;\n inset-inline-start: calc(var(--spacing) * -4);\n width: calc(var(--spacing) * 8);\n height: calc(var(--spacing) * 8);\n border-radius: calc(infinity * 1px);\n }\n }\n.fd-steps {\n counter-reset: step;\n position: relative;\n margin-inline-start: calc(var(--spacing) * 2);\n border-inline-start-style: var(--tw-border-style);\n border-inline-start-width: 1px;\n padding-inline-start: calc(var(--spacing) * 6);\n @media (width >= 40rem) {\n margin-inline-start: calc(var(--spacing) * 4);\n }\n @media (width >= 40rem) {\n padding-inline-start: calc(var(--spacing) * 7);\n }\n }\n.absolute {\n position: absolute;\n }\n.fixed {\n position: fixed;\n }\n.relative {\n position: relative;\n }\n.static {\n position: static;\n }\n.sticky {\n position: sticky;\n }\n.inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n.inset-x-0 {\n inset-inline: calc(var(--spacing) * 0);\n }\n.inset-x-2 {\n inset-inline: calc(var(--spacing) * 2);\n }\n.inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n.inset-y-2 {\n inset-block: calc(var(--spacing) * 2);\n }\n.inset-s-0 {\n inset-inline-start: calc(var(--spacing) * 0);\n }\n.inset-s-4 {\n inset-inline-start: calc(var(--spacing) * 4);\n }\n.start {\n inset-inline-start: var(--spacing);\n }\n.start-0 {\n inset-inline-start: calc(var(--spacing) * 0);\n }\n.start-3 {\n inset-inline-start: calc(var(--spacing) * 3);\n }\n.start-6 {\n inset-inline-start: calc(var(--spacing) * 6);\n }\n.end-0 {\n inset-inline-end: calc(var(--spacing) * 0);\n }\n.end-2 {\n inset-inline-end: calc(var(--spacing) * 2);\n }\n.inset-e-0 {\n inset-inline-end: calc(var(--spacing) * 0);\n }\n.-top-1\\.5 {\n top: calc(var(--spacing) * -1.5);\n }\n.top-\\(--fd-docs-row-1\\) {\n top: var(--fd-docs-row-1);\n }\n.top-\\(--fd-docs-row-2\\) {\n top: var(--fd-docs-row-2);\n }\n.top-\\(--fd-docs-row-3\\) {\n top: var(--fd-docs-row-3);\n }\n.top-0 {\n top: calc(var(--spacing) * 0);\n }\n.top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n.top-1\\/2 {\n top: calc(1 / 2 * 100%);\n }\n.top-2\\.5 {\n top: calc(var(--spacing) * 2.5);\n }\n.top-3 {\n top: calc(var(--spacing) * 3);\n }\n.top-4 {\n top: calc(var(--spacing) * 4);\n }\n.top-\\[calc\\(--spacing\\(4\\)\\+var\\(--fd-docs-row-3\\)\\)\\] {\n top: calc(calc(var(--spacing) * 4) + var(--fd-docs-row-3));\n }\n.right-2 {\n right: calc(var(--spacing) * 2);\n }\n.bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n.bottom-1\\.5 {\n bottom: calc(var(--spacing) * 1.5);\n }\n.bottom-26 {\n bottom: calc(var(--spacing) * 26);\n }\n.left-1\\/2 {\n left: calc(1 / 2 * 100%);\n }\n.-z-1 {\n z-index: calc(1 * -1);\n }\n.z-2 {\n z-index: 2;\n }\n.z-10 {\n z-index: 10;\n }\n.z-20 {\n z-index: 20;\n }\n.z-30 {\n z-index: 30;\n }\n.z-40 {\n z-index: 40;\n }\n.z-50 {\n z-index: 50;\n }\n.z-\\[-1\\] {\n z-index: -1;\n }\n.col-span-full {\n grid-column: 1 / -1;\n }\n.container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n.-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n.-mx-px {\n margin-inline: -1px;\n }\n.mx-0\\.5 {\n margin-inline: calc(var(--spacing) * 0.5);\n }\n.mx-auto {\n margin-inline: auto;\n }\n.my-0 {\n margin-block: calc(var(--spacing) * 0);\n }\n.my-0\\! {\n margin-block: calc(var(--spacing) * 0) !important;\n }\n.my-0\\.5 {\n margin-block: calc(var(--spacing) * 0.5);\n }\n.my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n.my-6 {\n margin-block: calc(var(--spacing) * 6);\n }\n.my-auto {\n margin-block: auto;\n }\n.-ms-1\\.5 {\n margin-inline-start: calc(var(--spacing) * -1.5);\n }\n.ms-1 {\n margin-inline-start: calc(var(--spacing) * 1);\n }\n.ms-2 {\n margin-inline-start: calc(var(--spacing) * 2);\n }\n.ms-auto {\n margin-inline-start: auto;\n }\n.ms-px {\n margin-inline-start: 1px;\n }\n.-me-0\\.5 {\n margin-inline-end: calc(var(--spacing) * -0.5);\n }\n.-me-1\\.5 {\n margin-inline-end: calc(var(--spacing) * -1.5);\n }\n.-me-2 {\n margin-inline-end: calc(var(--spacing) * -2);\n }\n.me-1 {\n margin-inline-end: calc(var(--spacing) * 1);\n }\n.me-2 {\n margin-inline-end: calc(var(--spacing) * 2);\n }\n.me-auto {\n margin-inline-end: auto;\n }\n.prose {\n color: var(--tw-prose-body);\n max-width: none;\n font-size: 1rem;\n line-height: 1.75rem;\n :where([class~=\"lead\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-size: 1.25em;\n line-height: 1.6;\n margin-top: 1.2em;\n margin-bottom: 1.2em;\n color: var(--tw-prose-lead);\n }\n :where(ul):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-inline-start: 1rem;\n list-style-type: disc;\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n }\n :where(li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n }\n :where(ol > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-inline-start: 0.375em;\n }\n :where(ul > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding-inline-start: 0;\n }\n :where(.prose > ul > li p):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n }\n :where(.prose > ul > li > p:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n }\n :where(.prose > ul > li > p:last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-bottom: 1.25em;\n }\n :where(.prose > ol > li > p:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n }\n :where(.prose > ol > li > p:last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-bottom: 1.25em;\n }\n :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.75em;\n margin-bottom: 0.75em;\n }\n :where(dl):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n }\n :where(dt):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n margin-top: 1.25em;\n }\n :where(dd):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0.5em;\n padding-inline-start: 1.625em;\n }\n :where(hr):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-color: var(--tw-prose-hr);\n border-top-width: 1px;\n margin-top: 3em;\n margin-bottom: 3em;\n }\n :where(p):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n }\n :where(strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-bold);\n font-weight: 500;\n }\n :where(a strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(blockquote strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(thead th strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(ol):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: decimal;\n margin-top: 1.25em;\n margin-bottom: 1.25em;\n padding-inline-start: 1.625em;\n }\n :where(ol[type=\"A\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-alpha;\n }\n :where(ol[type=\"a\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-alpha;\n }\n :where(ol[type=\"A\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-alpha;\n }\n :where(ol[type=\"a\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-alpha;\n }\n :where(ol[type=\"I\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-roman;\n }\n :where(ol[type=\"i\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-roman;\n }\n :where(ol[type=\"I\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: upper-roman;\n }\n :where(ol[type=\"i\" s]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: lower-roman;\n }\n :where(ol[type=\"1\"]):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n list-style-type: decimal;\n }\n :where(ol > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::marker {\n font-weight: 400;\n color: var(--tw-prose-counters);\n }\n :where(ul > li):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::marker {\n color: var(--tw-prose-bullets);\n }\n :where(blockquote):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 1.6em;\n margin-bottom: 1.6em;\n padding-inline-start: 1em;\n font-weight: 500;\n font-style: italic;\n color: var(--tw-prose-quotes);\n border-inline-start-width: 0.25rem;\n border-inline-start-color: var(--tw-prose-quote-borders);\n quotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n }\n :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::before {\n content: open-quote;\n }\n :where(blockquote p:last-of-type):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *))::after {\n content: close-quote;\n }\n :where(h1):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 800;\n font-size: var(--text-3xl);\n margin-top: 0;\n margin-bottom: 0.8888889em;\n line-height: 1.1111111;\n }\n :where(h1 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 900;\n color: inherit;\n }\n :where(h2):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-size: 1.5em;\n margin-top: 2em;\n margin-bottom: 1em;\n line-height: 1.3333333;\n font-weight: 600;\n }\n :where(h2 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 800;\n color: inherit;\n }\n :where(h3):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n font-size: 1.25em;\n margin-top: 1.6em;\n margin-bottom: 0.6em;\n line-height: 1.6;\n }\n :where(h3 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 700;\n color: inherit;\n }\n :where(h4):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n margin-top: 1.5em;\n margin-bottom: 0.5em;\n line-height: 1.5;\n }\n :where(h4 strong):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-weight: 700;\n color: inherit;\n }\n :where(hr + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n }\n :where(h2 + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n }\n :where(h3 + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n }\n :where(h4 + *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n }\n :where(img):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n }\n :where(picture):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n display: block;\n margin-top: 2em;\n margin-bottom: 2em;\n }\n :where(picture > img):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n }\n :where(video):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n }\n :where(kbd):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-size: 0.875em;\n border-radius: 0.3125rem;\n padding-top: 0.1875em;\n padding-inline-end: 0.375em;\n padding-bottom: 0.1875em;\n padding-inline-start: 0.375em;\n font-weight: 500;\n font-family: inherit;\n color: var(--tw-prose-kbd);\n box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);\n }\n :where(code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n padding: 3px;\n border: solid 1px;\n font-size: 13px;\n border-color: var(--color-fd-border);\n border-radius: 5px;\n font-weight: 400;\n background: var(--color-fd-muted);\n color: var(--tw-prose-code);\n }\n :where(a code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(h1 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n font-size: var(--text-2xl);\n }\n :where(h2 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n font-size: 0.875em;\n }\n :where(h3 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n font-size: 0.9em;\n }\n :where(h4 code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(blockquote code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(thead th code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: inherit;\n }\n :where(thead th):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-headings);\n font-weight: 600;\n }\n :where(figure):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 2em;\n margin-bottom: 2em;\n }\n :where(figure > *):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n margin-bottom: 0;\n }\n :where(figcaption):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-captions);\n font-size: 0.875em;\n line-height: 1.4285714;\n margin-top: 0.8571429em;\n }\n :where(a:not([data-card])):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n color: var(--tw-prose-links);\n transition: opacity .2s;\n font-weight: 500;\n text-decoration: underline;\n text-underline-offset: 3.5px;\n text-decoration-color: var(--color-fd-primary);\n text-decoration-thickness: 1.5px;\n }\n :where(a:not([data-card]):hover):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n opacity: 80%;\n }\n --tw-prose-body: color-mix(in srgb, hsl(0, 0%, 3.9%) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-prose-body: color-mix(in oklab, var(--color-fd-foreground) 90%, transparent);\n }\n --tw-prose-headings: var(--color-fd-foreground);\n --tw-prose-lead: var(--color-fd-foreground);\n --tw-prose-links: var(--color-fd-foreground);\n --tw-prose-bold: var(--color-fd-foreground);\n --tw-prose-counters: var(--color-fd-muted-foreground);\n --tw-prose-bullets: var(--color-fd-muted-foreground);\n --tw-prose-hr: var(--color-fd-border);\n --tw-prose-quotes: var(--color-fd-foreground);\n --tw-prose-quote-borders: var(--color-fd-border);\n --tw-prose-captions: var(--color-fd-foreground);\n --tw-prose-code: var(--color-fd-foreground);\n --tw-prose-th-borders: var(--color-fd-border);\n --tw-prose-td-borders: var(--color-fd-border);\n --tw-prose-kbd: var(--color-fd-foreground);\n --tw-prose-kbd-shadows: color-mix(in srgb, hsl(0, 0%, 9%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-prose-kbd-shadows: color-mix(in oklab, var(--color-fd-primary) 50%, transparent);\n }\n :where(.prose > :first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-top: 0;\n }\n :where(.prose > :last-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n margin-bottom: 0;\n }\n :where(table):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n font-size: 0.875em;\n line-height: 1.7142857;\n width: 100%;\n table-layout: auto;\n margin-top: 2em;\n margin-bottom: 2em;\n border-collapse: separate;\n border-spacing: 0;\n background: var(--color-fd-card);\n border-radius: var(--radius-lg);\n border: 1px solid var(--color-fd-border);\n overflow: hidden;\n }\n :where(th):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n text-align: start;\n padding: calc(var(--spacing) * 2.5);\n border-inline-start: 1px solid var(--color-fd-border);\n background: var(--color-fd-muted);\n }\n :where(th:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-inline-start: none;\n }\n :where(th:not(tr:last-child *), td:not(tr:last-child *)):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-bottom: 1px solid var(--color-fd-border);\n }\n :where(td):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n text-align: start;\n border-inline-start: 1px solid var(--color-fd-border);\n padding: calc(var(--spacing) * 2.5);\n }\n :where(td:first-child):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-inline-start: none;\n }\n :where(tfoot th, tfoot td):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-top-width: 1px;\n border-top-color: var(--tw-prose-th-borders);\n }\n :where(thead th, thead td):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)) {\n border-bottom-width: 1px;\n border-bottom-color: var(--tw-prose-th-borders);\n }\n }\n.prose-no-margin {\n & > :first-child {\n margin-top: 0;\n }\n & > :last-child {\n margin-bottom: 0;\n }\n }\n.mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n.mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n.mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n.mt-px {\n margin-top: 1px;\n }\n.-mb-px {\n margin-bottom: -1px;\n }\n.mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n.mb-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n.mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n.mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n.mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n.mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n.mb-auto {\n margin-bottom: auto;\n }\n.fd-scroll-container {\n &::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n }\n &::-webkit-scrollbar-thumb {\n border-radius: 5px;\n background: var(--color-fd-border);\n }\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n &::-webkit-scrollbar-corner {\n display: none;\n }\n }\n.block {\n display: block;\n }\n.contents {\n display: contents;\n }\n.flex {\n display: flex;\n }\n.grid {\n display: grid;\n }\n.hidden {\n display: none;\n }\n.inline {\n display: inline;\n }\n.inline-flex {\n display: inline-flex;\n }\n.table {\n display: table;\n }\n.size-1 {\n width: calc(var(--spacing) * 1);\n height: calc(var(--spacing) * 1);\n }\n.size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n.size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n.size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n.size-4\\.5 {\n width: calc(var(--spacing) * 4.5);\n height: calc(var(--spacing) * 4.5);\n }\n.size-5 {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n.size-6\\.5 {\n width: calc(var(--spacing) * 6.5);\n height: calc(var(--spacing) * 6.5);\n }\n.size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n.size-full {\n width: 100%;\n height: 100%;\n }\n.h-\\(--fd-animated-height\\) {\n height: var(--fd-animated-height);\n }\n.h-\\(--fd-header-height\\) {\n height: var(--fd-header-height);\n }\n.h-\\(--fd-toc-popover-height\\) {\n height: var(--fd-toc-popover-height);\n }\n.h-\\(--radix-navigation-menu-viewport-height\\) {\n height: var(--radix-navigation-menu-viewport-height);\n }\n.h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n.h-8\\.5 {\n height: calc(var(--spacing) * 8.5);\n }\n.h-9 {\n height: calc(var(--spacing) * 9);\n }\n.h-9\\.5 {\n height: calc(var(--spacing) * 9.5);\n }\n.h-10 {\n height: calc(var(--spacing) * 10);\n }\n.h-14 {\n height: calc(var(--spacing) * 14);\n }\n.h-\\[400px\\] {\n height: 400px;\n }\n.h-\\[calc\\(var\\(--fd-docs-height\\)-var\\(--fd-docs-row-1\\)\\)\\] {\n height: calc(var(--fd-docs-height) - var(--fd-docs-row-1));\n }\n.h-\\[calc\\(var\\(--fd-docs-height\\)-var\\(--fd-docs-row-2\\)\\)\\] {\n height: calc(var(--fd-docs-height) - var(--fd-docs-row-2));\n }\n.h-\\[calc\\(var\\(--fd-docs-height\\)-var\\(--fd-docs-row-3\\)\\)\\] {\n height: calc(var(--fd-docs-height) - var(--fd-docs-row-3));\n }\n.h-full {\n height: 100%;\n }\n.h-px {\n height: 1px;\n }\n.max-h-\\(--radix-popover-content-available-height\\) {\n max-height: var(--radix-popover-content-available-height);\n }\n.max-h-20 {\n max-height: calc(var(--spacing) * 20);\n }\n.max-h-\\[50vh\\] {\n max-height: 50vh;\n }\n.max-h-\\[80svh\\] {\n max-height: 80svh;\n }\n.max-h-\\[460px\\] {\n max-height: 460px;\n }\n.max-h-\\[600px\\] {\n max-height: 600px;\n }\n.min-h-\\(--fd-docs-height\\) {\n min-height: var(--fd-docs-height);\n }\n.min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n.min-h-11 {\n min-height: calc(var(--spacing) * 11);\n }\n.w-\\(--fd-sidebar-width\\) {\n width: var(--fd-sidebar-width);\n }\n.w-\\(--fd-toc-width\\) {\n width: var(--fd-toc-width);\n }\n.w-\\(--radix-popover-trigger-width\\) {\n width: var(--radix-popover-trigger-width);\n }\n.w-0 {\n width: calc(var(--spacing) * 0);\n }\n.w-0\\.5 {\n width: calc(var(--spacing) * 0.5);\n }\n.w-1\\.5 {\n width: calc(var(--spacing) * 1.5);\n }\n.w-1\\/4 {\n width: calc(1 / 4 * 100%);\n }\n.w-4 {\n width: calc(var(--spacing) * 4);\n }\n.w-\\[85\\%\\] {\n width: 85%;\n }\n.w-\\[calc\\(100\\%-1rem\\)\\] {\n width: calc(100% - 1rem);\n }\n.w-\\[calc\\(100\\%-var\\(--removed-body-scroll-bar-size\\,0px\\)\\)\\] {\n width: calc(100% - var(--removed-body-scroll-bar-size,0px));\n }\n.w-fit {\n width: fit-content;\n }\n.w-full {\n width: 100%;\n }\n.w-max {\n width: max-content;\n }\n.w-px {\n width: 1px;\n }\n.max-w-\\[98vw\\] {\n max-width: 98vw;\n }\n.max-w-\\[240px\\] {\n max-width: 240px;\n }\n.max-w-\\[380px\\] {\n max-width: 380px;\n }\n.max-w-\\[900px\\] {\n max-width: 900px;\n }\n.max-w-\\[1168px\\] {\n max-width: 1168px;\n }\n.max-w-\\[1200px\\] {\n max-width: 1200px;\n }\n.max-w-\\[1400px\\] {\n max-width: 1400px;\n }\n.max-w-full {\n max-width: 100%;\n }\n.max-w-md {\n max-width: var(--container-md);\n }\n.max-w-screen-sm {\n max-width: var(--breakpoint-sm);\n }\n.max-w-sm {\n max-width: var(--container-sm);\n }\n.max-w-svw {\n max-width: 100svw;\n }\n.min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n.min-w-\\[240px\\] {\n min-width: 240px;\n }\n.min-w-fit {\n min-width: fit-content;\n }\n.min-w-full {\n min-width: 100%;\n }\n.flex-1 {\n flex: 1;\n }\n.shrink {\n flex-shrink: 1;\n }\n.shrink-0 {\n flex-shrink: 0;\n }\n.origin-\\(--radix-popover-content-transform-origin\\) {\n transform-origin: var(--radix-popover-content-transform-origin);\n }\n.origin-\\[top_center\\] {\n transform-origin: top center;\n }\n.-translate-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.-translate-x-\\(--fd-sidebar-width\\) {\n --tw-translate-x: calc(var(--fd-sidebar-width) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.translate-x-2 {\n --tw-translate-x: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.translate-x-\\[calc\\(-50\\%-var\\(--removed-body-scroll-bar-size\\,0px\\)\\/2\\)\\] {\n --tw-translate-x: calc(-50% - var(--removed-body-scroll-bar-size,0px) / 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.-translate-y-full {\n --tw-translate-y: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.translate-y-full {\n --tw-translate-y: 100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n.-rotate-90 {\n rotate: calc(90deg * -1);\n }\n.rotate-180 {\n rotate: 180deg;\n }\n.transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n.animate-fd-fade-in {\n animation: var(--animate-fd-fade-in);\n }\n.animate-pulse {\n animation: var(--animate-pulse);\n }\n.scroll-m-4 {\n scroll-margin: calc(var(--spacing) * 4);\n }\n.scroll-m-20 {\n scroll-margin: calc(var(--spacing) * 20);\n }\n.scroll-m-24 {\n scroll-margin: calc(var(--spacing) * 24);\n }\n.scroll-m-28 {\n scroll-margin: calc(var(--spacing) * 28);\n }\n.list-none {\n list-style-type: none;\n }\n.auto-cols-auto {\n grid-auto-columns: auto;\n }\n.auto-rows-auto {\n grid-auto-rows: auto;\n }\n.grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n.grid-cols-\\[1fr_3fr\\] {\n grid-template-columns: 1fr 3fr;\n }\n.flex-col {\n flex-direction: column;\n }\n.flex-row {\n flex-direction: row;\n }\n.flex-row-reverse {\n flex-direction: row-reverse;\n }\n.flex-wrap {\n flex-wrap: wrap;\n }\n.items-center {\n align-items: center;\n }\n.items-end {\n align-items: flex-end;\n }\n.justify-between {\n justify-content: space-between;\n }\n.justify-center {\n justify-content: center;\n }\n.justify-end {\n justify-content: flex-end;\n }\n.justify-start {\n justify-content: flex-start;\n }\n.gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n.gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n.gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n.gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n.gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n.gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n.gap-3\\.5 {\n gap: calc(var(--spacing) * 3.5);\n }\n.gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n.gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n.gap-y-4 {\n row-gap: calc(var(--spacing) * 4);\n }\n.divide-x {\n :where(& > :not(:last-child)) {\n --tw-divide-x-reverse: 0;\n border-inline-style: var(--tw-border-style);\n border-inline-start-width: calc(1px * var(--tw-divide-x-reverse));\n border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));\n }\n }\n.divide-y {\n :where(& > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n }\n.divide-fd-border {\n :where(& > :not(:last-child)) {\n border-color: var(--color-fd-border);\n }\n }\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n.overflow-auto {\n overflow: auto;\n }\n.overflow-hidden {\n overflow: hidden;\n }\n.overflow-x-auto {\n overflow-x: auto;\n }\n.overflow-x-clip {\n overflow-x: clip;\n }\n.overflow-y-auto {\n overflow-y: auto;\n }\n.overflow-y-hidden {\n overflow-y: hidden;\n }\n.overscroll-contain {\n overscroll-behavior: contain;\n }\n.rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n }\n.rounded-full {\n border-radius: calc(infinity * 1px);\n }\n.rounded-lg {\n border-radius: var(--radius-lg);\n }\n.rounded-md {\n border-radius: var(--radius-md);\n }\n.rounded-none {\n border-radius: 0;\n }\n.rounded-sm {\n border-radius: var(--radius-sm);\n }\n.rounded-xl {\n border-radius: var(--radius-xl);\n }\n.border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n.border-x {\n border-inline-style: var(--tw-border-style);\n border-inline-width: 1px;\n }\n.border-y-0 {\n border-block-style: var(--tw-border-style);\n border-block-width: 0px;\n }\n.border-s {\n border-inline-start-style: var(--tw-border-style);\n border-inline-start-width: 1px;\n }\n.border-e {\n border-inline-end-style: var(--tw-border-style);\n border-inline-end-width: 1px;\n }\n.border-e-0 {\n border-inline-end-style: var(--tw-border-style);\n border-inline-end-width: 0px;\n }\n.border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n.border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n.border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n.border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n.border-none {\n --tw-border-style: none;\n border-style: none;\n }\n.border-fd-foreground\\/10 {\n border-color: color-mix(in srgb, hsl(0, 0%, 3.9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-fd-foreground) 10%, transparent);\n }\n }\n.border-fd-primary {\n border-color: var(--color-fd-primary);\n }\n.border-transparent {\n border-color: transparent;\n }\n.bg-\\(--callout-color\\)\\/50 {\n background-color: var(--callout-color);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--callout-color) 50%, transparent);\n }\n }\n.bg-\\(--shiki-light-bg\\) {\n background-color: var(--shiki-light-bg);\n }\n.bg-fd-accent {\n background-color: var(--color-fd-accent);\n }\n.bg-fd-background {\n background-color: var(--color-fd-background);\n }\n.bg-fd-background\\/60 {\n background-color: color-mix(in srgb, hsl(0, 0%, 96%) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-background) 60%, transparent);\n }\n }\n.bg-fd-background\\/80 {\n background-color: color-mix(in srgb, hsl(0, 0%, 96%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-background) 80%, transparent);\n }\n }\n.bg-fd-border {\n background-color: var(--color-fd-border);\n }\n.bg-fd-card {\n background-color: var(--color-fd-card);\n }\n.bg-fd-foreground\\/10 {\n background-color: color-mix(in srgb, hsl(0, 0%, 3.9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-foreground) 10%, transparent);\n }\n }\n.bg-fd-muted {\n background-color: var(--color-fd-muted);\n }\n.bg-fd-overlay {\n background-color: var(--color-fd-overlay);\n }\n.bg-fd-popover {\n background-color: var(--color-fd-popover);\n }\n.bg-fd-popover\\/60 {\n background-color: color-mix(in srgb, hsl(0, 0%, 98%) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-popover) 60%, transparent);\n }\n }\n.bg-fd-popover\\/80 {\n background-color: color-mix(in srgb, hsl(0, 0%, 98%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-popover) 80%, transparent);\n }\n }\n.bg-fd-primary {\n background-color: var(--color-fd-primary);\n }\n.bg-fd-primary\\/10 {\n background-color: color-mix(in srgb, hsl(0, 0%, 9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-primary) 10%, transparent);\n }\n }\n.bg-fd-secondary {\n background-color: var(--color-fd-secondary);\n }\n.bg-fd-secondary\\/50 {\n background-color: color-mix(in srgb, hsl(0, 0%, 93.1%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-secondary) 50%, transparent);\n }\n }\n.bg-transparent {\n background-color: transparent;\n }\n.mask-\\[linear-gradient\\(to_bottom\\,transparent\\,white_--spacing\\(14\\)\\,white_calc\\(100\\%---spacing\\(14\\)\\)\\,transparent\\)\\] {\n mask-image: linear-gradient(to bottom,transparent,white calc(var(--spacing) * 14),white calc(100% - calc(var(--spacing) * 14)),transparent);\n }\n.mask-\\[linear-gradient\\(to_bottom\\,transparent\\,white_12px\\,white_calc\\(100\\%-12px\\)\\,transparent\\)\\] {\n mask-image: linear-gradient(to bottom,transparent,white 12px,white calc(100% - 12px),transparent);\n }\n.mask-\\[linear-gradient\\(to_bottom\\,transparent\\,white_16px\\,white_calc\\(100\\%-16px\\)\\,transparent\\)\\] {\n mask-image: linear-gradient(to bottom,transparent,white 16px,white calc(100% - 16px),transparent);\n }\n.mask-\\[linear-gradient\\(to_bottom\\,white\\,white_30px\\,transparent_80px\\)\\] {\n mask-image: linear-gradient(to bottom,white,white 30px,transparent 80px);\n }\n.fill-\\(--callout-color\\) {\n fill: var(--callout-color);\n }\n.fill-fd-primary {\n fill: var(--color-fd-primary);\n }\n.fill-fd-primary-foreground {\n fill: var(--color-fd-primary-foreground);\n }\n.stroke-current\\/25 {\n stroke: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n stroke: color-mix(in oklab, currentcolor 25%, transparent);\n }\n }\n.stroke-fd-foreground\\/10 {\n stroke: color-mix(in srgb, hsl(0, 0%, 3.9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n stroke: color-mix(in oklab, var(--color-fd-foreground) 10%, transparent);\n }\n }\n.stroke-fd-primary {\n stroke: var(--color-fd-primary);\n }\n.p-0 {\n padding: calc(var(--spacing) * 0);\n }\n.p-0\\.5 {\n padding: calc(var(--spacing) * 0.5);\n }\n.p-1 {\n padding: calc(var(--spacing) * 1);\n }\n.p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n.p-2 {\n padding: calc(var(--spacing) * 2);\n }\n.p-3 {\n padding: calc(var(--spacing) * 3);\n }\n.p-4 {\n padding: calc(var(--spacing) * 4);\n }\n.px-0\\.5 {\n padding-inline: calc(var(--spacing) * 0.5);\n }\n.px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n.px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n.px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n.px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n.px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n.px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n.px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n.px-8 {\n padding-inline: calc(var(--spacing) * 8);\n }\n.px-px {\n padding-inline: 1px;\n }\n.py-0 {\n padding-block: calc(var(--spacing) * 0);\n }\n.py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n.py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n.py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n.py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n.py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n.py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n.py-3\\.5 {\n padding-block: calc(var(--spacing) * 3.5);\n }\n.py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n.py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n.py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n.py-16 {\n padding-block: calc(var(--spacing) * 16);\n }\n.ps-1 {\n padding-inline-start: calc(var(--spacing) * 1);\n }\n.ps-2 {\n padding-inline-start: calc(var(--spacing) * 2);\n }\n.ps-2\\.5 {\n padding-inline-start: calc(var(--spacing) * 2.5);\n }\n.ps-3 {\n padding-inline-start: calc(var(--spacing) * 3);\n }\n.ps-4 {\n padding-inline-start: calc(var(--spacing) * 4);\n }\n.ps-6 {\n padding-inline-start: calc(var(--spacing) * 6);\n }\n.ps-8 {\n padding-inline-start: calc(var(--spacing) * 8);\n }\n.pe-0 {\n padding-inline-end: calc(var(--spacing) * 0);\n }\n.pe-2 {\n padding-inline-end: calc(var(--spacing) * 2);\n }\n.pe-2\\.5 {\n padding-inline-end: calc(var(--spacing) * 2.5);\n }\n.pe-4 {\n padding-inline-end: calc(var(--spacing) * 4);\n }\n.pt-0 {\n padding-top: calc(var(--spacing) * 0);\n }\n.pt-0\\.5 {\n padding-top: calc(var(--spacing) * 0.5);\n }\n.pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n.pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n.pt-12 {\n padding-top: calc(var(--spacing) * 12);\n }\n.pr-\\(--removed-body-scroll-bar-size\\,0\\) {\n padding-right: var(--removed-body-scroll-bar-size,0);\n }\n.pb-0 {\n padding-bottom: calc(var(--spacing) * 0);\n }\n.pb-1\\.5 {\n padding-bottom: calc(var(--spacing) * 1.5);\n }\n.pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n.pb-24 {\n padding-bottom: calc(var(--spacing) * 24);\n }\n.text-center {\n text-align: center;\n }\n.text-end {\n text-align: end;\n }\n.text-start {\n text-align: start;\n }\n.font-mono {\n font-family: var(--font-mono);\n }\n.text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n.text-6xl {\n font-size: var(--text-6xl);\n line-height: var(--tw-leading, var(--text-6xl--line-height));\n }\n.text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n.text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n.text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n.text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n.text-\\[0\\.8125rem\\] {\n font-size: 0.8125rem;\n }\n.text-\\[0\\.9375rem\\] {\n font-size: 0.9375rem;\n }\n.text-\\[1\\.75em\\] {\n font-size: 1.75em;\n }\n.leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n.font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n.font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n.font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n.text-nowrap {\n text-wrap: nowrap;\n }\n.wrap-anywhere {\n overflow-wrap: anywhere;\n }\n.whitespace-nowrap {\n white-space: nowrap;\n }\n.text-\\(--callout-color\\) {\n color: var(--callout-color);\n }\n.text-fd-accent-foreground {\n color: var(--color-fd-accent-foreground);\n }\n.text-fd-card {\n color: var(--color-fd-card);\n }\n.text-fd-card-foreground {\n color: var(--color-fd-card-foreground);\n }\n.text-fd-foreground {\n color: var(--color-fd-foreground);\n }\n.text-fd-foreground\\/80 {\n color: color-mix(in srgb, hsl(0, 0%, 3.9%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-foreground) 80%, transparent);\n }\n }\n.text-fd-muted-foreground {\n color: var(--color-fd-muted-foreground);\n }\n.text-fd-muted-foreground\\/50 {\n color: color-mix(in srgb, hsl(0, 0%, 45.1%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-muted-foreground) 50%, transparent);\n }\n }\n.text-fd-popover-foreground {\n color: var(--color-fd-popover-foreground);\n }\n.text-fd-popover-foreground\\/80 {\n color: color-mix(in srgb, hsl(0, 0%, 15.1%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-popover-foreground) 80%, transparent);\n }\n }\n.text-fd-primary {\n color: var(--color-fd-primary);\n }\n.text-fd-primary-foreground {\n color: var(--color-fd-primary-foreground);\n }\n.text-fd-primary\\/50 {\n color: color-mix(in srgb, hsl(0, 0%, 9%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-primary) 50%, transparent);\n }\n }\n.text-fd-secondary-foreground {\n color: var(--color-fd-secondary-foreground);\n }\n.line-through {\n text-decoration-line: line-through;\n }\n.underline {\n text-decoration-line: underline;\n }\n.opacity-\\(--opacity\\,0\\) {\n opacity: var(--opacity,0);\n }\n.opacity-0 {\n opacity: 0%;\n }\n.shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n.shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n.shadow-black\\/50 {\n --tw-shadow-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-black) 50%, transparent) var(--tw-shadow-alpha), transparent);\n }\n }\n.outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n.filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n.backdrop-blur-lg {\n --tw-backdrop-blur: blur(var(--blur-lg));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n.backdrop-blur-md {\n --tw-backdrop-blur: blur(var(--blur-md));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n.backdrop-blur-xs {\n --tw-backdrop-blur: blur(var(--blur-xs));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n.transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[clip-path\\] {\n transition-property: clip-path;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[height\\] {\n transition-property: height;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[opacity\\,offset-distance\\] {\n transition-property: opacity,offset-distance;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[opacity\\,translate\\,color\\] {\n transition-property: opacity,translate,color;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[opacity\\,translate\\] {\n transition-property: opacity,translate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[width\\,height\\] {\n transition-property: width,height;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-\\[width\\,inset-block\\,translate\\,background-color\\] {\n transition-property: width,inset-block,translate,background-color;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n.duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n.duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n.duration-250 {\n --tw-duration: 250ms;\n transition-duration: 250ms;\n }\n.duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n.duration-400 {\n --tw-duration: 400ms;\n transition-duration: 400ms;\n }\n.outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n.select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n.\\[--fd-docs-height\\:100dvh\\] {\n --fd-docs-height: 100dvh;\n }\n.\\[--fd-header-height\\:0px\\] {\n --fd-header-height: 0px;\n }\n.\\[--fd-layout-width\\:1400px\\] {\n --fd-layout-width: 1400px;\n }\n.\\[--fd-sidebar-width\\:0px\\] {\n --fd-sidebar-width: 0px;\n }\n.\\[--fd-toc-popover-height\\:0px\\] {\n --fd-toc-popover-height: 0px;\n }\n.\\[--fd-toc-width\\:0px\\] {\n --fd-toc-width: 0px;\n }\n.\\[grid-area\\:header\\] {\n grid-area: header;\n }\n.\\[grid-area\\:main\\] {\n grid-area: main;\n }\n.\\[grid-area\\:sidebar\\] {\n grid-area: sidebar;\n }\n.\\[grid-area\\:toc-popover\\] {\n grid-area: toc-popover;\n }\n.\\[grid-area\\:toc\\] {\n grid-area: toc;\n }\n.\\[offset-distance\\:var\\(--offset-distance\\,0\\)\\] {\n offset-distance: var(--offset-distance,0);\n }\n.\\[scrollbar-width\\:none\\] {\n scrollbar-width: none;\n }\n.\\*\\:pointer-events-auto {\n :is(& > *) {\n pointer-events: auto;\n }\n }\n.\\*\\:col-start-1 {\n :is(& > *) {\n grid-column-start: 1;\n }\n }\n.\\*\\:row-start-1 {\n :is(& > *) {\n grid-row-start: 1;\n }\n }\n.\\*\\:mx-auto {\n :is(& > *) {\n margin-inline: auto;\n }\n }\n.\\*\\:my-auto {\n :is(& > *) {\n margin-block: auto;\n }\n }\n.\\*\\:flex {\n :is(& > *) {\n display: flex;\n }\n }\n.\\*\\:flex\\! {\n :is(& > *) {\n display: flex !important;\n }\n }\n.\\*\\:w-\\(--fd-sidebar-width\\) {\n :is(& > *) {\n width: var(--fd-sidebar-width);\n }\n }\n.\\*\\:max-w-\\(--fd-layout-width\\) {\n :is(& > *) {\n max-width: var(--fd-layout-width);\n }\n }\n.\\*\\:max-w-\\[900px\\] {\n :is(& > *) {\n max-width: 900px;\n }\n }\n.\\*\\:max-w-\\[1285px\\] {\n :is(& > *) {\n max-width: 1285px;\n }\n }\n.\\*\\:flex-col {\n :is(& > *) {\n flex-direction: column;\n }\n }\n.\\*\\:flex-col\\! {\n :is(& > *) {\n flex-direction: column !important;\n }\n }\n.\\*\\:gap-0\\! {\n :is(& > *) {\n gap: calc(var(--spacing) * 0) !important;\n }\n }\n.\\*\\:gap-0\\.5\\! {\n :is(& > *) {\n gap: calc(var(--spacing) * 0.5) !important;\n }\n }\n.\\*\\:rounded-full {\n :is(& > *) {\n border-radius: calc(infinity * 1px);\n }\n }\n.\\*\\:rounded-lg {\n :is(& > *) {\n border-radius: var(--radius-lg);\n }\n }\n.\\*\\:rounded-md {\n :is(& > *) {\n border-radius: var(--radius-md);\n }\n }\n.\\*\\:border-b {\n :is(& > *) {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n.not-last\\:mb-2 {\n &:not(*:last-child) {\n margin-bottom: calc(var(--spacing) * 2);\n }\n }\n.group-data-\\[state\\=active\\]\\:bg-fd-primary {\n &:is(:where(.group)[data-state=\"active\"] *) {\n background-color: var(--color-fd-primary);\n }\n }\n.group-data-\\[state\\=open\\]\\:rotate-90 {\n &:is(:where(.group)[data-state=\"open\"] *) {\n rotate: 90deg;\n }\n }\n.group-data-\\[state\\=open\\]\\:rotate-180 {\n &:is(:where(.group)[data-state=\"open\"] *) {\n rotate: 180deg;\n }\n }\n.peer-hover\\:opacity-100 {\n &:is(:where(.peer):hover ~ *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n.placeholder\\:text-fd-muted-foreground {\n &::placeholder {\n color: var(--color-fd-muted-foreground);\n }\n }\n.before\\:absolute {\n &::before {\n content: var(--tw-content);\n position: absolute;\n }\n }\n.before\\:inset-y-1 {\n &::before {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * 1);\n }\n }\n.before\\:inset-s-2\\.5 {\n &::before {\n content: var(--tw-content);\n inset-inline-start: calc(var(--spacing) * 2.5);\n }\n }\n.before\\:start-2\\.5 {\n &::before {\n content: var(--tw-content);\n inset-inline-start: calc(var(--spacing) * 2.5);\n }\n }\n.before\\:w-px {\n &::before {\n content: var(--tw-content);\n width: 1px;\n }\n }\n.before\\:bg-fd-border {\n &::before {\n content: var(--tw-content);\n background-color: var(--color-fd-border);\n }\n }\n.before\\:content-\\[\\'\\'\\] {\n &::before {\n --tw-content: '';\n content: var(--tw-content);\n }\n }\n.first\\:ms-0 {\n &:first-child {\n margin-inline-start: calc(var(--spacing) * 0);\n }\n }\n.first\\:mt-0 {\n &:first-child {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n.first\\:pt-0 {\n &:first-child {\n padding-top: calc(var(--spacing) * 0);\n }\n }\n.last\\:me-0 {\n &:last-child {\n margin-inline-end: calc(var(--spacing) * 0);\n }\n }\n.last\\:rounded-b-xl {\n &:last-child {\n border-bottom-right-radius: var(--radius-xl);\n border-bottom-left-radius: var(--radius-xl);\n }\n }\n.last\\:pb-0 {\n &:last-child {\n padding-bottom: calc(var(--spacing) * 0);\n }\n }\n.\\*\\:last\\:border-b-0 {\n :is(& > *) {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n.empty\\:mb-0 {\n &:empty {\n margin-bottom: calc(var(--spacing) * 0);\n }\n }\n.empty\\:hidden {\n &:empty {\n display: none;\n }\n }\n.hover\\:bg-fd-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-fd-accent);\n }\n }\n }\n.hover\\:bg-fd-accent\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsla(0, 0%, 82%, 50%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-accent) 50%, transparent);\n }\n }\n }\n }\n.hover\\:bg-fd-accent\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsla(0, 0%, 82%, 50%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-accent) 80%, transparent);\n }\n }\n }\n }\n.hover\\:bg-fd-primary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsl(0, 0%, 9%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-primary) 80%, transparent);\n }\n }\n }\n }\n.hover\\:text-fd-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--color-fd-accent-foreground);\n }\n }\n }\n.hover\\:text-fd-accent-foreground\\/80 {\n &:hover {\n @media (hover: hover) {\n color: color-mix(in srgb, hsl(0, 0%, 9%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-accent-foreground) 80%, transparent);\n }\n }\n }\n }\n.hover\\:text-fd-popover-foreground\\/50 {\n &:hover {\n @media (hover: hover) {\n color: color-mix(in srgb, hsl(0, 0%, 15.1%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-fd-popover-foreground) 50%, transparent);\n }\n }\n }\n }\n.hover\\:opacity-80 {\n &:hover {\n @media (hover: hover) {\n opacity: 80%;\n }\n }\n }\n.hover\\:transition-none {\n &:hover {\n @media (hover: hover) {\n transition-property: none;\n }\n }\n }\n.focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n.focus-visible\\:ring-fd-ring {\n &:focus-visible {\n --tw-ring-color: var(--color-fd-ring);\n }\n }\n.focus-visible\\:outline-none {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n.focus-visible\\:ring-inset {\n &:focus-visible {\n --tw-ring-inset: inset;\n }\n }\n.disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n.disabled\\:bg-fd-secondary {\n &:disabled {\n background-color: var(--color-fd-secondary);\n }\n }\n.disabled\\:text-fd-secondary-foreground {\n &:disabled {\n color: var(--color-fd-secondary-foreground);\n }\n }\n.disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n.has-focus-visible\\:bg-fd-accent {\n &:has(*:focus-visible) {\n background-color: var(--color-fd-accent);\n }\n }\n.has-data-\\[active\\=true\\]\\:text-fd-primary {\n &:has(*[data-active=\"true\"]) {\n color: var(--color-fd-primary);\n }\n }\n.\\*\\:has-\\[\\+\\:last-child\\[data-empty\\=true\\]\\]\\:border-b-0 {\n :is(& > *) {\n &:has(+:last-child[data-empty=true]) {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n.data-checked\\:text-fd-accent-foreground {\n &[data-checked] {\n color: var(--color-fd-accent-foreground);\n }\n }\n.data-\\[active\\=true\\]\\:bg-fd-primary\\/10 {\n &[data-active=\"true\"] {\n background-color: color-mix(in srgb, hsl(0, 0%, 9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-primary) 10%, transparent);\n }\n }\n }\n.data-\\[active\\=true\\]\\:font-medium {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n.data-\\[active\\=true\\]\\:text-fd-primary {\n &[data-active=\"true\"] {\n color: var(--color-fd-primary);\n }\n }\n.data-\\[active\\=true\\]\\:before\\:absolute {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n position: absolute;\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:inset-y-2\\.5 {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * 2.5);\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:inset-s-2\\.5 {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n inset-inline-start: calc(var(--spacing) * 2.5);\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:start-2\\.5 {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n inset-inline-start: calc(var(--spacing) * 2.5);\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:w-px {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n width: 1px;\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:bg-fd-primary {\n &[data-active=\"true\"] {\n &::before {\n content: var(--tw-content);\n background-color: var(--color-fd-primary);\n }\n }\n }\n.data-\\[active\\=true\\]\\:before\\:content-\\[\\'\\'\\] {\n &[data-active=\"true\"] {\n &::before {\n --tw-content: '';\n content: var(--tw-content);\n }\n }\n }\n.data-\\[active\\=true\\]\\:hover\\:transition-colors {\n &[data-active=\"true\"] {\n &:hover {\n @media (hover: hover) {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n }\n }\n.data-\\[collapsed\\=false\\]\\:hidden {\n &[data-collapsed=\"false\"] {\n display: none;\n }\n }\n.data-\\[column-changed\\=true\\]\\:transition-\\[grid-template-columns\\] {\n &[data-column-changed=\"true\"] {\n transition-property: grid-template-columns;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n.\\*\\:data-\\[empty\\=true\\]\\:border-b-0 {\n :is(& > *) {\n &[data-empty=\"true\"] {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n.data-\\[motion\\=from-end\\]\\:animate-fd-enterFromRight {\n &[data-motion=\"from-end\"] {\n animation: var(--animate-fd-enterFromRight);\n }\n }\n.data-\\[motion\\=from-start\\]\\:animate-fd-enterFromLeft {\n &[data-motion=\"from-start\"] {\n animation: var(--animate-fd-enterFromLeft);\n }\n }\n.data-\\[motion\\=to-end\\]\\:animate-fd-exitToRight {\n &[data-motion=\"to-end\"] {\n animation: var(--animate-fd-exitToRight);\n }\n }\n.data-\\[motion\\=to-start\\]\\:animate-fd-exitToLeft {\n &[data-motion=\"to-start\"] {\n animation: var(--animate-fd-exitToLeft);\n }\n }\n.data-\\[state\\=active\\]\\:border-fd-primary {\n &[data-state=\"active\"] {\n border-color: var(--color-fd-primary);\n }\n }\n.data-\\[state\\=active\\]\\:text-fd-primary {\n &[data-state=\"active\"] {\n color: var(--color-fd-primary);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-accordion-up {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-accordion-up);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-collapsible-up {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-collapsible-up);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-dialog-out {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-dialog-out);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-fade-out {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-fade-out);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-nav-menu-out {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-nav-menu-out);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-popover-out {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-popover-out);\n }\n }\n.data-\\[state\\=closed\\]\\:animate-fd-sidebar-out {\n &[data-state=\"closed\"] {\n animation: var(--animate-fd-sidebar-out);\n }\n }\n.data-\\[state\\=hidden\\]\\:animate-fd-fade-out {\n &[data-state=\"hidden\"] {\n animation: var(--animate-fd-fade-out);\n }\n }\n.data-\\[state\\=inactive\\]\\:hidden {\n &[data-state=\"inactive\"] {\n display: none;\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-accordion-down {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-accordion-down);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-collapsible-down {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-collapsible-down);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-dialog-in {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-dialog-in);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-fade-in {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-fade-in);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-nav-menu-in {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-nav-menu-in);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-popover-in {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-popover-in);\n }\n }\n.data-\\[state\\=open\\]\\:animate-fd-sidebar-in {\n &[data-state=\"open\"] {\n animation: var(--animate-fd-sidebar-in);\n }\n }\n.data-\\[state\\=open\\]\\:bg-fd-accent {\n &[data-state=\"open\"] {\n background-color: var(--color-fd-accent);\n }\n }\n.data-\\[state\\=open\\]\\:bg-fd-accent\\/50 {\n &[data-state=\"open\"] {\n background-color: color-mix(in srgb, hsla(0, 0%, 82%, 50%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-accent) 50%, transparent);\n }\n }\n }\n.data-\\[state\\=open\\]\\:text-fd-accent-foreground {\n &[data-state=\"open\"] {\n color: var(--color-fd-accent-foreground);\n }\n }\n.data-\\[transparent\\=false\\]\\:bg-fd-background\\/80 {\n &[data-transparent=\"false\"] {\n background-color: color-mix(in srgb, hsl(0, 0%, 96%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-background) 80%, transparent);\n }\n }\n }\n.max-xl\\:hidden {\n @media (width < 80rem) {\n display: none;\n }\n }\n.max-lg\\:flex {\n @media (width < 64rem) {\n display: flex;\n }\n }\n.max-lg\\:hidden {\n @media (width < 64rem) {\n display: none;\n }\n }\n.max-lg\\:rounded-b-2xl {\n @media (width < 64rem) {\n border-bottom-right-radius: var(--radius-2xl);\n border-bottom-left-radius: var(--radius-2xl);\n }\n }\n.max-lg\\:shadow-lg {\n @media (width < 64rem) {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n.max-md\\:flex {\n @media (width < 48rem) {\n display: flex;\n }\n }\n.max-md\\:hidden {\n @media (width < 48rem) {\n display: none;\n }\n }\n.max-md\\:rounded-md {\n @media (width < 48rem) {\n border-radius: var(--radius-md);\n }\n }\n.max-md\\:border {\n @media (width < 48rem) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n.max-md\\:bg-fd-secondary {\n @media (width < 48rem) {\n background-color: var(--color-fd-secondary);\n }\n }\n.max-md\\:p-1\\.5 {\n @media (width < 48rem) {\n padding: calc(var(--spacing) * 1.5);\n }\n }\n.max-sm\\:mt-2 {\n @media (width < 40rem) {\n margin-top: calc(var(--spacing) * 2);\n }\n }\n.max-sm\\:hidden {\n @media (width < 40rem) {\n display: none;\n }\n }\n.sm\\:bottom-6 {\n @media (width >= 40rem) {\n bottom: calc(var(--spacing) * 6);\n }\n }\n.sm\\:hidden {\n @media (width >= 40rem) {\n display: none;\n }\n }\n.sm\\:max-w-\\[380px\\] {\n @media (width >= 40rem) {\n max-width: 380px;\n }\n }\n.sm\\:max-w-\\[400px\\] {\n @media (width >= 40rem) {\n max-width: 400px;\n }\n }\n.sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n.sm\\:items-center {\n @media (width >= 40rem) {\n align-items: center;\n }\n }\n.sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n.sm\\:rounded-2xl {\n @media (width >= 40rem) {\n border-radius: var(--radius-2xl);\n }\n }\n.sm\\:border {\n @media (width >= 40rem) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n.sm\\:p-1 {\n @media (width >= 40rem) {\n padding: calc(var(--spacing) * 1);\n }\n }\n.md\\:top-\\[calc\\(50\\%-250px\\)\\] {\n @media (width >= 48rem) {\n top: calc(50% - 250px);\n }\n }\n.md\\:mb-auto {\n @media (width >= 48rem) {\n margin-bottom: auto;\n }\n }\n.md\\:hidden {\n @media (width >= 48rem) {\n display: none;\n }\n }\n.md\\:size-5 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n }\n.md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n.md\\:gap-2 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 2);\n }\n }\n.md\\:px-6 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 6);\n }\n }\n.md\\:pt-8 {\n @media (width >= 48rem) {\n padding-top: calc(var(--spacing) * 8);\n }\n }\n.has-data-\\[collapsed\\=true\\]\\:md\\:flex {\n &:has(*[data-collapsed=\"true\"]) {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n }\n.lg\\:hidden {\n @media (width >= 64rem) {\n display: none;\n }\n }\n.lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n.lg\\:text-sm {\n @media (width >= 64rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n.xl\\:hidden {\n @media (width >= 80rem) {\n display: none;\n }\n }\n.xl\\:px-8 {\n @media (width >= 80rem) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n.xl\\:pt-14 {\n @media (width >= 80rem) {\n padding-top: calc(var(--spacing) * 14);\n }\n }\n.\\@max-xl\\:hidden {\n @container (width < 36rem) {\n display: none;\n }\n }\n.\\@max-lg\\:col-span-full {\n @container (width < 32rem) {\n grid-column: 1 / -1;\n }\n }\n.rtl\\:-translate-x-2 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n.rtl\\:translate-x-full {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n --tw-translate-x: 100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n.rtl\\:rotate-90 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n rotate: 90deg;\n }\n }\n.rtl\\:rotate-180 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n rotate: 180deg;\n }\n }\n.dark\\:bg-\\(--shiki-dark-bg\\) {\n &:where(.dark, .dark *) {\n background-color: var(--shiki-dark-bg);\n }\n }\n.layout\\:\\[--fd-header-height\\:--spacing\\(14\\)\\] {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-header-height: calc(var(--spacing) * 14);\n }\n }\n.max-xl\\:layout\\:\\[--fd-toc-popover-height\\:--spacing\\(10\\)\\] {\n @media (width < 80rem) {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-toc-popover-height: calc(var(--spacing) * 10);\n }\n }\n }\n.max-md\\:layout\\:\\[--fd-header-height\\:--spacing\\(14\\)\\] {\n @media (width < 48rem) {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-header-height: calc(var(--spacing) * 14);\n }\n }\n }\n.md\\:layout\\:\\[--fd-sidebar-width\\:268px\\] {\n @media (width >= 48rem) {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-sidebar-width: 268px;\n }\n }\n }\n.lg\\:layout\\:\\[--fd-header-height\\:--spacing\\(24\\)\\] {\n @media (width >= 64rem) {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-header-height: calc(var(--spacing) * 24);\n }\n }\n }\n.xl\\:layout\\:\\[--fd-toc-width\\:268px\\] {\n @media (width >= 80rem) {\n #nd-docs-layout:has(&), #nd-notebook-layout:has(&), #nd-home-layout:has(&), #nd-flux-layout:has(&) {\n --fd-toc-width: 268px;\n }\n }\n }\n.\\[\\&_svg\\]\\:size-3\\.5 {\n & svg {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n }\n.\\[\\&_svg\\]\\:size-4 {\n & svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n.\\[\\&_svg\\]\\:size-4\\.5 {\n & svg {\n width: calc(var(--spacing) * 4.5);\n height: calc(var(--spacing) * 4.5);\n }\n }\n.\\[\\&_svg\\]\\:size-5 {\n & svg {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n }\n.\\[\\&_svg\\]\\:size-5\\.5 {\n & svg {\n width: calc(var(--spacing) * 5.5);\n height: calc(var(--spacing) * 5.5);\n }\n }\n.\\[\\&_svg\\]\\:size-full {\n & svg {\n width: 100%;\n height: 100%;\n }\n }\n.\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n.\\[\\&_svg\\]\\:text-fd-muted-foreground {\n & svg {\n color: var(--color-fd-muted-foreground);\n }\n }\n.\\[\\&\\>figure\\:only-child\\]\\:-m-4 {\n &>figure:only-child {\n margin: calc(var(--spacing) * -4);\n }\n }\n.\\[\\&\\>figure\\:only-child\\]\\:border-none {\n &>figure:only-child {\n --tw-border-style: none;\n border-style: none;\n }\n }\n.dark {\n --color-fd-background: hsl(0, 0%, 7.04%);\n --color-fd-foreground: hsl(0, 0%, 92%);\n --color-fd-muted: hsl(0, 0%, 12.9%);\n --color-fd-muted-foreground: hsla(0, 0%, 70%, 0.8);\n --color-fd-popover: hsl(0, 0%, 11.6%);\n --color-fd-popover-foreground: hsl(0, 0%, 86.9%);\n --color-fd-card: hsl(0, 0%, 9.8%);\n --color-fd-card-foreground: hsl(0, 0%, 98%);\n --color-fd-border: hsla(0, 0%, 40%, 20%);\n --color-fd-primary: hsl(0, 0%, 98%);\n --color-fd-primary-foreground: hsl(0, 0%, 9%);\n --color-fd-secondary: hsl(0, 0%, 12.9%);\n --color-fd-secondary-foreground: hsl(0, 0%, 92%);\n --color-fd-accent: hsla(0, 0%, 40.9%, 30%);\n --color-fd-accent-foreground: hsl(0, 0%, 90%);\n --color-fd-ring: hsl(0, 0%, 54.9%);\n --color-fd-overlay: hsla(0, 0%, 0%, 0.2);\n}\n.dark #nd-sidebar {\n --color-fd-muted: hsl(0, 0%, 16%);\n --color-fd-secondary: hsl(0, 0%, 18%);\n --color-fd-muted-foreground: hsl(0, 0%, 72%);\n}\n:root {\n --fd-sidebar-drawer-offset: 100%;\n}\n[dir='rtl'] {\n --fd-sidebar-drawer-offset: -100%;\n}\n*, ::after, ::before, ::backdrop, ::file-selector-button {\n border-color: var(--color-fd-border, currentColor);\n }\nbody {\n background-color: var(--color-fd-background);\n color: var(--color-fd-foreground);\n }\n.fd-page-tree-item-name {\n display: inline-flex;\n width: 100%;\n align-items: center;\n gap: calc(var(--spacing) * 1);\n}\n.shiki:not(.not-fumadocs-codeblock *) {\n --padding-left: calc(var(--spacing) * 4);\n --padding-right: calc(var(--spacing) * 4);\n code span {\n color: var(--shiki-light);\n font-style: var(--shiki-light-font-style);\n }\n .line {\n position: relative;\n padding-left: var(--padding-left);\n padding-right: var(--padding-right);\n }\n .line:empty {\n height: 1lh;\n }\n &.has-focused .line:not(.focused) {\n filter: blur(2px);\n transition: filter 200ms;\n }\n &.has-focused:hover .line:not(.focused) {\n filter: blur(0);\n }\n .diff::before {\n position: absolute;\n left: calc(var(--spacing) * 1.5);\n }\n .diff.remove {\n opacity: 0.7;\n --fd-counter-color: var(--color-fd-diff-remove-symbol);\n background-color: var(--color-fd-diff-remove);\n }\n .diff.remove::before {\n content: '-';\n color: var(--color-fd-diff-remove-symbol);\n }\n .diff.add {\n --fd-counter-color: var(--color-fd-diff-add-symbol);\n background-color: var(--color-fd-diff-add);\n }\n .diff.add::before {\n content: '+';\n color: var(--color-fd-diff-add-symbol);\n }\n .highlighted {\n --fd-counter-color: var(--color-fd-primary);\n background-color: color-mix(in srgb, hsl(0, 0%, 9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-primary) 10%, transparent);\n }\n }\n .highlighted::after {\n position: absolute;\n content: '';\n inset-block: calc(var(--spacing) * 0);\n left: calc(var(--spacing) * 0);\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n border-color: color-mix(in srgb, hsl(0, 0%, 9%) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-fd-primary) 50%, transparent);\n }\n }\n .highlighted-word {\n padding: 1px;\n margin-block: -1px;\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: color-mix(in srgb, hsl(0, 0%, 9%) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-fd-primary) 30%, transparent);\n }\n background-color: color-mix(in srgb, hsl(0, 0%, 9%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-fd-primary) 10%, transparent);\n }\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n &[data-line-numbers] .twoslash-meta-line {\n padding-left: calc(var(--padding-left) + 7 * var(--spacing));\n }\n &[data-line-numbers] .line {\n counter-increment: line;\n padding-left: calc(var(--padding-left) + 7 * var(--spacing));\n }\n &[data-line-numbers] .line::after {\n position: absolute;\n content: counter(line);\n color: var(--fd-counter-color, hsl(0, 0%, 45.1%));\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix( in oklab, var(--fd-counter-color, var(--color-fd-muted-foreground)) 60%, transparent );\n }\n inset-block: calc(var(--spacing) * 0);\n left: calc(var(--spacing) * 0);\n width: calc(var(--spacing) * 7);\n text-align: right;\n }\n}\n.dark .shiki:not(.not-fumadocs-codeblock *) {\n code span {\n color: var(--shiki-dark);\n font-style: var(--shiki-dark-font-style);\n }\n}\ncode.shiki span {\n color: var(--shiki-light);\n font-style: var(--shiki-light-font-style);\n}\n.dark code.shiki span {\n color: var(--shiki-dark);\n font-style: var(--shiki-dark-font-style);\n}\n@property --radix-collapsible-content-height {\n syntax: '';\n inherits: false;\n initial-value: 0px;\n}\nbody {\n display: flex;\n min-height: 100vh;\n flex-direction: column;\n }\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-divide-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-content {\n syntax: \"*\";\n initial-value: \"\";\n inherits: false;\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes fd-sidebar-in {\n from {\n transform: translateX(var(--fd-sidebar-drawer-offset));\n }\n}\n@keyframes fd-sidebar-out {\n to {\n transform: translateX(var(--fd-sidebar-drawer-offset));\n }\n}\n@keyframes fd-dialog-in {\n from {\n transform: scale(1.06);\n opacity: 0;\n }\n to {\n transform: scale(1);\n }\n}\n@keyframes fd-dialog-out {\n from {\n transform: scale(1);\n }\n to {\n transform: scale(1.04);\n opacity: 0;\n }\n}\n@keyframes fd-popover-in {\n from {\n opacity: 0;\n transform: scale(0.9);\n }\n}\n@keyframes fd-popover-out {\n to {\n opacity: 0;\n transform: scale(0.9);\n }\n}\n@keyframes fd-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fd-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes fd-enterFromRight {\n from {\n opacity: 0;\n transform: translateX(200px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n@keyframes fd-enterFromLeft {\n from {\n opacity: 0;\n transform: translateX(-200px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n@keyframes fd-exitToRight {\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(200px);\n }\n}\n@keyframes fd-exitToLeft {\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(-200px);\n }\n}\n@keyframes fd-collapsible-down {\n from {\n height: 0;\n opacity: 0;\n }\n to {\n height: var(--radix-collapsible-content-height);\n }\n}\n@keyframes fd-collapsible-up {\n from {\n height: var(--radix-collapsible-content-height);\n }\n to {\n height: 0;\n opacity: 0;\n }\n}\n@keyframes fd-accordion-down {\n from {\n height: 0;\n opacity: 0.5;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n@keyframes fd-accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n opacity: 0.5;\n }\n}\n@keyframes fd-nav-menu-in {\n from {\n opacity: 0;\n height: 0px;\n }\n to {\n opacity: 1;\n height: var(--radix-navigation-menu-viewport-height);\n }\n}\n@keyframes fd-nav-menu-out {\n from {\n opacity: 1;\n height: var(--radix-navigation-menu-viewport-height);\n }\n to {\n opacity: 0;\n height: 0px;\n }\n}\n@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-border-style: solid;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-divide-x-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-content: \"\";\n --radix-collapsible-content-height: 0px;\n }\n }\n\n@keyframes fd-ai-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fd-ai-slide-up {\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n@keyframes fd-ai-float-in {\n from {\n opacity: 0;\n transform: translateY(12px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes fd-ai-float-center-in {\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n.fd-ai-overlay {\n position: fixed;\n inset: 0;\n z-index: 9998;\n background: color-mix(in srgb, var(--color-fd-background, #000) 70%, transparent);\n backdrop-filter: blur(6px);\n animation: fd-ai-fade-in 150ms ease-out;\n}\n\n.fd-ai-dialog {\n position: fixed;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n background: var(--color-fd-popover, var(--color-fd-background, #0c0c0c));\n border: 1px solid var(--color-fd-border, #1f1f2e);\n border-radius: var(--radius, 12px);\n box-shadow: 0 20px 60px color-mix(in srgb, var(--color-fd-background, #000) 60%, transparent);\n overflow: hidden;\n color: var(--color-fd-foreground, #e4e4e7);\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n}\n\n.fd-ai-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-header-title {\n font-size: 14px;\n font-weight: 600;\n flex: 1;\n}\n\n.fd-ai-esc {\n padding: 2px 6px;\n border-radius: var(--radius, 4px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n font-size: 10px;\n font-family: inherit;\n margin-right: 4px;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: var(--radius, 6px);\n border: none;\n cursor: pointer;\n background: transparent;\n color: var(--color-fd-muted-foreground, #71717a);\n transition: all 150ms;\n}\n\n.fd-ai-close-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-tab-bar {\n display: flex;\n align-items: center;\n gap: 2px;\n padding: 10px 12px 0;\n border-bottom: 1px solid var(--color-fd-border, #1f1f2e);\n}\n\n.fd-ai-tab {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n font-size: 13px;\n font-weight: 500;\n border: none;\n border-radius: var(--radius, 8px) var(--radius, 8px) 0 0;\n cursor: pointer;\n transition: all 150ms;\n background: transparent;\n color: var(--color-fd-muted-foreground, #71717a);\n border-bottom: 2px solid transparent;\n font-family: inherit;\n}\n\n.fd-ai-tab[data-active=\"true\"] {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-foreground, #e4e4e7);\n border-bottom-color: var(--color-fd-primary, #6366f1);\n}\n\n.fd-ai-tab:hover:not([data-active=\"true\"]) {\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-search-wrap {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-input {\n flex: 1;\n background: transparent;\n border: none;\n outline: none;\n color: var(--color-fd-foreground, #e4e4e7);\n font-size: 14px;\n font-family: inherit;\n}\n\n.fd-ai-input::placeholder {\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-results {\n flex: 1;\n overflow-y: auto;\n padding: 4px 8px;\n}\n\n.fd-ai-result {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 12px;\n border: none;\n border-radius: var(--radius, 8px);\n cursor: pointer;\n text-align: left;\n font-size: 13px;\n font-family: inherit;\n transition: background 100ms;\n background: transparent;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-result[data-active=\"true\"] {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-accent-foreground, #fff);\n}\n\n.fd-ai-result-empty {\n padding: 32px 16px;\n text-align: center;\n color: var(--color-fd-muted-foreground, #71717a);\n font-size: 13px;\n}\n\n.fd-ai-messages {\n flex: 1;\n overflow-y: auto;\n padding: 12px 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.fd-ai-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n gap: 12px;\n padding: 24px 0;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-empty-title {\n font-size: 14px;\n font-weight: 500;\n}\n\n.fd-ai-empty-desc {\n font-size: 12px;\n opacity: 0.7;\n text-align: center;\n max-width: 300px;\n line-height: 1.5;\n}\n\n.fd-ai-suggestions {\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n max-width: 360px;\n margin-top: 8px;\n}\n\n.fd-ai-suggestion {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: var(--radius, 8px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.08));\n background: var(--color-fd-background, rgba(255, 255, 255, 0.01));\n opacity: 0.6;\n color: var(--color-fd-foreground, #e4e4e7);\n font-size: 13px;\n font-family: inherit;\n cursor: pointer;\n text-align: left;\n line-height: 1.4;\n transition: all 150ms;\n}\n\n.fd-ai-suggestion:hover {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n border-color: var(--color-fd-ring, rgba(255, 255, 255, 0.15));\n}\n\n.fd-ai-msg {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.fd-ai-msg[data-role=\"user\"] {\n align-items: flex-end;\n}\n\n.fd-ai-msg[data-role=\"assistant\"] {\n align-items: flex-start;\n}\n\n.fd-ai-msg-label {\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--color-fd-muted-foreground, #71717a);\n padding: 0 2px;\n}\n\n.fd-ai-bubble-user {\n background: var(--color-fd-primary, #6366f1);\n color: var(--color-fd-primary-foreground, #fff);\n padding: 8px 14px;\n border-radius: var(--radius, 14px);\n font-size: 13px;\n line-height: 1.5;\n max-width: 85%;\n word-break: break-word;\n}\n\n.fd-ai-bubble-ai {\n background: var(--color-fd-muted, rgba(255, 255, 255, 0.04));\n padding: 10px 14px;\n border-radius: var(--radius, 14px);\n font-size: 13px;\n line-height: 1.6;\n max-width: 95%;\n word-break: break-word;\n animation: fd-ai-msg-in 300ms ease-out;\n}\n\n.fd-ai-feedback {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-top: 10px;\n padding-top: 8px;\n border-top: 1px solid color-mix(in srgb, var(--color-fd-border, #1f1f2e) 70%, transparent);\n}\n\n.fd-ai-feedback-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: 1px solid transparent;\n border-radius: var(--radius, 6px);\n background: transparent;\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n transition:\n background 150ms,\n border-color 150ms,\n color 150ms;\n}\n\n.fd-ai-feedback-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-feedback-btn[data-active=\"true\"] {\n color: var(--color-fd-primary, #6366f1);\n border-color: color-mix(in srgb, var(--color-fd-primary, #6366f1) 40%, transparent);\n background: color-mix(in srgb, var(--color-fd-primary, #6366f1) 10%, transparent);\n}\n\n.fd-ai-feedback-btn[data-copied=\"true\"] {\n color: var(--color-fd-primary, #6366f1);\n background: color-mix(in srgb, var(--color-fd-primary, #6366f1) 10%, transparent);\n}\n\n@keyframes fd-ai-msg-in {\n from { opacity: 0; transform: translateY(6px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.fd-ai-chat-footer {\n padding: 8px 12px 12px;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-model-select-row {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n position: relative;\n overflow: visible;\n margin-bottom: 6px;\n}\n\n.fd-ai-model-select-row--fm {\n padding: 8px 12px 0;\n}\n\n.fd-ai-model-dropdown {\n position: relative;\n margin-left: auto;\n}\n\n.fd-ai-model-dropdown-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n background: transparent;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.12));\n border-radius: var(--radius, 6px);\n cursor: pointer;\n transition: all 150ms;\n}\n\n.fd-ai-model-dropdown-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n border-color: var(--color-fd-border, rgba(255, 255, 255, 0.25));\n}\n\n.fd-ai-model-dropdown-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.fd-ai-model-dropdown-menu {\n position: absolute;\n bottom: calc(100% + 6px);\n right: 0;\n z-index: 99999;\n min-width: 220px;\n padding: 4px;\n background: var(--color-fd-popover, var(--color-fd-background, #0c0c0c));\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius, 8px);\n box-shadow: 2px 2px 0 0 var(--color-fd-border, #262626);\n animation: fd-ai-fade-in 100ms ease-out;\n}\n\n.fd-ai-model-dropdown-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 6px 10px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n font-size: 13px;\n font-family: inherit;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #e4e4e7));\n background: transparent;\n cursor: pointer;\n transition: background 100ms;\n}\n\n.fd-ai-model-dropdown-item:hover {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n}\n\n.fd-ai-model-dropdown-item[data-active=\"true\"] {\n color: var(--color-fd-primary, #6366f1);\n}\n\n.fd-ai-model-dropdown-label {\n flex: 1;\n text-align: left;\n}\n\n.fd-ai-clear-btn {\n font-size: 11px;\n color: var(--color-fd-muted-foreground, #71717a);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 2px 8px;\n border-radius: var(--radius, 4px);\n font-family: inherit;\n}\n\n.fd-ai-clear-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-input-wrap {\n display: flex;\n align-items: center;\n gap: 8px;\n background: var(--color-fd-muted, rgba(255, 255, 255, 0.04));\n border-radius: var(--radius, 10px);\n padding: 4px 4px 4px 14px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.08));\n}\n\n.fd-ai-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--radius, 8px);\n border: none;\n transition: all 150ms;\n cursor: default;\n background: var(--color-fd-muted, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-send-btn[data-active=\"true\"] {\n cursor: pointer;\n background: var(--color-fd-primary, #6366f1);\n color: var(--color-fd-primary-foreground, #fff);\n}\n\n.fd-ai-loader {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n animation: fd-ai-loader-in 300ms ease-out;\n}\n\n@keyframes fd-ai-loader-in {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.fd-ai-loader-shimmer-text {\n font-size: 13px;\n font-weight: 500;\n background: linear-gradient(\n to right,\n var(--color-fd-muted-foreground, #888) 40%,\n var(--color-fd-foreground, #fff) 60%,\n var(--color-fd-muted-foreground, #888) 80%\n );\n background-size: 200% auto;\n background-clip: text;\n -webkit-background-clip: text;\n color: transparent;\n animation: fd-ai-shimmer-text 3s linear infinite;\n}\n\n@keyframes fd-ai-shimmer-text {\n 0% { background-position: 150% center; }\n 100% { background-position: -150% center; }\n}\n\n.fd-ai-loader-typing-dots {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n}\n\n.fd-ai-loader-typing-dot {\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-typing 1s infinite;\n}\n\n.fd-ai-loader-typing-dot:nth-child(2) { animation-delay: 250ms; }\n.fd-ai-loader-typing-dot:nth-child(3) { animation-delay: 500ms; }\n\n@keyframes fd-ai-typing {\n 0%, 100% { transform: translateY(0); opacity: 0.5; }\n 50% { transform: translateY(-2px); opacity: 1; }\n}\n\n.fd-ai-loader-circular {\n width: 16px;\n height: 16px;\n border: 2px solid var(--color-fd-primary, #6366f1);\n border-top-color: transparent;\n border-radius: 50%;\n animation: fd-ai-spin 0.8s linear infinite;\n}\n\n@keyframes fd-ai-spin {\n to { transform: rotate(360deg); }\n}\n\n.fd-ai-loader-dots {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n}\n\n.fd-ai-loader-bounce-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-bounce-dots 1.4s ease-in-out infinite;\n}\n\n.fd-ai-loader-bounce-dot:nth-child(2) { animation-delay: 160ms; }\n.fd-ai-loader-bounce-dot:nth-child(3) { animation-delay: 320ms; }\n\n@keyframes fd-ai-bounce-dots {\n 0%, 100% { transform: scale(0.8); opacity: 0.5; }\n 50% { transform: scale(1.2); opacity: 1; }\n}\n\n.fd-ai-loader-wave {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n height: 16px;\n}\n\n.fd-ai-loader-wave-bar {\n width: 2px;\n border-radius: 2px;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-wave 1s ease-in-out infinite;\n}\n\n.fd-ai-loader-wave-bar:nth-child(1) { height: 6px; animation-delay: 0ms; }\n.fd-ai-loader-wave-bar:nth-child(2) { height: 10px; animation-delay: 100ms; }\n.fd-ai-loader-wave-bar:nth-child(3) { height: 14px; animation-delay: 200ms; }\n.fd-ai-loader-wave-bar:nth-child(4) { height: 10px; animation-delay: 300ms; }\n.fd-ai-loader-wave-bar:nth-child(5) { height: 6px; animation-delay: 400ms; }\n\n@keyframes fd-ai-wave {\n 0%, 100% { transform: scaleY(1); }\n 50% { transform: scaleY(0.6); }\n}\n\n.fd-ai-loader-pulse {\n width: 16px;\n height: 16px;\n border: 2px solid var(--color-fd-primary, #6366f1);\n border-radius: 50%;\n animation: fd-ai-pulse 1.5s ease-in-out infinite;\n}\n\n@keyframes fd-ai-pulse {\n 0%, 100% { transform: scale(0.95); opacity: 0.8; }\n 50% { transform: scale(1.05); opacity: 0.4; }\n}\n\n.fd-ai-loader-pulse-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-pulse-dot 1.2s ease-in-out infinite;\n}\n\n@keyframes fd-ai-pulse-dot {\n 0%, 100% { transform: scale(1); opacity: 0.8; }\n 50% { transform: scale(1.5); opacity: 1; }\n}\n\n.fd-ai-loader-terminal {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n}\n\n.fd-ai-loader-terminal-prompt {\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n font-size: 13px;\n color: var(--color-fd-primary, #6366f1);\n}\n\n.fd-ai-loader-terminal-cursor {\n width: 7px;\n height: 14px;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-blink 1s step-end infinite;\n}\n\n@keyframes fd-ai-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0; }\n}\n\n.fd-ai-loader-text-blink {\n font-size: 13px;\n font-weight: 500;\n animation: fd-ai-text-blink 2s ease-in-out infinite;\n}\n\n@keyframes fd-ai-text-blink {\n 0%, 100% { color: var(--color-fd-primary, #6366f1); }\n 50% { color: var(--color-fd-muted-foreground, #888); }\n}\n\n.fd-ai-loader-text {\n font-size: 13px;\n font-weight: 500;\n color: var(--color-fd-primary, #6366f1);\n}\n\n.fd-ai-loader-text-dots {\n display: inline-flex;\n}\n\n.fd-ai-loader-text-dot {\n font-size: 13px;\n font-weight: 500;\n color: var(--color-fd-primary, #6366f1);\n animation: fd-ai-loading-dots 1.4s infinite;\n}\n\n.fd-ai-loader-text-dot:nth-child(1) { animation-delay: 200ms; }\n.fd-ai-loader-text-dot:nth-child(2) { animation-delay: 400ms; }\n.fd-ai-loader-text-dot:nth-child(3) { animation-delay: 600ms; }\n\n@keyframes fd-ai-loading-dots {\n 0%, 100% { opacity: 0; }\n 50% { opacity: 1; }\n}\n\n.fd-ai-loader-bars {\n display: inline-flex;\n align-items: stretch;\n gap: 3px;\n height: 16px;\n}\n\n.fd-ai-loader-bar {\n width: 4px;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-wave-bars 1.2s ease-in-out infinite;\n}\n\n.fd-ai-loader-bar:nth-child(1) { animation-delay: 0s; }\n.fd-ai-loader-bar:nth-child(2) { animation-delay: 0.2s; }\n.fd-ai-loader-bar:nth-child(3) { animation-delay: 0.4s; }\n\n@keyframes fd-ai-wave-bars {\n 0%, 100% { transform: scaleY(1); opacity: 0.5; }\n 50% { transform: scaleY(0.6); opacity: 1; }\n}\n\n.fd-ai-streaming {\n text-rendering: optimizeLegibility;\n}\n\n.fd-ai-streaming::after {\n content: \"\";\n display: inline-block;\n width: 2px;\n height: 0.95em;\n background: var(--color-fd-primary, #6366f1);\n border-radius: 999px;\n margin-left: 3px;\n vertical-align: text-bottom;\n animation: fd-ai-cursor-blink 900ms ease-in-out infinite;\n box-shadow: 0 0 10px color-mix(in srgb, var(--color-fd-primary, #6366f1) 35%, transparent);\n}\n\n@keyframes fd-ai-cursor-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.25; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fd-ai-streaming::after {\n animation: none;\n }\n}\n\n.fd-ai-floating-btn {\n position: fixed;\n z-index: 9997;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 12px;\n height: 40px;\n border-radius: 16px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: color-mix(in srgb, var(--color-fd-secondary, #f4f4f5) 80%, transparent);\n backdrop-filter: blur(4px);\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n font-size: 14px;\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);\n transition:\n transform 150ms,\n background 150ms,\n color 150ms;\n animation: fd-ai-fade-in 300ms ease-out;\n}\n\n.fd-ai-floating-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n transform: scale(1.03);\n}\n\n.fd-ai-floating-btn:active {\n transform: scale(0.97);\n}\n\n.fd-ai-floating-trigger {\n position: fixed;\n z-index: 9997;\n cursor: pointer;\n animation: fd-ai-fade-in 300ms ease-out;\n}\n\n.fd-ai-floating-trigger .ask-ai-trigger {\n font-size: 14px;\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n}\n\n.fd-ai-bubble-ai code {\n background: var(--color-fd-muted, #1a1a2e);\n padding: 2px 6px;\n border-radius: var(--radius, 4px);\n font-size: 0.875em;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n}\n\n.fd-ai-bubble-ai a {\n color: var(--color-fd-primary, #6366f1);\n text-decoration: underline;\n}\n\n.fd-ai-bubble-ai .fd-ai-code-block code {\n background: transparent;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n}\n\n.fd-ai-bubble-ai table {\n width: 100%;\n border-collapse: collapse;\n margin: 8px 0;\n font-size: 13px;\n}\n\n.fd-ai-bubble-ai th,\n.fd-ai-bubble-ai td {\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n padding: 6px 12px;\n text-align: left;\n}\n\n.fd-ai-bubble-ai th {\n background: var(--color-fd-muted, #1a1a2e);\n font-weight: 600;\n font-size: 12px;\n}\n\n.fd-ai-bubble-ai h2 {\n font-size: 1.125rem;\n font-weight: 600;\n margin: 12px 0 6px;\n line-height: 1.3;\n color: inherit;\n}\n\n.fd-ai-bubble-ai h3 {\n font-size: 1rem;\n font-weight: 600;\n margin: 10px 0 4px;\n line-height: 1.4;\n color: inherit;\n}\n\n.fd-ai-bubble-ai h4 {\n font-size: 0.9375rem;\n font-weight: 600;\n margin: 8px 0 4px;\n line-height: 1.4;\n color: inherit;\n}\n\n.fd-ai-bubble-ai h5 {\n font-size: 0.875rem;\n font-weight: 600;\n margin: 8px 0 4px;\n line-height: 1.4;\n color: inherit;\n}\n\n.fd-ai-bubble-ai ul,\n.fd-ai-bubble-ai ol {\n margin: 6px 0 8px;\n padding-left: 1.25rem;\n}\n\n.fd-ai-bubble-ai li {\n margin: 3px 0;\n padding-left: 2px;\n}\n\n.fd-ai-bubble-ai li::marker {\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-bubble-ai .fd-ai-hr {\n border: 0;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n margin: 12px 0;\n}\n\n.fd-ai-bubble-ai strong {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-bubble-ai em {\n font-style: italic;\n}\n\n.fd-ai-bubble-ai p {\n margin: 0 0 6px;\n}\n\n.fd-ai-bubble-ai br {\n content: \"\";\n display: block;\n margin-top: 2px;\n}\n\n.fd-ai-bubble-ai pre {\n margin: 8px 0;\n border-radius: 0;\n border: none;\n background: transparent;\n padding: 0;\n}\n\n.fd-ai-bubble-ai > div > div[style*=\"height:8px\"] {\n height: 6px;\n}\n\n.fd-ai-code-block {\n --sh-class: #8be9fd;\n --sh-identifier: #c9d1d9;\n --sh-keyword: #ff7b72;\n --sh-string: #a5d6ff;\n --sh-property: #79c0ff;\n --sh-entity: #7ee787;\n --sh-sign: #8b949e;\n --sh-comment: #6e7681;\n --sh-jsxliterals: #d2a8ff;\n --sh-space: inherit;\n\n margin: 10px 0;\n border-radius: var(--radius, 8px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-muted, #1a1a2e);\n overflow: hidden;\n}\n\n.fd-ai-code-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.08));\n background: color-mix(in srgb, var(--color-fd-muted, #1a1a2e) 80%, black);\n min-height: 32px;\n}\n\n.fd-ai-code-lang {\n font-size: 11px;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground, #71717a);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.fd-ai-code-copy {\n font-size: 11px;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground, #71717a);\n background: transparent;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius, 4px);\n padding: 2px 8px;\n cursor: pointer;\n transition: all 150ms;\n}\n\n.fd-ai-code-copy:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n background: color-mix(\n in srgb,\n var(--color-fd-accent, rgba(255, 255, 255, 0.05)) 60%,\n transparent\n );\n}\n\n.fd-ai-code-block pre {\n margin: 0;\n padding: 12px 16px;\n overflow-x: auto;\n background: transparent;\n border: none;\n border-radius: 0;\n}\n\n.fd-ai-code-block code {\n font-size: 13px;\n line-height: 1.45;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n background: transparent;\n padding: 0;\n border-radius: 0;\n}\n\n.fd-ai-code-block .sh__line {\n display: block;\n min-height: 1.2em;\n}\n\n:root:not(.dark) .fd-ai-code-block {\n --sh-class: #b45309;\n --sh-identifier: #1f2937;\n --sh-keyword: #7c3aed;\n --sh-string: #0d9488;\n --sh-property: #dc2626;\n --sh-entity: #059669;\n --sh-sign: #374151;\n --sh-comment: #6b7280;\n --sh-jsxliterals: #7c3aed;\n border-color: rgba(0, 0, 0, 0.12);\n background: #f4f4f5;\n}\n\n:root:not(.dark) .fd-ai-code-header {\n border-bottom-color: rgba(0, 0, 0, 0.1);\n background: color-mix(in srgb, #e4e4e7 80%, transparent);\n}\n\n:root:not(.dark) .fd-ai-code-lang {\n color: #52525b;\n}\n\n:root:not(.dark) .fd-ai-code-copy {\n color: #52525b;\n border-color: rgba(0, 0, 0, 0.15);\n}\n\n:root:not(.dark) .fd-ai-code-copy:hover {\n color: #18181b;\n background: color-mix(in srgb, #d4d4d8 60%, transparent);\n}\n\n:root:not(.dark) .fd-ai-code-block code {\n color: #1f2937;\n}\n\n.fd-ai-fm-overlay {\n position: fixed;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n background: color-mix(in srgb, var(--color-fd-background, #000) 80%, transparent);\n backdrop-filter: blur(8px);\n z-index: 9998;\n animation: fd-ai-fade-in 200ms ease-out;\n padding: 0 8px;\n}\n\n.fd-ai-fm-topbar {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n width: min(800px, 100%);\n padding: 12px 0;\n position: sticky;\n top: 0;\n z-index: 2;\n}\n\n.fd-ai-fm-close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--radius, 9999px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-secondary, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-foreground, #e4e4e7);\n cursor: pointer;\n transition: all 150ms;\n}\n\n.fd-ai-fm-close-btn:hover {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.1));\n}\n\n.fd-ai-fm-messages {\n flex: 1;\n overflow-y: auto;\n width: min(800px, 100%);\n padding: 24px 0 120px;\n mask-image: linear-gradient(\n to bottom,\n transparent,\n white 3rem,\n white calc(100% - 8rem),\n transparent 100%\n );\n -webkit-mask-image: linear-gradient(\n to bottom,\n transparent,\n white 3rem,\n white calc(100% - 8rem),\n transparent 100%\n );\n}\n\n.fd-ai-fm-messages-inner {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.fd-ai-fm-msg {\n display: flex;\n flex-direction: column;\n}\n\n.fd-ai-fm-msg-label {\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 4px;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-fm-msg-label[data-role=\"assistant\"] {\n color: var(--color-fd-primary, #6366f1);\n}\n\n.fd-ai-fm-msg-content {\n font-size: 14px;\n line-height: 1.7;\n color: var(--color-fd-foreground, #e4e4e7);\n word-break: break-word;\n overflow-wrap: break-word;\n}\n\n.fd-ai-fm-msg-content code {\n background: var(--color-fd-muted, #1a1a2e);\n padding: 2px 6px;\n border-radius: var(--radius, 4px);\n font-size: 0.875em;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n}\n.fd-ai-fm-msg-content .fd-ai-code-block pre {\n padding-bottom: 2px;\n}\n\n.fd-ai-fm-msg-content .fd-ai-code-block code {\n background: transparent;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n}\n\n.fd-ai-fm-msg-content a {\n color: var(--color-fd-primary, #6366f1);\n text-decoration: underline;\n}\n\n.fd-ai-fm-msg-content table {\n width: 100%;\n border-collapse: collapse;\n margin: 8px 0;\n font-size: 13px;\n}\n\n.fd-ai-fm-msg-content th,\n.fd-ai-fm-msg-content td {\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n padding: 6px 12px;\n text-align: left;\n}\n\n.fd-ai-fm-msg-content th {\n background: var(--color-fd-muted, #1a1a2e);\n font-weight: 600;\n font-size: 12px;\n}\n\n.fd-ai-fm-msg-content h2 {\n font-size: 1.25rem;\n font-weight: 600;\n margin: 16px 0 8px;\n line-height: 1.3;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-msg-content h3 {\n font-size: 1.0625rem;\n font-weight: 600;\n margin: 12px 0 6px;\n line-height: 1.4;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-msg-content h4 {\n font-size: 1rem;\n font-weight: 600;\n margin: 10px 0 4px;\n line-height: 1.4;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-msg-content h5 {\n font-size: 0.9375rem;\n font-weight: 600;\n margin: 10px 0 4px;\n line-height: 1.4;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-msg-content ul,\n.fd-ai-fm-msg-content ol {\n margin: 8px 0 10px;\n padding-left: 1.35rem;\n}\n\n.fd-ai-fm-msg-content li {\n margin: 4px 0;\n padding-left: 2px;\n}\n\n.fd-ai-fm-msg-content li::marker {\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-fm-msg-content .fd-ai-hr {\n border: 0;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n margin: 16px 0;\n}\n\n.fd-ai-fm-msg-content strong {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-msg-content em {\n font-style: italic;\n}\n\n.fd-ai-fm-msg-content p {\n margin: 0 0 8px;\n}\n\n.fd-ai-fm-msg-content br {\n content: \"\";\n display: block;\n margin-top: 2px;\n}\n\n.fd-ai-fm-msg-content pre {\n margin: 8px 0;\n border-radius: 0;\n border: none;\n background: transparent;\n padding: 0;\n}\n\n.fd-ai-fm-msg-content > div > div[style*=\"height:8px\"] {\n height: 6px;\n}\n\n.fd-ai-fm-input-bar {\n position: fixed;\n z-index: 9999;\n transition:\n width 300ms cubic-bezier(0.34, 1.56, 0.64, 1),\n height 300ms cubic-bezier(0.34, 1.56, 0.64, 1),\n transform 200ms ease-out;\n}\n\n.fd-ai-fm-input-bar--closed {\n\n}\n\n.fd-ai-fm-input-bar--open {\n bottom: 16px;\n left: 50%;\n right: auto;\n transform: translateX(-50%);\n width: min(800px, calc(100vw - 32px));\n}\n\n.fd-ai-fm-input-container {\n display: flex;\n flex-direction: column;\n border-radius: var(--radius, 12px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-background, #0c0c0c);\n box-shadow: 0 20px 60px color-mix(in srgb, var(--color-fd-background, #000) 70%, transparent);\n overflow: visible;\n}\n\n.fd-ai-fm-input-wrap {\n display: flex;\n align-items: flex-start;\n padding-right: 8px;\n}\n\n.fd-ai-fm-input {\n flex: 1;\n padding: 16px;\n background: transparent;\n border: none;\n outline: none;\n resize: none;\n color: var(--color-fd-foreground, #e4e4e7);\n font-size: 14px;\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n line-height: 1.5;\n min-height: 0;\n max-height: 120px;\n}\n\n.fd-ai-fm-input::placeholder {\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-fm-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 12px;\n width: 32px;\n height: 32px;\n border-radius: 9999px;\n border: none;\n cursor: default;\n transition: all 150ms;\n background: var(--color-fd-secondary, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-fm-send-btn[data-active=\"true\"] {\n cursor: pointer;\n background: var(--color-fd-primary, #6366f1);\n color: var(--color-fd-primary-foreground, #fff);\n}\n\n.fd-ai-fm-suggestions-area {\n padding: 12px 16px 4px;\n}\n\n.fd-ai-fm-suggestions-label {\n font-size: 12px;\n font-weight: 500;\n color: var(--color-fd-muted-foreground, #71717a);\n margin-bottom: 8px;\n}\n\n.fd-ai-fm-suggestions {\n display: flex;\n gap: 8px;\n overflow-x: auto;\n padding-bottom: 4px;\n mask-image: linear-gradient(\n to right,\n transparent 0%,\n black 1rem,\n black calc(100% - 1rem),\n transparent 100%\n );\n -webkit-mask-image: linear-gradient(\n to right,\n transparent 0%,\n black 1rem,\n black calc(100% - 1rem),\n transparent 100%\n );\n}\n\n.fd-ai-fm-suggestions-two-rows {\n flex-wrap: wrap;\n overflow-x: visible;\n mask-image: none;\n -webkit-mask-image: none;\n}\n\n.fd-ai-fm-suggestion {\n flex-shrink: 0;\n white-space: nowrap;\n padding: 6px 14px;\n font-size: 12px;\n font-family: inherit;\n border-radius: 9999px;\n border: 1px solid\n color-mix(in srgb, var(--color-fd-border, rgba(255, 255, 255, 0.1)) 50%, transparent);\n background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 30%, transparent);\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n transition: all 200ms;\n}\n\n.fd-ai-fm-suggestion:hover {\n background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 50%, transparent);\n color: var(--color-fd-foreground, #e4e4e7);\n border-color: var(--color-fd-border, rgba(255, 255, 255, 0.1));\n}\n\n.fd-ai-fm-footer-bar {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px 16px;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n background: color-mix(\n in srgb,\n var(--color-fd-accent, rgba(255, 255, 255, 0.03)) 40%,\n transparent\n );\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n.fd-ai-fm-clear-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-family: inherit;\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n transition: color 200ms;\n padding: 0;\n}\n\n.fd-ai-fm-clear-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n.fd-ai-fm-clear-btn[aria-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.fd-ai-fm-footer-hint {\n flex: 1;\n}\n\n.fd-ai-modal-pure {\n display: flex;\n flex-direction: column;\n}\n\n.fd-ai-modal-footer {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px 16px;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n background: color-mix(\n in srgb,\n var(--color-fd-accent, rgba(255, 255, 255, 0.03)) 40%,\n transparent\n );\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n border-radius: 0 0 var(--radius, 12px) var(--radius, 12px);\n flex-shrink: 0;\n}\n\n.fd-ai-modal-footer-hint {\n flex: 1;\n}\n\n.fd-ai-fm-trigger-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 12px;\n height: 40px;\n border-radius: 16px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: color-mix(in srgb, var(--color-fd-secondary, #f4f4f5) 80%, transparent);\n backdrop-filter: blur(4px);\n color: var(--color-fd-muted-foreground, #71717a);\n font-family: inherit;\n font-size: 14px;\n cursor: pointer;\n box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);\n transition:\n transform 150ms,\n background 150ms,\n color 150ms;\n animation: fd-ai-fade-in 300ms ease-out;\n white-space: nowrap;\n}\n\n.fd-ai-fm-trigger-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n transform: scale(1.03);\n}\n\n.fd-ai-fm-trigger-btn:active {\n transform: scale(0.97);\n}\n\n@keyframes omni-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes omni-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes omni-scale-in {\n from {\n opacity: 0;\n transform: translateX(-50%) scale(0.98) translateY(-6px);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) scale(1) translateY(0);\n }\n}\n@keyframes omni-scale-out {\n from {\n opacity: 1;\n transform: translateX(-50%) scale(1) translateY(0);\n }\n to {\n opacity: 0;\n transform: translateX(-50%) scale(0.98) translateY(-6px);\n }\n}\n\n@keyframes omni-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.omni-spin {\n animation: omni-spin 1s linear infinite;\n}\n\n.omni-overlay {\n position: fixed;\n inset: 0;\n z-index: 50;\n background: rgba(0, 0, 0, 0.2);\n backdrop-filter: blur(2px);\n animation: omni-fade-in 150ms ease-out;\n}\n\n.omni-content {\n --omni-content-top: clamp(5rem, 16vh, 7rem);\n position: fixed;\n z-index: 51;\n top: var(--omni-content-top);\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n flex-direction: column;\n width: min(720px, calc(100% - 1rem));\n border-radius: 0.75rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border, #d4d4d4) 70%, transparent);\n background: var(--color-fd-popover, #fafafa);\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n font-family: var(--font-sans, system-ui, -apple-system, BlinkMacSystemFont, \"SF Pro Text\",\n ui-sans-serif, sans-serif);\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\n outline: none;\n overscroll-behavior: contain;\n animation: omni-scale-in 200ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n@media (max-width: 639px) {\n .omni-content {\n --omni-content-top: 1rem;\n top: var(--omni-content-top);\n width: calc(100% - 1rem);\n max-height: calc(100vh - 2rem);\n }\n}\n\n.omni-header {\n border-bottom: 1px solid var(--color-fd-border, #262626);\n}\n.omni-search-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem;\n}\n.omni-search-icon {\n color: var(--color-fd-muted-foreground, #a3a3a3);\n flex-shrink: 0;\n}\n.omni-search-icon svg {\n width: 1.25rem;\n height: 1.25rem;\n}\n.omni-search-input {\n width: 0;\n flex: 1;\n background: transparent;\n outline: none;\n font-size: 1.125rem;\n line-height: 1.75rem;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n border: none;\n}\n.omni-search-input::placeholder {\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-kbd {\n border-radius: 0.375rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n background: transparent;\n padding: 0.375rem 0.5rem;\n font-size: 0.75rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n \"Liberation Mono\", \"Courier New\", monospace);\n line-height: 1rem;\n}\n.omni-close-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n min-width: 2.5rem;\n border-radius: 0.375rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n padding: 0.375rem 0.5rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n \"Liberation Mono\", \"Courier New\", monospace);\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 500;\n transition:\n background 120ms,\n color 120ms;\n cursor: pointer;\n background: none;\n}\n.omni-close-btn:hover {\n color: var(--color-fd-accent-foreground, var(--color-fd-foreground, #171717));\n background: var(--color-fd-accent, #e5e5e5);\n}\n.omni-close-btn svg {\n display: none;\n}\n\n.omni-body {\n flex: 1 1 auto;\n min-height: 0;\n max-height: min(540px, calc(100vh - var(--omni-content-top, 7rem) - 8rem));\n overflow: auto;\n overscroll-behavior: contain;\n padding: 0.5rem;\n}\n.omni-body::-webkit-scrollbar {\n width: 6px;\n}\n.omni-body::-webkit-scrollbar-track {\n background: transparent;\n}\n.omni-body::-webkit-scrollbar-thumb {\n background: var(--color-fd-muted, #262626);\n border-radius: 3px;\n}\n\n.omni-loading {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 0.625rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n font-size: 0.875rem;\n}\n\n.omni-group {\n padding: 0;\n}\n.omni-group-label {\n display: none;\n}\n.omni-group-items {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n\n.omni-item {\n position: relative;\n display: block;\n width: 100%;\n flex-shrink: 0;\n border-radius: 0.5rem;\n padding: 0.75rem 0.875rem;\n text-align: left;\n font-size: 0.875rem;\n line-height: 1.25rem;\n cursor: pointer;\n border: none;\n background: transparent;\n color: var(--color-fd-foreground, #fafafa);\n transition: background 80ms;\n}\n.omni-item:hover,\n.omni-item-active {\n background: var(--color-fd-accent, rgba(209, 209, 209, 0.5));\n}\n.omni-item-active {\n color: var(--color-fd-accent-foreground, #171717);\n}\n.omni-item-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.omni-item-icon {\n display: none;\n}\n.omni-item-active .omni-item-icon {\n color: var(--color-fd-accent-foreground, #fafafa);\n}\n.omni-item-text {\n min-width: 0;\n}\n.omni-item-label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n font-weight: 500;\n line-height: 1.35;\n}\n.omni-item-subtitle {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 0.75rem;\n line-height: 1rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n opacity: 1;\n}\n.omni-item-active .omni-item-subtitle {\n color: var(--color-fd-muted-foreground, #737373);\n opacity: 1;\n}\n.omni-item-description {\n min-width: 0;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n margin-top: 0.625rem;\n padding-left: 0.75rem;\n border-left: 1px solid color-mix(in srgb, var(--color-fd-border, #d4d4d4) 70%, transparent);\n color: color-mix(in srgb, var(--color-fd-popover-foreground, #272727) 82%, transparent);\n font-size: 0.875rem;\n line-height: 1.5rem;\n font-weight: 400;\n}\n.omni-item-badge {\n display: none;\n}\n.omni-item-ext {\n display: none;\n}\n.omni-item-ext:hover {\n color: var(--color-fd-foreground, #fafafa);\n background: var(--color-fd-muted, #262626);\n}\n.omni-item-shortcuts {\n display: none;\n align-items: center;\n gap: 0.25rem;\n font-size: 10px;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n@media (min-width: 640px) {\n .omni-item-shortcuts {\n display: flex;\n }\n}\n.omni-kbd-sm {\n border-radius: 0.25rem;\n background: var(--color-fd-muted, #262626);\n padding: 0.125rem 0.25rem;\n font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n \"Liberation Mono\", \"Courier New\", monospace);\n}\n.omni-item-chevron {\n display: none;\n}\n\n.omni-highlight {\n border-radius: 0;\n background: transparent;\n padding: 0;\n color: var(--color-fd-primary, #ca8a04);\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n\n.omni-empty-group {\n padding: 0.5rem 0.75rem;\n font-size: 0.75rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-empty {\n padding: 1.5rem 0.75rem;\n text-align: center;\n font-size: 0.875rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-empty-icon {\n width: 2rem;\n height: 2rem;\n margin: 0 auto 0.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n background: var(--color-fd-muted, #262626);\n}\n\n.omni-footer {\n border-top: 1px solid var(--color-fd-border, #262626);\n background: color-mix(in srgb, var(--color-fd-secondary, #f5f5f5) 50%, transparent);\n}\n.omni-footer-inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n padding: 0.625rem 0.75rem;\n font-size: 0.75rem;\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-footer-hints {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0.75rem;\n}\n.omni-footer-hint {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n white-space: nowrap;\n}\n.omni-footer-hint svg {\n box-sizing: border-box;\n width: 1.375rem;\n height: 1.375rem;\n padding: 0.25rem;\n border-radius: 0.375rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n background: color-mix(in srgb, var(--color-fd-muted, #e5e5e5) 70%, transparent);\n color: var(--color-fd-muted-foreground, #737373);\n flex-shrink: 0;\n}\n.omni-footer-hint-desktop {\n display: none;\n}\n.omni-footer-filter {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n margin-left: auto;\n white-space: nowrap;\n}\n@media (min-width: 640px) {\n .omni-footer-hint-desktop {\n display: flex;\n }\n}\n.omni-filter-label {\n color: var(--color-fd-muted-foreground, #a3a3a3);\n}\n.omni-filter-value {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n}\n.omni-filter-button {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n border: 0;\n background: transparent;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n font: inherit;\n cursor: pointer;\n padding: 0;\n}\n.omni-filter-button:hover {\n color: var(--color-fd-accent-foreground, var(--color-fd-foreground, #171717));\n}\n.omni-filter-menu {\n position: absolute;\n right: 0;\n bottom: calc(100% + 0.5rem);\n z-index: 1;\n width: 10rem;\n border: 1px solid var(--color-fd-border, #d4d4d4);\n border-radius: 0.5rem;\n background: var(--color-fd-popover, #fafafa);\n padding: 0.25rem;\n box-shadow: 0 16px 32px -20px rgba(0, 0, 0, 0.45);\n}\n.omni-filter-option {\n display: flex;\n width: 100%;\n align-items: center;\n border: 0;\n border-radius: 0.375rem;\n background: transparent;\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground, #272727));\n cursor: pointer;\n font: inherit;\n padding: 0.5rem 0.625rem;\n text-align: left;\n}\n.omni-filter-option:hover,\n.omni-filter-option-active {\n background: var(--color-fd-accent, rgba(209, 209, 209, 0.5));\n}\n\n@keyframes fd-tweaks-slide-in {\n from {\n opacity: 0;\n transform: translateY(8px) scale(0.98);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n.fd-tweaks-backdrop {\n position: fixed;\n inset: 0;\n z-index: 50;\n pointer-events: none;\n}\n\n.fd-tweaks-dialog {\n position: fixed;\n bottom: 1rem;\n right: 1rem;\n left: auto;\n z-index: 60;\n width: 320px;\n max-width: calc(100vw - 2rem);\n pointer-events: auto;\n transition: left 220ms cubic-bezier(0.2, 0.8, 0.2, 1), right 220ms cubic-bezier(0.2, 0.8, 0.2, 1);\n\n background: color-mix(in srgb, var(--color-fd-card, var(--color-fd-background, #0a0a0a)) 18%, transparent);\n color: var(--color-fd-foreground, #fafafa);\n border: 1px solid color-mix(in srgb, var(--color-fd-border, rgba(255, 255, 255, 0.12)) 45%, transparent);\n border-radius: 0.875rem;\n\n backdrop-filter: blur(28px) saturate(180%);\n box-shadow:\n 0 24px 60px -12px rgba(0, 0, 0, 0.45),\n inset 0 1px 0 rgba(255, 255, 255, 0.08);\n font-family: var(--fd-font-sans, system-ui, sans-serif);\n animation: fd-tweaks-slide-in 180ms ease-out;\n\n isolation: isolate;\n}\n\n.fd-tweaks-dialog[data-side=\"left\"] {\n left: 1rem;\n right: auto;\n}\n\n@media (max-width: 480px) {\n .fd-tweaks-dialog,\n .fd-tweaks-dialog[data-side=\"left\"] {\n left: 1rem;\n right: 1rem;\n width: auto;\n }\n}\n\n.fd-tweaks-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.625rem 0.875rem;\n border-bottom: 1px solid color-mix(in srgb, var(--color-fd-border) 60%, transparent);\n cursor: grab;\n user-select: none;\n touch-action: none;\n}\n\n.fd-tweaks-title {\n margin-right: auto;\n}\n\n.fd-tweaks-header:active {\n cursor: grabbing;\n}\n\n.fd-tweaks-title {\n font-size: 0.6875rem;\n font-weight: 600;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-tweaks-close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n background: transparent;\n color: var(--color-fd-muted-foreground);\n border: 0;\n border-radius: 0.375rem;\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s;\n}\n\n.fd-tweaks-close:hover {\n background: color-mix(in srgb, var(--color-fd-accent) 70%, transparent);\n color: var(--color-fd-foreground);\n}\n\n.fd-tweaks-body {\n display: flex;\n flex-direction: column;\n gap: 0.875rem;\n padding: 0.875rem;\n}\n\n.fd-tweaks-row {\n display: flex;\n flex-direction: column;\n gap: 0.4375rem;\n}\n\n.fd-tweaks-row-label {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 0.625rem;\n font-weight: 600;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-tweaks-row-value {\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n font-size: 0.6875rem;\n font-weight: 400;\n letter-spacing: 0;\n text-transform: none;\n color: var(--color-fd-foreground);\n}\n\n.fd-tweaks-swatches {\n display: grid;\n grid-template-columns: repeat(5, 1fr);\n gap: 0.375rem;\n}\n\n.fd-tweaks-swatch {\n position: relative;\n aspect-ratio: 1 / 1;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 70%, transparent);\n border-radius: 0.375rem;\n cursor: pointer;\n transition:\n transform 0.1s ease,\n box-shadow 0.1s ease;\n padding: 0;\n\n backdrop-filter: blur(28px);\n}\n\n.fd-tweaks-swatch:hover {\n transform: scale(1.06);\n}\n\n.fd-tweaks-swatch[data-selected] {\n box-shadow:\n 0 0 0 2px color-mix(in srgb, var(--color-fd-background, #0a0a0a) 85%, transparent),\n 0 0 0 4px var(--color-fd-foreground, #fafafa);\n}\n\n.fd-tweaks-swatch-check {\n position: absolute;\n inset: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n mix-blend-mode: difference;\n}\n\n.fd-tweaks-chips {\n display: flex;\n gap: 0.25rem;\n padding: 0.25rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 40%, transparent);\n border-radius: 0.5rem;\n\n background: color-mix(in srgb, var(--color-fd-muted) 10%, transparent);\n backdrop-filter: blur(40px);\n isolation: isolate;\n}\n\n.fd-tweaks-chip {\n flex: 1;\n padding: 0.4rem 0.5rem;\n font-size: 0.75rem;\n font-weight: 500;\n font-family: inherit;\n color: var(--color-fd-muted-foreground);\n background: transparent;\n border: 0;\n border-radius: 0.375rem;\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s;\n}\n\n.fd-tweaks-chip:hover {\n color: var(--color-fd-foreground);\n}\n\n.fd-tweaks-chip[data-selected] {\n background: color-mix(in srgb, var(--color-fd-accent, var(--color-fd-foreground)) 22%, transparent);\n color: var(--color-fd-foreground);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);\n backdrop-filter: blur(48px);\n}\n\n.fd-tweaks-slider {\n width: 100%;\n height: 4px;\n appearance: none;\n -webkit-appearance: none;\n background: color-mix(in srgb, var(--color-fd-muted) 45%, transparent);\n border-radius: 9999px;\n outline: none;\n cursor: pointer;\n margin-top: 0.25rem;\n}\n\n.fd-tweaks-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 14px;\n height: 14px;\n border-radius: 9999px;\n background: var(--color-fd-primary);\n border: 2px solid var(--color-fd-background, #0a0a0a);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n cursor: pointer;\n}\n\n.fd-tweaks-slider::-moz-range-thumb {\n width: 14px;\n height: 14px;\n border-radius: 9999px;\n background: var(--color-fd-primary);\n border: 2px solid var(--color-fd-background, #0a0a0a);\n cursor: pointer;\n}\n\n.fd-tweaks-select-wrap {\n position: relative;\n width: 100%;\n}\n\n.fd-tweaks-select-trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n width: 100%;\n height: 2rem;\n padding: 0 0.625rem;\n font-family: inherit;\n font-size: 0.8125rem;\n color: var(--color-fd-foreground);\n background: color-mix(in srgb, var(--color-fd-background, transparent) 10%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 40%, transparent);\n border-radius: 0.375rem;\n outline: none;\n cursor: pointer;\n transition:\n border-color 0.15s,\n background 0.15s;\n}\n\n.fd-tweaks-select-trigger:hover {\n border-color: color-mix(in srgb, var(--color-fd-foreground) 25%, var(--color-fd-border));\n background: color-mix(in srgb, var(--color-fd-background, transparent) 18%, transparent);\n}\n\n.fd-tweaks-select-trigger:focus-visible {\n border-color: var(--color-fd-primary);\n box-shadow: 0 0 0 1px var(--color-fd-primary);\n}\n\n.fd-tweaks-select-trigger-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n}\n\n.fd-tweaks-select-chevron {\n opacity: 0.5;\n transition: transform 0.15s;\n flex-shrink: 0;\n}\n\n.fd-tweaks-select-trigger[data-open] .fd-tweaks-select-chevron {\n transform: rotate(180deg);\n}\n\n.fd-tweaks-select-menu {\n position: absolute;\n top: calc(100% + 0.25rem);\n left: 0;\n right: 0;\n z-index: 50;\n display: flex;\n flex-direction: column;\n padding: 0.25rem;\n max-height: 240px;\n overflow-y: auto;\n background: var(--color-fd-popover, var(--color-fd-card));\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 65%, transparent);\n border-radius: 0.5rem;\n box-shadow:\n 0 10px 28px -10px rgba(0, 0, 0, 0.45),\n 0 4px 10px -4px rgba(0, 0, 0, 0.35);\n}\n\n.fd-tweaks-select-menu[data-flip-up] {\n top: auto;\n bottom: calc(100% + 0.25rem);\n}\n\n.fd-tweaks-select-option {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.375rem 0.5rem;\n font-family: inherit;\n font-size: 0.75rem;\n color: color-mix(in srgb, var(--color-fd-foreground) 65%, transparent);\n background: transparent;\n border: none;\n border-radius: 0.25rem;\n text-align: left;\n cursor: pointer;\n transition:\n background 0.1s,\n color 0.1s;\n}\n\n.fd-tweaks-select-option:hover {\n color: var(--color-fd-foreground);\n background: color-mix(in srgb, var(--color-fd-foreground) 6%, transparent);\n}\n\n.fd-tweaks-select-option[data-active] {\n color: var(--color-fd-foreground);\n background: color-mix(in srgb, var(--color-fd-foreground) 8%, transparent);\n}\n\n.fd-tweaks-select-option-dot {\n width: 0.25rem;\n height: 0.25rem;\n border-radius: 9999px;\n background: transparent;\n flex-shrink: 0;\n}\n\n.fd-tweaks-select-option[data-active] .fd-tweaks-select-option-dot {\n background: var(--color-fd-primary);\n}\n\n.fd-tweaks-section-divider {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-top: 0.25rem;\n}\n\n.fd-tweaks-section-divider::after {\n content: \"\";\n flex: 1;\n height: 1px;\n background: color-mix(in srgb, var(--color-fd-border) 55%, transparent);\n}\n\n.fd-tweaks-section-label {\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n font-size: 0.625rem;\n font-weight: 600;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-tweaks-color-grid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 0.375rem 0.5rem;\n}\n\n.fd-tweaks-color-pair {\n display: grid;\n grid-template-columns: 16px minmax(0, 1fr);\n align-items: center;\n gap: 0.375rem;\n position: relative;\n}\n\n.fd-tweaks-color-swatch-mini {\n width: 16px;\n height: 16px;\n border-radius: 0.25rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 70%, transparent);\n padding: 0;\n cursor: pointer;\n transition: transform 0.1s ease;\n}\n\n.fd-tweaks-color-swatch-mini:hover {\n transform: scale(1.1);\n}\n\n.fd-tweaks-color-text {\n width: 100%;\n min-width: 0;\n height: 1.625rem;\n padding: 0 0.4rem;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n font-size: 0.6875rem;\n color: var(--color-fd-foreground);\n background: color-mix(in srgb, var(--color-fd-background, transparent) 8%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 40%, transparent);\n border-radius: 0.25rem;\n outline: none;\n backdrop-filter: blur(40px);\n transition: border-color 0.15s;\n}\n\n.fd-tweaks-color-text:focus {\n border-color: var(--color-fd-primary);\n}\n\n.fd-tweaks-color-label {\n grid-column: 1 / -1;\n font-size: 0.5625rem;\n font-weight: 500;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n padding-inline-start: 1.625rem;\n margin-top: -0.125rem;\n line-height: 1;\n}\n\n.fd-tweaks-export {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 40%, transparent);\n border-radius: 0.5rem;\n background: color-mix(in srgb, var(--color-fd-background, transparent) 8%, transparent);\n backdrop-filter: blur(40px);\n overflow: hidden;\n}\n\n.fd-tweaks-export-tabs {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.25rem 0.25rem 0.375rem;\n border-bottom: 1px solid color-mix(in srgb, var(--color-fd-border) 45%, transparent);\n}\n\n.fd-tweaks-export-tab {\n padding: 0.25rem 0.5rem;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n font-size: 0.625rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n background: transparent;\n border: 0;\n border-radius: 0.25rem;\n cursor: pointer;\n transition: color 0.15s, background 0.15s;\n}\n\n.fd-tweaks-export-tab:hover {\n color: var(--color-fd-foreground);\n}\n\n.fd-tweaks-export-tab[data-selected] {\n color: var(--color-fd-foreground);\n background: color-mix(in srgb, var(--color-fd-accent) 60%, transparent);\n}\n\n.fd-tweaks-export-copy {\n margin-inline-start: auto;\n padding: 0.25rem 0.625rem;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n font-size: 0.625rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n background: color-mix(in srgb, var(--color-fd-muted) 30%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 50%, transparent);\n border-radius: 0.25rem;\n cursor: pointer;\n transition: color 0.15s, background 0.15s, border-color 0.15s;\n}\n\n.fd-tweaks-export-copy:hover {\n color: var(--color-fd-foreground);\n background: color-mix(in srgb, var(--color-fd-accent) 55%, transparent);\n border-color: color-mix(in srgb, var(--color-fd-foreground) 25%, var(--color-fd-border));\n}\n\n.fd-tweaks-export-code {\n margin: 0;\n padding: 0.5rem 0.625rem;\n max-height: 200px;\n overflow: auto;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n font-size: 0.6875rem;\n line-height: 1.55;\n color: var(--color-fd-foreground);\n white-space: pre;\n background: transparent;\n}\n\n.fd-tweaks-export-code-highlighted {\n --sh-class: #6366f1;\n --sh-identifier: var(--color-fd-foreground);\n --sh-sign: color-mix(in srgb, var(--color-fd-muted-foreground) 80%, transparent);\n --sh-property: #0ea5e9;\n --sh-entity: #0ea5e9;\n --sh-jsxliterals: #8b5cf6;\n --sh-string: #15803d;\n --sh-keyword: #d946ef;\n --sh-comment: color-mix(in srgb, var(--color-fd-muted-foreground) 70%, transparent);\n}\n\n.dark .fd-tweaks-export-code-highlighted {\n --sh-class: #a5b4fc;\n --sh-identifier: var(--color-fd-foreground);\n --sh-sign: color-mix(in srgb, var(--color-fd-muted-foreground) 90%, transparent);\n --sh-property: #7dd3fc;\n --sh-entity: #7dd3fc;\n --sh-jsxliterals: #c4b5fd;\n --sh-string: #86efac;\n --sh-keyword: #f0abfc;\n --sh-comment: color-mix(in srgb, var(--color-fd-muted-foreground) 70%, transparent);\n}\n\n.fd-tweaks-export-code-highlighted .sh__line {\n display: block;\n}\n\n.fd-tweaks-dialog:has(.fd-tweaks-color-grid) {\n width: 360px;\n max-height: calc(100vh - 2rem);\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.fd-tweaks-reset {\n padding: 0.25rem 0.5rem;\n font-size: 0.625rem;\n font-weight: 500;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n font-family: inherit;\n color: var(--color-fd-muted-foreground);\n background: transparent;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 60%, transparent);\n border-radius: 0.3125rem;\n cursor: pointer;\n transition:\n color 0.15s,\n border-color 0.15s,\n background 0.15s;\n}\n\n.fd-tweaks-reset:hover {\n color: var(--color-fd-foreground);\n border-color: color-mix(in srgb, var(--color-fd-foreground) 30%, var(--color-fd-border));\n background: color-mix(in srgb, var(--color-fd-accent) 50%, transparent);\n}\n\n.fd-tweaks-trigger {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n color: var(--color-fd-muted-foreground);\n background: transparent;\n border: 1px solid var(--color-fd-border);\n font-family: inherit;\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s,\n border-color 0.15s;\n}\n\n.fd-tweaks-trigger:hover {\n color: var(--color-fd-foreground);\n background: var(--color-fd-accent);\n}\n\n.fd-tweaks-trigger[data-open] {\n color: var(--color-fd-accent-foreground, var(--color-fd-foreground));\n background: var(--color-fd-accent);\n border-color: color-mix(in srgb, var(--color-fd-primary) 35%, var(--color-fd-border));\n}\n\n.fd-tweaks-trigger svg {\n flex-shrink: 0;\n}\n\n.fd-tweaks-trigger-sidebar {\n padding: 0.375rem 0.625rem;\n border-radius: var(--fd-tweaks-trigger-radius-match, 1.5rem);\n font-size: 0.75rem;\n font-weight: 500;\n letter-spacing: 0.02em;\n line-height: 1;\n}\n\n.fd-tweaks-trigger-sidebar .fd-tweaks-trigger-label {\n text-transform: capitalize;\n}\n\n.fd-tweaks-trigger-floating {\n position: fixed;\n bottom: 1rem;\n left: 1rem;\n z-index: 40;\n height: 2.5rem;\n padding: 0 0.875rem;\n border-radius: 9999px;\n font-size: 0.8125rem;\n font-weight: 500;\n background: color-mix(in srgb, var(--color-fd-card, var(--color-fd-background)) 22%, transparent);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);\n backdrop-filter: blur(28px) saturate(180%);\n}\n\n@media (min-width: 768px) {\n .fd-tweaks-trigger-floating[data-fallback] {\n display: none;\n }\n}\n\nbody {\n font-family: var(--fd-font-sans, var(--font-geist-sans, ui-sans-serif, system-ui, sans-serif));\n}\n\n:where(.fd-sidebar, aside#nd-sidebar, aside#nd-sidebar-mobile)\n button[aria-controls][aria-expanded] {\n appearance: none;\n -webkit-appearance: none;\n background: none;\n border: 0;\n color: inherit;\n font: inherit;\n letter-spacing: inherit;\n line-height: inherit;\n text-transform: inherit;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: var(\n --fd-font-mono,\n var(\n --font-geist-mono,\n ui-monospace,\n \"Cascadia Code\",\n \"Source Code Pro\",\n Menlo,\n Consolas,\n monospace\n )\n );\n}\n\n.prose h1,\narticle h1 {\n font-size: calc(var(--fd-h1-size, 2.25rem) * var(--fd-font-scale, 1));\n font-weight: var(--fd-h1-weight, 700);\n line-height: var(--fd-h1-line-height, 1.2);\n letter-spacing: var(--fd-h1-letter-spacing, -0.02em);\n}\n\n.prose h2,\narticle h2 {\n font-size: calc(var(--fd-h2-size, 1.5rem) * var(--fd-font-scale, 1));\n font-weight: var(--fd-h2-weight, 600);\n line-height: var(--fd-h2-line-height, 1.3);\n letter-spacing: var(--fd-h2-letter-spacing, -0.01em);\n}\n\n.prose h3,\narticle h3 {\n font-size: calc(var(--fd-h3-size, 1.25rem) * var(--fd-font-scale, 1));\n font-weight: var(--fd-h3-weight, 600);\n line-height: var(--fd-h3-line-height, 1.4);\n letter-spacing: var(--fd-h3-letter-spacing, normal);\n}\n\n.prose h4,\narticle h4 {\n font-size: calc(var(--fd-h4-size, 1.125rem) * var(--fd-font-scale, 1));\n font-weight: var(--fd-h4-weight, 600);\n line-height: var(--fd-h4-line-height, 1.4);\n letter-spacing: var(--fd-h4-letter-spacing, normal);\n}\n\n.prose p,\n.prose li,\n.prose td,\narticle p {\n font-size: calc(var(--fd-body-size, 1rem) * var(--fd-font-scale, 1));\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n}\n\n.prose small,\narticle small,\n.text-sm {\n font-size: calc(var(--fd-small-size, 0.875rem) * var(--fd-font-scale, 1));\n font-weight: var(--fd-small-weight, 400);\n line-height: var(--fd-small-line-height, 1.5);\n}\n\n[style*=\"--callout-color\"] {\n align-items: start;\n}\n\n[style*=\"--callout-color\"] > [role=\"none\"] {\n align-self: stretch;\n}\n\n[style*=\"--callout-color\"] > svg {\n flex-shrink: 0;\n margin-top: 0;\n}\n\nfigure.shiki pre {\n padding: 0.15rem 0.5rem;\n white-space: pre;\n}\n\nfigure.shiki pre > code {\n display: block;\n white-space: inherit;\n}\n\nfigure.shiki pre > code:has(> .line),\nfigure.shiki pre > code:has(> [data-line]) {\n display: grid;\n}\n\nfigure.shiki pre > code > .line,\nfigure.shiki pre > code > [data-line] {\n white-space: inherit;\n}\n\nfigure.shiki [data-fd-code-space] {\n display: inline-block;\n white-space: pre;\n}\n\nfigure.shiki [data-fd-code-space=\"gap\"] {\n width: var(--fd-code-token-gap, 1.75ch);\n}\n\nfigure.shiki [data-fd-code-space=\"indent\"] {\n width: calc(var(--fd-code-space-count, 1) * 1ch);\n}\n\nfigure.shiki pre > code > [data-line] {\n padding: 0 0.25rem;\n}\n\n.fd-code-group-panel[data-state=\"inactive\"] {\n display: none;\n}\n\n.fd-code-group-panel[data-state=\"active\"] {\n display: block;\n}\n\nfigure.shiki:has(figcaption) > div:first-child {\n position: relative;\n}\n\nfigure.shiki:has(figcaption) > div:first-child::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: repeating-linear-gradient(\n -45deg,\n currentColor,\n currentColor 1px,\n transparent 1px,\n transparent 6px\n );\n opacity: 0.03;\n pointer-events: none;\n}\n\n.dark figure.shiki:has(figcaption) > div:first-child::before {\n opacity: 0.05;\n}\n\nfigure.shiki:has(figcaption) figcaption {\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n SFMono-Regular,\n \"SF Mono\",\n Menlo,\n Consolas,\n monospace\n );\n font-size: 0.75rem;\n letter-spacing: 0.01em;\n}\n\n.fd-page-meta {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.375rem;\n margin-bottom: 0.75rem;\n}\n\n.fd-page-meta-dot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n SFMono-Regular,\n \"SF Mono\",\n Menlo,\n Consolas,\n monospace\n );\n font-size: 0.8rem;\n line-height: 1;\n color: color-mix(in srgb, var(--color-fd-muted-foreground) 78%, transparent);\n}\n\n.fd-page-meta-item {\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n SFMono-Regular,\n \"SF Mono\",\n Menlo,\n Consolas,\n monospace\n );\n font-size: 0.6875rem;\n font-weight: 500;\n letter-spacing: 0;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-page-description {\n margin-bottom: 1rem;\n font-size: 1.125rem;\n line-height: 1.75;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-breadcrumb {\n display: flex;\n align-items: center;\n gap: 0;\n font-size: 0.8rem;\n color: var(--color-fd-muted-foreground);\n margin-bottom: 0.5rem;\n}\n\n.fd-breadcrumb-item {\n display: inline-flex;\n align-items: center;\n}\n\n.fd-breadcrumb-sep {\n margin: 0 0.375rem;\n opacity: 0.4;\n font-size: 0.75rem;\n}\n\n.fd-breadcrumb-parent {\n opacity: 0.6;\n font-weight: 400;\n}\n\n.fd-breadcrumb-link {\n color: inherit;\n text-decoration: none;\n cursor: pointer;\n transition:\n opacity 0.15s,\n color 0.15s;\n}\n\n.fd-breadcrumb-link:hover {\n opacity: 1;\n color: var(--color-fd-foreground);\n}\n\n.fd-breadcrumb-current {\n font-weight: 500;\n color: var(--color-fd-foreground);\n}\n\n.fd-below-title-block {\n margin-top: 0.5rem;\n margin-bottom: 1.5rem;\n}\n\n.fd-last-updated-inline {\n color: var(--color-fd-muted-foreground);\n font-size: 0.75rem;\n font-weight: 400;\n margin: 0 0 0.75rem;\n line-height: 1.5;\n}\n\n.fd-title-separator {\n border: none;\n border-top: 1px solid var(--color-fd-border);\n margin: 0 0 0.75rem;\n}\n\n.fd-actions-portal [data-page-actions] {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.fd-page-actions,\n[data-page-actions] {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n margin-bottom: 0.75rem;\n margin-top: 0.25rem;\n width: 100%;\n}\n\n[data-page-actions][data-actions-alignment=\"right\"],\n.fd-page-actions[data-actions-alignment=\"right\"],\n[data-actions-alignment=\"right\"] > [data-page-actions] {\n justify-content: flex-end;\n}\n\n[data-page-actions][data-actions-alignment=\"left\"],\n.fd-page-actions[data-actions-alignment=\"left\"],\n[data-actions-alignment=\"left\"] > [data-page-actions] {\n justify-content: flex-start;\n}\n\n.fd-page-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.375rem 0.75rem;\n font-size: 0.8125rem;\n font-weight: 500;\n line-height: 1;\n height: 2rem;\n color: var(--color-fd-muted-foreground);\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 0.375rem;\n cursor: pointer;\n white-space: nowrap;\n transition:\n color 0.15s,\n background 0.15s,\n border-color 0.15s;\n user-select: none;\n}\n.fd-ai-fm-msg-content .fd-ai-code-block pre {\n padding:10px !important;\n}\n.fd-page-action-btn:hover {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n.fd-page-action-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.fd-page-action-btn[data-copied=\"true\"] {\n color: var(--color-fd-foreground);\n}\n\n.fd-page-action-btn[data-selected=\"true\"] {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n.fd-page-action-btn svg {\n flex-shrink: 0;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-page-action-btn[data-selected=\"true\"] svg {\n color: currentColor;\n}\n\n.fd-page-action-dropdown {\n position: relative;\n}\n\n.fd-page-action-menu {\n position: absolute;\n top: calc(100% + 0.375rem);\n right: 0;\n z-index: 50;\n min-width: 220px;\n padding: 0.375rem;\n background: var(--color-fd-popover);\n border: 1px solid var(--color-fd-border);\n border-radius: 0.5rem;\n box-shadow: 0 4px 24px hsl(0 0% 0% / 0.15);\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n animation: fd-page-actions-fade-in 0.12s ease-out;\n}\n\n@keyframes fd-page-actions-fade-in {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.fd-page-action-menu-item,\n.fd-prompt-menu-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n font-size: 0.8125rem;\n font-weight: 400;\n color: var(--color-fd-popover-foreground);\n background: transparent;\n border: none;\n border-radius: 0.25rem;\n cursor: pointer;\n text-align: left;\n transition:\n background 0.1s,\n color 0.1s;\n}\n\n.fd-page-action-menu-item {\n padding: 0.2rem 0.625rem;\n}\n\n.fd-page-action-menu-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.25rem;\n height: 1.25rem;\n flex-shrink: 0;\n}\n\n.fd-page-action-menu-icon svg {\n width: 1rem;\n height: 1rem;\n}\n\n.fd-page-action-menu-label {\n flex: 1;\n}\n\n.fd-prompt {\n display: flex;\n flex-direction: column;\n gap: 0.875rem;\n margin: 1.25rem 0;\n padding: 1rem;\n border: 1px solid var(--color-fd-border);\n border-radius: 0.75rem;\n background: color-mix(in srgb, var(--color-fd-card) 78%, transparent);\n}\n\n.fd-prompt-header {\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n}\n\n.fd-prompt-icon,\n.fd-prompt-action-icon,\n.fd-prompt-menu-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.fd-prompt-icon {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 0.5rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 80%, transparent);\n background: color-mix(in srgb, var(--color-fd-background) 55%, transparent);\n color: var(--color-fd-foreground);\n}\n\n.fd-prompt-icon svg,\n.fd-prompt-action-icon svg,\n.fd-prompt-menu-icon svg {\n width: 1rem;\n height: 1rem;\n}\n\n.fd-prompt-copy {\n min-width: 0;\n}\n\n.fd-prompt-title {\n margin: 0;\n color: var(--color-fd-foreground);\n font-size: 0.9375rem;\n font-weight: 600;\n line-height: 1.35;\n}\n\n.fd-prompt-description {\n margin: -0.05rem 0 0;\n color: var(--color-fd-muted-foreground);\n font-size: 0.875rem;\n line-height: 1.55;\n}\n\n.fd-prompt-body {\n margin: 0;\n padding: 0.875rem 1rem;\n border-radius: 0.625rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 82%, transparent);\n background: color-mix(in srgb, var(--color-fd-background) 45%, transparent);\n overflow-x: auto;\n}\n\n.fd-prompt-body > pre.fd-prompt-code {\n margin: 0;\n padding: 0 !important;\n border: 0 !important;\n border-radius: 0 !important;\n background: transparent !important;\n box-shadow: none !important;\n color: var(--color-fd-foreground);\n font-size: 0.875rem;\n line-height: 1.65;\n white-space: pre-wrap;\n word-break: break-word;\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n \"SF Mono\",\n SFMono-Regular,\n Menlo,\n Consolas,\n monospace\n );\n}\n\n.fd-prompt-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n align-items: center;\n justify-content: flex-end;\n}\n\n.fd-prompt-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.4375rem;\n min-height: 2rem;\n padding: 0.375rem 0.75rem;\n border: 1px solid var(--color-fd-border);\n border-radius: 0.375rem;\n background: var(--color-fd-secondary);\n color: var(--color-fd-muted-foreground);\n font-size: 0.8125rem;\n font-weight: 500;\n line-height: 1;\n cursor: pointer;\n transition:\n color 0.15s,\n background 0.15s,\n border-color 0.15s;\n}\n\n.fd-prompt-action-btn:hover {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n.fd-prompt-action-btn[data-copied=\"true\"] {\n color: var(--color-fd-foreground);\n}\n\n.fd-prompt-action-icon-copied[hidden] {\n display: none;\n}\n\n.fd-prompt-dropdown {\n position: relative;\n}\n\n.fd-prompt-menu {\n position: absolute;\n top: calc(100% + 0.375rem);\n right: 0;\n z-index: 50;\n min-width: 220px;\n padding: 0.375rem;\n background: var(--color-fd-popover);\n border: 1px solid var(--color-fd-border);\n border-radius: 0.5rem;\n box-shadow: 0 4px 24px hsl(0 0% 0% / 0.15);\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n animation: fd-page-actions-fade-in 0.12s ease-out;\n}\n\n.fd-prompt-menu-item {\n padding: 0.25rem 0.625rem;\n}\n\n.fd-page-action-menu-item:hover,\n.fd-prompt-menu-item:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n.fd-prompt-menu-label {\n flex: 1;\n}\n\n.fd-feedback {\n margin-top: 2rem;\n margin-bottom: 1.25rem;\n padding-top: 1.25rem;\n border-top: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n}\n\n.fd-feedback-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n flex-wrap: wrap;\n}\n\n.fd-feedback-question {\n margin: 0;\n font-size: 0.9375rem;\n font-weight: 600;\n line-height: 1.5;\n color: var(--color-fd-foreground);\n}\n\n.fd-feedback-actions {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n\n.fd-feedback-form {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n margin-top: 0.875rem;\n}\n\n.fd-feedback-choice[data-selected=\"true\"] {\n background: var(--color-fd-accent, hsl(0 0% 96%));\n color: var(--color-fd-foreground);\n border-color: color-mix(in srgb, var(--color-fd-primary, currentColor) 65%, transparent);\n}\n\n.fd-feedback-input {\n width: 100%;\n min-height: 4.75rem;\n resize: vertical;\n padding: 0.875rem 1rem;\n border: 1px solid\n color-mix(in srgb, var(--color-fd-border, hsl(0 0% 80% / 50%)) 78%, var(--color-fd-foreground) 22%);\n background: var(--color-fd-card, transparent);\n color: var(--color-fd-foreground);\n font: inherit;\n line-height: 1.55;\n outline: none;\n transition:\n border-color 150ms ease,\n box-shadow 150ms ease,\n background-color 150ms ease;\n}\n\n.fd-feedback-input::placeholder {\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n}\n\n.fd-feedback-input:focus {\n border-color: var(--color-fd-ring, var(--color-fd-primary, currentColor));\n box-shadow: 0 0 0 1px var(--color-fd-ring, var(--color-fd-primary, currentColor));\n}\n\n.fd-feedback-submit-row {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n flex-wrap: nowrap;\n min-height: 2rem;\n}\n\n.fd-feedback-submit {\n min-width: 7rem;\n padding-inline: 0.875rem;\n justify-content: center;\n}\n\n.fd-feedback-submit:disabled {\n cursor: not-allowed;\n opacity: 0.65;\n}\n\n.fd-feedback-spinner {\n width: 0.875rem;\n height: 0.875rem;\n border-radius: 9999px;\n border: 2px solid currentColor;\n border-right-color: transparent;\n animation: fd-feedback-spin 0.8s linear infinite;\n}\n\n.fd-feedback-status {\n margin: 0 !important;\n font-size: 0.75rem;\n line-height: 1.3;\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n}\n\n.fd-feedback-status[data-status=\"success\"] {\n display: inline-flex;\n align-self: center;\n align-items: center;\n gap: 0.4rem;\n min-height: 2rem;\n}\n\n.fd-feedback-status[data-status=\"error\"] {\n color: var(--color-fd-foreground);\n}\n\nhtml[data-fd-route-kind=\"changelog\"] .fd-ai-fm-input-bar {\n display: none !important;\n}\n\n.fd-changelog-mobile-summary {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n}\n\n.fd-changelog-mobile-content {\n margin-top: 1.25rem;\n}\n\n.fd-changelog-frame {\n width: 100%;\n padding-inline: 1.5rem;\n}\n\n.fd-changelog-header-strip {\n margin-inline: -1.5rem;\n}\n\n.fd-changelog-search-row {\n display: flex;\n justify-content: flex-start;\n}\n\n.fd-changelog-search {\n position: relative;\n display: flex;\n align-items: center;\n width: min(100%, 22rem);\n}\n\n.fd-changelog-search-icon {\n pointer-events: none;\n position: absolute;\n left: 0.5rem;\n top: 50%;\n z-index: 1;\n display: inline-flex;\n width: 1.9rem;\n height: 1.9rem;\n align-items: center;\n justify-content: center;\n transform: translateY(-50%);\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 78%, transparent);\n border-radius: 0.75rem;\n background: color-mix(in srgb, var(--color-fd-muted) 58%, transparent);\n color: var(--color-fd-muted-foreground);\n box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.28);\n}\n\n.fd-changelog-search-icon svg {\n width: 1rem;\n height: 1rem;\n}\n\n.fd-changelog-search-input {\n width: 100%;\n min-height: 2.75rem;\n padding: 0 0.9rem 0 3rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 82%, transparent);\n border-radius: 1rem;\n background: color-mix(in srgb, var(--color-fd-card) 86%, transparent);\n color: var(--color-fd-foreground);\n font-size: 0.9rem;\n line-height: 1.4;\n outline: none;\n transition:\n border-color 0.16s ease,\n box-shadow 0.16s ease,\n background-color 0.16s ease;\n}\n\n.fd-changelog-search-input::placeholder {\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-search-input:focus-visible {\n border-color: color-mix(in srgb, var(--color-fd-primary) 34%, var(--color-fd-border));\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-fd-primary) 14%, transparent);\n}\n\n.dark .fd-changelog-search-icon {\n background: rgb(255 255 255 / 0.06);\n box-shadow: none;\n}\n\n.dark .fd-changelog-search-input {\n background: rgb(255 255 255 / 0.04);\n}\n\n.fd-changelog-shell {\n display: block;\n width: 100%;\n}\n\n.fd-changelog-main {\n min-width: 0;\n width: 100%;\n}\n\n.fd-changelog-toc {\n margin-top: 2.5rem;\n}\n\n.fd-changelog-toc-card {\n position: relative;\n border-left: 1px solid color-mix(in srgb, var(--color-fd-border) 70%, transparent);\n padding-left: 1rem;\n}\n\n.fd-changelog-toc-heading {\n margin: 0 0 0.75rem;\n font-family: var(--font-geist-mono);\n font-size: 0.7rem !important;\n font-weight: 500;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-toc-list {\n display: flex;\n flex-direction: column;\n gap: 0.15rem;\n}\n\n.fd-changelog-toc-link {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 0.18rem;\n margin-left: -1rem;\n border-left: 2px solid transparent;\n border-radius: 0 0.85rem 0.85rem 0;\n padding: 0.45rem 0.65rem 0.45rem calc(1rem - 1px);\n color: var(--color-fd-muted-foreground);\n text-decoration: none;\n transition:\n color 0.16s ease,\n border-color 0.16s ease,\n background-color 0.16s ease;\n}\n\n.fd-changelog-toc-link:hover {\n color: var(--color-fd-foreground);\n text-decoration: none;\n}\n\n.fd-changelog-toc-meta {\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-size: 10px;\n font-weight: 400;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-toc-title {\n font-size: 0.84rem;\n font-weight: 500;\n line-height: 1.45;\n color: inherit;\n}\n\n.fd-changelog-directory-line {\n display: none;\n}\n\n.fd-changelog-desktop-grid {\n display: none;\n}\n\n.fd-changelog-rail {\n position: relative;\n display: flex;\n width: 2rem;\n flex-shrink: 0;\n flex-direction: column;\n align-items: center;\n align-self: stretch;\n padding-top: 0.35rem;\n}\n\n.fd-changelog-timeline-line {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n width: 2px;\n transform: translateX(-50%);\n border-radius: 1px;\n background: color-mix(in srgb, var(--color-fd-foreground) 24%, var(--color-fd-border));\n pointer-events: none;\n}\n\n.fd-changelog-timeline-dot {\n position: relative;\n z-index: 2;\n flex-shrink: 0;\n width: 0.75rem;\n height: 0.75rem;\n border-radius: 9999px;\n background-color: var(--color-fd-primary);\n box-shadow:\n 0 0 0 2px var(--color-fd-background, var(--color-fd-card, #0a0a0a)),\n 0 0 0 1px color-mix(in srgb, var(--color-fd-foreground) 12%, transparent);\n pointer-events: none;\n}\n\n.fd-changelog-rail-end-mask {\n position: absolute;\n top: 1rem;\n bottom: 0;\n left: 50%;\n z-index: 1;\n width: 0.5rem;\n transform: translateX(-50%);\n background: var(--color-fd-background, var(--color-fd-card, #fff));\n pointer-events: none;\n}\n\n.fd-changelog-tag {\n display: inline-flex;\n height: 1.5rem;\n width: fit-content;\n align-items: center;\n justify-content: center;\n padding: 0 0.5rem;\n font-size: 0.75rem;\n font-weight: 500;\n line-height: 1;\n color: var(--color-fd-muted-foreground);\n background-color: color-mix(in srgb, var(--color-fd-muted) 85%, transparent);\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 65%, transparent);\n border-radius: 20px;\n text-transform: none;\n letter-spacing: normal;\n}\n\n.fd-changelog-date {\n display: block;\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-size: 11px;\n font-weight: 400;\n line-height: 1.2;\n letter-spacing: 0.14em;\n padding-bottom: 0.8rem;\n margin-top: 5px;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-version-box {\n position: relative;\n z-index: 1;\n display: inline-flex;\n align-self: flex-start;\n min-height: 2.25rem;\n min-width: 2.25rem;\n max-width: max-content;\n align-items: center;\n justify-content: center;\n padding: 0 0.5rem;\n border-radius: 0.5rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 70%, transparent);\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-size: 10px;\n font-weight: 700;\n line-height: 1.2;\n text-align: center;\n white-space: nowrap;\n text-transform: none;\n color: var(--color-fd-foreground);\n background-color: color-mix(in srgb, var(--color-fd-muted) 40%, transparent);\n}\n\n.fd-changelog-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 0.625rem;\n}\n\n.fd-changelog-actions :is(a, button),\n.fd-changelog-action-link {\n display: inline-flex;\n min-height: 2.5rem;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.625rem 1rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 75%, transparent);\n border-radius: 0.875rem !important;\n background: color-mix(in srgb, var(--color-fd-card) 82%, transparent);\n color: var(--color-fd-foreground);\n font-size: 0.82rem;\n font-weight: 500;\n line-height: 1;\n text-decoration: none !important;\n transition:\n background-color 0.15s ease,\n border-color 0.15s ease,\n color 0.15s ease;\n box-shadow: 0 1px 0 rgb(255 255 255 / 0.24);\n}\n\n.fd-changelog-actions :is(a, button):hover,\n.fd-changelog-action-link:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n text-decoration: none !important;\n}\n\n.fd-changelog-actions :is(a, button) svg,\n.fd-changelog-action-link svg {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n\n.dark .fd-changelog-actions :is(a, button),\n.dark .fd-changelog-action-link {\n background: rgb(255 255 255 / 0.06);\n box-shadow: none;\n}\n\n.dark .fd-changelog-actions :is(a, button):hover,\n.dark .fd-changelog-action-link:hover {\n background: rgb(255 255 255 / 0.1);\n}\n\n.fd-changelog-entry + .fd-changelog-entry {\n border-top: none;\n padding-top: 0;\n margin-top: 0;\n}\n\n@media (min-width: 768px) {\n .fd-changelog-mobile-summary,\n .fd-changelog-mobile-content {\n display: none;\n }\n\n .fd-changelog-directory-line {\n position: absolute;\n top: calc(0.35rem + 0.25rem + 0.375rem);\n bottom: 1rem;\n left: calc(5.75rem + 1rem + 1rem);\n display: block;\n width: 2px;\n transform: translateX(-50%);\n border-radius: 9999px;\n background: color-mix(in srgb, var(--color-fd-foreground) 24%, var(--color-fd-border));\n pointer-events: none;\n }\n\n .fd-changelog-desktop-grid {\n display: grid;\n grid-template-columns: 5.75rem 2rem minmax(0, 1fr);\n column-gap: 1rem;\n }\n}\n\n@media (min-width: 1024px) {\n .fd-changelog-frame {\n padding-left: 0;\n padding-right: 2.5rem;\n }\n\n .fd-changelog-header-strip {\n margin-left: 0;\n margin-right: -2.5rem;\n }\n\n .fd-changelog-shell-shifted {\n margin-left: -2rem;\n }\n}\n\n@media (min-width: 1280px) {\n .fd-changelog-shell {\n display: block;\n }\n\n .fd-changelog-main {\n width: min(64rem, 100%);\n max-width: 64rem;\n }\n\n .fd-changelog-toc {\n position: fixed;\n z-index: 10;\n top: calc(var(--fd-nav-height, 56px) + 3rem);\n right: 0;\n width: var(--fd-toc-width, 14rem);\n margin-top: 0;\n }\n}\n\n.fd-changelog-prose {\n color: var(--color-fd-muted-foreground);\n font-family: var(--fd-font-sans, inherit);\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n --tw-prose-body: var(--color-fd-muted-foreground);\n --tw-prose-headings: var(--color-fd-foreground);\n --tw-prose-links: var(--color-fd-primary);\n --tw-prose-bold: var(--color-fd-foreground);\n --tw-prose-counters: var(--color-fd-muted-foreground);\n --tw-prose-bullets: color-mix(in srgb, var(--color-fd-primary) 35%, transparent);\n --tw-prose-hr: color-mix(in srgb, var(--color-fd-primary) 14%, transparent);\n --tw-prose-quotes: var(--color-fd-foreground);\n --tw-prose-quote-borders: color-mix(in srgb, var(--color-fd-primary) 22%, transparent);\n --tw-prose-code: var(--color-fd-foreground);\n --tw-prose-pre-code: var(--color-fd-foreground);\n --tw-prose-pre-bg: color-mix(in srgb, var(--color-fd-muted) 70%, transparent);\n}\n\n.fd-changelog-prose > :first-child {\n margin-top: 0;\n}\n\n.fd-changelog-prose > :last-child {\n margin-bottom: 0;\n}\n\n.fd-changelog-prose h1,\n.fd-changelog-prose h2,\n.fd-changelog-prose h3,\n.fd-changelog-prose h4 {\n color: var(--color-fd-foreground) !important;\n margin-bottom: 0.75rem;\n scroll-margin-top: 2rem;\n text-wrap: balance;\n}\n\n.fd-changelog-prose h1 {\n margin-top: 2.5rem;\n font-size: var(--fd-h1-size, 2rem);\n font-weight: var(--fd-h1-weight, 600);\n line-height: var(--fd-h1-line-height, 1.2);\n letter-spacing: var(--fd-h1-letter-spacing, -0.02em);\n}\n\n.fd-changelog-prose h2 {\n\n margin-top: 1.75rem;\n font-size: 1.0625rem !important;\n font-weight: 600 !important;\n line-height: 1.35 !important;\n letter-spacing: -0.01em;\n color: var(--color-fd-foreground) !important;\n}\n\n#nd-docs-layout article#nd-page .fd-changelog-prose:is(.prose) h1,\n#nd-docs-layout article#nd-page .fd-changelog-prose:is(.prose) h2,\n#nd-docs-layout article#nd-page .fd-changelog-prose:is(.prose) h3 {\n color: var(--color-fd-foreground) !important;\n}\n\n.fd-changelog-prose h3 {\n margin-top: 1.55rem;\n font-size: var(--fd-h3-size, 1.25rem);\n font-weight: var(--fd-h3-weight, 600);\n line-height: var(--fd-h3-line-height, 1.4);\n letter-spacing: var(--fd-h3-letter-spacing, normal);\n}\n\n.fd-changelog-prose h4 {\n margin-top: 1.25rem;\n font-size: var(--fd-h4-size, 1.125rem);\n font-weight: var(--fd-h4-weight, 600);\n line-height: var(--fd-h4-line-height, 1.4);\n letter-spacing: var(--fd-h4-letter-spacing, normal);\n}\n\n.fd-changelog-prose p,\n.fd-changelog-prose ul,\n.fd-changelog-prose ol,\n.fd-changelog-prose blockquote,\n.fd-changelog-prose pre,\n.fd-changelog-prose table {\n margin-top: 1rem;\n margin-bottom: 0;\n}\n\n.fd-changelog-prose p {\n color: var(--color-fd-muted-foreground) !important;\n letter-spacing: normal;\n text-wrap: pretty;\n}\n\n.fd-changelog-prose a {\n color: var(--color-fd-primary);\n text-underline-offset: 0.2em;\n transition: color 180ms ease;\n}\n\n.fd-changelog-prose a:hover {\n color: color-mix(in srgb, var(--color-fd-primary) 82%, white 18%);\n}\n\n.fd-changelog-prose strong {\n color: var(--color-fd-foreground) !important;\n}\n\n.fd-changelog-prose ul,\n.fd-changelog-prose ol {\n padding-left: 1.35rem;\n}\n\n.fd-changelog-prose ul {\n list-style: disc;\n}\n\n.fd-changelog-prose ol {\n list-style: decimal;\n}\n\n.fd-changelog-prose li {\n margin-top: 0.45rem;\n color: var(--color-fd-muted-foreground) !important;\n}\n\n.fd-changelog-prose li::marker {\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-prose blockquote {\n border-left: none;\n padding: 0.75rem 1rem;\n border-radius: 0.75rem;\n background: color-mix(in srgb, var(--color-fd-muted) 55%, transparent);\n color: var(--color-fd-muted-foreground);\n}\n\n.fd-changelog-prose code {\n border-radius: 0.5rem;\n background: color-mix(in srgb, var(--color-fd-muted) 72%, transparent);\n padding: 0.15rem 0.4rem;\n font-size: 0.92em;\n}\n\n.fd-changelog-prose pre {\n overflow-x: auto;\n border-radius: 1rem;\n background: color-mix(in srgb, var(--color-fd-muted) 68%, transparent);\n padding: 1rem;\n box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.4);\n}\n\n.fd-changelog-prose pre code {\n background: transparent;\n padding: 0;\n}\n\n.fd-changelog-prose img {\n display: block;\n width: 100%;\n border-radius: 1rem;\n margin-top: 10px;\n box-shadow: 0 24px 60px -32px rgb(15 23 42 / 0.35);\n}\n\n.fd-changelog-prose video {\n display: block;\n width: 100%;\n border-radius: 1rem;\n box-shadow: 0 24px 60px -32px rgb(15 23 42 / 0.35);\n}\n\n.fd-changelog-prose table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.fd-changelog-prose th,\n.fd-changelog-prose td {\n border: none;\n padding: 0.65rem 0.8rem;\n text-align: left;\n border-bottom: 1px solid color-mix(in srgb, var(--color-fd-border) 55%, transparent);\n}\n\n.fd-changelog-prose tr:last-child td {\n border-bottom: none;\n}\n\n.fd-changelog-prose th {\n background: transparent;\n color: var(--color-fd-foreground);\n font-weight: 600;\n}\n\n@keyframes fd-feedback-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.fd-page-footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.75rem 1rem;\n margin-top: auto;\n padding-top: 1.5rem;\n border-top: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n font-size: 0.8125rem;\n}\n\n.fd-last-updated {\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n font-size: 0.6875rem;\n}\n\n.fd-last-updated-footer {\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n font-size: 0.75rem;\n margin-left: auto;\n}\n\n.fd-page-nav {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 1rem;\n margin-top: 2rem;\n padding-top: 1.5rem;\n border-top: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n}\n\n.fd-page-nav-card {\n display: flex;\n min-width: 0;\n min-height: 8.75rem;\n flex-direction: column;\n justify-content: flex-start;\n gap: 0.375rem;\n padding: 1rem;\n border: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n border-radius: 0.5rem;\n color: var(--color-fd-foreground);\n text-decoration: none;\n transition:\n background-color 0.15s ease,\n border-color 0.15s ease,\n color 0.15s ease;\n}\n\n.fd-page-nav-card:hover {\n background: var(--color-fd-accent, hsl(0 0% 96%));\n border-color: var(--color-fd-border, hsl(0 0% 80% / 50%));\n}\n\n.fd-page-nav-next {\n align-items: flex-end;\n text-align: right;\n}\n\n.fd-page-nav-label {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n font-size: 0.75rem;\n font-weight: 500;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n}\n\n.fd-page-nav-title {\n display: -webkit-box;\n overflow: hidden;\n min-height: calc(1.4em * 2);\n font-size: 0.875rem;\n font-weight: 600;\n line-height: 1.4;\n color: var(--color-fd-foreground);\n overflow-wrap: anywhere;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n}\n\n.fd-page-nav-description {\n display: -webkit-box;\n overflow: hidden;\n min-height: calc(1.5em * 2);\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n font-size: 0.875rem;\n line-height: 1.5;\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n overflow-wrap: anywhere;\n}\n\n.fd-page-nav-description-empty {\n visibility: hidden;\n}\n\n@media (max-width: 640px) {\n .fd-feedback-content {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .fd-feedback-submit-row {\n flex-wrap: wrap;\n }\n\n .fd-last-updated-footer {\n margin-left: 0;\n width: 100%;\n }\n\n .fd-page-nav {\n grid-template-columns: 1fr;\n }\n\n .fd-page-nav-next {\n align-items: flex-start;\n text-align: left;\n }\n}\n\n.fd-llms-txt-links {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.fd-llms-txt-link {\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n font-size: 0.75rem;\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace);\n text-decoration: none;\n padding: 0.125rem 0.375rem;\n border-radius: 0.25rem;\n border: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n transition: color 150ms, border-color 150ms;\n}\n\n.fd-llms-txt-link:hover {\n color: var(--color-fd-foreground, hsl(0 0% 10%));\n border-color: var(--color-fd-foreground, hsl(0 0% 10%));\n text-decoration: none;\n}\n\nfd-ai-code-block pre {\n padding-left: -10px !important;\n padding-right: -10px !important;\n padding-bottom: 2px !important;\n}\n\nfigure.shiki > button,\nfigure.shiki > div:first-child button {\n opacity: 0;\n transition: opacity 0.15s;\n}\n\nfigure.shiki:hover > button,\nfigure.shiki:hover > div:first-child button {\n opacity: 1;\n}\n\n.fd-sidebar-ai-trigger-wrapper {\n display: flex;\n gap: 8px;\n align-items: stretch;\n}\n\n.fd-sidebar-search-flex {\n flex: 1;\n min-width: 0;\n}\n\n.fd-sidebar-ai-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 38px;\n min-width: 38px;\n border-radius: 8px;\n border: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n background: var(--color-fd-secondary, hsl(0 0% 96%));\n color: var(--color-fd-muted-foreground, hsl(0 0% 45%));\n cursor: pointer;\n transition:\n background-color 150ms,\n color 150ms,\n border-color 150ms;\n}\n\n.fd-sidebar-ai-btn:hover {\n background: var(--color-fd-accent, hsl(0 0% 90%));\n color: var(--color-fd-primary, hsl(220 100% 50%));\n border-color: var(--color-fd-primary, hsl(220 100% 50%));\n}\n\n.fd-sidebar-ai-btn svg {\n width: 16px;\n height: 16px;\n}\n\n.inset-s-0 {\n inset-inline-start: 0;\n}\n\n.inset-s-4 {\n inset-inline-start: calc(var(--spacing) * 4);\n}\n\n.inset-e-0 {\n inset-inline-end: 0;\n}\n\n.before\\:inset-s-2\\.5::before {\n inset-inline-start: calc(var(--spacing) * 2.5);\n}\n\n.data-\\[active\\=true\\]\\:before\\:inset-s-2\\.5[data-active=\"true\"]::before {\n inset-inline-start: calc(var(--spacing) * 2.5);\n}\n\n#nd-docs-layout[data-fd-framework],\n#nd-docs-layout[data-fd-framework] *,\n#nd-docs-layout[data-fd-framework] *::before,\n#nd-docs-layout[data-fd-framework] *::after {\n box-sizing: border-box;\n margin: 0;\n}\n\n:where(#nd-docs-layout[data-fd-framework]) {\n --fd-sidebar-width: 268px;\n --fd-toc-width: 268px;\n --fd-content-width: 768px;\n --fd-header-height: 48px;\n --fd-nav-height: 48px;\n}\n\nhtml:has(#nd-docs-layout[data-fd-framework]) {\n scroll-behavior: smooth;\n scroll-padding-top: 80px;\n}\n\nbody:has(#nd-docs-layout[data-fd-framework]) {\n margin: 0;\n font-family: var(--fd-font-sans, ui-sans-serif, system-ui, -apple-system, sans-serif);\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n background: var(--color-fd-background);\n color: var(--color-fd-foreground);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n#nd-docs-layout[data-fd-framework] {\n scroll-behavior: smooth;\n scroll-padding-top: 80px;\n font-family: var(--fd-font-sans, ui-sans-serif, system-ui, -apple-system, sans-serif);\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n background: var(--color-fd-background);\n color: var(--color-fd-foreground);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n#nd-docs-layout[data-fd-framework] code,\n#nd-docs-layout[data-fd-framework] kbd,\n#nd-docs-layout[data-fd-framework] pre,\n#nd-docs-layout[data-fd-framework] samp {\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n \"Cascadia Code\",\n \"Source Code Pro\",\n Menlo,\n Consolas,\n monospace\n );\n}\n\n#nd-docs-layout[data-fd-framework]:not([data-fd-browser-adapter]) {\n display: grid;\n grid-template-columns: var(--fd-sidebar-width) 1fr;\n min-height: 100dvh;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-header {\n display: none;\n position: sticky;\n top: 0;\n z-index: 40;\n height: var(--fd-header-height);\n padding: 0 16px;\n background: var(--color-fd-background);\n border-bottom: 1px solid var(--color-fd-border);\n align-items: center;\n gap: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-header-title {\n font-weight: 600;\n font-size: 14px;\n color: var(--color-fd-foreground);\n text-decoration: none;\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-menu-btn,\n#nd-docs-layout[data-fd-framework] .fd-search-trigger-mobile {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: var(--color-fd-muted-foreground);\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-menu-btn:hover,\n#nd-docs-layout[data-fd-framework] .fd-search-trigger-mobile:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-foreground);\n}\n\n@media (max-width: 1023px) {\n #nd-docs-layout[data-fd-framework] .fd-header {\n display: flex;\n }\n\n #nd-docs-layout[data-fd-framework]:not([data-fd-browser-adapter]) {\n display: flex;\n flex-direction: column;\n }\n}\n\n@media (min-width: 1024px) {\n #nd-docs-layout[data-fd-framework]:not([data-fd-browser-adapter]) {\n grid-template-columns: var(--fd-sidebar-width) minmax(0, 1fr);\n }\n\n #nd-docs-layout[data-fd-framework] .fd-main {\n min-width: 0;\n }\n\n #nd-docs-layout[data-fd-framework] .fd-page-article,\n #nd-docs-layout[data-fd-framework] .fd-page-body,\n #nd-docs-layout[data-fd-framework] .fd-docs-content {\n max-width: none;\n margin-inline: 0;\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar {\n position: sticky;\n top: 0;\n width: var(--fd-sidebar-width);\n height: 100dvh;\n overflow-y: auto;\n overflow-x: hidden;\n border-right: 1px solid var(--color-fd-border);\n background: var(--color-fd-background);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n z-index: 50;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 12px 0;\n gap: 4px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-title {\n font-weight: 600;\n font-size: 14px;\n letter-spacing: 0.02em;\n color: var(--color-fd-foreground);\n text-decoration: none;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-title:hover {\n text-decoration: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-collapse-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n background: transparent;\n border: 1px solid var(--color-fd-border);\n border-radius: 6px;\n color: var(--color-fd-muted-foreground);\n cursor: pointer;\n transition:\n background 0.15s,\n color 0.15s;\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-collapse-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search {\n padding: 8px 12px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 6px 10px;\n height: 36px;\n font-size: 14px;\n color: var(--color-fd-muted-foreground);\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 8px;\n cursor: pointer;\n transition:\n border-color 0.15s,\n background 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search-btn:hover {\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search-btn svg {\n flex-shrink: 0;\n opacity: 0.7;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search-btn span {\n flex: 1;\n text-align: left;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-search-btn kbd {\n font-size: 11px;\n padding: 1px 6px;\n border: 1px solid var(--color-fd-border);\n border-radius: 4px;\n color: var(--color-fd-muted-foreground);\n font-family: inherit;\n background: var(--color-fd-background);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-nav {\n flex: 1;\n padding: 4px 12px;\n overflow-y: auto;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-link {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n font-size: 14px;\n font-weight: 400;\n color: var(--color-fd-muted-foreground);\n text-decoration: none;\n border-radius: 8px;\n position: relative;\n transition:\n color 0.15s,\n background 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-link:hover {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n text-decoration: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-link-active,\n#nd-docs-layout[data-fd-framework] .fd-sidebar-link[data-active=\"true\"] {\n color: var(--color-fd-foreground) !important;\n background: var(--color-fd-accent) !important;\n font-weight: 600;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-content .fd-sidebar-link-active::before {\n content: \"\";\n position: absolute;\n left: -9px;\n top: 25%;\n bottom: 25%;\n width: 2px;\n background: var(--color-fd-foreground);\n border-radius: 1px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder {\n margin: 2px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder summary {\n list-style: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder summary::-webkit-details-marker {\n display: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--color-fd-foreground);\n cursor: pointer;\n border-radius: 8px;\n transition: background 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-trigger:hover {\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-trigger-link {\n gap: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-parent-link {\n min-width: 0;\n flex: 1;\n padding: 0;\n color: inherit;\n background: transparent !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-parent-link:hover {\n color: inherit;\n background: transparent !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-chevron {\n transition: transform 0.2s;\n flex-shrink: 0;\n opacity: 0.5;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder[open] > .fd-sidebar-folder-trigger .fd-sidebar-chevron,\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder[open] > .fd-sidebar-folder-trigger-link .fd-sidebar-chevron {\n transform: rotate(180deg);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-content {\n position: relative;\n padding-left: 12px;\n margin-left: 10px;\n margin-top: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-content::before {\n content: \"\";\n position: absolute;\n left: 4px;\n top: 4px;\n bottom: 4px;\n width: 1px;\n background: var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-banner {\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-footer-custom {\n padding: 12px 16px;\n border-top: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-footer {\n padding: 12px 16px;\n border-top: 1px solid var(--color-fd-border);\n margin-top: auto;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-overlay {\n display: none;\n position: fixed;\n inset: 0;\n z-index: 45;\n background: rgba(0, 0, 0, 0.2);\n backdrop-filter: blur(2px);\n}\n\n@media (max-width: 1023px) {\n #nd-docs-layout[data-fd-framework] .fd-sidebar {\n position: fixed;\n left: 0;\n top: 0;\n transform: translateX(-100%);\n transition: transform 0.25s ease;\n z-index: 50;\n }\n\n #nd-docs-layout[data-fd-framework] .fd-sidebar-open {\n transform: translateX(0);\n }\n\n #nd-docs-layout[data-fd-framework] .fd-sidebar-open + .fd-sidebar-overlay {\n display: block;\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-main {\n min-width: 0;\n padding: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page {\n display: grid;\n --fd-article-width: calc(var(--fd-content-width, 860px) + 96px);\n grid-template-columns: var(\n --fd-framework-page-columns,\n minmax(0, min(100%, var(--fd-article-width)))\n );\n justify-content: var(--fd-framework-page-justify, center);\n width: 100%;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-article {\n min-width: 0;\n width: var(--fd-framework-article-width, auto);\n max-width: var(--fd-framework-article-max-width, 100%);\n padding: 24px 16px 48px;\n display: flex;\n flex-direction: column;\n min-height: calc(100dvh - var(--fd-nav-height, 56px));\n grid-column: var(--fd-framework-article-column, auto);\n justify-self: var(--fd-framework-article-justify, stretch);\n}\n\n@media (min-width: 768px) {\n #nd-docs-layout[data-fd-framework] .fd-page-article {\n padding: var(--fd-framework-article-padding, 32px 48px 64px);\n }\n}\n\n@media (min-width: 1280px) {\n #nd-docs-layout[data-fd-framework] .fd-page:has(.fd-toc) {\n grid-template-columns: var(\n --fd-framework-page-columns-with-toc,\n minmax(0, min(var(--fd-article-width), calc(100% - var(--fd-toc-width))))\n var(--fd-toc-width)\n );\n }\n\n #nd-docs-layout[data-fd-framework] .fd-toc {\n grid-column: var(--fd-framework-toc-column, auto);\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc {\n width: var(--fd-toc-width);\n position: sticky;\n top: 0;\n height: 100dvh;\n overflow-y: auto;\n padding: 40px 24px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-inner {\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--color-fd-foreground);\n margin-bottom: 12px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-title svg {\n opacity: 0.5;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-list {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 0;\n border-left: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-item {\n margin: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-link {\n display: block;\n padding: 4px 12px;\n font-size: 13px;\n color: var(--color-fd-muted-foreground);\n text-decoration: none;\n border-left: 2px solid transparent;\n margin-left: -1px;\n transition:\n color 0.15s,\n border-color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-link:hover {\n color: var(--color-fd-foreground);\n text-decoration: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-link-active {\n color: var(--color-fd-primary);\n border-left-color: var(--color-fd-primary);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk {\n border-left: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk .fd-toc-link {\n display: block;\n border-left: none;\n margin-left: 0;\n color: var(--color-fd-muted-foreground);\n text-decoration: none;\n transition: color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk .fd-toc-link:hover {\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk .fd-toc-link[data-active=\"true\"] {\n color: var(--color-fd-primary);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk-mask {\n overflow: hidden;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-clerk-thumb {\n width: 100%;\n}\n\n@media (max-width: 1279px) {\n #nd-docs-layout[data-fd-framework] .fd-toc {\n display: none;\n }\n\n #nd-docs-layout[data-fd-framework] .fd-page {\n grid-template-columns: minmax(0, min(100%, var(--fd-article-width)));\n }\n\n #nd-docs-layout[data-fd-framework] .fd-page-article,\n #nd-docs-layout[data-fd-framework] .fd-toc {\n grid-column: auto;\n }\n}\n\n@media (max-width: 1023px) {\n #nd-docs-layout[data-fd-framework] .fd-toc {\n display: none;\n }\n\n #nd-docs-layout[data-fd-framework] .fd-page {\n grid-template-columns: minmax(0, min(100%, var(--fd-article-width)));\n }\n\n #nd-docs-layout[data-fd-framework] .fd-page-article,\n #nd-docs-layout[data-fd-framework] .fd-toc {\n grid-column: auto;\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-title {\n font-size: var(--fd-h1-size, 2.25rem);\n font-weight: var(--fd-h1-weight, 700);\n line-height: var(--fd-h1-line-height, 1.2);\n letter-spacing: var(--fd-h1-letter-spacing, -0.025em);\n margin: 0 0 0.5rem;\n scroll-margin-top: 80px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-description {\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: var(--fd-body-size, 1.125rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-actions-divider {\n border: none;\n border-top: 1px solid var(--color-fd-border);\n margin: 1rem 0 0.75rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-actions,\n#nd-docs-layout[data-fd-framework] [data-page-actions] {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.5rem;\n margin-top: 0;\n margin-bottom: 1rem;\n width: 100%;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-actions[data-actions-alignment=\"right\"],\n#nd-docs-layout[data-fd-framework] [data-page-actions][data-actions-alignment=\"right\"] {\n justify-content: flex-end;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-actions[data-actions-alignment=\"left\"],\n#nd-docs-layout[data-fd-framework] [data-page-actions][data-actions-alignment=\"left\"] {\n justify-content: flex-start;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.375rem 0.75rem;\n font-size: 0.8125rem;\n font-weight: 500;\n line-height: 1;\n min-height: 2rem;\n color: var(--color-fd-muted-foreground);\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 0.375rem;\n cursor: pointer;\n white-space: nowrap;\n transition:\n color 0.15s,\n background 0.15s,\n border-color 0.15s;\n user-select: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn:hover {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn[data-copied=\"true\"] {\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn[data-selected=\"true\"] {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn svg {\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn[data-selected=\"true\"] svg {\n color: currentColor;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-dropdown {\n position: relative;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu {\n position: absolute;\n top: calc(100% + 0.375rem);\n left: 0;\n z-index: 50;\n min-width: 220px;\n padding: 0.375rem;\n background: var(--color-fd-popover, var(--color-fd-background));\n border: 1px solid var(--color-fd-border);\n border-radius: 0.5rem;\n box-shadow: 0 4px 24px hsl(0 0% 0% / 0.15);\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu[hidden] {\n display: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.35rem 0.625rem;\n font-size: 0.8125rem;\n font-weight: 400;\n color: var(--color-fd-foreground);\n background: transparent;\n border: none;\n border-radius: 0.25rem;\n cursor: pointer;\n text-align: left;\n text-decoration: none;\n transition: background 0.1s, color 0.1s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu-item:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu-label {\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-actions a,\n#nd-docs-layout[data-fd-framework] .fd-page-actions button,\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu-item,\n#nd-docs-layout[data-fd-framework] .fd-page-action-btn {\n text-decoration: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-action-menu-item:hover {\n text-decoration: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-last-modified-below-title {\n margin-top: 0.25rem;\n margin-bottom: 1rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-meta {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.375rem;\n margin-bottom: 0.75rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-meta-dot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace);\n font-size: 0.8rem;\n line-height: 1;\n color: color-mix(in srgb, var(--color-fd-muted-foreground) 78%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-meta-item {\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace);\n font-size: 0.6875rem;\n font-weight: 500;\n letter-spacing: 0;\n text-transform: uppercase;\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback {\n margin-top: 2rem;\n margin-bottom: 1.25rem;\n padding-top: 1.25rem;\n border-top: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n flex-wrap: wrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-question {\n margin: 0;\n font-size: 0.9375rem;\n font-weight: 600;\n line-height: 1.5;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-actions {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-form {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n margin-top: 0.875rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-form[hidden],\n#nd-docs-layout[data-fd-framework] .fd-feedback-spinner[hidden],\n#nd-docs-layout[data-fd-framework] .fd-feedback-status[hidden],\n#nd-docs-layout[data-fd-framework] .fd-feedback-submit svg[hidden] {\n display: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-choice[data-selected=\"true\"] {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n border-color: color-mix(in srgb, var(--color-fd-primary, currentColor) 65%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-input {\n width: 100%;\n min-height: 4.75rem;\n resize: vertical;\n padding: 0.875rem 1rem;\n border: 1px solid\n color-mix(in srgb, var(--color-fd-border) 78%, var(--color-fd-foreground) 22%);\n border-radius: 0.5rem;\n background: var(--color-fd-card, transparent);\n color: var(--color-fd-foreground);\n font: inherit;\n line-height: 1.55;\n outline: none;\n transition:\n border-color 150ms ease,\n box-shadow 150ms ease,\n background-color 150ms ease;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-input::placeholder {\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-input:focus {\n border-color: var(--color-fd-ring, var(--color-fd-primary, currentColor));\n box-shadow: 0 0 0 1px var(--color-fd-ring, var(--color-fd-primary, currentColor));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-submit-row {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n flex-wrap: nowrap;\n min-height: 2rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-submit {\n min-width: 7rem;\n padding-inline: 0.875rem;\n justify-content: center;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-submit:disabled {\n cursor: not-allowed;\n opacity: 0.65;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-spinner {\n width: 0.875rem;\n height: 0.875rem;\n border-radius: 9999px;\n border: 2px solid currentColor;\n border-right-color: transparent;\n animation: fd-feedback-spin 0.8s linear infinite;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-status {\n margin: 0 !important;\n font-size: 0.75rem;\n line-height: 1.3;\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-status[data-status=\"success\"] {\n display: inline-flex;\n align-self: center;\n align-items: center;\n gap: 0.4rem;\n min-height: 2rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-status[data-status=\"success\"] {\n color: color-mix(in srgb, var(--color-fd-primary) 85%, var(--color-fd-foreground));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-feedback-status[data-status=\"error\"] {\n color: var(--color-fd-foreground);\n}\n\n@keyframes fd-feedback-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@media (max-width: 640px) {\n #nd-docs-layout[data-fd-framework] .fd-feedback-content {\n flex-direction: column;\n align-items: flex-start;\n }\n\n #nd-docs-layout[data-fd-framework] .fd-feedback-submit-row {\n flex-wrap: wrap;\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb {\n display: flex;\n align-items: center;\n gap: 0;\n font-size: var(--fd-small-size, 0.8125rem);\n font-family: var(--fd-font-sans, inherit);\n color: var(--color-fd-muted-foreground);\n margin-bottom: 2rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-item {\n display: inline-flex;\n align-items: center;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-sep {\n margin: 0 6px;\n opacity: 0.4;\n font-size: var(--fd-small-size, 0.75rem);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-parent {\n opacity: 0.7;\n font-weight: 400;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-link {\n color: inherit;\n text-decoration: none;\n cursor: pointer;\n transition:\n opacity 0.15s,\n color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-link:hover {\n opacity: 1;\n color: var(--color-fd-foreground);\n text-decoration: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-breadcrumb-current {\n font-weight: 500;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt {\n display: flex;\n flex-direction: column;\n gap: 0.875rem;\n margin: 1.25rem 0;\n padding: 1rem;\n border: 1px solid var(--color-fd-border);\n border-radius: 0.75rem;\n background: color-mix(in srgb, var(--color-fd-card) 78%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-header {\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-icon,\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-icon,\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-icon {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 0.5rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 80%, transparent);\n background: color-mix(in srgb, var(--color-fd-background) 55%, transparent);\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-icon svg,\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-icon svg,\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu-icon svg {\n width: 1rem;\n height: 1rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-copy {\n min-width: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-title {\n margin: 0;\n color: var(--color-fd-foreground);\n font-size: 0.9375rem;\n font-weight: 600;\n line-height: 1.35;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-description {\n margin: 0.25rem 0 0;\n color: var(--color-fd-muted-foreground);\n font-size: 0.875rem;\n line-height: 1.55;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-body {\n margin: 0;\n padding: 0.875rem 1rem;\n border-radius: 0.625rem;\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 82%, transparent);\n background: color-mix(in srgb, var(--color-fd-background) 45%, transparent);\n overflow-x: auto;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-body > pre.fd-prompt-code {\n margin: 0;\n padding: 0 !important;\n border: 0 !important;\n border-radius: 0 !important;\n background: transparent !important;\n box-shadow: none !important;\n color: var(--color-fd-foreground);\n font-size: 0.875rem;\n line-height: 1.65;\n white-space: pre-wrap;\n word-break: break-word;\n font-family: var(\n --fd-font-mono,\n ui-monospace,\n \"SF Mono\",\n SFMono-Regular,\n Menlo,\n Consolas,\n monospace\n );\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n align-items: center;\n justify-content: flex-end;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.4375rem;\n min-height: 2rem;\n padding: 0.375rem 0.75rem;\n border: 1px solid var(--color-fd-border);\n border-radius: 0.375rem;\n background: var(--color-fd-secondary);\n color: var(--color-fd-muted-foreground);\n font-size: 0.8125rem;\n font-weight: 500;\n line-height: 1;\n cursor: pointer;\n transition: color 0.15s, background 0.15s, border-color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-btn:hover {\n color: var(--color-fd-accent-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-btn[data-copied=\"true\"] {\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-action-icon-copied[hidden] {\n display: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-dropdown {\n position: relative;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu {\n position: absolute;\n top: calc(100% + 0.375rem);\n right: 0;\n z-index: 50;\n min-width: 220px;\n padding: 0.375rem;\n background: var(--color-fd-popover, var(--color-fd-background));\n border: 1px solid var(--color-fd-border);\n border-radius: 0.5rem;\n box-shadow: 0 4px 24px hsl(0 0% 0% / 0.15);\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu[hidden] {\n display: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.35rem 0.625rem;\n font-size: 0.8125rem;\n font-weight: 400;\n color: var(--color-fd-foreground);\n background: transparent;\n border: none;\n border-radius: 0.25rem;\n cursor: pointer;\n text-align: left;\n transition: background 0.1s, color 0.1s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu-item:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-prompt-menu-label {\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-theme-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: transparent;\n border: 1px solid var(--color-fd-border);\n border-radius: 8px;\n color: var(--color-fd-muted-foreground);\n cursor: pointer;\n transition:\n color 0.15s,\n background 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-theme-toggle:hover {\n color: var(--color-fd-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-overlay {\n position: fixed;\n inset: 0;\n z-index: 100;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding-top: 20vh;\n background: rgba(0, 0, 0, 0.2);\n backdrop-filter: blur(4px);\n animation: fd-fade-in 0.12s ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-dialog {\n width: 90%;\n max-width: 540px;\n background: var(--color-fd-popover);\n border: 1px solid var(--color-fd-border);\n border-radius: 12px;\n box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12);\n overflow: hidden;\n animation: fd-slide-up 0.15s ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-input-wrap {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-input-wrap svg {\n color: var(--color-fd-muted-foreground);\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-input {\n flex: 1;\n background: transparent;\n border: none;\n outline: none;\n font-size: 15px;\n color: var(--color-fd-foreground);\n font-family: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-input::placeholder {\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-kbd {\n font-size: 11px;\n padding: 2px 6px;\n border: 1px solid var(--color-fd-border);\n border-radius: 4px;\n color: var(--color-fd-muted-foreground);\n font-family: inherit;\n background: var(--color-fd-background);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-results {\n max-height: 360px;\n overflow-y: auto;\n padding: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-empty {\n padding: 32px;\n text-align: center;\n color: var(--color-fd-muted-foreground);\n font-size: 14px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-result {\n display: block;\n width: 100%;\n text-align: left;\n padding: 10px 12px;\n background: transparent;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.1s;\n font-family: inherit;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-result:hover {\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-result-title {\n display: block;\n font-size: 14px;\n font-weight: 500;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-search-result-url {\n display: block;\n font-size: 12px;\n color: var(--color-fd-muted-foreground);\n margin-top: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body {\n color: var(--color-fd-foreground);\n line-height: 1.75;\n font-size: 15px;\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body a {\n color: var(--color-fd-foreground);\n font-weight: 500;\n text-decoration: underline;\n text-underline-offset: 3px;\n text-decoration-color: var(--color-fd-primary);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body a:hover {\n opacity: 0.8;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link {\n position: relative;\n display: inline-block;\n vertical-align: baseline;\n max-width: 100%;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-trigger {\n display: inline !important;\n border: none;\n background: transparent;\n padding: 0;\n margin: 0;\n color: var(--color-fd-foreground);\n cursor: pointer;\n text-decoration: underline;\n text-decoration-style: dashed;\n text-decoration-thickness: 0.08em;\n text-underline-offset: 0.22em;\n text-decoration-color: color-mix(in srgb, var(--color-fd-foreground) 46%, transparent);\n font: inherit;\n line-height: inherit;\n vertical-align: baseline;\n appearance: none;\n transition: text-decoration-color 180ms ease, opacity 180ms ease;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-trigger:hover,\n#nd-docs-layout[data-fd-framework] .fd-hover-link-trigger:focus-visible,\n#nd-docs-layout[data-fd-framework] .fd-hover-link-open > .fd-hover-link-trigger {\n text-decoration-color: color-mix(in srgb, var(--color-fd-foreground) 68%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-trigger:focus-visible {\n outline: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-popover {\n --fd-hover-link-rest-x: -50%;\n --fd-hover-link-rest-y: 8px;\n --fd-hover-link-open-x: -50%;\n --fd-hover-link-open-y: 0;\n position: absolute;\n top: calc(100% + var(--fd-hover-link-side-offset, 12px));\n left: 50%;\n z-index: 40;\n width: min(22rem, calc(100vw - 2rem));\n max-width: min(22rem, calc(100vw - 2rem));\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transform: translate3d(var(--fd-hover-link-rest-x), var(--fd-hover-link-rest-y), 0);\n transition: opacity 180ms ease, transform 180ms ease, visibility 180ms linear;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-align=\"start\"] > .fd-hover-link-popover {\n left: 0;\n --fd-hover-link-rest-x: 0;\n --fd-hover-link-open-x: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-align=\"end\"] > .fd-hover-link-popover {\n left: auto;\n right: 0;\n --fd-hover-link-rest-x: 0;\n --fd-hover-link-open-x: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"top\"] > .fd-hover-link-popover {\n top: auto;\n bottom: calc(100% + var(--fd-hover-link-side-offset, 12px));\n --fd-hover-link-rest-y: -8px;\n --fd-hover-link-open-y: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"right\"] > .fd-hover-link-popover {\n top: 50%;\n left: calc(100% + var(--fd-hover-link-side-offset, 12px));\n right: auto;\n --fd-hover-link-rest-x: 8px;\n --fd-hover-link-rest-y: -50%;\n --fd-hover-link-open-x: 0;\n --fd-hover-link-open-y: -50%;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"right\"][data-align=\"start\"] > .fd-hover-link-popover {\n top: 0;\n --fd-hover-link-rest-y: 0;\n --fd-hover-link-open-y: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"right\"][data-align=\"end\"] > .fd-hover-link-popover {\n top: auto;\n bottom: 0;\n --fd-hover-link-rest-y: 0;\n --fd-hover-link-open-y: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"left\"] > .fd-hover-link-popover {\n top: 50%;\n left: auto;\n right: calc(100% + var(--fd-hover-link-side-offset, 12px));\n --fd-hover-link-rest-x: -8px;\n --fd-hover-link-rest-y: -50%;\n --fd-hover-link-open-x: 0;\n --fd-hover-link-open-y: -50%;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"left\"][data-align=\"start\"] > .fd-hover-link-popover {\n top: 0;\n --fd-hover-link-rest-y: 0;\n --fd-hover-link-open-y: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link[data-side=\"left\"][data-align=\"end\"] > .fd-hover-link-popover {\n top: auto;\n bottom: 0;\n --fd-hover-link-rest-y: 0;\n --fd-hover-link-open-y: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-open > .fd-hover-link-popover {\n opacity: 1;\n visibility: visible;\n pointer-events: auto;\n transform: translate3d(var(--fd-hover-link-open-x), var(--fd-hover-link-open-y), 0);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-card {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n border-radius: calc(var(--radius, 0.75rem) + 2px);\n border: 1px solid color-mix(in srgb, var(--color-fd-border) 88%, transparent);\n background: var(--color-fd-popover, var(--color-fd-background));\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground));\n padding: 0.95rem 1rem;\n box-shadow: 0 20px 45px color-mix(in srgb, var(--color-fd-background) 78%, transparent);\n backdrop-filter: blur(14px);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-body {\n display: flex;\n flex-direction: column;\n gap: 0.35rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-preview-label {\n font-size: 0.68rem;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n font-family: var(--fd-font-mono, var(--font-geist-mono, ui-monospace, monospace));\n color: color-mix(in srgb, var(--color-fd-popover-foreground, var(--color-fd-foreground)) 55%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-title,\n#nd-docs-layout[data-fd-framework] .fd-hover-link-cta {\n text-decoration: none !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-title {\n color: var(--color-fd-popover-foreground, var(--color-fd-foreground));\n font-size: 1rem;\n font-weight: 600 !important;\n line-height: 1.3;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-title:hover,\n#nd-docs-layout[data-fd-framework] .fd-hover-link-cta:hover {\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-description {\n font-size: 0.92rem;\n line-height: 1.6;\n color: color-mix(in srgb, var(--color-fd-popover-foreground, var(--color-fd-foreground)) 74%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n padding-top: 0.25rem;\n border-top: 1px solid color-mix(in srgb, var(--color-fd-border) 72%, transparent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-hover-link-cta {\n display: inline-flex !important;\n align-items: center;\n gap: 0.4rem;\n color: var(--color-fd-primary);\n font-size: 0.8rem;\n font-weight: 600 !important;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n font-family: var(--fd-font-mono, var(--font-geist-mono, ui-monospace, monospace));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body h1 {\n font-size: var(--fd-h1-size, 2.25rem);\n font-weight: var(--fd-h1-weight, 700);\n line-height: var(--fd-h1-line-height, 1.2);\n letter-spacing: var(--fd-h1-letter-spacing, -0.025em);\n margin: 0 0 16px;\n scroll-margin-top: 80px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body h2 {\n font-size: var(--fd-h2-size, 1.5rem);\n font-weight: var(--fd-h2-weight, 600);\n line-height: var(--fd-h2-line-height, 1.3);\n letter-spacing: var(--fd-h2-letter-spacing, -0.015em);\n margin: 40px 0 16px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--color-fd-border);\n scroll-margin-top: 80px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body h3 {\n font-size: var(--fd-h3-size, 1.25rem);\n font-weight: var(--fd-h3-weight, 600);\n line-height: var(--fd-h3-line-height, 1.4);\n margin: 32px 0 12px;\n scroll-margin-top: 80px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body h4 {\n font-size: var(--fd-h4-size, 1.125rem);\n font-weight: var(--fd-h4-weight, 600);\n line-height: var(--fd-h4-line-height, 1.4);\n margin: 24px 0 8px;\n scroll-margin-top: 80px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body p {\n margin: 0 0 16px;\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body ul,\n#nd-docs-layout[data-fd-framework] .fd-page-body ol {\n margin: 0 0 16px;\n padding-left: 24px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body ul {\n list-style: disc;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body ol {\n list-style: decimal;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body li {\n margin: 4px 0;\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.75);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body li::marker {\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body strong {\n font-weight: 600;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body hr {\n border: none;\n border-top: 1px solid var(--color-fd-border);\n margin: 32px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body blockquote {\n border-left: 3px solid var(--color-fd-border);\n padding: 8px 16px;\n margin: 16px 0;\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body code {\n font-size: 0.875em;\n padding: 2px 5px;\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 4px;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body pre {\n margin: 16px 0;\n padding: 14px 16px;\n background: var(--color-fd-card);\n border: 1px solid var(--color-fd-border);\n border-radius: 8px;\n overflow-x: auto;\n font-size: 13px;\n line-height: 1.5;\n position: relative;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body pre code {\n background: transparent;\n border: none;\n padding: 0;\n font-size: inherit;\n border-radius: 0;\n color: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body pre.shiki {\n background-color: var(--color-fd-card) !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body pre.shiki code {\n counter-reset: line;\n}\n\nhtml.dark #nd-docs-layout[data-fd-framework] .shiki,\nhtml.dark #nd-docs-layout[data-fd-framework] .shiki span {\n color: var(--shiki-dark) !important;\n background-color: transparent !important;\n}\n\nhtml.dark #nd-docs-layout[data-fd-framework] pre.shiki {\n background-color: var(--color-fd-card) !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock {\n position: relative;\n margin: 16px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock pre {\n margin: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n font-size: 13px;\n font-weight: 500;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground, #71717a);\n background: var(--color-fd-secondary, rgba(255, 255, 255, 0.04));\n border: 1px solid var(--color-fd-border);\n border-bottom: none;\n border-radius: var(--radius, 12px) var(--radius, 12px) 0 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title-text,\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title figcaption {\n min-width: 0;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title + .fd-copy-btn ~ pre {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock:has(.fd-codeblock-title) pre {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-actions {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n margin-left: auto;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-actions-floating {\n position: absolute;\n top: 4px;\n right: 4px;\n z-index: 2;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-copy-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n z-index: 2;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 6px;\n color: var(--color-fd-muted-foreground);\n cursor: pointer;\n opacity: 0;\n transition:\n opacity 0.15s,\n color 0.15s,\n background 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-actions .fd-copy-btn,\n#nd-docs-layout[data-fd-framework] .fd-codeblock-actions-floating .fd-copy-btn,\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title .fd-copy-btn {\n position: static;\n width: 28px;\n height: 28px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock-title .fd-copy-btn {\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-codeblock:hover .fd-copy-btn {\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-copy-btn:hover {\n color: var(--color-fd-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-copy-btn-copied {\n color: hsl(142, 71%, 45%) !important;\n opacity: 1 !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tabs {\n margin: 16px 0;\n border: 1px solid var(--color-fd-border);\n border-radius: 12px;\n overflow: hidden;\n background: var(--color-fd-card);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tabs-list {\n display: flex;\n border-bottom: 1px solid var(--color-fd-border);\n background: transparent;\n overflow-x: auto;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-trigger {\n padding: 8px 14px;\n font-size: 13px;\n font-weight: 500;\n font-family: inherit;\n color: var(--color-fd-muted-foreground);\n background: transparent;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n transition:\n color 0.15s,\n border-color 0.15s;\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-trigger:hover {\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-trigger.fd-tab-active,\n#nd-docs-layout[data-fd-framework] .fd-tab-trigger[data-state=\"active\"] {\n color: var(--color-fd-foreground);\n font-weight: 600;\n border-bottom-color: var(--color-fd-primary);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel {\n display: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel[data-state=\"inactive\"],\n#nd-docs-layout[data-fd-framework] .fd-code-group-panel[data-state=\"inactive\"] {\n display: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel-active,\n#nd-docs-layout[data-fd-framework] .fd-tab-panel[data-state=\"active\"],\n#nd-docs-layout[data-fd-framework] .fd-code-group-panel[data-state=\"active\"] {\n display: block;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel .fd-codeblock {\n margin: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel .fd-codeblock pre {\n border: none;\n border-radius: 0;\n margin: 0;\n background: transparent !important;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-tab-panel .fd-copy-btn {\n top: 6px;\n right: 6px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body .fd-table-wrapper {\n margin: 0 0 24px;\n overflow-x: auto;\n border: 0;\n border-radius: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body table {\n width: 100%;\n table-layout: auto;\n border-collapse: separate;\n border-spacing: 0;\n overflow: hidden;\n border: 1px solid var(--color-fd-border);\n border-radius: var(--radius-lg, 8px);\n background: var(--color-fd-card);\n font-size: 0.875em;\n line-height: 1.7142857;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body th {\n padding: 10px;\n text-align: left;\n font-weight: 600;\n font-size: 0.875rem;\n color: var(--color-fd-foreground);\n background: var(--color-fd-muted);\n border-inline-start: 1px solid var(--color-fd-border);\n border-bottom: 1px solid var(--color-fd-border);\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body th:first-child {\n border-inline-start: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body td {\n padding: 10px;\n text-align: left;\n border-inline-start: 1px solid var(--color-fd-border);\n border-bottom: 1px solid var(--color-fd-border);\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body td:first-child {\n border-inline-start: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body tbody tr:last-child td {\n border-bottom: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body td code {\n font-size: 12px;\n padding: 1px 5px;\n background: var(--color-fd-secondary);\n border: 1px solid var(--color-fd-border);\n border-radius: 4px;\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-body img {\n max-width: 100%;\n border-radius: 8px;\n margin: 16px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-toc-empty {\n font-size: 13px;\n color: var(--color-fd-muted-foreground);\n padding: 4px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-folder-label {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n@keyframes fd-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fd-slide-up {\n from {\n opacity: 0;\n transform: translateY(8px) scale(0.98);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout {\n position: relative;\n display: flex;\n gap: 10px;\n margin: 16px 0;\n padding: 12px 16px;\n border: 1px solid var(--color-fd-border);\n border-radius: 8px;\n background: var(--color-fd-card);\n font-size: 14px;\n line-height: 1.6;\n overflow: hidden;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-indicator {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n border-radius: 8px 0 0 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-note .fd-callout-indicator {\n background: hsl(221, 83%, 53%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-warning .fd-callout-indicator {\n background: hsl(38, 92%, 50%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-tip .fd-callout-indicator {\n background: hsl(142, 71%, 45%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-important .fd-callout-indicator {\n background: hsl(262, 83%, 58%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-caution .fd-callout-indicator {\n background: hsl(0, 72%, 51%);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-icon {\n flex-shrink: 0;\n margin-top: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-note .fd-callout-icon {\n color: hsl(221, 83%, 53%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-warning .fd-callout-icon {\n color: hsl(38, 92%, 50%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-tip .fd-callout-icon {\n color: hsl(142, 71%, 45%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-important .fd-callout-icon {\n color: hsl(262, 83%, 58%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-caution .fd-callout-icon {\n color: hsl(0, 72%, 51%);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-content {\n flex: 1;\n min-width: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-title {\n font-weight: 600;\n font-size: 13px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-note .fd-callout-title {\n color: hsl(221, 83%, 53%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-warning .fd-callout-title {\n color: hsl(38, 92%, 50%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-tip .fd-callout-title {\n color: hsl(142, 71%, 45%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-important .fd-callout-title {\n color: hsl(262, 83%, 58%);\n}\n#nd-docs-layout[data-fd-framework] .fd-callout-caution .fd-callout-title {\n color: hsl(0, 72%, 51%);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-callout-content p:last-child {\n margin-bottom: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-footer {\n display: block;\n margin-top: auto;\n padding-top: 24px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-edit-on-github {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n width: 100%;\n gap: 0.75rem 16px;\n margin-top: 0;\n padding-top: 0;\n border-top: 0;\n font-size: 13px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-edit-on-github > a {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 6px 8px;\n border: 1px solid var(--color-fd-border);\n border-radius: 0.375rem;\n background: var(--color-fd-secondary);\n color: var(--color-fd-secondary-foreground);\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n text-decoration: none;\n transition:\n background-color 0.15s,\n color 0.15s,\n border-color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-edit-on-github > a:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-last-modified {\n color: var(--color-fd-muted-foreground);\n font-size: var(--fd-small-size, 0.75rem);\n font-weight: var(--fd-small-weight, 400);\n}\n\n@media (max-width: 640px) {\n #nd-docs-layout[data-fd-framework] .fd-last-modified {\n width: 100%;\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-llms-txt-links {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-llms-txt-link {\n display: inline-flex;\n align-items: center;\n color: var(--color-fd-muted-foreground);\n font-size: 0.75rem;\n font-family: var(--fd-font-mono, ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace);\n line-height: 1.75rem;\n text-decoration: none;\n padding: 0.125rem 0.375rem;\n border-radius: 0.25rem;\n border: 1px solid var(--color-fd-border, hsl(0 0% 80% / 50%));\n transition: color 150ms, border-color 150ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-llms-txt-link:hover {\n color: var(--color-fd-foreground);\n border-color: var(--color-fd-foreground);\n text-decoration: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n margin-top: 16px;\n padding-top: 0;\n border-top: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav:has(.fd-page-nav-prev):has(.fd-page-nav-next) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav > div:empty {\n display: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-card {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 0;\n min-height: 95px;\n padding: 16px;\n border: 1px solid var(--color-fd-border);\n border-radius: 8px;\n text-decoration: none;\n color: var(--color-fd-foreground);\n transition:\n background-color 0.15s,\n border-color 0.15s;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-card:hover {\n background: var(--color-fd-accent);\n border-color: var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-next {\n text-align: right;\n align-items: flex-end;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-label,\n#nd-docs-layout[data-fd-framework] .fd-page-nav-title {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n max-width: 100%;\n min-height: 0;\n overflow: hidden;\n color: var(--color-fd-foreground);\n font-size: var(--fd-body-size, 1rem);\n font-weight: 500;\n line-height: var(--fd-body-line-height, 1.65);\n overflow-wrap: anywhere;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-title svg {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-page-nav-description {\n display: block;\n max-width: 100%;\n min-height: 0;\n overflow: hidden;\n color: var(--color-fd-muted-foreground);\n font-size: var(--fd-body-size, 1rem);\n font-weight: var(--fd-body-weight, 400);\n line-height: var(--fd-body-line-height, 1.65);\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n opacity: 0.7;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-sidebar-link-active .fd-sidebar-icon {\n opacity: 1;\n}\n\n@keyframes fd-ai-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fd-ai-slide-up {\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n@keyframes fd-ai-float-in {\n from {\n opacity: 0;\n transform: translateY(12px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n@keyframes fd-ai-float-center-in {\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-overlay {\n position: fixed;\n inset: 0;\n z-index: 9998;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n animation: fd-ai-fade-in 150ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-dialog {\n position: fixed;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n background: var(--color-fd-popover);\n border: 1px solid var(--color-fd-border);\n border-radius: 12px;\n box-shadow:\n 0 0 0 1px color-mix(in srgb, var(--color-fd-foreground) 5%, transparent),\n 0 16px 48px -8px rgba(0, 0, 0, 0.35);\n overflow: hidden;\n color: var(--color-fd-foreground);\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab-bar {\n display: flex;\n align-items: stretch;\n gap: 0;\n padding: 0;\n border-bottom: 1px solid var(--color-fd-border);\n background: var(--color-fd-card);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 10px 20px;\n font-size: 13px;\n font-weight: 500;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n transition:\n color 150ms,\n border-color 150ms,\n background-color 150ms;\n background: transparent;\n color: var(--color-fd-muted-foreground);\n font-family: inherit;\n margin-bottom: -1px;\n position: relative;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab svg {\n opacity: 0.7;\n flex-shrink: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab[data-active=\"true\"] {\n color: var(--color-fd-foreground);\n border-bottom-color: var(--color-fd-primary);\n background: transparent;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab[data-active=\"true\"] svg {\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-tab:hover:not([data-active=\"true\"]) {\n color: var(--color-fd-foreground);\n background: var(--color-fd-accent);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-esc {\n padding: 2px 8px;\n border-radius: 6px;\n border: 1px solid var(--color-fd-border);\n font-size: 11px;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground);\n background: var(--color-fd-secondary);\n line-height: 1.4;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-header-title {\n font-size: 14px;\n font-weight: 600;\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: var(--radius, 6px);\n border: none;\n cursor: pointer;\n background: transparent;\n color: var(--color-fd-muted-foreground, #71717a);\n transition: all 150ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-close-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.06));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-search-wrap {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--color-fd-border);\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-search-wrap svg {\n flex-shrink: 0;\n opacity: 0.5;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-input {\n flex: 1;\n background: transparent;\n border: none;\n outline: none;\n color: var(--color-fd-foreground);\n font-size: 14px;\n font-family: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-input::placeholder {\n color: var(--color-fd-muted-foreground);\n opacity: 0.7;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-results {\n flex: 1;\n overflow-y: auto;\n padding: 8px;\n max-height: 360px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 12px;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n text-align: left;\n font-size: 14px;\n font-family: inherit;\n transition:\n background 100ms,\n color 100ms;\n color: var(--color-fd-foreground);\n background: transparent;\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result svg {\n flex-shrink: 0;\n opacity: 0.5;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result[data-active=\"true\"] {\n background: var(--color-fd-accent);\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result[data-active=\"true\"] svg {\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result-empty {\n padding: 48px 16px;\n text-align: center;\n color: var(--color-fd-muted-foreground);\n font-size: 14px;\n line-height: 1.6;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-messages {\n flex: 1;\n overflow-y: auto;\n padding: 12px 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n gap: 12px;\n padding: 24px 0;\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-empty-title {\n font-size: 14px;\n font-weight: 500;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-empty-desc {\n font-size: 12px;\n opacity: 0.7;\n text-align: center;\n max-width: 300px;\n line-height: 1.5;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-suggestions {\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n max-width: 360px;\n margin-top: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-suggestion {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n border: 1px solid var(--color-fd-border);\n background: var(--color-fd-background);\n opacity: 0.6;\n color: var(--color-fd-foreground);\n font-size: 13px;\n font-family: inherit;\n cursor: pointer;\n text-align: left;\n line-height: 1.4;\n transition: all 150ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-suggestion:hover {\n background: var(--color-fd-accent);\n border-color: var(--color-fd-ring);\n opacity: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-msg {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-msg[data-role=\"user\"] {\n align-items: flex-end;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-msg[data-role=\"assistant\"] {\n align-items: flex-start;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-msg-label {\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--color-fd-muted-foreground);\n padding: 0 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-user {\n background: var(--color-fd-primary);\n color: var(--color-fd-primary-foreground);\n padding: 8px 14px;\n border-radius: 14px;\n font-size: 13px;\n line-height: 1.5;\n max-width: 85%;\n word-break: break-word;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai {\n background: var(--color-fd-muted, rgba(255, 255, 255, 0.04));\n padding: 10px 14px;\n border-radius: var(--radius, 14px);\n font-size: 13px;\n line-height: 1.6;\n max-width: 95%;\n word-break: break-word;\n animation: fd-ai-msg-in 300ms ease-out;\n}\n\n@keyframes fd-ai-msg-in {\n from { opacity: 0; transform: translateY(6px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-chat-footer {\n padding: 8px 12px 12px;\n border-top: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-clear-btn {\n font-size: 11px;\n color: var(--color-fd-muted-foreground);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 2px 8px;\n border-radius: 4px;\n font-family: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-clear-btn:hover {\n color: var(--color-fd-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-input-wrap {\n display: flex;\n align-items: center;\n gap: 8px;\n background: var(--color-fd-muted);\n border-radius: 10px;\n padding: 4px 4px 4px 14px;\n border: 1px solid var(--color-fd-border);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n border: none;\n transition: all 150ms;\n cursor: default;\n background: var(--color-fd-muted);\n color: var(--color-fd-muted-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-send-btn[data-active=\"true\"] {\n cursor: pointer;\n background: var(--color-fd-primary);\n color: var(--color-fd-primary-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-loader {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n animation: fd-ai-loader-in 300ms ease-out;\n}\n\n@keyframes fd-ai-loader-in {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-loader-shimmer-text {\n font-size: 13px;\n font-weight: 500;\n background: linear-gradient(to right, var(--color-fd-muted-foreground, #888) 40%, var(--color-fd-foreground, #fff) 60%, var(--color-fd-muted-foreground, #888) 80%);\n background-size: 200% auto;\n background-clip: text;\n -webkit-background-clip: text;\n color: transparent;\n animation: fd-ai-shimmer-text 3s linear infinite;\n}\n\n@keyframes fd-ai-shimmer-text {\n 0% { background-position: 150% center; }\n 100% { background-position: -150% center; }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-loader-typing-dots {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-loader-typing-dot {\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background: var(--color-fd-primary, #6366f1);\n animation: fd-ai-typing 1s infinite;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-loader-typing-dot:nth-child(2) { animation-delay: 250ms; }\n#nd-docs-layout[data-fd-framework] .fd-ai-loader-typing-dot:nth-child(3) { animation-delay: 500ms; }\n\n@keyframes fd-ai-typing {\n 0%, 100% { transform: translateY(0); opacity: 0.5; }\n 50% { transform: translateY(-2px); opacity: 1; }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-streaming::after {\n content: \"\";\n display: inline-block;\n width: 2px;\n height: 1em;\n background: var(--color-fd-primary, #6366f1);\n margin-left: 2px;\n vertical-align: text-bottom;\n animation: fd-ai-cursor-blink 0.8s step-end infinite;\n}\n\n@keyframes fd-ai-cursor-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0; }\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai code {\n background: var(--color-fd-muted, #1a1a2e);\n padding: 2px 6px;\n border-radius: var(--radius, 4px);\n font-size: 0.875em;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai a {\n color: var(--color-fd-primary, #6366f1);\n text-decoration: underline;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai .fd-ai-code-block code {\n background: transparent;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai .fd-table-wrapper {\n margin: 8px 0;\n overflow: auto;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius, 6px);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n margin: 0;\n font-size: 13px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai th,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai td {\n border: 0;\n border-right: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n padding: 6px 12px;\n text-align: left;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai tr > :last-child {\n border-right: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai tbody tr:last-child td {\n border-bottom: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai th {\n background: var(--color-fd-muted, #1a1a2e);\n font-weight: 600;\n font-size: 12px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h1,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h2,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h3,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h4,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h5,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h6 {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h1 {\n font-size: 1.25rem;\n margin: 14px 0 7px;\n line-height: 1.25;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h2 {\n font-size: 1.125rem;\n margin: 12px 0 6px;\n line-height: 1.3;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h3 {\n font-size: 1rem;\n font-weight: 600;\n margin: 10px 0 4px;\n line-height: 1.4;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h4 {\n font-size: 0.9375rem;\n margin: 8px 0 4px;\n line-height: 1.4;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h5,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai h6 {\n font-size: 0.8125rem;\n margin: 8px 0 4px;\n line-height: 1.45;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai strong {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai em {\n font-style: italic;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai p {\n margin: 0 0 6px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai br {\n content: \"\";\n display: block;\n margin-top: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai ul,\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai ol {\n margin: 6px 0 8px;\n padding-left: 1.25rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai li {\n margin: 3px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai blockquote {\n margin: 8px 0;\n padding: 6px 0 6px 12px;\n border-left: 2px solid var(--color-fd-border, rgba(255, 255, 255, 0.16));\n color: var(--color-fd-muted-foreground, #a1a1aa);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai blockquote p:last-child {\n margin-bottom: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai .fd-ai-hr {\n margin: 12px 0;\n border: none;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.12));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai del {\n color: var(--color-fd-muted-foreground, #a1a1aa);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai .fd-ai-task-list-item {\n list-style: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai .fd-ai-task-checkbox {\n width: 0.875rem;\n height: 0.875rem;\n margin: 0 0.45rem 0 -1.25rem;\n vertical-align: -0.12em;\n accent-color: var(--color-fd-primary, #6366f1);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai img {\n display: block;\n max-width: 100%;\n height: auto;\n margin: 8px 0;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.12));\n border-radius: var(--radius, 4px);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai pre {\n margin: 8px 0;\n border-radius: 0;\n border: none;\n background: transparent;\n padding: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-block {\n --sh-class: #8be9fd;\n --sh-identifier: #c9d1d9;\n --sh-keyword: #ff7b72;\n --sh-string: #a5d6ff;\n --sh-property: #79c0ff;\n --sh-entity: #7ee787;\n --sh-sign: #8b949e;\n --sh-comment: #6e7681;\n --sh-jsxliterals: #d2a8ff;\n --sh-space: inherit;\n\n margin: 10px 0;\n border-radius: var(--radius, 8px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-muted, #1a1a2e);\n overflow: hidden;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.08));\n background: color-mix(in srgb, var(--color-fd-muted, #1a1a2e) 80%, black);\n min-height: 32px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-lang {\n font-size: 11px;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground, #71717a);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-copy {\n font-size: 11px;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n color: var(--color-fd-muted-foreground, #71717a);\n background: transparent;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius, 4px);\n padding: 2px 8px;\n cursor: pointer;\n transition: all 150ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-copy:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n background: color-mix(\n in srgb,\n var(--color-fd-accent, rgba(255, 255, 255, 0.05)) 60%,\n transparent\n );\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-block pre {\n margin: 0;\n padding: 12px 16px;\n overflow-x: auto;\n background: transparent;\n border: none;\n border-radius: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-block code {\n font-size: 13px;\n line-height: 1.45;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n background: transparent;\n padding: 0;\n border-radius: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-block .sh__line {\n display: block;\n min-height: 1.2em;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-dialog {\n border-radius: 12px;\n box-shadow:\n 0 20px 60px rgba(99, 102, 241, 0.08),\n 0 8px 24px rgba(0, 0, 0, 0.12);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-user {\n border-radius: 16px 16px 4px 16px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-bubble-ai {\n border-radius: 16px 16px 16px 4px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-input-wrap {\n border-radius: 10px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-send-btn {\n border-radius: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-btn {\n border-radius: 26px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-suggestion {\n border-radius: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-result {\n border-radius: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input-container {\n border-radius: 12px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-send-btn {\n border-radius: 9999px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestion {\n border-radius: 9999px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn {\n border-radius: 16px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-close-btn {\n border-radius: 9999px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-block {\n border-radius: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-code-copy {\n border-radius: 4px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-btn {\n position: fixed;\n z-index: 9997;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 12px;\n height: 40px;\n border-radius: 16px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: color-mix(in srgb, var(--color-fd-secondary, #f4f4f5) 80%, transparent);\n backdrop-filter: blur(4px);\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n font-size: var(--fd-small-size, 0.875rem);\n font-family: var(--fd-font-sans, inherit);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);\n transition:\n transform 150ms,\n background 150ms,\n color 150ms;\n animation: fd-ai-fade-in 300ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n transform: scale(1.03);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-btn:active {\n transform: scale(0.97);\n}\n\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-floating-btn,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-floating-btn,\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-fm-trigger-btn {\n background: color-mix(in srgb, var(--color-fd-secondary, rgba(255, 255, 255, 0.08)) 90%, transparent);\n color: var(--color-fd-foreground, #e4e4e7);\n border-color: var(--color-fd-border, rgba(255, 255, 255, 0.12));\n}\n\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-floating-btn:hover,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-floating-btn:hover,\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn:hover,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-fm-trigger-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger {\n position: fixed;\n z-index: 9997;\n cursor: pointer;\n animation: fd-ai-fade-in 300ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger .ask-ai-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 12px;\n height: 40px;\n border-radius: 16px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: color-mix(in srgb, var(--color-fd-secondary, #f4f4f5) 80%, transparent);\n backdrop-filter: blur(4px);\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n font-size: var(--fd-small-size, 0.875rem);\n font-family: var(--fd-font-sans, inherit);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);\n transition: transform 150ms, background 150ms, color 150ms;\n}\n\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger .ask-ai-trigger,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-floating-trigger .ask-ai-trigger {\n background: color-mix(in srgb, var(--color-fd-secondary, rgba(255, 255, 255, 0.08)) 90%, transparent);\n color: var(--color-fd-foreground, #e4e4e7);\n border-color: var(--color-fd-border, rgba(255, 255, 255, 0.12));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger .ask-ai-trigger:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n transform: scale(1.03);\n}\n\n:is(html.dark, body.dark) #nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger .ask-ai-trigger:hover,\n#nd-docs-layout[data-fd-framework].dark .fd-ai-floating-trigger .ask-ai-trigger:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger .ask-ai-trigger:active {\n transform: scale(0.97);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-fixed {\n position: fixed;\n z-index: 9997;\n animation: fd-ai-fade-in 200ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-floating-trigger--static {\n position: static;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-overlay {\n position: fixed;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n background: color-mix(in srgb, var(--color-fd-background, #000) 80%, transparent);\n backdrop-filter: blur(8px);\n z-index: 9998;\n padding: 0 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-overlay--animate {\n animation: fd-ai-fade-in 200ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-topbar {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n width: min(800px, 100%);\n padding: 12px 0;\n position: sticky;\n top: 0;\n z-index: 2;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: var(--radius, 9999px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-secondary, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-foreground, #e4e4e7);\n cursor: pointer;\n transition: all 150ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-close-btn:hover {\n background: var(--color-fd-accent, rgba(255, 255, 255, 0.1));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-messages {\n flex: 1;\n overflow-y: auto;\n width: min(800px, 100%);\n padding: 24px 0 120px;\n mask-image: linear-gradient(\n to bottom,\n transparent,\n white 3rem,\n white calc(100% - 8rem),\n transparent 100%\n );\n -webkit-mask-image: linear-gradient(\n to bottom,\n transparent,\n white 3rem,\n white calc(100% - 8rem),\n transparent 100%\n );\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-messages-inner {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg {\n display: flex;\n flex-direction: column;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-label {\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 4px;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-label[data-role=\"assistant\"] {\n color: var(--color-fd-primary, #6366f1);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content {\n font-size: 14px;\n line-height: 1.7;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content code {\n background: var(--color-fd-muted, #1a1a2e);\n padding: 2px 6px;\n border-radius: var(--radius, 4px);\n font-size: 0.875em;\n font-family: var(--fd-font-mono, ui-monospace, monospace);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content .fd-ai-code-block code {\n background: transparent;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content a {\n color: var(--color-fd-primary, #6366f1);\n text-decoration: underline;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content .fd-table-wrapper {\n margin: 8px 0;\n overflow: auto;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-radius: var(--radius, 6px);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n margin: 0;\n font-size: 13px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content th,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content td {\n border: 0;\n border-right: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n border-bottom: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n padding: 6px 12px;\n text-align: left;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content tr > :last-child {\n border-right: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content tbody tr:last-child td {\n border-bottom: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content th {\n background: var(--color-fd-muted, #1a1a2e);\n font-weight: 600;\n font-size: 12px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h1,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h2,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h3,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h4,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h5,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h6 {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h1 {\n font-size: 1.375rem;\n margin: 18px 0 9px;\n line-height: 1.25;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h2 {\n font-size: 1.25rem;\n margin: 16px 0 8px;\n line-height: 1.3;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h3 {\n font-size: 1.0625rem;\n font-weight: 600;\n margin: 12px 0 6px;\n line-height: 1.4;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h4 {\n font-size: 1rem;\n margin: 10px 0 4px;\n line-height: 1.4;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h5,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content h6 {\n font-size: 0.875rem;\n margin: 10px 0 4px;\n line-height: 1.45;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content strong {\n font-weight: 600;\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content em {\n font-style: italic;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content p {\n margin: 0 0 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content br {\n content: \"\";\n display: block;\n margin-top: 2px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content ul,\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content ol {\n margin: 8px 0 10px;\n padding-left: 1.35rem;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content li {\n margin: 4px 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content blockquote {\n margin: 10px 0;\n padding: 7px 0 7px 14px;\n border-left: 2px solid var(--color-fd-border, rgba(255, 255, 255, 0.16));\n color: var(--color-fd-muted-foreground, #a1a1aa);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content blockquote p:last-child {\n margin-bottom: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content .fd-ai-hr {\n margin: 14px 0;\n border: none;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.12));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content del {\n color: var(--color-fd-muted-foreground, #a1a1aa);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content .fd-ai-task-list-item {\n list-style: none;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content .fd-ai-task-checkbox {\n width: 0.9rem;\n height: 0.9rem;\n margin: 0 0.5rem 0 -1.35rem;\n vertical-align: -0.12em;\n accent-color: var(--color-fd-primary, #6366f1);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content img {\n display: block;\n max-width: 100%;\n height: auto;\n margin: 10px 0;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.12));\n border-radius: var(--radius, 4px);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-msg-content pre {\n margin: 8px 0;\n border-radius: 0;\n border: none;\n background: transparent;\n padding: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input-bar {\n position: fixed;\n z-index: 9999;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input-bar--open {\n bottom: 16px;\n left: 50%;\n transform: translateX(-50%);\n width: min(800px, calc(100vw - 32px));\n animation: fd-ai-fade-in 200ms ease-out;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input-container {\n display: flex;\n flex-direction: column;\n border-radius: var(--radius, 12px);\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: var(--color-fd-background, #0c0c0c);\n box-shadow: 0 20px 60px color-mix(in srgb, var(--color-fd-background, #000) 70%, transparent);\n overflow: hidden;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input-wrap {\n display: flex;\n align-items: flex-start;\n padding-right: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input {\n flex: 1;\n padding: 16px;\n background: transparent;\n border: none;\n outline: none;\n resize: none;\n color: var(--color-fd-foreground, #e4e4e7);\n font-size: 14px;\n font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);\n line-height: 1.5;\n min-height: 0;\n max-height: 120px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-input::placeholder {\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 12px;\n width: 32px;\n height: 32px;\n border-radius: 9999px;\n border: none;\n cursor: default;\n transition: all 150ms;\n background: var(--color-fd-secondary, rgba(255, 255, 255, 0.06));\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-send-btn[data-active=\"true\"] {\n cursor: pointer;\n background: var(--color-fd-primary, #6366f1);\n color: var(--color-fd-primary-foreground, #fff);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestions-area {\n padding: 12px 16px 4px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestions-label {\n font-size: 12px;\n font-weight: 500;\n color: var(--color-fd-muted-foreground, #71717a);\n margin-bottom: 8px;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestions {\n display: flex;\n gap: 8px;\n overflow-x: auto;\n padding-bottom: 4px;\n mask-image: linear-gradient(\n to right,\n transparent 0%,\n black 1rem,\n black calc(100% - 1rem),\n transparent 100%\n );\n -webkit-mask-image: linear-gradient(\n to right,\n transparent 0%,\n black 1rem,\n black calc(100% - 1rem),\n transparent 100%\n );\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestion {\n flex-shrink: 0;\n white-space: nowrap;\n padding: 6px 14px;\n font-size: 12px;\n font-family: inherit;\n border-radius: 9999px;\n border: 1px solid\n color-mix(in srgb, var(--color-fd-border, rgba(255, 255, 255, 0.1)) 50%, transparent);\n background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 30%, transparent);\n color: var(--color-fd-muted-foreground, #71717a);\n cursor: pointer;\n transition: all 200ms;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-suggestion:hover {\n background: color-mix(in srgb, var(--color-fd-muted, rgba(255, 255, 255, 0.04)) 50%, transparent);\n color: var(--color-fd-foreground, #e4e4e7);\n border-color: var(--color-fd-border, rgba(255, 255, 255, 0.1));\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-footer-bar {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px 16px;\n border-top: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.06));\n background: color-mix(\n in srgb,\n var(--color-fd-accent, rgba(255, 255, 255, 0.03)) 40%,\n transparent\n );\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-clear-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-family: inherit;\n font-size: 12px;\n color: var(--color-fd-muted-foreground, #71717a);\n transition: color 200ms;\n padding: 0;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-clear-btn:hover {\n color: var(--color-fd-foreground, #e4e4e7);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-clear-btn[aria-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-footer-hint {\n flex: 1;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 12px;\n height: 40px;\n border-radius: 16px;\n border: 1px solid var(--color-fd-border, rgba(255, 255, 255, 0.1));\n background: color-mix(in srgb, var(--color-fd-secondary, #f4f4f5) 80%, transparent);\n backdrop-filter: blur(4px);\n color: var(--color-fd-muted-foreground, #71717a);\n font-family: inherit;\n font-size: 14px;\n cursor: pointer;\n box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);\n transition:\n transform 150ms,\n background 150ms,\n color 150ms;\n animation: fd-ai-fade-in 300ms ease-out;\n white-space: nowrap;\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn:hover {\n background: var(--color-fd-accent);\n color: var(--color-fd-accent-foreground);\n transform: scale(1.03);\n}\n\n#nd-docs-layout[data-fd-framework] .fd-ai-fm-trigger-btn:active {\n transform: scale(0.97);\n}\n"; export default farmDocsBrowserCss; diff --git a/packages/fumadocs/package.json b/packages/fumadocs/package.json index 1e560f38..adae4663 100644 --- a/packages/fumadocs/package.json +++ b/packages/fumadocs/package.json @@ -124,6 +124,11 @@ "import": "./dist/ai-search-dialog.mjs", "default": "./dist/ai-search-dialog.mjs" }, + "./tweaks": { + "types": "./dist/tweaks-dialog.d.mts", + "import": "./dist/tweaks-dialog.mjs", + "default": "./dist/tweaks-dialog.mjs" + }, "./css": "./styles/default.css", "./base/css": "./styles/base.css", "./default/css": "./styles/default.css", diff --git a/packages/fumadocs/src/docs-layout.tsx b/packages/fumadocs/src/docs-layout.tsx index a24b8e3d..c03161dc 100644 --- a/packages/fumadocs/src/docs-layout.tsx +++ b/packages/fumadocs/src/docs-layout.tsx @@ -26,6 +26,7 @@ import type { AIConfig, OrderingItem, PageFrontmatter, + TweaksConfig, OpenDocsConfig, CopyMarkdownConfig, PageActionConnectMcpConfig, @@ -39,6 +40,8 @@ import { resolveOpenDocsProviders } from "./open-docs-providers.js"; import { resolvePageReadingTime, resolveReadingTimeOptions } from "./reading-time.js"; import { SidebarSearchWithAI } from "./sidebar-search-ai.js"; import { LocaleThemeControl } from "./locale-theme-control.js"; +import { TweaksAutoPortalTrigger, TweaksControl } from "./tweaks-dialog.js"; +import { buildFoucScript as buildTweaksFoucScript } from "./tweaks-runtime.js"; import { withLangInUrl } from "./i18n.js"; // ─── Tree node types (mirrors fumadocs-core/page-tree) ─────────────── interface PageNode { @@ -1075,6 +1078,7 @@ export function createDocsLayout(config: DocsConfig, options?: { locale?: string // llms.txt config const llmsTxtEnabled = resolveEnabledByDefault(config.llmsTxt); const feedbackConfig = resolveFeedbackConfig(config.feedback); + const tweaksConfig = resolveTweaksConfig(config.tweaks); // Serialize provider icons to HTML strings so they survive the // server → client component boundary. @@ -1171,6 +1175,10 @@ export function createDocsLayout(config: DocsConfig, options?: { locale?: string const finalSidebarProps = { ...sidebarProps } as Record; const sidebarFooter = sidebarProps.footer as ReactNode; + const tweaksAutoTrigger = + tweaksConfig.mode !== null && + (tweaksConfig.position === "sidebar-footer" || tweaksConfig.position === "both"); + if (i18n) { finalSidebarProps.footer = (
@@ -1212,6 +1220,32 @@ export function createDocsLayout(config: DocsConfig, options?: { locale?: string {forcedTheme && } + {tweaksConfig.mode !== null && ( +