@pollinations/ui 0.1.0-alpha.1 → 0.1.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +148 -36
  2. package/dist/Button-BGqClaBr.d.cts +29 -0
  3. package/dist/Button-BGqClaBr.d.ts +29 -0
  4. package/dist/Chip-v-ADv6cz.d.cts +18 -0
  5. package/dist/Chip-v-ADv6cz.d.ts +18 -0
  6. package/dist/Dialog-D3Nqt8cE.d.cts +66 -0
  7. package/dist/Dialog-D3Nqt8cE.d.ts +66 -0
  8. package/dist/app-user-menu/sdk.cjs +684 -243
  9. package/dist/app-user-menu/sdk.cjs.map +1 -1
  10. package/dist/app-user-menu/sdk.d.cts +18 -7
  11. package/dist/app-user-menu/sdk.d.ts +18 -7
  12. package/dist/app-user-menu/sdk.js +689 -241
  13. package/dist/app-user-menu/sdk.js.map +1 -1
  14. package/dist/app.css +19 -122
  15. package/dist/auth/index.cjs +1372 -86
  16. package/dist/auth/index.cjs.map +1 -1
  17. package/dist/auth/index.d.cts +91 -6
  18. package/dist/auth/index.d.ts +91 -6
  19. package/dist/auth/index.js +1369 -85
  20. package/dist/auth/index.js.map +1 -1
  21. package/dist/auth/sdk.cjs +250 -0
  22. package/dist/auth/sdk.cjs.map +1 -0
  23. package/dist/auth/sdk.d.cts +40 -0
  24. package/dist/auth/sdk.d.ts +40 -0
  25. package/dist/auth/sdk.js +219 -0
  26. package/dist/auth/sdk.js.map +1 -0
  27. package/dist/brand/badge-made-with.svg +1 -0
  28. package/dist/brand/lockup-horizontal-black.png +0 -0
  29. package/dist/brand/lockup-horizontal-black.svg +4 -0
  30. package/dist/brand/lockup-horizontal-white.png +0 -0
  31. package/dist/brand/lockup-horizontal-white.svg +4 -0
  32. package/dist/brand/lockup-horizontal.svg +4 -0
  33. package/dist/brand/lockup-stacked-black.png +0 -0
  34. package/dist/brand/lockup-stacked-black.svg +4 -0
  35. package/dist/brand/lockup-stacked-white.png +0 -0
  36. package/dist/brand/lockup-stacked-white.svg +4 -0
  37. package/dist/brand/lockup-stacked.svg +4 -0
  38. package/dist/brand/mark-black.png +0 -0
  39. package/dist/brand/mark-black.svg +1 -0
  40. package/dist/brand/mark-white.png +0 -0
  41. package/dist/brand/mark-white.svg +1 -0
  42. package/dist/brand/mark.svg +1 -0
  43. package/dist/brand/polli/polli-lockup-horizontal-black.png +0 -0
  44. package/dist/brand/polli/polli-lockup-horizontal-white.png +0 -0
  45. package/dist/brand/polli/polli-lockup-stacked-black.png +0 -0
  46. package/dist/brand/polli/polli-lockup-stacked-white.png +0 -0
  47. package/dist/brand/polli/polli.png +0 -0
  48. package/dist/brand/wordmark-black.png +0 -0
  49. package/dist/brand/wordmark-black.svg +1 -0
  50. package/dist/brand/wordmark-white.png +0 -0
  51. package/dist/brand/wordmark-white.svg +1 -0
  52. package/dist/brand/wordmark.svg +1 -0
  53. package/dist/fonts/geist-pixel-square.woff2 +0 -0
  54. package/dist/gen/index.cjs +459 -218
  55. package/dist/gen/index.cjs.map +1 -1
  56. package/dist/gen/index.d.cts +75 -19
  57. package/dist/gen/index.d.ts +75 -19
  58. package/dist/gen/index.js +453 -216
  59. package/dist/gen/index.js.map +1 -1
  60. package/dist/index.browser.min.js +2 -0
  61. package/dist/index.browser.min.js.map +1 -0
  62. package/dist/index.cjs +3907 -1626
  63. package/dist/index.cjs.map +1 -1
  64. package/dist/index.d.cts +682 -199
  65. package/dist/index.d.ts +682 -199
  66. package/dist/index.js +3671 -1457
  67. package/dist/index.js.map +1 -1
  68. package/dist/licenses/Geist-OFL.txt +93 -0
  69. package/dist/markdown.cjs +836 -0
  70. package/dist/markdown.cjs.map +1 -0
  71. package/dist/markdown.d.cts +16 -0
  72. package/dist/markdown.d.ts +16 -0
  73. package/dist/markdown.js +807 -0
  74. package/dist/markdown.js.map +1 -0
  75. package/dist/styles.css +1 -1
  76. package/dist/theme.css +94 -0
  77. package/dist/types-CCy9JNu9.d.cts +6 -0
  78. package/dist/types-CCy9JNu9.d.ts +6 -0
  79. package/dist/wallet/index.cjs +295 -65
  80. package/dist/wallet/index.cjs.map +1 -1
  81. package/dist/wallet/index.d.cts +30 -7
  82. package/dist/wallet/index.d.ts +30 -7
  83. package/dist/wallet/index.js +294 -65
  84. package/dist/wallet/index.js.map +1 -1
  85. package/package.json +106 -89
  86. package/dist/Chip-CQCq34kS.d.cts +0 -20
  87. package/dist/Chip-Cj4xG7Te.d.ts +0 -20
  88. package/dist/assets/logo-wordmark.svg +0 -1
  89. package/dist/assets/logo.svg +0 -4
  90. package/dist/theme-jRPPBmld.d.cts +0 -20
  91. package/dist/theme-jRPPBmld.d.ts +0 -20
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/compositions/Markdown.tsx","../src/lib/cn.ts","../src/lib/link.ts","../src/primitives/icons/index.tsx","../src/primitives/InlineLink.tsx","../src/compositions/CopyButton.tsx","../src/primitives/Button.tsx","../src/primitives/Tooltip.tsx","../src/compositions/CodeBlock.tsx","../src/compositions/Prose.tsx","../src/primitives/Typography.tsx"],"sourcesContent":["import { isValidElement, type ReactNode } from \"react\";\nimport ReactMarkdown, { type Components } from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport { cn } from \"../lib/cn.ts\";\nimport { InlineLink } from \"../primitives/InlineLink.tsx\";\nimport { CodeBlock } from \"./CodeBlock.tsx\";\n\nexport type MarkdownProps = {\n children: string;\n className?: string;\n};\n\nfunction textContent(value: ReactNode): string {\n if (typeof value === \"string\" || typeof value === \"number\") {\n return String(value);\n }\n if (Array.isArray(value)) return value.map(textContent).join(\"\");\n if (isValidElement<{ children?: ReactNode }>(value)) {\n return textContent(value.props.children);\n }\n return \"\";\n}\n\nconst VIDEO_EXTENSIONS = new Set([\"m4v\", \"mov\", \"mp4\", \"webm\"]);\nconst AUDIO_EXTENSIONS = new Set([\n \"aac\",\n \"flac\",\n \"m4a\",\n \"mp3\",\n \"ogg\",\n \"opus\",\n \"wav\",\n]);\n\nfunction urlExtension(src: string): string {\n // Only the path names a file; the base resolves relative links.\n try {\n const { pathname } = new URL(src, \"http://localhost\");\n return pathname.split(\".\").pop()?.toLowerCase() ?? \"\";\n } catch {\n return \"\";\n }\n}\n\nfunction inlineMedia(src: string | undefined, label: string | undefined) {\n if (!src) return null;\n const extension = urlExtension(src);\n // Agent tool results use these labels for stored URLs without extensions.\n const video =\n VIDEO_EXTENSIONS.has(extension) || label === \"Generated video\";\n const audio =\n AUDIO_EXTENSIONS.has(extension) || label === \"Generated audio\";\n if (!video && !audio) return null;\n const Element = video ? \"video\" : \"audio\";\n return (\n <Element\n src={src}\n aria-label={label}\n controls\n playsInline={video || undefined}\n preload=\"metadata\"\n className=\"polli:max-w-full polli:rounded-lg\"\n />\n );\n}\n\nfunction MarkdownCodeBlock({ children }: { children?: ReactNode }) {\n const child = isValidElement<{\n children?: ReactNode;\n className?: string;\n }>(children)\n ? children\n : null;\n const language = child?.props.className?.match(/language-([^\\s]+)/)?.[1];\n const code = textContent(child?.props.children ?? children).replace(\n /\\n$/,\n \"\",\n );\n\n return <CodeBlock code={code} language={language} className=\"polli:my-3\" />;\n}\n\nconst components: Components = {\n ul: ({ node, ...props }) => (\n <ul\n className=\"polli:flex polli:min-w-0 polli:list-disc polli:flex-col polli:gap-1 polli:pl-5 polli:marker:text-theme-text-muted\"\n {...props}\n />\n ),\n ol: ({ node, ...props }) => (\n <ol\n className=\"polli:flex polli:min-w-0 polli:list-decimal polli:flex-col polli:gap-1 polli:pl-5 polli:marker:text-theme-text-muted\"\n {...props}\n />\n ),\n p: ({ node, ...props }) => (\n <p className=\"polli:mb-2 polli:last:mb-0\" {...props} />\n ),\n strong: ({ node, ...props }) => (\n <strong\n className=\"polli:font-semibold polli:text-theme-text-strong\"\n {...props}\n />\n ),\n code: ({ node, ...props }) => (\n <code\n className=\"polli:break-words polli:rounded polli:bg-theme-bg-subtle polli:px-1 polli:py-0.5 polli:font-mono polli:text-xs\"\n {...props}\n />\n ),\n pre: ({ children }) => <MarkdownCodeBlock>{children}</MarkdownCodeBlock>,\n img: ({ node, src, alt, ...props }) => {\n const media = inlineMedia(\n typeof src === \"string\" ? src : undefined,\n alt,\n );\n if (media) return media;\n return (\n <img\n src={src}\n alt={alt}\n loading=\"lazy\"\n className=\"polli:max-w-full polli:rounded-lg\"\n {...props}\n />\n );\n },\n a: ({ node, href, ...props }) => {\n const media = inlineMedia(href, textContent(props.children));\n if (media) return media;\n return <InlineLink href={href} {...props} />;\n },\n};\n\n/** Compact markdown for cards and snippets. Use Prose for document-style content. */\nexport function Markdown({ children, className }: MarkdownProps) {\n return (\n <div\n className={cn(\n \"polli:min-w-0 polli:font-body polli:leading-relaxed\",\n className,\n )}\n >\n <ReactMarkdown remarkPlugins={[remarkGfm]} components={components}>\n {children}\n </ReactMarkdown>\n </div>\n );\n}\n","import { clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\n// `text-micro` is a font size (theme.css), not a colour; without this,\n// tailwind-merge drops it next to a `text-theme-*` colour class.\nconst twMerge = extendTailwindMerge({\n prefix: \"polli\",\n extend: { theme: { text: [\"micro\"] } },\n});\n\n/** Internal class merge for polli:-prefixed package primitive classes. */\nexport function cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(...inputs));\n}\n","/** Relative URLs and same-origin absolute URLs stay in the current app. */\nexport function isExternalHref(\n href: unknown,\n origin = globalThis.location?.origin,\n): boolean {\n if (typeof href !== \"string\" || !/^(https?:)?\\/\\//i.test(href))\n return false;\n if (!origin) return true;\n try {\n return new URL(href, origin).origin !== origin;\n } catch {\n return false;\n }\n}\n","import type { IconProps } from \"./types.ts\";\n\nconst strokeProps = {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n} as const;\n\nexport function AppIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"14\" rx=\"2\" />\n <path d=\"M2 20h20\" />\n </svg>\n );\n}\n\nexport function AccountIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"12\" cy=\"8\" r=\"4\" />\n <path d=\"M4 21a8 8 0 0 1 16 0\" />\n </svg>\n );\n}\n\nexport function ArrowRightIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M5 12h14M13 6l6 6-6 6\" />\n </svg>\n );\n}\n\nexport function BeakerIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9 3h6\" />\n <path d=\"M10 3v6.5L4.5 18a2 2 0 0 0 1.7 3h11.6a2 2 0 0 0 1.7-3L14 9.5V3\" />\n <path d=\"M7 14h10\" />\n </svg>\n );\n}\n\nexport function BotIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 8V4H8\" />\n <rect x=\"4\" y=\"8\" width=\"16\" height=\"12\" rx=\"2\" />\n <path d=\"M2 14h2M20 14h2\" />\n <path d=\"M9 13v2M15 13v2\" />\n </svg>\n );\n}\n\nexport function BookIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M4 4h5a3 3 0 0 1 3 3v13a2 2 0 0 0-2-2H4z\" />\n <path d=\"M20 4h-5a3 3 0 0 0-3 3v13a2 2 0 0 1 2-2h6z\" />\n </svg>\n );\n}\n\nexport function BugIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m8 2 1.9 1.9M14.1 3.9 16 2\" />\n <path d=\"M9 7V6a3 3 0 0 1 6 0v1\" />\n <path d=\"M12 20c-3.3 0-6-2.7-6-6v-3a6 6 0 0 1 12 0v3c0 3.3-2.7 6-6 6Z\" />\n <path d=\"M12 20v-9M6.5 9C4.6 8.8 3 7.1 3 5M6 13H2M3 21c0-2.1 1.7-3.9 3.8-4M17.5 9C19.4 8.8 21 7.1 21 5M18 13h4M21 21c0-2.1-1.7-3.9-3.8-4\" />\n </svg>\n );\n}\n\nexport function CheckIcon(props: IconProps) {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n {...strokeProps}\n strokeWidth={2.5}\n {...props}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nexport function ClipboardIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </svg>\n );\n}\n\nexport function ClockIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 7v5l3 2\" />\n </svg>\n );\n}\n\nexport function DiscordIcon(props: IconProps) {\n return (\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M20.32 4.37A19.8 19.8 0 0 0 15.36 2.83a.07.07 0 0 0-.08.04c-.21.38-.45.88-.62 1.27a18.27 18.27 0 0 0-5.52 0 12.84 12.84 0 0 0-.63-1.27.08.08 0 0 0-.08-.04A19.74 19.74 0 0 0 3.47 4.37a.07.07 0 0 0-.03.03C.31 9.07-.55 13.61-.13 18.1a.08.08 0 0 0 .03.06 19.9 19.9 0 0 0 6.08 3.07.08.08 0 0 0 .09-.03c.47-.64.88-1.31 1.24-2.02a.08.08 0 0 0-.04-.1 13.08 13.08 0 0 1-1.9-.91.08.08 0 0 1-.01-.13c.13-.1.25-.2.37-.29a.07.07 0 0 1 .08-.01 14.24 14.24 0 0 0 12.38 0 .07.07 0 0 1 .08.01c.12.1.25.2.38.3a.08.08 0 0 1-.01.12 12.22 12.22 0 0 1-1.9.9.08.08 0 0 0-.04.11c.36.7.77 1.38 1.23 2.02a.08.08 0 0 0 .1.03 19.84 19.84 0 0 0 6.08-3.07.08.08 0 0 0 .03-.05c.5-5.2-.84-9.7-3.77-13.71a.06.06 0 0 0-.03-.03ZM8.02 15.37c-1.18 0-2.16-1.08-2.16-2.4 0-1.32.96-2.4 2.16-2.4 1.2 0 2.18 1.09 2.16 2.4 0 1.32-.96 2.4-2.16 2.4Zm7.96 0c-1.18 0-2.16-1.08-2.16-2.4 0-1.32.96-2.4 2.16-2.4 1.2 0 2.18 1.09 2.16 2.4 0 1.32-.95 2.4-2.16 2.4Z\"\n />\n </svg>\n );\n}\n\nexport function InstagramIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"5\" />\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <circle\n cx=\"17.5\"\n cy=\"6.5\"\n r=\"1\"\n fill=\"currentColor\"\n stroke=\"none\"\n />\n </svg>\n );\n}\n\nexport function XSocialIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M18.24 2.25h3.31l-7.23 8.26 8.51 11.24h-6.66l-5.21-6.82-5.97 6.82H1.68l7.73-8.84L1.25 2.25h6.83l4.71 6.23 5.45-6.23Zm-1.16 17.52h1.83L7.08 4.13H5.12l11.96 15.64Z\"\n />\n </svg>\n );\n}\n\nexport function LinkedInIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M20.45 20.45h-3.56v-5.57c0-1.33-.03-3.04-1.85-3.04-1.86 0-2.14 1.45-2.14 2.94v5.67H9.34V9h3.42v1.56h.05c.47-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.46v6.28ZM5.32 7.43a2.07 2.07 0 1 1 0-4.13 2.07 2.07 0 0 1 0 4.13ZM7.1 20.45H3.54V9H7.1v11.45Z\"\n />\n </svg>\n );\n}\n\nexport function DownloadIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\n </svg>\n );\n}\n\nexport function ExpandIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M8 3H3v5M16 3h5v5M21 16v5h-5M3 16v5h5\" />\n </svg>\n );\n}\n\nexport function PlayIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...props}>\n <path fill=\"currentColor\" d=\"M7 4.5v15l12-7.5z\" />\n </svg>\n );\n}\n\nexport function PauseIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...props}>\n <path fill=\"currentColor\" d=\"M6 4h4v16H6zM14 4h4v16h-4z\" />\n </svg>\n );\n}\n\nexport function CloudUploadIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M17.5 19H19a4 4 0 0 0 .4-8A7.5 7.5 0 0 0 5 9.5 5 5 0 0 0 6 19h1.5\" />\n <path d=\"m8.5 15.5 3.5-3.5 3.5 3.5M12 12v9\" />\n </svg>\n );\n}\n\nexport function ExternalLinkIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M7 17 17 7M9 7h8v8\" />\n </svg>\n );\n}\n\nexport function GenApiIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m8 3 4 1.5L16 3v18l-4-1.5L8 21z\" />\n <path d=\"M8 3v18M16 3v18\" />\n </svg>\n );\n}\n\nexport function GitBranchIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <line x1=\"6\" y1=\"3\" x2=\"6\" y2=\"15\" />\n <circle cx=\"18\" cy=\"6\" r=\"3\" />\n <circle cx=\"6\" cy=\"18\" r=\"3\" />\n <path d=\"M18 9a9 9 0 0 1-9 9\" />\n </svg>\n );\n}\n\nexport function GitPullRequestIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"6\" cy=\"6\" r=\"3\" />\n <circle cx=\"18\" cy=\"18\" r=\"3\" />\n <path d=\"M6 9v12M13 6h3a2 2 0 0 1 2 2v7\" />\n </svg>\n );\n}\n\nexport function GraduationCapIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M21.42 10.92a1 1 0 0 0-.02-1.84L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.83l8.57 3.91a2 2 0 0 0 1.66 0z\" />\n <path d=\"M22 10v6\" />\n <path d=\"M6 12.5V16a6 3 0 0 0 12 0v-3.5\" />\n </svg>\n );\n}\n\nexport function SparklesIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 3l1.9 5.8a2 2 0 0 0 1.3 1.3L21 12l-5.8 1.9a2 2 0 0 0-1.3 1.3L12 21l-1.9-5.8a2 2 0 0 0-1.3-1.3L3 12l5.8-1.9a2 2 0 0 0 1.3-1.3z\" />\n </svg>\n );\n}\n\nexport function GitHubIcon(props: IconProps) {\n return (\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M12 .5A11.5 11.5 0 0 0 8.36 22.9c.58.11.79-.25.79-.56v-2.16c-3.21.7-3.89-1.38-3.89-1.38-.53-1.34-1.29-1.7-1.29-1.7-1.05-.72.08-.7.08-.7 1.16.08 1.77 1.19 1.77 1.19 1.04 1.76 2.71 1.25 3.37.96.11-.75.4-1.25.74-1.54-2.56-.29-5.26-1.28-5.26-5.7 0-1.26.45-2.29 1.19-3.1-.12-.29-.52-1.46.11-3.06 0 0 .97-.31 3.16 1.18a10.88 10.88 0 0 1 5.76 0c2.19-1.49 3.15-1.18 3.15-1.18.63 1.6.23 2.77.11 3.06.74.81 1.19 1.84 1.19 3.1 0 4.43-2.7 5.4-5.27 5.69.41.36.78 1.06.78 2.14v3.19c0 .31.21.68.8.56A11.5 11.5 0 0 0 12 .5Z\"\n />\n </svg>\n );\n}\n\nexport function ImageIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <circle cx=\"9\" cy=\"9\" r=\"2\" />\n <path d=\"m21 15-5-5L5 21\" />\n </svg>\n );\n}\n\nexport function CubeIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m21 16-9 5-9-5V8l9-5 9 5z\" />\n <path d=\"m3 8 9 5 9-5\" />\n <path d=\"M12 13v8\" />\n </svg>\n );\n}\n\nexport function AudioIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9 18V5l12-2v13\" />\n <circle cx=\"6\" cy=\"18\" r=\"3\" />\n <circle cx=\"18\" cy=\"16\" r=\"3\" />\n </svg>\n );\n}\n\nexport function LockIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </svg>\n );\n}\n\nexport function LogInIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M10 17l5-5-5-5\" />\n <path d=\"M15 12H3\" />\n <path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\" />\n </svg>\n );\n}\n\nexport function LogOutIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <path d=\"m16 17 5-5-5-5\" />\n <path d=\"M21 12H9\" />\n </svg>\n );\n}\n\nexport function MailIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\" />\n <path d=\"m3 7 9 7 9-7\" />\n </svg>\n );\n}\n\nexport function McpIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"2\" y=\"4\" width=\"8\" height=\"16\" rx=\"1.5\" />\n <rect x=\"14\" y=\"4\" width=\"8\" height=\"16\" rx=\"1.5\" />\n <path d=\"M10 12h4\" />\n </svg>\n );\n}\n\nexport function MenuIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M4 7h16M4 12h16M4 17h16\" />\n </svg>\n );\n}\n\nexport function NewspaperIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M5 4h12a1 1 0 0 1 1 1v14a1 1 0 0 0 1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h1z\" />\n <path d=\"M18 8h2a1 1 0 0 1 1 1v9a2 2 0 0 1-2 2\" />\n <path d=\"M7 8h7M7 12h7M7 16h4\" />\n </svg>\n );\n}\n\nexport function PlusIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n );\n}\n\nexport function TerminalIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <polyline points=\"4 8 8 12 4 16\" />\n <line x1=\"12\" y1=\"20\" x2=\"20\" y2=\"20\" />\n </svg>\n );\n}\n\nexport function ToolIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l2.1 2.1a1 1 0 0 0 1.4 0l4-4a6 6 0 0 1-8 8l-8 8a2.8 2.8 0 0 1-4-4l8-8a6 6 0 0 1 8-8l-4 4Z\" />\n </svg>\n );\n}\n\nexport function TargetIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <circle cx=\"12\" cy=\"12\" r=\"1.6\" fill=\"currentColor\" stroke=\"none\" />\n </svg>\n );\n}\n\nexport function TokensIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M4 9h16M4 15h16M10 3 8 21M16 3l-2 18\" />\n </svg>\n );\n}\n\nexport function UsageIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M4 18a8 8 0 1 1 16 0\" />\n <path d=\"M12 18l3.5-5\" />\n <path d=\"M7 18h10\" />\n <path d=\"M7.5 12.5 6 11\" />\n <path d=\"M16.5 12.5 18 11\" />\n </svg>\n );\n}\n\nexport function WarningIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M10.3 3.1 1.8 17a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.1a2 2 0 0 0-3.4 0Z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n );\n}\n\nexport function TrendUpIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <polyline points=\"3 17 9 11 13 15 21 7\" />\n <polyline points=\"15 7 21 7 21 13\" />\n </svg>\n );\n}\n\nexport function EarningsIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <ellipse cx=\"10\" cy=\"6\" rx=\"6\" ry=\"3\" />\n <path d=\"M4 6v8c0 1.7 2.7 3 6 3 1.2 0 2.4-.2 3.3-.5\" />\n <path d=\"M16 6v4\" />\n <path d=\"M4 10c0 1.7 2.7 3 6 3 1.1 0 2.1-.1 3-.4\" />\n <path d=\"M18 14v6\" />\n <path d=\"M15 17h6\" />\n </svg>\n );\n}\n\nexport function WalletIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M3 7a2 2 0 0 1 2-2h13a2 2 0 0 1 2 2v2H5a2 2 0 0 0-2 2V7Z\" />\n <path d=\"M3 11a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-6Z\" />\n <circle cx=\"17\" cy=\"14\" r=\"1.25\" fill=\"currentColor\" />\n </svg>\n );\n}\n\n/** A paper receipt: what a price includes. */\nexport function ReceiptIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M6 3h12v18l-2-1.5-2 1.5-2-1.5-2 1.5-2-1.5L6 21Z\" />\n <path d=\"M9 8h6M9 12h6M9 16h3\" />\n </svg>\n );\n}\n\nexport function MoonIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8Z\" />\n </svg>\n );\n}\n\nexport function SunIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path d=\"M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4\" />\n </svg>\n );\n}\n\nexport function XIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n );\n}\n\nexport function TrashIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M3 6h18\" />\n <path d=\"M8 6V4h8v2\" />\n <path d=\"m19 6-1 15H6L5 6\" />\n <path d=\"M10 11v6M14 11v6\" />\n </svg>\n );\n}\n\n// --- Model modality / capability / price glyphs (single-ink, replace emoji) ---\n\nexport function ChatIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n </svg>\n );\n}\n\nexport function RobotIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"3\" y=\"6\" width=\"18\" height=\"15\" rx=\"3\" />\n <path d=\"M12 2v4M3 11H1v5h2M21 11h2v5h-2M8 17h8\" />\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\n </svg>\n );\n}\n\nexport function EyeIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n\nexport function EyeOffIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M3 3l18 18\" />\n </svg>\n );\n}\n\nexport function VideoIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m22 8-6 4 6 4V8z\" />\n <rect x=\"2\" y=\"6\" width=\"14\" height=\"12\" rx=\"2\" />\n </svg>\n );\n}\n\nexport function MicIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3z\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <path d=\"M12 19v3\" />\n </svg>\n );\n}\n\nexport function SpeakerIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M11 5 6 9H2v6h4l5 4z\" />\n <path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\" />\n <path d=\"M19.07 4.93a10 10 0 0 1 0 14.14\" />\n </svg>\n );\n}\n\nexport function MegaphoneIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m3 11 18-5v12L3 14v-3z\" />\n <path d=\"m7 15 1.5 6H14l-2-7\" />\n </svg>\n );\n}\n\nexport function ReasoningIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9 18h6M10 22h4M15.1 14c.2-1 .6-1.7 1.4-2.5A4.6 4.6 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.8.8 1.2 1.5 1.4 2.5\" />\n </svg>\n );\n}\n\nexport function RocketIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\" />\n <path d=\"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z\" />\n <path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0\" />\n <path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\" />\n </svg>\n );\n}\n\nexport function SearchIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n );\n}\n\nexport function SignOutIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <path d=\"m16 17 5-5-5-5\" />\n <path d=\"M21 12H9\" />\n </svg>\n );\n}\n\nexport function PowerIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 2v10\" />\n <path d=\"M18.4 6.6a9 9 0 1 1-12.77.04\" />\n </svg>\n );\n}\n\nexport function SparkleIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9.94 15.5A2 2 0 0 0 8.5 14.06l-6.14-1.58a.5.5 0 0 1 0-.96L8.5 9.94A2 2 0 0 0 9.94 8.5l1.58-6.14a.5.5 0 0 1 .96 0L14.06 8.5A2 2 0 0 0 15.5 9.94l6.14 1.58a.5.5 0 0 1 0 .96L15.5 14.06a2 2 0 0 0-1.44 1.44l-1.58 6.14a.5.5 0 0 1-.96 0z\" />\n <path d=\"M20 3v4\" />\n <path d=\"M22 5h-4\" />\n <path d=\"M4 17v2\" />\n <path d=\"M5 18H3\" />\n </svg>\n );\n}\n\nexport function StarIcon({\n filled = false,\n ...props\n}: IconProps & { filled?: boolean }) {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n {...strokeProps}\n fill={filled ? \"currentColor\" : \"none\"}\n {...props}\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n );\n}\n\nexport function CodeIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m16 18 6-6-6-6M8 6l-6 6 6 6\" />\n </svg>\n );\n}\n\nexport function DatabaseIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M3 5v14a9 3 0 0 0 18 0V5\" />\n <path d=\"M3 12a9 3 0 0 0 18 0\" />\n </svg>\n );\n}\n\nexport function CardIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" />\n <path d=\"M2 10h20\" />\n </svg>\n );\n}\n\nexport function SproutIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M7 20h10\" />\n <path d=\"M10 20c5.5-2.5.8-6.4 3-10\" />\n <path d=\"M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z\" />\n <path d=\"M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z\" />\n </svg>\n );\n}\n\nexport function PencilIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 20h9\" />\n <path d=\"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z\" />\n </svg>\n );\n}\n\nexport function KeyIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"7.5\" cy=\"15.5\" r=\"5.5\" />\n <path d=\"m21 2-9.6 9.6\" />\n <path d=\"m15.5 7.5 3 3L22 7l-3-3\" />\n </svg>\n );\n}\n\nexport function GlobeIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\" />\n <path d=\"M2 12h20\" />\n </svg>\n );\n}\n\nexport function ArrowLeftIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M19 12H5\" />\n <path d=\"m12 19-7-7 7-7\" />\n </svg>\n );\n}\n\nexport function RefreshIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M21 12a9 9 0 1 1-2.64-6.36\" />\n <path d=\"M21 3v6h-6\" />\n </svg>\n );\n}\n\nexport type { IconProps } from \"./types.ts\";\n","import type { PropsWithChildren } from \"react\";\nimport { isExternalHref } from \"../lib/link.ts\";\nimport { ExternalLinkIcon } from \"./icons/index.tsx\";\n\ntype BaseInlineLinkProps = {\n /** Set explicitly for non-http external links, or false for custom routing components. */\n external?: boolean;\n showIcon?: boolean;\n /** Inline text inherits its size; footers use 13px and standalone links 14px. */\n size?: \"inherit\" | \"footer\" | \"sm\";\n /** Accent for prominent links; quiet for secondary navigation. */\n tone?: \"accent\" | \"quiet\";\n className?: string;\n};\n\nexport type InlineLinkProps<T extends React.ElementType = \"a\"> =\n PropsWithChildren<BaseInlineLinkProps> & {\n as?: T;\n } & Omit<\n React.ComponentPropsWithoutRef<T>,\n keyof BaseInlineLinkProps | \"as\"\n >;\n\n/** Shared text-link rule: surrounding font, selectable ink, persistent underline,\n * visible keyboard focus, and an external arrow only when leaving the app.\n * Navigation and button-shaped actions use their own primitives.\n */\nexport function InlineLink<T extends React.ElementType = \"a\">({\n as,\n external,\n showIcon = true,\n size = \"inherit\",\n tone = \"accent\",\n className,\n children,\n ...linkProps\n}: InlineLinkProps<T>) {\n const Component: React.ElementType = as || \"a\";\n const isExternal =\n external ?? isExternalHref((linkProps as { href?: unknown }).href);\n\n return (\n <Component\n target={isExternal && as !== \"button\" ? \"_blank\" : undefined}\n rel={\n isExternal && as !== \"button\"\n ? \"noopener noreferrer\"\n : undefined\n }\n className={[\"polli-link\", className].filter(Boolean).join(\" \")}\n data-size={size}\n data-tone={tone}\n {...linkProps}\n >\n {children}\n {showIcon && isExternal && (\n <ExternalLinkIcon\n aria-hidden=\"true\"\n className=\"polli-link-external-icon\"\n />\n )}\n </Component>\n );\n}\n","import {\n type ButtonHTMLAttributes,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { Button, type ButtonProps } from \"../primitives/Button.tsx\";\nimport { Tooltip } from \"../primitives/Tooltip.tsx\";\n\ntype CopyValue = string | (() => string | Promise<string>);\n\nexport type CopyButtonProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\" | \"className\" | \"onClick\" | \"type\" | \"value\"\n> & {\n value: CopyValue;\n children: ReactNode | ((copied: boolean) => ReactNode);\n copiedTimeoutMs?: number;\n tooltip?: ReactNode;\n tooltipAlign?: \"start\" | \"center\";\n tooltipClampToViewport?: boolean;\n tooltipMaxWidth?: number;\n copiedTooltip?: ReactNode;\n tooltipClassName?: string;\n className?: string | ((copied: boolean) => string);\n variant?: \"plain\" | \"button\";\n /** Button intent, used with `variant=\"button\"`. */\n intent?: ButtonProps<\"button\">[\"intent\"];\n onCopied?: () => void;\n onCopyError?: (error: unknown) => void;\n};\n\nexport function CopyButton({\n value,\n children,\n copiedTimeoutMs = 2000,\n tooltip = \"📋 Click to copy\",\n tooltipAlign,\n tooltipClampToViewport,\n tooltipMaxWidth,\n copiedTooltip = \"✅ Copied!\",\n tooltipClassName,\n className,\n variant = \"plain\",\n intent,\n onCopied,\n onCopyError,\n ...buttonProps\n}: CopyButtonProps) {\n const [copied, setCopied] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(\n () => () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n },\n [],\n );\n\n async function handleCopy(event: MouseEvent<HTMLButtonElement>) {\n event.stopPropagation();\n try {\n const text = typeof value === \"function\" ? await value() : value;\n await navigator.clipboard.writeText(text);\n setCopied(true);\n onCopied?.();\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(\n () => setCopied(false),\n copiedTimeoutMs,\n );\n } catch (error) {\n onCopyError?.(error);\n }\n }\n\n const Control = variant === \"button\" ? Button : \"button\";\n const button = (\n <Control\n {...buttonProps}\n {...(variant === \"button\" && intent ? { intent } : {})}\n type=\"button\"\n onClick={handleCopy}\n className={cn(\n \"polli-control\",\n buttonProps.disabled\n ? \"polli:cursor-not-allowed\"\n : \"polli:cursor-pointer\",\n typeof className === \"function\" ? className(copied) : className,\n )}\n >\n {typeof children === \"function\" ? children(copied) : children}\n </Control>\n );\n\n // A copy button with its own visible label doesn't need a hover tooltip —\n // pass tooltip={null} to opt out of the wrapper entirely.\n if (tooltip === null) {\n return button;\n }\n\n return (\n <Tooltip\n triggerAs=\"span\"\n content={copied ? copiedTooltip : tooltip}\n align={tooltipAlign}\n clampToViewport={tooltipClampToViewport}\n maxWidth={tooltipMaxWidth}\n displayContents\n tapEnabled={false}\n className={cn(\n buttonProps.disabled\n ? \"polli:cursor-not-allowed\"\n : \"polli:cursor-pointer\",\n tooltipClassName,\n )}\n >\n {button}\n </Tooltip>\n );\n}\n","import type {\n PropsWithChildren,\n MouseEvent as ReactMouseEvent,\n ReactNode,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\n/** Semantic action roles. Label recipes live on Chip. */\ntype ButtonIntent =\n | \"danger\"\n | \"info\"\n | \"neutral\"\n | \"brand\"\n | \"commit\"\n | \"surface\";\nexport type ButtonAppearance = \"pill\" | \"raised\";\n\nconst pillSizes = {\n icon: \"polli:h-12 polli:w-12 polli:p-0\",\n xs: \"polli:h-5 polli:px-1.5 polli:py-0 polli:text-[11px] polli:leading-none\",\n sm: \"polli:min-h-7 polli:px-2 polli:pt-0.5 polli:pb-1\",\n md: \"polli:min-h-9 polli:px-4 polli:pt-1.5 polli:pb-2\",\n lg: \"polli:min-h-12 polli:px-6 polli:py-3 polli:text-base\",\n} as const;\n\nconst raisedSizes = {\n icon: \"polli:h-12 polli:w-12 polli:p-0\",\n xs: \"polli:px-2 polli:py-1 polli:text-xs\",\n sm: \"polli:px-4 polli:py-2 polli:text-sm\",\n md: \"polli:px-7 polli:py-3.5 polli:text-base\",\n lg: \"polli:px-8 polli:py-4 polli:text-lg\",\n} as const;\n\nconst appearanceClasses: Record<ButtonAppearance, string> = {\n pill: \"polli:rounded-full\",\n raised:\n \"polli:rounded-xl polli:border-r-[3px] polli:border-b-[3px] polli:border-solid \" +\n \"polli:border-theme-text-strong/20 polli:hover:border-theme-text-strong/45\",\n};\n\n// Cascade-driven base — reads [data-theme] vars.\nconst themeClasses =\n \"polli:bg-theme-bg-active polli:text-theme-text-strong \" +\n \"polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover polli:transition-colors\";\n\n// Primary actions have a soft accent fill in light mode and an outline in dark.\n// `brand` keeps a calm hover; `commit` strengthens the fill on hover and focus.\nconst outlined =\n \"polli:border polli:border-theme-text-soft polli:bg-theme-bg-active/30 polli:text-theme-text-strong \" +\n \"polli:transition-colors polli:[.dark_&]:bg-transparent\";\nconst intentClasses: Record<ButtonIntent, string> = {\n brand: `${outlined} polli:hover:bg-theme-bg-active/50 polli:[.dark_&]:hover:bg-theme-text-soft/10`,\n commit:\n `${outlined} polli:hover:border-theme-bg-active polli:hover:bg-theme-bg-active ` +\n \"polli:focus-visible:border-theme-bg-active polli:focus-visible:bg-theme-bg-active \" +\n \"polli:[.dark_&]:hover:bg-theme-bg-active polli:[.dark_&]:focus-visible:bg-theme-bg-active\",\n danger:\n \"polli:border polli:border-intent-danger-text polli:bg-intent-danger-bg-light polli:text-intent-danger-text \" +\n \"polli:hover:bg-intent-danger-bg-hover polli:focus-visible:bg-intent-danger-bg-hover polli:transition-colors \" +\n \"polli:[.dark_&]:bg-transparent polli:[.dark_&]:hover:bg-intent-danger-bg-hover polli:[.dark_&]:focus-visible:bg-intent-danger-bg-hover\",\n info:\n \"polli:bg-intent-info-bg-light polli:text-intent-info-text \" +\n \"polli:hover:bg-intent-info-bg-hover polli:transition-colors\",\n // A quiet white pill on the desk, like the colour toggle; hover previews\n // the accent as the ambient button does.\n surface:\n \"polli:bg-surface-opaque polli:text-theme-text-strong \" +\n \"polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover polli:transition-colors\",\n // Secondary actions never take the accent: one step stronger grey on hover.\n neutral:\n \"polli:bg-theme-bg-subtle polli:text-theme-text-base \" +\n \"polli:hover:bg-theme-text-muted/25 polli:hover:text-theme-text-strong polli:transition-colors\",\n};\n\ntype BaseButtonProps = {\n icon?: ReactNode;\n /** Optional semantic recipe; omit for the ambient theme button. */\n intent?: ButtonIntent;\n /** `raised` is the stronger website CTA treatment. */\n appearance?: ButtonAppearance;\n size?: keyof typeof pillSizes;\n className?: string;\n disabled?: boolean;\n};\n\nconst buttonClasses = ({\n intent,\n appearance = \"pill\",\n size,\n className,\n disabled,\n busy,\n}: BaseButtonProps & { disabled?: boolean; busy?: boolean }) => {\n const colorClasses = intent ? intentClasses[intent] : themeClasses;\n const sizeClasses = appearance === \"raised\" ? raisedSizes : pillSizes;\n return cn(\n \"polli-control polli:inline-flex polli:items-center polli:justify-center polli:self-center polli:font-body polli:text-sm polli:font-medium polli:leading-normal polli:box-border polli:border polli:border-transparent\",\n // A busy button is working, not unavailable: it keeps its strength.\n busy\n ? \"polli:cursor-progress\"\n : disabled\n ? \"polli:opacity-50 polli:cursor-not-allowed\"\n : \"polli:hover:filter polli:hover:brightness-105 polli:cursor-pointer\",\n colorClasses,\n appearanceClasses[appearance],\n sizeClasses[size || \"md\"],\n className,\n );\n};\n\nexport type ButtonProps<T extends React.ElementType = \"button\"> =\n PropsWithChildren<BaseButtonProps> & {\n as?: T;\n } & Omit<React.ComponentPropsWithoutRef<T>, keyof BaseButtonProps | \"as\">;\n\nexport function Button<T extends React.ElementType = \"button\">({\n as,\n children,\n icon,\n intent,\n appearance,\n size,\n className,\n disabled,\n ...buttonProps\n}: ButtonProps<T>) {\n const Component: React.ElementType = as || \"button\";\n const isButton = Component === \"button\";\n const isAnchor = Component === \"a\";\n const buttonType = (\n buttonProps as {\n type?: \"button\" | \"submit\" | \"reset\";\n }\n ).type;\n const onClick = (\n buttonProps as {\n onClick?: (event: ReactMouseEvent) => void;\n }\n ).onClick;\n const ariaBusy = (\n buttonProps as { \"aria-busy\"?: boolean | \"true\" | \"false\" }\n )[\"aria-busy\"];\n const busy = ariaBusy === true || ariaBusy === \"true\";\n const handleClick = disabled\n ? (event: ReactMouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }\n : onClick;\n\n return (\n <Component\n {...buttonProps}\n data-intent={intent}\n {...(isButton ? { type: buttonType ?? \"button\", disabled } : {})}\n {...(!isButton && disabled\n ? { \"aria-disabled\": true, tabIndex: -1 }\n : {})}\n {...(isAnchor && disabled ? { href: undefined } : {})}\n onClick={handleClick}\n className={buttonClasses({\n intent,\n appearance,\n size,\n className,\n disabled,\n busy,\n })}\n >\n {icon && (\n <span\n aria-hidden=\"true\"\n className=\"polli:mr-2 polli:flex polli:size-4 polli:shrink-0 polli:[&>svg]:size-full\"\n >\n {busy ? (\n <span className=\"polli:block polli:size-full polli:animate-spin polli:rounded-full polli:border-2 polli:border-current polli:border-r-transparent polli:motion-reduce:animate-none\" />\n ) : (\n icon\n )}\n </span>\n )}\n {children}\n </Component>\n );\n}\n","import {\n type CSSProperties,\n type FC,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../lib/cn.ts\";\n\nconst TOOLTIP_MAX_WIDTH = 288;\nconst TOOLTIP_VIEWPORT_MARGIN = 12;\n\ntype TooltipProps = {\n children: ReactNode;\n content: ReactNode;\n align?: \"start\" | \"center\";\n ariaLabel?: string;\n clampToViewport?: boolean;\n className?: string;\n maxWidth?: number;\n onClick?: () => void;\n stopClickPropagation?: boolean;\n style?: CSSProperties;\n tapEnabled?: boolean;\n triggerAs?: \"button\" | \"span\";\n /**\n * When true, the inner cursor wrapper uses display:contents so the\n * trigger's flex/grid layout applies directly to the caller's children\n * without an inline wrapper in the way.\n */\n displayContents?: boolean;\n};\n\nexport const Tooltip: FC<TooltipProps> = ({\n children,\n content,\n align = \"start\",\n ariaLabel,\n clampToViewport = true,\n className,\n maxWidth = TOOLTIP_MAX_WIDTH,\n onClick,\n stopClickPropagation = true,\n style,\n tapEnabled = false,\n triggerAs = \"button\",\n displayContents = false,\n}) => {\n const [showTooltip, setShowTooltip] = useState(false);\n const [tooltipPosition, setTooltipPosition] = useState<{\n top: number;\n left: number;\n maxWidth: number;\n transform?: CSSProperties[\"transform\"];\n }>({\n top: 0,\n left: 0,\n maxWidth,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const tapPinnedRef = useRef(false);\n const tooltipId = useId();\n\n const closeTooltip = () => {\n tapPinnedRef.current = false;\n setShowTooltip(false);\n };\n\n useEffect(() => {\n if (!showTooltip) return;\n\n const dismissOnOutsideTap = (event: PointerEvent) => {\n if (triggerRef.current?.contains(event.target as Node)) return;\n tapPinnedRef.current = false;\n setShowTooltip(false);\n };\n const dismissOnEscape = (event: globalThis.KeyboardEvent) => {\n if (event.key !== \"Escape\") return;\n tapPinnedRef.current = false;\n setShowTooltip(false);\n };\n const dismissOnViewportChange = () => {\n tapPinnedRef.current = false;\n setShowTooltip(false);\n };\n\n document.addEventListener(\"pointerdown\", dismissOnOutsideTap);\n document.addEventListener(\"keydown\", dismissOnEscape);\n window.addEventListener(\"scroll\", dismissOnViewportChange, {\n capture: true,\n passive: true,\n });\n window.addEventListener(\"resize\", dismissOnViewportChange);\n return () => {\n document.removeEventListener(\"pointerdown\", dismissOnOutsideTap);\n document.removeEventListener(\"keydown\", dismissOnEscape);\n window.removeEventListener(\"scroll\", dismissOnViewportChange, true);\n window.removeEventListener(\"resize\", dismissOnViewportChange);\n };\n }, [showTooltip]);\n\n const updateTooltipPosition = () => {\n if (triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n const availableMaxWidth = Math.min(\n maxWidth,\n window.innerWidth - TOOLTIP_VIEWPORT_MARGIN * 2,\n );\n let left =\n align === \"center\" ? rect.left + rect.width / 2 : rect.left;\n let transform: CSSProperties[\"transform\"] =\n align === \"center\" ? \"translateX(-50%)\" : undefined;\n if (clampToViewport) {\n left = Math.min(\n Math.max(rect.left, TOOLTIP_VIEWPORT_MARGIN),\n Math.max(\n TOOLTIP_VIEWPORT_MARGIN,\n window.innerWidth -\n availableMaxWidth -\n TOOLTIP_VIEWPORT_MARGIN,\n ),\n );\n transform = undefined;\n }\n setTooltipPosition({\n top: rect.bottom + 4,\n left,\n maxWidth: availableMaxWidth,\n transform,\n });\n }\n };\n\n // Informational triggers use help; action wrappers can override the cursor.\n const triggerClassName = cn(\n \"polli-control polli:relative polli:cursor-help polli:text-left polli:inline-flex polli:items-center\",\n className,\n );\n\n const cursorClass = displayContents\n ? \"polli:contents\"\n : \"polli:cursor-inherit\";\n\n // Portal past the trigger's layout; stay inside modal dialogs so the popup\n // shares their stacking and accessible subtree.\n const popupClasses =\n \"polli:fixed polli:w-max polli:px-2 polli:py-1 polli:bg-surface-menu polli:text-theme-text-base polli:font-normal polli:leading-snug polli:tracking-normal polli:normal-case polli:not-italic polli:text-xs polli:rounded-md polli:shadow-md polli:z-[130] polli:pointer-events-none polli:transition-opacity polli:whitespace-pre-line polli:break-words\";\n\n const popupNode = content ? (\n <span\n id={tooltipId}\n role=\"tooltip\"\n aria-hidden={!showTooltip}\n style={{\n top: tooltipPosition.top,\n left: tooltipPosition.left,\n maxWidth: tooltipPosition.maxWidth,\n transform: tooltipPosition.transform,\n }}\n className={`${\n showTooltip\n ? \"polli:visible polli:opacity-100\"\n : \"polli:invisible polli:opacity-0\"\n } ${popupClasses}`}\n >\n {content}\n </span>\n ) : null;\n const tooltipPopup =\n popupNode && typeof document !== \"undefined\"\n ? createPortal(\n popupNode,\n triggerRef.current?.closest('[role=\"dialog\"]') ??\n document.body,\n )\n : popupNode;\n const contentNode = (\n <>\n <span className={cursorClass}>{children}</span>\n {tooltipPopup}\n </>\n );\n\n const sharedProps = {\n \"aria-label\": ariaLabel,\n \"aria-describedby\": content && showTooltip ? tooltipId : undefined,\n className: triggerClassName,\n onMouseEnter: () => {\n updateTooltipPosition();\n setShowTooltip(true);\n },\n onMouseLeave: () => {\n if (!tapPinnedRef.current) setShowTooltip(false);\n },\n onClick: (e: MouseEvent) => {\n if (stopClickPropagation) e.stopPropagation();\n if (onClick) {\n onClick();\n }\n if (!tapEnabled || !content) return;\n updateTooltipPosition();\n if (tapPinnedRef.current) {\n closeTooltip();\n return;\n }\n tapPinnedRef.current = true;\n setShowTooltip(true);\n },\n onFocus: () => {\n updateTooltipPosition();\n setShowTooltip(true);\n },\n onBlur: closeTooltip,\n style,\n };\n\n if (triggerAs === \"span\") {\n const handleKeyDown = (event: KeyboardEvent<HTMLSpanElement>) => {\n if (!tapEnabled || !content) return;\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n updateTooltipPosition();\n if (tapPinnedRef.current) {\n closeTooltip();\n return;\n }\n tapPinnedRef.current = true;\n setShowTooltip(true);\n };\n const spanInteractionProps = {\n ...sharedProps,\n role: tapEnabled && content ? \"button\" : undefined,\n tabIndex: tapEnabled && content ? 0 : undefined,\n onKeyDown: tapEnabled && content ? handleKeyDown : undefined,\n };\n\n return (\n <span\n ref={(node) => {\n triggerRef.current = node;\n }}\n {...spanInteractionProps}\n >\n {contentNode}\n </span>\n );\n }\n\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n }}\n type=\"button\"\n aria-label={ariaLabel}\n aria-describedby={content && showTooltip ? tooltipId : undefined}\n className={triggerClassName}\n onMouseEnter={sharedProps.onMouseEnter}\n onMouseLeave={sharedProps.onMouseLeave}\n onClick={sharedProps.onClick}\n onFocus={sharedProps.onFocus}\n onBlur={sharedProps.onBlur}\n style={style}\n >\n {contentNode}\n </button>\n );\n};\n","import type { ComponentPropsWithoutRef, FC } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { CheckIcon, ClipboardIcon } from \"../primitives/icons/index.tsx\";\nimport { CopyButton } from \"./CopyButton.tsx\";\n\ntype CodeBlockOwnProps = {\n code: string;\n codeClassName?: string;\n language?: string;\n};\n\nexport type CodeBlockProps = CodeBlockOwnProps &\n Omit<ComponentPropsWithoutRef<\"div\">, keyof CodeBlockOwnProps | \"children\">;\n\nexport const CodeBlock: FC<CodeBlockProps> = ({\n code,\n codeClassName,\n language,\n className,\n ...rest\n}) => {\n const label = language || \"Code\";\n\n return (\n <div\n {...rest}\n className={cn(\n \"polli:min-w-0 polli:max-w-full polli:overflow-hidden polli:rounded-lg polli:border polli:border-theme-border polli:bg-theme-bg-pale\",\n className,\n )}\n >\n <div className=\"polli:flex polli:min-h-9 polli:items-center polli:justify-between polli:gap-3 polli:bg-theme-bg-subtle polli:px-3 polli:py-1.5\">\n <span className=\"polli:truncate polli:font-mono polli:text-[11px] polli:font-medium polli:uppercase polli:tracking-wide polli:text-theme-text-muted\">\n {label}\n </span>\n <CopyButton\n value={code}\n tooltip={null}\n aria-label=\"Copy code\"\n className=\"polli:flex polli:items-center polli:gap-1.5 polli:rounded-md polli:px-2 polli:py-1 polli:text-xs polli:font-medium polli:text-theme-text-base polli:transition-colors polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover\"\n >\n {(copied) => (\n <>\n {copied ? (\n <CheckIcon className=\"polli:size-3.5\" />\n ) : (\n <ClipboardIcon className=\"polli:size-3.5\" />\n )}\n <span>{copied ? \"Copied\" : \"Copy\"}</span>\n </>\n )}\n </CopyButton>\n </div>\n <pre\n className={cn(\n \"polli:m-0 polli:min-w-0 polli:whitespace-pre-wrap polli:break-words polli:[overflow-wrap:anywhere] polli:[tab-size:4] polli:p-3 polli:font-mono polli:text-xs polli:leading-6 polli:text-theme-text-strong\",\n codeClassName,\n )}\n >\n <code>{code}</code>\n </pre>\n </div>\n );\n};\n","import Markdown, { type Components } from \"react-markdown\";\nimport rehypeSlug from \"rehype-slug\";\nimport remarkGfm from \"remark-gfm\";\nimport { cn } from \"../lib/cn.ts\";\nimport { InlineLink } from \"../primitives/InlineLink.tsx\";\nimport { headingClassName } from \"../primitives/Typography.tsx\";\n\nexport type ProseProps = {\n children: string;\n className?: string;\n};\n\nconst components: Components = {\n h1: ({ node, ...props }) => (\n <h1\n className={headingClassName(\"title\", \"polli:mt-0 polli:mb-5\")}\n {...props}\n />\n ),\n h2: ({ node, ...props }) => (\n <h2\n className={headingClassName(\"section\", \"polli:mt-8 polli:mb-3\")}\n {...props}\n />\n ),\n h3: ({ node, ...props }) => (\n <h3\n className={headingClassName(\"subsection\", \"polli:mt-6 polli:mb-2\")}\n {...props}\n />\n ),\n p: ({ node, ...props }) => (\n <p className=\"polli:my-4 polli:leading-relaxed\" {...props} />\n ),\n a: ({ node, ...props }) => <InlineLink {...props} />,\n ul: ({ node, ...props }) => (\n <ul\n className=\"polli:my-4 polli:list-disc polli:pl-6 polli:leading-relaxed\"\n {...props}\n />\n ),\n ol: ({ node, ...props }) => (\n <ol\n className=\"polli:my-4 polli:list-decimal polli:pl-6 polli:leading-relaxed\"\n {...props}\n />\n ),\n blockquote: ({ node, ...props }) => (\n <blockquote\n className=\"polli:my-4 polli:border-l-4 polli:border-theme-border polli:pl-4 polli:text-theme-text-soft\"\n {...props}\n />\n ),\n code: ({ node, ...props }) => (\n <code\n className=\"polli:rounded polli:bg-theme-bg-active polli:px-1 polli:py-0.5 polli:font-pixel polli:text-sm\"\n {...props}\n />\n ),\n pre: ({ node, ...props }) => (\n <pre\n className=\"polli:my-4 polli:overflow-x-auto polli:rounded-lg polli:bg-theme-bg-active polli:p-4\"\n {...props}\n />\n ),\n table: ({ node, ...props }) => (\n <table\n className=\"polli:my-4 polli:w-full polli:border-collapse polli:text-sm\"\n {...props}\n />\n ),\n th: ({ node, ...props }) => (\n <th\n className=\"polli:border polli:border-theme-border polli:px-3 polli:py-2 polli:text-left polli:font-semibold\"\n {...props}\n />\n ),\n td: ({ node, ...props }) => (\n <td\n className=\"polli:border polli:border-theme-border polli:px-3 polli:py-2\"\n {...props}\n />\n ),\n hr: ({ node, ...props }) => (\n <hr className=\"polli:my-6 polli:border-theme-border\" {...props} />\n ),\n};\n\nexport function Prose({ children, className }: ProseProps) {\n return (\n <div\n className={cn(\n \"polli:font-body polli:text-theme-text-base polli:leading-relaxed\",\n className,\n )}\n >\n <Markdown\n remarkPlugins={[remarkGfm]}\n rehypePlugins={[rehypeSlug]}\n components={components}\n >\n {children}\n </Markdown>\n </div>\n );\n}\n","import type {\n ComponentPropsWithoutRef,\n ElementType,\n PropsWithChildren,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\ntype HeadingSize = \"display\" | \"title\" | \"section\" | \"subsection\" | \"card\";\n\ntype TextSize = \"body\" | \"sm\" | \"xs\" | \"micro\";\ntype TextTone = \"base\" | \"strong\" | \"soft\" | \"muted\";\ntype TextWeight = \"normal\" | \"medium\" | \"semibold\" | \"bold\";\n\nconst headingSizeClasses: Record<HeadingSize, string> = {\n display: \"polli:font-heading polli:text-5xl polli:leading-none\",\n title: \"polli:font-heading polli:text-4xl polli:leading-none\",\n section: \"polli:font-subheading polli:text-2xl polli:leading-tight\",\n subsection: \"polli:font-subheading polli:text-xl polli:leading-tight\",\n card: \"polli:font-subheading polli:text-lg polli:leading-tight\",\n};\n\nconst textSizeClasses: Record<TextSize, string> = {\n body: \"polli:text-base polli:leading-relaxed\",\n sm: \"polli:text-sm polli:leading-6\",\n xs: \"polli:text-xs polli:leading-normal\",\n micro: \"polli:text-micro polli:leading-normal\",\n};\n\nconst textToneClasses: Record<TextTone, string> = {\n base: \"polli:text-theme-text-base\",\n strong: \"polli:text-theme-text-strong\",\n soft: \"polli:text-theme-text-soft\",\n muted: \"polli:text-theme-text-muted\",\n};\n\nconst textWeightClasses: Record<TextWeight, string> = {\n normal: \"polli:font-normal\",\n medium: \"polli:font-medium\",\n semibold: \"polli:font-semibold\",\n bold: \"polli:font-bold\",\n};\n\nexport function headingClassName(size: HeadingSize, className?: string) {\n return cn(\n \"polli:break-words polli:text-theme-text-strong\",\n headingSizeClasses[size],\n className,\n );\n}\n\nfunction textClassName({\n size,\n tone,\n weight,\n className,\n}: {\n size: TextSize;\n tone: TextTone;\n weight: TextWeight;\n className?: string;\n}) {\n return cn(\n \"polli:break-words polli:font-body\",\n textSizeClasses[size],\n textToneClasses[tone],\n textWeightClasses[weight],\n className,\n );\n}\n\ntype HeadingOwnProps<T extends ElementType> = PropsWithChildren<{\n as?: T;\n size?: HeadingSize;\n className?: string;\n}>;\n\nexport type HeadingProps<T extends ElementType = \"h2\"> = HeadingOwnProps<T> &\n Omit<ComponentPropsWithoutRef<T>, keyof HeadingOwnProps<T>>;\n\nexport function Heading<T extends ElementType = \"h2\">({\n as,\n size = \"section\",\n className,\n children,\n ...rest\n}: HeadingProps<T>) {\n const Component = as || \"h2\";\n return (\n <Component {...rest} className={headingClassName(size, className)}>\n {children}\n </Component>\n );\n}\n\ntype TextOwnProps<T extends ElementType> = PropsWithChildren<{\n as?: T;\n size?: TextSize;\n tone?: TextTone;\n weight?: TextWeight;\n className?: string;\n}>;\n\nexport type TextProps<T extends ElementType = \"p\"> = TextOwnProps<T> &\n Omit<ComponentPropsWithoutRef<T>, keyof TextOwnProps<T>>;\n\nexport function Text<T extends ElementType = \"p\">({\n as,\n size = \"body\",\n tone = \"base\",\n weight = \"normal\",\n className,\n children,\n ...rest\n}: TextProps<T>) {\n const Component = as || \"p\";\n return (\n <Component\n {...rest}\n className={textClassName({ size, tone, weight, className })}\n >\n {children}\n </Component>\n );\n}\n"],"mappings":"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","names":["jsx","jsxs","useEffect","useRef","useState","jsx","jsxs","jsx","jsxs","jsx","useState","useRef","useEffect","Fragment","jsx","jsxs","jsx","Markdown","remarkGfm","jsx","jsx","components","Markdown","remarkGfm"]}
package/dist/styles.css CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--polli-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--polli-spacing:.25rem;--polli-container-sm:24rem;--polli-container-md:28rem;--polli-container-xl:36rem;--polli-container-2xl:42rem;--polli-container-5xl:64rem;--polli-text-xs:.75rem;--polli-text-xs--line-height:calc(1 / .75);--polli-text-sm:.875rem;--polli-text-sm--line-height:calc(1.25 / .875);--polli-text-base:16px;--polli-text-base--line-height:calc(1.5 / 1);--polli-text-lg:1.125rem;--polli-text-lg--line-height:calc(1.75 / 1.125);--polli-text-xl:1.25rem;--polli-text-xl--line-height:calc(1.75 / 1.25);--polli-text-2xl:1.5rem;--polli-text-2xl--line-height:calc(2 / 1.5);--polli-text-4xl:2.25rem;--polli-text-4xl--line-height:calc(2.5 / 2.25);--polli-text-5xl:3rem;--polli-text-5xl--line-height:1;--polli-font-weight-normal:400;--polli-font-weight-medium:500;--polli-font-weight-semibold:600;--polli-font-weight-bold:700;--polli-tracking-tight:-.025em;--polli-tracking-wide:.025em;--polli-leading-tight:1.25;--polli-leading-normal:1.5;--polli-leading-relaxed:1.625;--polli-radius-sm:.25rem;--polli-radius-md:.375rem;--polli-radius-lg:.5rem;--polli-radius-xl:.75rem;--polli-radius-2xl:1rem;--polli-ease-out:cubic-bezier(0, 0, .2, 1);--polli-aspect-video:16 / 9;--polli-default-transition-duration:.15s;--polli-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--polli-font-heading:"LCT Mogi", ui-sans-serif, sans-serif;--polli-font-subheading:"Fraunces", ui-serif, serif;--polli-font-body:"Uncut Sans", ui-sans-serif, sans-serif;--polli-font-pixel:"Pixelify Sans", ui-monospace, monospace;--polli-text-micro:10px;--polli-color-brand-dark:var(--polli-color-brand-dark);--polli-color-ink-50:var(--polli-color-ink-50);--polli-color-ink-100:var(--polli-color-ink-100);--polli-color-ink-200:var(--polli-color-ink-200);--polli-color-ink-300:var(--polli-color-ink-300);--polli-color-ink-400:var(--polli-color-ink-400);--polli-color-ink-500:var(--polli-color-ink-500);--polli-color-ink-600:var(--polli-color-ink-600);--polli-color-ink-700:var(--polli-color-ink-700);--polli-color-ink-800:var(--polli-color-ink-800);--polli-color-ink-900:var(--polli-color-ink-900);--polli-color-ink-950:var(--polli-color-ink-950);--polli-color-surface-opaque:var(--polli-color-surface-opaque);--polli-color-surface-translucent:var(--polli-color-surface-translucent);--polli-color-surface-white:var(--polli-color-surface-translucent);--polli-color-accent-amber-50:var(--polli-color-accent-amber-50);--polli-color-accent-amber-100:var(--polli-color-accent-amber-100);--polli-color-accent-amber-200:var(--polli-color-accent-amber-200);--polli-color-accent-amber-300:var(--polli-color-accent-amber-300);--polli-color-accent-amber-400:var(--polli-color-accent-amber-400);--polli-color-accent-amber-500:var(--polli-color-accent-amber-500);--polli-color-accent-amber-600:var(--polli-color-accent-amber-600);--polli-color-accent-amber-700:var(--polli-color-accent-amber-700);--polli-color-accent-amber-800:var(--polli-color-accent-amber-800);--polli-color-accent-amber-900:var(--polli-color-accent-amber-900);--polli-color-accent-amber-950:var(--polli-color-accent-amber-950);--polli-color-accent-blue-50:var(--polli-color-accent-blue-50);--polli-color-accent-blue-100:var(--polli-color-accent-blue-100);--polli-color-accent-blue-200:var(--polli-color-accent-blue-200);--polli-color-accent-blue-300:var(--polli-color-accent-blue-300);--polli-color-accent-blue-400:var(--polli-color-accent-blue-400);--polli-color-accent-blue-500:var(--polli-color-accent-blue-500);--polli-color-accent-blue-600:var(--polli-color-accent-blue-600);--polli-color-accent-blue-700:var(--polli-color-accent-blue-700);--polli-color-accent-blue-800:var(--polli-color-accent-blue-800);--polli-color-accent-blue-900:var(--polli-color-accent-blue-900);--polli-color-accent-blue-950:var(--polli-color-accent-blue-950);--polli-color-accent-emerald-100:var(--polli-color-accent-emerald-100);--polli-color-accent-emerald-600:var(--polli-color-accent-emerald-600);--polli-color-accent-teal-100:var(--polli-color-accent-teal-100);--polli-color-accent-teal-200:var(--polli-color-accent-teal-200);--polli-color-accent-teal-700:var(--polli-color-accent-teal-700);--polli-color-accent-violet-100:var(--polli-color-accent-violet-100);--polli-color-accent-violet-300:var(--polli-color-accent-violet-300);--polli-color-accent-violet-400:var(--polli-color-accent-violet-400);--polli-color-accent-violet-600:var(--polli-color-accent-violet-600);--polli-color-accent-violet-700:var(--polli-color-accent-violet-700);--polli-color-accent-violet-800:var(--polli-color-accent-violet-800);--polli-color-accent-violet-950:var(--polli-color-accent-violet-950);--polli-color-accent-purple-600:var(--polli-color-accent-purple-600);--polli-color-accent-purple-700:var(--polli-color-accent-purple-700);--polli-color-accent-purple-800:var(--polli-color-accent-purple-800);--polli-color-accent-pink-500:var(--polli-color-accent-pink-500);--polli-color-paid-pale:var(--polli-color-paid-pale);--polli-color-paid-soft:var(--polli-color-paid-soft);--polli-color-paid-deep:var(--polli-color-paid-deep);--polli-color-tier-pale:var(--polli-color-tier-pale);--polli-color-tier-soft:var(--polli-color-tier-soft);--polli-color-tier-deep:var(--polli-color-tier-deep)}}@layer base,components;@layer utilities{.polli\:pointer-events-none{pointer-events:none}.polli\:invisible{visibility:hidden}.polli\:visible{visibility:visible}.polli\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.polli\:absolute{position:absolute}.polli\:fixed{position:fixed}.polli\:relative{position:relative}.polli\:sticky{position:sticky}.polli\:inset-0{inset:calc(var(--polli-spacing) * 0)}.polli\:-top-2{top:calc(var(--polli-spacing) * -2)}.polli\:-top-8{top:calc(var(--polli-spacing) * -8)}.polli\:top-0{top:calc(var(--polli-spacing) * 0)}.polli\:top-4{top:calc(var(--polli-spacing) * 4)}.polli\:right-1{right:calc(var(--polli-spacing) * 1)}.polli\:right-4{right:calc(var(--polli-spacing) * 4)}.polli\:left-1\/2{left:50%}.polli\:z-30{z-index:30}.polli\:z-50{z-index:50}.polli\:z-\[100\]{z-index:100}.polli\:z-\[110\]{z-index:110}.polli\:m-0{margin:calc(var(--polli-spacing) * 0)}.polli\:mx-auto{margin-inline:auto}.polli\:my-4{margin-block:calc(var(--polli-spacing) * 4)}.polli\:my-6{margin-block:calc(var(--polli-spacing) * 6)}.polli\:my-auto{margin-block:auto}.polli\:mt-0{margin-top:calc(var(--polli-spacing) * 0)}.polli\:mt-1{margin-top:calc(var(--polli-spacing) * 1)}.polli\:mt-1\.5{margin-top:calc(var(--polli-spacing) * 1.5)}.polli\:mt-2{margin-top:calc(var(--polli-spacing) * 2)}.polli\:mt-6{margin-top:calc(var(--polli-spacing) * 6)}.polli\:mt-8{margin-top:calc(var(--polli-spacing) * 8)}.polli\:mb-1{margin-bottom:calc(var(--polli-spacing) * 1)}.polli\:mb-2{margin-bottom:calc(var(--polli-spacing) * 2)}.polli\:mb-3{margin-bottom:calc(var(--polli-spacing) * 3)}.polli\:mb-5{margin-bottom:calc(var(--polli-spacing) * 5)}.polli\:ml-1{margin-left:calc(var(--polli-spacing) * 1)}.polli\:box-border{box-sizing:border-box}.polli\:block{display:block}.polli\:contents{display:contents}.polli\:flex{display:flex}.polli\:grid{display:grid}.polli\:inline-block{display:inline-block}.polli\:inline-flex{display:inline-flex}.polli\:aspect-square{aspect-ratio:1}.polli\:aspect-video{aspect-ratio:var(--polli-aspect-video)}.polli\:h-2{height:calc(var(--polli-spacing) * 2)}.polli\:h-2\.5{height:calc(var(--polli-spacing) * 2.5)}.polli\:h-3{height:calc(var(--polli-spacing) * 3)}.polli\:h-3\.5{height:calc(var(--polli-spacing) * 3.5)}.polli\:h-4{height:calc(var(--polli-spacing) * 4)}.polli\:h-5{height:calc(var(--polli-spacing) * 5)}.polli\:h-6{height:calc(var(--polli-spacing) * 6)}.polli\:h-7{height:calc(var(--polli-spacing) * 7)}.polli\:h-8{height:calc(var(--polli-spacing) * 8)}.polli\:h-9{height:calc(var(--polli-spacing) * 9)}.polli\:h-10{height:calc(var(--polli-spacing) * 10)}.polli\:h-12{height:calc(var(--polli-spacing) * 12)}.polli\:h-16{height:calc(var(--polli-spacing) * 16)}.polli\:h-28{height:calc(var(--polli-spacing) * 28)}.polli\:h-dvh{height:100dvh}.polli\:h-full{height:100%}.polli\:max-h-64{max-height:calc(var(--polli-spacing) * 64)}.polli\:min-h-8{min-height:calc(var(--polli-spacing) * 8)}.polli\:min-h-20{min-height:calc(var(--polli-spacing) * 20)}.polli\:min-h-32{min-height:calc(var(--polli-spacing) * 32)}.polli\:min-h-40{min-height:calc(var(--polli-spacing) * 40)}.polli\:w-2{width:calc(var(--polli-spacing) * 2)}.polli\:w-2\.5{width:calc(var(--polli-spacing) * 2.5)}.polli\:w-3{width:calc(var(--polli-spacing) * 3)}.polli\:w-3\.5{width:calc(var(--polli-spacing) * 3.5)}.polli\:w-4{width:calc(var(--polli-spacing) * 4)}.polli\:w-5{width:calc(var(--polli-spacing) * 5)}.polli\:w-6{width:calc(var(--polli-spacing) * 6)}.polli\:w-8{width:calc(var(--polli-spacing) * 8)}.polli\:w-9{width:calc(var(--polli-spacing) * 9)}.polli\:w-10{width:calc(var(--polli-spacing) * 10)}.polli\:w-12{width:calc(var(--polli-spacing) * 12)}.polli\:w-16{width:calc(var(--polli-spacing) * 16)}.polli\:w-28{width:calc(var(--polli-spacing) * 28)}.polli\:w-36{width:calc(var(--polli-spacing) * 36)}.polli\:w-64{width:calc(var(--polli-spacing) * 64)}.polli\:w-\[19rem\]{width:19rem}.polli\:w-\[220px\]{width:220px}.polli\:w-\[320px\]{width:320px}.polli\:w-\[min\(24rem\,calc\(100vw-2rem\)\)\]{width:min(24rem,100vw - 2rem)}.polli\:w-full{width:100%}.polli\:w-max{width:max-content}.polli\:max-w-2xl{max-width:var(--polli-container-2xl)}.polli\:max-w-5xl{max-width:var(--polli-container-5xl)}.polli\:max-w-32{max-width:calc(var(--polli-spacing) * 32)}.polli\:max-w-full{max-width:100%}.polli\:max-w-md{max-width:var(--polli-container-md)}.polli\:max-w-sm{max-width:var(--polli-container-sm)}.polli\:max-w-xl{max-width:var(--polli-container-xl)}.polli\:min-w-0{min-width:calc(var(--polli-spacing) * 0)}.polli\:min-w-64{min-width:calc(var(--polli-spacing) * 64)}.polli\:min-w-\[140px\]{min-width:140px}.polli\:min-w-\[320px\]{min-width:320px}.polli\:flex-1{flex:1}.polli\:flex-shrink-0,.polli\:shrink-0{flex-shrink:0}.polli\:border-collapse{border-collapse:collapse}.polli\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:translate-x-1{--tw-translate-x:calc(var(--polli-spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:translate-x-6{--tw-translate-x:calc(var(--polli-spacing) * 6);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:translate-y-0{--tw-translate-y:calc(var(--polli-spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:rotate-180{rotate:180deg}.polli\:cursor-help{cursor:help}.polli\:cursor-not-allowed{cursor:not-allowed}.polli\:cursor-pointer{cursor:pointer}.polli\:resize-y{resize:vertical}.polli\:scroll-mt-10{scroll-margin-top:calc(var(--polli-spacing) * 10)}.polli\:list-decimal{list-style-type:decimal}.polli\:list-disc{list-style-type:disc}.polli\:list-none{list-style-type:none}.polli\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.polli\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.polli\:grid-cols-\[repeat\(auto-fill\,minmax\(5rem\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(5rem,1fr))}.polli\:flex-col{flex-direction:column}.polli\:flex-nowrap{flex-wrap:nowrap}.polli\:flex-wrap{flex-wrap:wrap}.polli\:items-center{align-items:center}.polli\:items-start{align-items:flex-start}.polli\:justify-between{justify-content:space-between}.polli\:justify-center{justify-content:center}.polli\:justify-end{justify-content:flex-end}.polli\:justify-start{justify-content:flex-start}.polli\:gap-1{gap:calc(var(--polli-spacing) * 1)}.polli\:gap-1\.5{gap:calc(var(--polli-spacing) * 1.5)}.polli\:gap-2{gap:calc(var(--polli-spacing) * 2)}.polli\:gap-3{gap:calc(var(--polli-spacing) * 3)}.polli\:gap-4{gap:calc(var(--polli-spacing) * 4)}.polli\:gap-5{gap:calc(var(--polli-spacing) * 5)}:where(.polli\:divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.polli\:divide-theme-border\/65>:not(:last-child)){border-color:var(--polli-color-border)}@supports (color:color-mix(in lab, red, red)){:where(.polli\:divide-theme-border\/65>:not(:last-child)){border-color:color-mix(in oklab, var(--polli-color-border) 65%, transparent)}}.polli\:self-center{align-self:center}.polli\:self-start{align-self:flex-start}.polli\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.polli\:overflow-hidden{overflow:hidden}.polli\:overflow-x-auto{overflow-x:auto}.polli\:overflow-x-hidden{overflow-x:hidden}.polli\:overflow-y-auto{overflow-y:auto}.polli\:overflow-y-hidden{overflow-y:hidden}.polli\:rounded{border-radius:.25rem}.polli\:rounded-2xl{border-radius:var(--polli-radius-2xl)}.polli\:rounded-full{border-radius:3.40282e38px}.polli\:rounded-lg{border-radius:var(--polli-radius-lg)}.polli\:rounded-md{border-radius:var(--polli-radius-md)}.polli\:rounded-sm{border-radius:var(--polli-radius-sm)}.polli\:rounded-xl{border-radius:var(--polli-radius-xl)}.polli\:rounded-t-lg{border-top-left-radius:var(--polli-radius-lg);border-top-right-radius:var(--polli-radius-lg)}.polli\:border{border-style:var(--tw-border-style);border-width:1px}.polli\:border-2{border-style:var(--tw-border-style);border-width:2px}.polli\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.polli\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.polli\:border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.polli\:border-dashed{--tw-border-style:dashed;border-style:dashed}.polli\:border-intent-danger-border{border-color:var(--polli-color-danger-border)}.polli\:border-theme-border{border-color:var(--polli-color-border)}.polli\:border-transparent{border-color:#0000}.polli\:bg-current{background-color:currentColor}.polli\:bg-ink-100\/80{background-color:var(--polli-color-ink-100)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-ink-100\/80{background-color:color-mix(in oklab, var(--polli-color-ink-100) 80%, transparent)}}.polli\:bg-ink-200{background-color:var(--polli-color-ink-200)}.polli\:bg-ink-950\/50{background-color:var(--polli-color-ink-950)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-ink-950\/50{background-color:color-mix(in oklab, var(--polli-color-ink-950) 50%, transparent)}}.polli\:bg-intent-alpha-bg-light{background-color:var(--polli-color-alpha-bg-light)}.polli\:bg-intent-danger-bg-light,.polli\:bg-intent-danger-bg-light\/65{background-color:var(--polli-color-danger-bg-light)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-intent-danger-bg-light\/65{background-color:color-mix(in oklab, var(--polli-color-danger-bg-light) 65%, transparent)}}.polli\:bg-intent-news-bg-light{background-color:var(--polli-color-news-bg-light)}.polli\:bg-intent-success-bg-light,.polli\:bg-intent-success-bg-light\/55{background-color:var(--polli-color-success-bg-light)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-intent-success-bg-light\/55{background-color:color-mix(in oklab, var(--polli-color-success-bg-light) 55%, transparent)}}.polli\:bg-intent-warning-bg-light,.polli\:bg-intent-warning-bg-light\/65{background-color:var(--polli-color-warning-bg-light)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-intent-warning-bg-light\/65{background-color:color-mix(in oklab, var(--polli-color-warning-bg-light) 65%, transparent)}}.polli\:bg-surface-opaque,.polli\:bg-surface-opaque\/80{background-color:var(--polli-color-surface-opaque)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-surface-opaque\/80{background-color:color-mix(in oklab, var(--polli-color-surface-opaque) 80%, transparent)}}.polli\:bg-surface-white{background-color:var(--polli-color-surface-translucent)}.polli\:bg-theme-bg-active{background-color:var(--polli-color-bg-active)}.polli\:bg-theme-bg-hover{background-color:var(--polli-color-bg-hover)}.polli\:bg-theme-bg-pale{background-color:var(--polli-color-bg-pale)}.polli\:bg-theme-bg-subtle{background-color:var(--polli-color-bg-subtle)}.polli\:bg-transparent{background-color:#0000}.polli\:p-0{padding:calc(var(--polli-spacing) * 0)}.polli\:p-1{padding:calc(var(--polli-spacing) * 1)}.polli\:p-2{padding:calc(var(--polli-spacing) * 2)}.polli\:p-3\.5{padding:calc(var(--polli-spacing) * 3.5)}.polli\:p-4{padding:calc(var(--polli-spacing) * 4)}.polli\:p-5{padding:calc(var(--polli-spacing) * 5)}.polli\:p-6{padding:calc(var(--polli-spacing) * 6)}.polli\:px-0{padding-inline:calc(var(--polli-spacing) * 0)}.polli\:px-1{padding-inline:calc(var(--polli-spacing) * 1)}.polli\:px-2{padding-inline:calc(var(--polli-spacing) * 2)}.polli\:px-2\.5{padding-inline:calc(var(--polli-spacing) * 2.5)}.polli\:px-3{padding-inline:calc(var(--polli-spacing) * 3)}.polli\:px-4{padding-inline:calc(var(--polli-spacing) * 4)}.polli\:px-5{padding-inline:calc(var(--polli-spacing) * 5)}.polli\:px-6{padding-inline:calc(var(--polli-spacing) * 6)}.polli\:px-8{padding-inline:calc(var(--polli-spacing) * 8)}.polli\:py-0{padding-block:calc(var(--polli-spacing) * 0)}.polli\:py-0\.5{padding-block:calc(var(--polli-spacing) * .5)}.polli\:py-1{padding-block:calc(var(--polli-spacing) * 1)}.polli\:py-1\.5{padding-block:calc(var(--polli-spacing) * 1.5)}.polli\:py-2{padding-block:calc(var(--polli-spacing) * 2)}.polli\:py-3{padding-block:calc(var(--polli-spacing) * 3)}.polli\:py-4{padding-block:calc(var(--polli-spacing) * 4)}.polli\:pt-0\.5{padding-top:calc(var(--polli-spacing) * .5)}.polli\:pt-1\.5{padding-top:calc(var(--polli-spacing) * 1.5)}.polli\:pt-2{padding-top:calc(var(--polli-spacing) * 2)}.polli\:pt-3{padding-top:calc(var(--polli-spacing) * 3)}.polli\:pt-6{padding-top:calc(var(--polli-spacing) * 6)}.polli\:pr-2{padding-right:calc(var(--polli-spacing) * 2)}.polli\:pr-3{padding-right:calc(var(--polli-spacing) * 3)}.polli\:pr-10{padding-right:calc(var(--polli-spacing) * 10)}.polli\:pb-1{padding-bottom:calc(var(--polli-spacing) * 1)}.polli\:pb-2{padding-bottom:calc(var(--polli-spacing) * 2)}.polli\:pb-2\.5{padding-bottom:calc(var(--polli-spacing) * 2.5)}.polli\:pb-3{padding-bottom:calc(var(--polli-spacing) * 3)}.polli\:pb-8{padding-bottom:calc(var(--polli-spacing) * 8)}.polli\:pl-1{padding-left:calc(var(--polli-spacing) * 1)}.polli\:pl-4{padding-left:calc(var(--polli-spacing) * 4)}.polli\:pl-5{padding-left:calc(var(--polli-spacing) * 5)}.polli\:pl-6{padding-left:calc(var(--polli-spacing) * 6)}.polli\:text-center{text-align:center}.polli\:text-left{text-align:left}.polli\:text-right{text-align:right}.polli\:align-middle{vertical-align:middle}.polli\:font-body{font-family:Uncut Sans,ui-sans-serif,sans-serif}.polli\:font-heading{font-family:LCT Mogi,ui-sans-serif,sans-serif}.polli\:font-mono{font-family:var(--polli-font-mono)}.polli\:font-pixel{font-family:Pixelify Sans,ui-monospace,monospace}.polli\:font-subheading{font-family:Fraunces,ui-serif,serif}.polli\:text-2xl{font-size:var(--polli-text-2xl);line-height:var(--tw-leading,var(--polli-text-2xl--line-height))}.polli\:text-4xl{font-size:var(--polli-text-4xl);line-height:var(--tw-leading,var(--polli-text-4xl--line-height))}.polli\:text-5xl{font-size:var(--polli-text-5xl);line-height:var(--tw-leading,var(--polli-text-5xl--line-height))}.polli\:text-base{font-size:16px;line-height:var(--tw-leading,var(--polli-text-base--line-height))}.polli\:text-lg{font-size:var(--polli-text-lg);line-height:var(--tw-leading,var(--polli-text-lg--line-height))}.polli\:text-sm{font-size:var(--polli-text-sm);line-height:var(--tw-leading,var(--polli-text-sm--line-height))}.polli\:text-xl{font-size:var(--polli-text-xl);line-height:var(--tw-leading,var(--polli-text-xl--line-height))}.polli\:text-xs{font-size:var(--polli-text-xs);line-height:var(--tw-leading,var(--polli-text-xs--line-height))}.polli\:text-micro{font-size:10px}.polli\:leading-6{--tw-leading:calc(var(--polli-spacing) * 6);line-height:calc(var(--polli-spacing) * 6)}.polli\:leading-none{--tw-leading:1;line-height:1}.polli\:leading-normal{--tw-leading:var(--polli-leading-normal);line-height:var(--polli-leading-normal)}.polli\:leading-relaxed{--tw-leading:var(--polli-leading-relaxed);line-height:var(--polli-leading-relaxed)}.polli\:leading-tight{--tw-leading:var(--polli-leading-tight);line-height:var(--polli-leading-tight)}.polli\:font-bold{--tw-font-weight:var(--polli-font-weight-bold);font-weight:var(--polli-font-weight-bold)}.polli\:font-medium{--tw-font-weight:var(--polli-font-weight-medium);font-weight:var(--polli-font-weight-medium)}.polli\:font-normal{--tw-font-weight:var(--polli-font-weight-normal);font-weight:var(--polli-font-weight-normal)}.polli\:font-semibold{--tw-font-weight:var(--polli-font-weight-semibold);font-weight:var(--polli-font-weight-semibold)}.polli\:tracking-tight{--tw-tracking:var(--polli-tracking-tight);letter-spacing:var(--polli-tracking-tight)}.polli\:tracking-wide{--tw-tracking:var(--polli-tracking-wide);letter-spacing:var(--polli-tracking-wide)}.polli\:break-words{overflow-wrap:break-word}.polli\:whitespace-nowrap{white-space:nowrap}.polli\:whitespace-pre-line{white-space:pre-line}.polli\:text-inherit{color:inherit}.polli\:text-ink-300{color:var(--polli-color-ink-300)}.polli\:text-ink-400{color:var(--polli-color-ink-400)}.polli\:text-ink-700{color:var(--polli-color-ink-700)}.polli\:text-ink-800{color:var(--polli-color-ink-800)}.polli\:text-ink-900{color:var(--polli-color-ink-900)}.polli\:text-ink-950{color:var(--polli-color-ink-950)}.polli\:text-intent-alpha-text{color:var(--polli-color-alpha-text)}.polli\:text-intent-danger-text{color:var(--polli-color-danger-text)}.polli\:text-intent-news-text{color:var(--polli-color-news-text)}.polli\:text-intent-success-text{color:var(--polli-color-success-text)}.polli\:text-intent-warning-text{color:var(--polli-color-warning-text)}.polli\:text-theme-text-base{color:var(--polli-color-text-base)}.polli\:text-theme-text-muted{color:var(--polli-color-text-muted)}.polli\:text-theme-text-soft,.polli\:text-theme-text-soft\/60{color:var(--polli-color-text-soft)}@supports (color:color-mix(in lab, red, red)){.polli\:text-theme-text-soft\/60{color:color-mix(in oklab, var(--polli-color-text-soft) 60%, transparent)}}.polli\:text-theme-text-strong{color:var(--polli-color-text-strong)}.polli\:uppercase{text-transform:uppercase}.polli\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.polli\:no-underline{text-decoration-line:none}.polli\:underline{text-decoration-line:underline}.polli\:decoration-theme-border{-webkit-text-decoration-color:var(--polli-color-border);-webkit-text-decoration-color:var(--polli-color-border);text-decoration-color:var(--polli-color-border)}.polli\:decoration-2{text-decoration-thickness:2px}.polli\:underline-offset-2{text-underline-offset:2px}.polli\:underline-offset-3{text-underline-offset:3px}.polli\:opacity-0{opacity:0}.polli\:opacity-30{opacity:.3}.polli\:opacity-50{opacity:.5}.polli\:opacity-60{opacity:.6}.polli\:opacity-65{opacity:.65}.polli\:opacity-100{opacity:1}.polli\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.polli\:shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.polli\:ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.polli\:ring-ink-950\/10{--tw-ring-color:var(--polli-color-ink-950)}@supports (color:color-mix(in lab, red, red)){.polli\:ring-ink-950\/10{--tw-ring-color:color-mix(in oklab, var(--polli-color-ink-950) 10%, transparent)}}.polli\:ring-theme-border{--tw-ring-color:var(--polli-color-border)}.polli\:backdrop-blur{--tw-backdrop-blur:blur(8px);-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,);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,)}.polli\:transition{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;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:duration-150{--tw-duration:.15s;transition-duration:.15s}.polli\:duration-200{--tw-duration:.2s;transition-duration:.2s}.polli\:ease-out{--tw-ease:var(--polli-ease-out);transition-timing-function:var(--polli-ease-out)}.polli\:will-change-transform{will-change:transform}.polli\:outline-none{--tw-outline-style:none;outline-style:none}.polli\:select-none{-webkit-user-select:none;user-select:none}.polli\:ring-inset{--tw-ring-inset:inset}@media (hover:hover){.polli\:group-hover\:-translate-y-0\.5:is(:where(.polli\:group):hover *){--tw-translate-y:calc(var(--polli-spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:group-hover\:bg-surface-opaque\/95:is(:where(.polli\:group):hover *){background-color:var(--polli-color-surface-opaque)}@supports (color:color-mix(in lab, red, red)){.polli\:group-hover\:bg-surface-opaque\/95:is(:where(.polli\:group):hover *){background-color:color-mix(in oklab, var(--polli-color-surface-opaque) 95%, transparent)}}.polli\:group-hover\:opacity-100:is(:where(.polli\:group):hover *){opacity:1}}.polli\:group-focus-visible\:ring-2:is(:where(.polli\:group):focus-visible *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.polli\:group-focus-visible\:ring-theme-border:is(:where(.polli\:group):focus-visible *){--tw-ring-color:var(--polli-color-border)}.polli\:marker\:text-theme-text-muted ::marker{color:var(--polli-color-text-muted)}.polli\:marker\:text-theme-text-muted::marker{color:var(--polli-color-text-muted)}.polli\:marker\:text-theme-text-muted ::-webkit-details-marker{color:var(--polli-color-text-muted)}.polli\:marker\:text-theme-text-muted::-webkit-details-marker{color:var(--polli-color-text-muted)}.polli\:last\:mb-0:last-child{margin-bottom:calc(var(--polli-spacing) * 0)}@media (hover:hover){.polli\:hover\:bg-intent-danger-bg-hover:hover{background-color:var(--polli-color-danger-bg-hover)}.polli\:hover\:bg-surface-opaque\/60:hover{background-color:var(--polli-color-surface-opaque)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:bg-surface-opaque\/60:hover{background-color:color-mix(in oklab, var(--polli-color-surface-opaque) 60%, transparent)}}.polli\:hover\:bg-theme-bg-active:hover{background-color:var(--polli-color-bg-active)}.polli\:hover\:bg-theme-bg-hover:hover{background-color:var(--polli-color-bg-hover)}.polli\:hover\:bg-theme-bg-pale:hover{background-color:var(--polli-color-bg-pale)}.polli\:hover\:bg-theme-bg-subtle:hover{background-color:var(--polli-color-bg-subtle)}.polli\:hover\:bg-transparent:hover{background-color:#0000}.polli\:hover\:text-ink-950:hover{color:var(--polli-color-ink-950)}.polli\:hover\:text-theme-text-soft:hover{color:var(--polli-color-text-soft)}.polli\:hover\:text-theme-text-strong:hover{color:var(--polli-color-text-strong)}.polli\:hover\:decoration-theme-text-soft:hover{-webkit-text-decoration-color:var(--polli-color-text-soft);-webkit-text-decoration-color:var(--polli-color-text-soft);text-decoration-color:var(--polli-color-text-soft)}.polli\:hover\:brightness-105:hover{--tw-brightness:brightness(105%);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,)}.polli\:hover\:filter:hover{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,)}}.polli\:focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.polli\:focus-visible\:bg-theme-bg-hover:focus-visible{background-color:var(--polli-color-bg-hover)}.polli\:focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.polli\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.polli\:disabled\:opacity-50:disabled{opacity:.5}.polli\:disabled\:opacity-60:disabled{opacity:.6}@media (min-width:40rem){.polli\:sm\:flex-row{flex-direction:row}.polli\:sm\:items-center{align-items:center}.polli\:sm\:justify-between{justify-content:space-between}.polli\:sm\:px-6{padding-inline:calc(var(--polli-spacing) * 6)}}}@font-face{font-family:LCT Mogi;src:url(./fonts/lct-mogi-a.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Fraunces;src:url(./fonts/fraunces-soft-bold.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Uncut Sans;src:url(./fonts/uncut-sans-variable.woff2)format("woff2-variations");font-weight:300 700;font-style:normal;font-display:swap}:root{--polli-font-heading:"LCT Mogi", ui-sans-serif, sans-serif;--polli-font-subheading:"Fraunces", ui-serif, serif;--polli-font-body:"Uncut Sans", ui-sans-serif, sans-serif;--polli-font-pixel:"Pixelify Sans", ui-monospace, monospace;--polli-text-micro:10px;--polli-text-base:16px;--polli-color-brand-dark:#110518;--polli-color-surface-opaque:oklch(100% 0 0);--polli-color-surface-translucent:oklch(100% 0 0/.8);--polli-color-surface-white:var(--polli-color-surface-translucent);--polli-color-ink-50:oklch(98.5% .002 247.839);--polli-color-ink-100:oklch(96.7% .003 264.542);--polli-color-ink-200:oklch(92.8% .006 264.531);--polli-color-ink-300:oklch(87.2% .01 258.338);--polli-color-ink-400:oklch(70.7% .022 261.325);--polli-color-ink-500:oklch(55.1% .027 264.364);--polli-color-ink-600:oklch(44.6% .03 256.802);--polli-color-ink-700:oklch(37.3% .034 259.733);--polli-color-ink-800:oklch(27.8% .033 256.848);--polli-color-ink-900:oklch(21% .034 264.665);--polli-color-ink-950:oklch(13% .028 261.692)}[data-theme=amber]{--polli-color-text-base:oklch(41.4% .112 45.904);--polli-color-text-strong:oklch(27.9% .077 45.635);--polli-color-text-soft:oklch(55.5% .163 48.998);--polli-color-text-muted:oklch(62% .045 45.904);--polli-color-border:oklch(87.9% .169 91.605);--polli-color-bg-subtle:oklch(98.7% .022 95.277/.7);--polli-color-bg-active:oklch(92.4% .12 95.746);--polli-color-bg-hover:oklch(87.9% .169 91.605);--polli-color-bg-pale:oklch(96.2% .059 95.617);--polli-color-scrollbar-thumb:oklch(82.8% .189 84.429/.7)}[data-theme=blue]{--polli-color-text-base:oklch(37.9% .146 265.522);--polli-color-text-strong:oklch(28.2% .091 267.935);--polli-color-text-soft:oklch(48.8% .243 264.376);--polli-color-text-muted:oklch(62% .058 265.522);--polli-color-border:oklch(80.9% .105 251.813);--polli-color-bg-subtle:oklch(97% .014 254.604/.7);--polli-color-bg-active:oklch(88.2% .059 254.128);--polli-color-bg-hover:oklch(80.9% .105 251.813);--polli-color-bg-pale:oklch(93.2% .032 255.585);--polli-color-scrollbar-thumb:oklch(70.7% .165 254.624/.7)}[data-theme=pink]{--polli-color-text-base:oklch(40.8% .153 2.432);--polli-color-text-strong:oklch(28.4% .109 3.907);--polli-color-text-soft:oklch(52.5% .223 3.958);--polli-color-text-muted:oklch(62% .061 2.432);--polli-color-border:oklch(82.3% .12 346.018);--polli-color-bg-subtle:oklch(97.1% .014 343.198/.7);--polli-color-bg-active:oklch(89.9% .061 343.231);--polli-color-bg-hover:oklch(82.3% .12 346.018);--polli-color-bg-pale:oklch(94.8% .028 342.258);--polli-color-scrollbar-thumb:oklch(71.8% .202 349.761/.7)}[data-theme=coral]{--polli-color-text-base:oklch(40.8% .123 38.172);--polli-color-text-strong:oklch(26.6% .079 36.259);--polli-color-text-soft:oklch(55.3% .195 38.402);--polli-color-text-muted:oklch(62% .049 38.172);--polli-color-border:oklch(83.7% .128 66.29);--polli-color-bg-subtle:oklch(98% .016 73.684/.7);--polli-color-bg-active:oklch(90.1% .076 70.697);--polli-color-bg-hover:oklch(83.7% .128 66.29);--polli-color-bg-pale:oklch(95.4% .038 75.164);--polli-color-scrollbar-thumb:oklch(75% .183 55.934/.7)}[data-theme=teal]{--polli-color-text-base:oklch(38.6% .063 188.416);--polli-color-text-strong:oklch(27.7% .046 192.524);--polli-color-text-soft:oklch(51.1% .096 186.391);--polli-color-text-muted:oklch(62% .025 188.416);--polli-color-border:oklch(85.5% .138 181.071);--polli-color-bg-subtle:oklch(98.4% .014 180.72/.7);--polli-color-bg-active:oklch(91% .096 180.426);--polli-color-bg-hover:oklch(85.5% .138 181.071);--polli-color-bg-pale:oklch(95.3% .051 180.801);--polli-color-scrollbar-thumb:oklch(70.4% .14 182.503/.7)}[data-theme=violet]{--polli-color-text-base:oklch(38% .189 293.745);--polli-color-text-strong:oklch(28.3% .141 291.089);--polli-color-text-soft:oklch(49.1% .27 292.581);--polli-color-text-muted:oklch(62% .076 293.745);--polli-color-border:oklch(81.1% .111 293.571);--polli-color-bg-subtle:oklch(96.9% .016 293.756/.7);--polli-color-bg-active:oklch(89.4% .057 293.283);--polli-color-bg-hover:oklch(81.1% .111 293.571);--polli-color-bg-pale:oklch(94.3% .029 294.588);--polli-color-scrollbar-thumb:oklch(70.2% .183 293.541/.7)}:root,[data-theme=emerald]{--polli-color-text-base:oklch(37.8% .077 168.94);--polli-color-text-strong:oklch(26.2% .051 172.552);--polli-color-text-soft:oklch(50.8% .118 165.612);--polli-color-text-muted:oklch(62% .031 168.94);--polli-color-border:oklch(84.5% .143 164.978);--polli-color-bg-subtle:oklch(97.9% .021 166.113/.7);--polli-color-bg-active:oklch(90.5% .093 164.15);--polli-color-bg-hover:oklch(84.5% .143 164.978);--polli-color-bg-pale:oklch(95% .052 163.051);--polli-color-scrollbar-thumb:oklch(76.5% .177 163.223/.7)}:root{--polli-color-danger-bg-light:oklch(93.5% .045 25);--polli-color-danger-bg-hover:oklch(88% .075 25);--polli-color-danger-text:oklch(48% .18 25);--polli-color-danger-border:oklch(78% .115 25);--polli-color-success-bg-light:oklch(94% .055 150);--polli-color-success-text:oklch(38% .12 150);--polli-color-warning-bg-light:oklch(94% .06 75);--polli-color-warning-text:oklch(45% .13 65);--polli-color-news-bg-light:oklch(93.5% .06 158);--polli-color-news-text:oklch(46% .13 158);--polli-color-alpha-bg-light:oklch(93% .06 300);--polli-color-alpha-text:oklch(42% .18 300);--polli-color-accent-amber-50:oklch(98.7% .022 95.277);--polli-color-accent-amber-100:oklch(96.2% .059 95.617);--polli-color-accent-amber-200:oklch(92.4% .12 95.746);--polli-color-accent-amber-300:oklch(87.9% .169 91.605);--polli-color-accent-amber-400:oklch(82.8% .189 84.429);--polli-color-accent-amber-500:oklch(76.9% .188 70.08);--polli-color-accent-amber-600:oklch(66.6% .179 58.318);--polli-color-accent-amber-700:oklch(55.5% .163 48.998);--polli-color-accent-amber-800:oklch(47.3% .137 46.201);--polli-color-accent-amber-900:oklch(41.4% .112 45.904);--polli-color-accent-amber-950:oklch(27.9% .077 45.635);--polli-color-accent-blue-50:oklch(97% .014 254.604);--polli-color-accent-blue-100:oklch(93.2% .032 255.585);--polli-color-accent-blue-200:oklch(88.2% .059 254.128);--polli-color-accent-blue-300:oklch(80.9% .105 251.813);--polli-color-accent-blue-400:oklch(70.7% .165 254.624);--polli-color-accent-blue-500:oklch(62.3% .214 259.815);--polli-color-accent-blue-600:oklch(54.6% .245 262.881);--polli-color-accent-blue-700:oklch(48.8% .243 264.376);--polli-color-accent-blue-800:oklch(42.4% .199 265.638);--polli-color-accent-blue-900:oklch(37.9% .146 265.522);--polli-color-accent-blue-950:oklch(28.2% .091 267.935);--polli-color-accent-emerald-100:oklch(95% .052 163.051);--polli-color-accent-emerald-600:oklch(59.6% .145 163.225);--polli-color-accent-teal-100:oklch(95.3% .051 180.801);--polli-color-accent-teal-200:oklch(91% .096 180.426);--polli-color-accent-teal-700:oklch(51.1% .096 186.391);--polli-color-accent-violet-100:oklch(94.3% .029 294.588);--polli-color-accent-violet-300:oklch(81.1% .111 293.571);--polli-color-accent-violet-400:oklch(70.2% .183 293.541);--polli-color-accent-violet-600:oklch(54.1% .281 293.009);--polli-color-accent-violet-700:oklch(49.1% .27 292.581);--polli-color-accent-violet-800:oklch(43.2% .232 292.759);--polli-color-accent-violet-950:oklch(28.3% .141 291.089);--polli-color-accent-purple-600:oklch(55.8% .288 302.321);--polli-color-accent-purple-700:oklch(49.6% .265 301.924);--polli-color-accent-purple-800:oklch(43.8% .218 303.724);--polli-color-accent-pink-500:oklch(65.6% .241 354.308);--polli-color-paid-pale:oklch(93% .09 95.746);--polli-color-paid-soft:oklch(85% .16 95.746);--polli-color-paid-deep:#78350f;--polli-color-tier-pale:oklch(93% .06 55);--polli-color-tier-soft:oklch(83% .13 55);--polli-color-tier-deep:#7c3f1e}.polli-wallet-chip-paid{background-color:var(--polli-color-paid-pale);color:var(--polli-color-paid-deep)}.polli-wallet-chip-tier{background-color:var(--polli-color-tier-pale);color:var(--polli-color-tier-deep)}.polli-wallet-panel-paid{background-color:var(--polli-color-paid-pale)}@supports (color:color-mix(in lab, red, red)){.polli-wallet-panel-paid{background-color:color-mix(in oklab, var(--polli-color-paid-pale) 60%, transparent)}}.polli-wallet-panel-paid{color:var(--polli-color-paid-deep)}.polli-wallet-panel-tier{background-color:var(--polli-color-tier-pale)}@supports (color:color-mix(in lab, red, red)){.polli-wallet-panel-tier{background-color:color-mix(in oklab, var(--polli-color-tier-pale) 60%, transparent)}}.polli-wallet-panel-tier{color:var(--polli-color-tier-deep)}.polli-wallet-dot-paid{background-color:var(--polli-color-paid-soft)}.polli-wallet-dot-tier{background-color:var(--polli-color-tier-soft)}.polli-wallet-text-paid{color:var(--polli-color-paid-deep)}.polli-wallet-text-tier{color:var(--polli-color-tier-deep)}.polli-wallet-balance-value{font-size:2.25rem}@media (min-width:640px){.polli-wallet-balance-value{font-size:3rem}}.polli-scrollbar-subtle{scrollbar-width:thin;scrollbar-color:transparent transparent}.polli-scrollbar-subtle::-webkit-scrollbar{width:12px;height:12px}.polli-scrollbar-subtle::-webkit-scrollbar-track{background:0 0}.polli-scrollbar-subtle::-webkit-scrollbar-thumb{background-color:#0000;background-clip:content-box;border:3px solid #0000;border-radius:9999px;transition:background-color .16s}.polli-scrollbar-subtle[data-scrollbar-active=true]{scrollbar-color:var(--polli-color-scrollbar-thumb) transparent}.polli-scrollbar-subtle[data-scrollbar-active=true]::-webkit-scrollbar-thumb{background-color:var(--polli-color-scrollbar-thumb)}.polli-input-number-clean::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.polli-input-number-clean::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.polli-input-number-clean{-moz-appearance:textfield}.polli-input,.polli-textarea{border-color:var(--polli-color-border);box-shadow:none;outline:none}.polli-input:focus,.polli-input:focus-visible,.polli-textarea:focus,.polli-textarea:focus-visible{border-color:var(--polli-color-border);box-shadow:0 0 0 1px var(--polli-color-border);outline:none}.polli-input[data-error=true],.polli-textarea[data-error=true]{border-color:var(--polli-color-danger-border)}.polli-input[data-error=true]:focus,.polli-input[data-error=true]:focus-visible,.polli-textarea[data-error=true]:focus,.polli-textarea[data-error=true]:focus-visible{border-color:var(--polli-color-danger-border);box-shadow:0 0 0 1px var(--polli-color-danger-border)}.polli-textarea,.polli-textarea:focus{--polli-textarea-resizer-color:var(--polli-color-border);scrollbar-color:var(--polli-color-border) transparent}.polli-textarea::-webkit-resizer{background:linear-gradient(135deg, transparent 0 52%, var(--polli-textarea-resizer-color) 52% 58%, transparent 58% 100%), linear-gradient(135deg, transparent 0 66%, var(--polli-textarea-resizer-color) 66% 72%, transparent 72% 100%), linear-gradient(135deg, transparent 0 80%, var(--polli-textarea-resizer-color) 80% 86%, transparent 86% 100%)}.polli-control{outline:none}.polli-control:focus-visible{box-shadow:0 0 0 2px var(--polli-color-border);outline:none}.polli-control[data-intent=danger]:focus-visible{box-shadow:0 0 0 2px var(--polli-color-danger-border)}.polli-slider{--polli-slider-thumb-shadow-fallback:var(--polli-color-text-strong)}@supports (color:color-mix(in lab, red, red)){.polli-slider{--polli-slider-thumb-shadow-fallback:color-mix(in oklab, var(--polli-color-text-strong) 35%, transparent)}}.polli-slider{--polli-slider-progress-value:var(--polli-slider-progress,0%);--polli-slider-fill-value:var(--polli-slider-fill,var(--polli-color-bg-active));--polli-slider-track-value:var(--polli-slider-track,var(--polli-color-bg-pale));--polli-slider-thumb-border-value:var(--polli-slider-thumb-border,var(--polli-color-text-strong));--polli-slider-thumb-shadow-value:var(--polli-slider-thumb-shadow,var(--polli-slider-thumb-shadow-fallback));cursor:grab;appearance:none;background:linear-gradient(to right, var(--polli-slider-fill-value) 0%, var(--polli-slider-fill-value) var(--polli-slider-progress-value), var(--polli-slider-track-value) var(--polli-slider-progress-value), var(--polli-slider-track-value) 100%);border-radius:9999px;outline:none;width:100%;height:.5rem;transition:opacity .15s,filter .15s}.polli-slider:active{cursor:grabbing}.polli-slider:disabled{cursor:not-allowed;opacity:.6}.polli-slider:focus-visible{box-shadow:0 0 0 2px var(--polli-slider-fill-value), 0 0 0 4px var(--polli-color-surface-white)}.polli-slider::-webkit-slider-runnable-track{background:0 0;border-radius:9999px;height:.5rem}.polli-slider::-moz-range-track{background:0 0;border-radius:9999px;height:.5rem}.polli-slider::-webkit-slider-thumb{appearance:none;border:3px solid var(--polli-slider-thumb-border-value);width:22px;height:22px;box-shadow:0 2px 6px var(--polli-slider-thumb-shadow-value);background:#fff;border-radius:9999px;margin-top:-7px;transition:transform .15s}.polli-slider::-moz-range-thumb{border:3px solid var(--polli-slider-thumb-border-value);width:22px;height:22px;box-shadow:0 2px 6px var(--polli-slider-thumb-shadow-value);background:#fff;border-radius:9999px;transition:transform .15s}.polli-slider:hover::-webkit-slider-thumb{transform:scale(1.1)}.polli-slider:active::-webkit-slider-thumb{transform:scale(1.05)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--polli-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--polli-spacing:.25rem;--polli-container-sm:24rem;--polli-container-md:28rem;--polli-container-lg:32rem;--polli-container-xl:36rem;--polli-container-2xl:42rem;--polli-container-5xl:64rem;--polli-container-6xl:72rem;--polli-text-xs:.75rem;--polli-text-xs--line-height:calc(1 / .75);--polli-text-sm:.875rem;--polli-text-sm--line-height:calc(1.25 / .875);--polli-text-base:var(--polli-text-base);--polli-text-base--line-height:calc(1.5 / 1);--polli-text-lg:1.125rem;--polli-text-lg--line-height:calc(1.75 / 1.125);--polli-text-xl:1.25rem;--polli-text-xl--line-height:calc(1.75 / 1.25);--polli-text-2xl:1.5rem;--polli-text-2xl--line-height:calc(2 / 1.5);--polli-text-3xl:1.875rem;--polli-text-3xl--line-height:calc(2.25 / 1.875);--polli-text-4xl:2.25rem;--polli-text-4xl--line-height:calc(2.5 / 2.25);--polli-text-5xl:3rem;--polli-text-5xl--line-height:1;--polli-text-7xl:4.5rem;--polli-text-7xl--line-height:1;--polli-font-weight-normal:400;--polli-font-weight-medium:500;--polli-font-weight-semibold:600;--polli-font-weight-bold:700;--polli-tracking-tight:-.025em;--polli-tracking-normal:0em;--polli-tracking-wide:.025em;--polli-tracking-wider:.05em;--polli-tracking-widest:.1em;--polli-leading-tight:1.25;--polli-leading-snug:1.375;--polli-leading-normal:1.5;--polli-leading-relaxed:1.625;--polli-radius-sm:.25rem;--polli-radius-md:.375rem;--polli-radius-lg:.5rem;--polli-radius-xl:.75rem;--polli-radius-3xl:1.5rem;--polli-ease-out:cubic-bezier(0, 0, .2, 1);--polli-animate-spin:spin 1s linear infinite;--polli-animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--polli-animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--polli-blur-sm:8px;--polli-aspect-video:16 / 9;--polli-default-transition-duration:.15s;--polli-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--polli-font-heading:var(--polli-font-heading);--polli-font-subheading:var(--polli-font-subheading);--polli-font-body:var(--polli-font-body);--polli-font-pixel:var(--polli-font-pixel);--polli-text-micro:var(--polli-text-micro);--polli-radius-block:var(--polli-radius-block);--polli-radius-card:var(--polli-radius-card);--polli-color-brand-dark:var(--polli-color-brand-dark);--polli-color-brand-accent:var(--polli-color-brand-accent);--polli-color-social-discord:var(--polli-color-social-discord);--polli-color-social-discord-text:var(--polli-color-social-discord-text);--polli-color-social-github:var(--polli-color-social-github);--polli-color-social-github-hover:var(--polli-color-social-github-hover);--polli-color-social-github-text:var(--polli-color-social-github-text);--polli-color-social-github-border:var(--polli-color-social-github-border);--polli-color-app-bg:var(--polli-color-app-bg);--polli-color-divider:var(--polli-color-divider);--polli-color-ink-50:var(--polli-color-ink-50);--polli-color-ink-100:var(--polli-color-ink-100);--polli-color-ink-200:var(--polli-color-ink-200);--polli-color-ink-300:var(--polli-color-ink-300);--polli-color-ink-400:var(--polli-color-ink-400);--polli-color-ink-500:var(--polli-color-ink-500);--polli-color-ink-600:var(--polli-color-ink-600);--polli-color-ink-700:var(--polli-color-ink-700);--polli-color-ink-800:var(--polli-color-ink-800);--polli-color-ink-900:var(--polli-color-ink-900);--polli-color-ink-950:var(--polli-color-ink-950);--polli-color-paid-pale:var(--polli-color-paid-pale);--polli-color-paid-soft:var(--polli-color-paid-soft);--polli-color-paid-deep:var(--polli-color-paid-deep);--polli-color-tier-pale:var(--polli-color-tier-pale);--polli-color-tier-soft:var(--polli-color-tier-soft);--polli-color-tier-deep:var(--polli-color-tier-deep);--polli-color-outcome-positive-text:var(--polli-color-outcome-positive-text);--polli-color-outcome-negative-text:var(--polli-color-outcome-negative-text);--polli-color-surface-block:var(--polli-color-surface-block);--polli-color-surface-opaque:var(--polli-color-surface-opaque);--polli-color-surface-menu:var(--polli-color-surface-menu);--polli-color-surface-translucent:var(--polli-color-surface-translucent);--polli-color-surface-white:var(--polli-color-surface-translucent)}}@layer base;@layer components{@media (pointer:coarse){.polli-control{position:relative}.polli-control:after{content:"";width:max(100%,44px);height:max(100%,44px);position:absolute;top:50%;left:50%;translate:-50% -50%}}}@layer utilities{.polli\:\@container{container-type:inline-size}.polli\:pointer-events-auto{pointer-events:auto}.polli\:pointer-events-none{pointer-events:none}.polli\:invisible{visibility:hidden}.polli\:visible{visibility:visible}.polli\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.polli\:absolute{position:absolute}.polli\:fixed{position:fixed}.polli\:relative{position:relative}.polli\:sticky{position:sticky}.polli\:inset-0{inset:calc(var(--polli-spacing) * 0)}.polli\:-top-2{top:calc(var(--polli-spacing) * -2)}.polli\:top-0{top:calc(var(--polli-spacing) * 0)}.polli\:top-1\/2{top:50%}.polli\:top-4{top:calc(var(--polli-spacing) * 4)}.polli\:right-0{right:calc(var(--polli-spacing) * 0)}.polli\:right-1{right:calc(var(--polli-spacing) * 1)}.polli\:right-2{right:calc(var(--polli-spacing) * 2)}.polli\:right-4{right:calc(var(--polli-spacing) * 4)}.polli\:right-\[9px\]{right:9px}.polli\:right-\[13px\]{right:13px}.polli\:bottom-0{bottom:calc(var(--polli-spacing) * 0)}.polli\:bottom-3{bottom:calc(var(--polli-spacing) * 3)}.polli\:left-1\/2{left:50%}.polli\:left-2{left:calc(var(--polli-spacing) * 2)}.polli\:left-\[3px\]{left:3px}.polli\:left-\[9px\]{left:9px}.polli\:left-\[13px\]{left:13px}.polli\:z-10{z-index:10}.polli\:z-30{z-index:30}.polli\:z-\[100\]{z-index:100}.polli\:z-\[110\]{z-index:110}.polli\:z-\[120\]{z-index:120}.polli\:z-\[130\]{z-index:130}.polli\:z-\[calc\(100_\+_var\(--layer-index\,0\)_\*_20\)\]{z-index:calc(100 + var(--layer-index,0) * 20)}.polli\:z-\[calc\(110_\+_var\(--layer-index\,0\)_\*_20\)\]{z-index:calc(110 + var(--layer-index,0) * 20)}.polli\:col-start-1{grid-column-start:1}.polli\:row-start-1{grid-row-start:1}.polli\:m-0{margin:calc(var(--polli-spacing) * 0)}.polli\:mx-auto{margin-inline:auto}.polli\:my-3{margin-block:calc(var(--polli-spacing) * 3)}.polli\:my-4{margin-block:calc(var(--polli-spacing) * 4)}.polli\:my-6{margin-block:calc(var(--polli-spacing) * 6)}.polli\:my-auto{margin-block:auto}.polli\:mt-0{margin-top:calc(var(--polli-spacing) * 0)}.polli\:mt-0\.5{margin-top:calc(var(--polli-spacing) * .5)}.polli\:mt-1{margin-top:calc(var(--polli-spacing) * 1)}.polli\:mt-1\.5{margin-top:calc(var(--polli-spacing) * 1.5)}.polli\:mt-2{margin-top:calc(var(--polli-spacing) * 2)}.polli\:mt-6{margin-top:calc(var(--polli-spacing) * 6)}.polli\:mt-8{margin-top:calc(var(--polli-spacing) * 8)}.polli\:mr-1\.5{margin-right:calc(var(--polli-spacing) * 1.5)}.polli\:mr-2{margin-right:calc(var(--polli-spacing) * 2)}.polli\:mr-auto{margin-right:auto}.polli\:mb-1{margin-bottom:calc(var(--polli-spacing) * 1)}.polli\:mb-2{margin-bottom:calc(var(--polli-spacing) * 2)}.polli\:mb-3{margin-bottom:calc(var(--polli-spacing) * 3)}.polli\:mb-5{margin-bottom:calc(var(--polli-spacing) * 5)}.polli\:-ml-0\.5{margin-left:calc(var(--polli-spacing) * -.5)}.polli\:ml-1{margin-left:calc(var(--polli-spacing) * 1)}.polli\:ml-auto{margin-left:auto}.polli\:box-border{box-sizing:border-box}.polli\:block{display:block}.polli\:contents{display:contents}.polli\:flex{display:flex}.polli\:grid{display:grid}.polli\:inline-block{display:inline-block}.polli\:inline-flex{display:inline-flex}.polli\:inline-grid{display:inline-grid}.polli\:aspect-square{aspect-ratio:1}.polli\:aspect-video{aspect-ratio:var(--polli-aspect-video)}.polli\:size-2{width:calc(var(--polli-spacing) * 2);height:calc(var(--polli-spacing) * 2)}.polli\:size-3{width:calc(var(--polli-spacing) * 3);height:calc(var(--polli-spacing) * 3)}.polli\:size-3\.5{width:calc(var(--polli-spacing) * 3.5);height:calc(var(--polli-spacing) * 3.5)}.polli\:size-4{width:calc(var(--polli-spacing) * 4);height:calc(var(--polli-spacing) * 4)}.polli\:size-6{width:calc(var(--polli-spacing) * 6);height:calc(var(--polli-spacing) * 6)}.polli\:size-7{width:calc(var(--polli-spacing) * 7);height:calc(var(--polli-spacing) * 7)}.polli\:size-9{width:calc(var(--polli-spacing) * 9);height:calc(var(--polli-spacing) * 9)}.polli\:size-11{width:calc(var(--polli-spacing) * 11);height:calc(var(--polli-spacing) * 11)}.polli\:size-full{width:100%;height:100%}.polli\:h-3{height:calc(var(--polli-spacing) * 3)}.polli\:h-3\.5{height:calc(var(--polli-spacing) * 3.5)}.polli\:h-4{height:calc(var(--polli-spacing) * 4)}.polli\:h-5{height:calc(var(--polli-spacing) * 5)}.polli\:h-6{height:calc(var(--polli-spacing) * 6)}.polli\:h-7{height:calc(var(--polli-spacing) * 7)}.polli\:h-8{height:calc(var(--polli-spacing) * 8)}.polli\:h-9{height:calc(var(--polli-spacing) * 9)}.polli\:h-10{height:calc(var(--polli-spacing) * 10)}.polli\:h-11{height:calc(var(--polli-spacing) * 11)}.polli\:h-12{height:calc(var(--polli-spacing) * 12)}.polli\:h-14{height:calc(var(--polli-spacing) * 14)}.polli\:h-20{height:calc(var(--polli-spacing) * 20)}.polli\:h-auto{height:auto}.polli\:h-dvh{height:100dvh}.polli\:h-full{height:100%}.polli\:max-h-64{max-height:calc(var(--polli-spacing) * 64)}.polli\:max-h-72{max-height:calc(var(--polli-spacing) * 72)}.polli\:max-h-80{max-height:calc(var(--polli-spacing) * 80)}.polli\:max-h-dvh{max-height:100dvh}.polli\:max-h-full{max-height:100%}.polli\:min-h-0{min-height:calc(var(--polli-spacing) * 0)}.polli\:min-h-5{min-height:calc(var(--polli-spacing) * 5)}.polli\:min-h-7{min-height:calc(var(--polli-spacing) * 7)}.polli\:min-h-8{min-height:calc(var(--polli-spacing) * 8)}.polli\:min-h-9{min-height:calc(var(--polli-spacing) * 9)}.polli\:min-h-10{min-height:calc(var(--polli-spacing) * 10)}.polli\:min-h-12{min-height:calc(var(--polli-spacing) * 12)}.polli\:min-h-20{min-height:calc(var(--polli-spacing) * 20)}.polli\:min-h-40{min-height:calc(var(--polli-spacing) * 40)}.polli\:w-3{width:calc(var(--polli-spacing) * 3)}.polli\:w-3\.5{width:calc(var(--polli-spacing) * 3.5)}.polli\:w-4{width:calc(var(--polli-spacing) * 4)}.polli\:w-5{width:calc(var(--polli-spacing) * 5)}.polli\:w-6{width:calc(var(--polli-spacing) * 6)}.polli\:w-7{width:calc(var(--polli-spacing) * 7)}.polli\:w-8{width:calc(var(--polli-spacing) * 8)}.polli\:w-9{width:calc(var(--polli-spacing) * 9)}.polli\:w-10{width:calc(var(--polli-spacing) * 10)}.polli\:w-11{width:calc(var(--polli-spacing) * 11)}.polli\:w-12{width:calc(var(--polli-spacing) * 12)}.polli\:w-14{width:calc(var(--polli-spacing) * 14)}.polli\:w-16{width:calc(var(--polli-spacing) * 16)}.polli\:w-20{width:calc(var(--polli-spacing) * 20)}.polli\:w-\[52px\]{width:52px}.polli\:w-\[88px\]{width:88px}.polli\:w-\[220px\]{width:220px}.polli\:w-\[320px\]{width:320px}.polli\:w-\[min\(20rem\,86vw\)\]{width:min(20rem,86vw)}.polli\:w-\[min\(20rem\,calc\(100vw-2rem\)\)\]{width:min(20rem,100vw - 2rem)}.polli\:w-\[min\(24rem\,calc\(100vw-2rem\)\)\]{width:min(24rem,100vw - 2rem)}.polli\:w-fit{width:fit-content}.polli\:w-full{width:100%}.polli\:w-max{width:max-content}.polli\:max-w-2xl{max-width:var(--polli-container-2xl)}.polli\:max-w-5xl{max-width:var(--polli-container-5xl)}.polli\:max-w-6xl{max-width:var(--polli-container-6xl)}.polli\:max-w-80{max-width:calc(var(--polli-spacing) * 80)}.polli\:max-w-\[800px\]{max-width:800px}.polli\:max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.polli\:max-w-full{max-width:100%}.polli\:max-w-lg{max-width:var(--polli-container-lg)}.polli\:max-w-md{max-width:var(--polli-container-md)}.polli\:max-w-sm{max-width:var(--polli-container-sm)}.polli\:max-w-xl{max-width:var(--polli-container-xl)}.polli\:min-w-0{min-width:calc(var(--polli-spacing) * 0)}.polli\:min-w-28{min-width:calc(var(--polli-spacing) * 28)}.polli\:min-w-64{min-width:calc(var(--polli-spacing) * 64)}.polli\:min-w-\[140px\]{min-width:140px}.polli\:min-w-\[var\(--reference-width\)\]{min-width:var(--reference-width)}.polli\:flex-1{flex:1}.polli\:flex-shrink-0,.polli\:shrink-0{flex-shrink:0}.polli\:basis-full{flex-basis:100%}.polli\:border-collapse{border-collapse:collapse}.polli\:-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:translate-x-0{--tw-translate-x:calc(var(--polli-spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:translate-x-6{--tw-translate-x:calc(var(--polli-spacing) * 6);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:translate-x-7{--tw-translate-x:calc(var(--polli-spacing) * 7);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:translate-x-10{--tw-translate-x:calc(var(--polli-spacing) * 10);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:translate-y-0{--tw-translate-y:calc(var(--polli-spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:rotate-90{rotate:90deg}.polli\:rotate-180{rotate:180deg}.polli\:animate-ping{animation:var(--polli-animate-ping)}.polli\:animate-pulse{animation:var(--polli-animate-pulse)}.polli\:animate-spin{animation:var(--polli-animate-spin)}.polli\:cursor-default{cursor:default}.polli\:cursor-help{cursor:help}.polli\:cursor-not-allowed{cursor:not-allowed}.polli\:cursor-pointer{cursor:pointer}.polli\:cursor-progress{cursor:progress}.polli\:resize-none{resize:none}.polli\:resize-y{resize:vertical}.polli\:scroll-mt-10{scroll-margin-top:calc(var(--polli-spacing) * 10)}.polli\:list-decimal{list-style-type:decimal}.polli\:list-disc{list-style-type:disc}.polli\:list-none{list-style-type:none}.polli\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.polli\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.polli\:grid-cols-\[6\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:6.5rem minmax(0,1fr)}.polli\:flex-col{flex-direction:column}.polli\:flex-row{flex-direction:row}.polli\:flex-wrap{flex-wrap:wrap}.polli\:items-center{align-items:center}.polli\:items-end{align-items:flex-end}.polli\:items-start{align-items:flex-start}.polli\:justify-between{justify-content:space-between}.polli\:justify-center{justify-content:center}.polli\:justify-end{justify-content:flex-end}.polli\:justify-start{justify-content:flex-start}.polli\:justify-items-center{justify-items:center}.polli\:justify-items-start{justify-items:start}.polli\:gap-0{gap:calc(var(--polli-spacing) * 0)}.polli\:gap-0\.5{gap:calc(var(--polli-spacing) * .5)}.polli\:gap-1{gap:calc(var(--polli-spacing) * 1)}.polli\:gap-1\.5{gap:calc(var(--polli-spacing) * 1.5)}.polli\:gap-2{gap:calc(var(--polli-spacing) * 2)}.polli\:gap-2\.5{gap:calc(var(--polli-spacing) * 2.5)}.polli\:gap-3{gap:calc(var(--polli-spacing) * 3)}.polli\:gap-4{gap:calc(var(--polli-spacing) * 4)}.polli\:gap-5{gap:calc(var(--polli-spacing) * 5)}.polli\:gap-6{gap:calc(var(--polli-spacing) * 6)}.polli\:gap-8{gap:calc(var(--polli-spacing) * 8)}:where(.polli\:space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--polli-spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--polli-spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.polli\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--polli-spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--polli-spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.polli\:gap-x-4{column-gap:calc(var(--polli-spacing) * 4)}.polli\:gap-y-2{row-gap:calc(var(--polli-spacing) * 2)}:where(.polli\:divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.polli\:divide-divider>:not(:last-child)){border-color:var(--polli-color-divider)}:where(.polli\:divide-theme-border\/65>:not(:last-child)){border-color:var(--polli-color-border)}@supports (color:color-mix(in lab, red, red)){:where(.polli\:divide-theme-border\/65>:not(:last-child)){border-color:color-mix(in oklab, var(--polli-color-border) 65%, transparent)}}.polli\:self-center{align-self:center}.polli\:self-start{align-self:flex-start}.polli\:self-stretch{align-self:stretch}.polli\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.polli\:overflow-auto{overflow:auto}.polli\:overflow-hidden{overflow:hidden}.polli\:overflow-x-auto{overflow-x:auto}.polli\:overflow-x-hidden{overflow-x:hidden}.polli\:overflow-y-auto{overflow-y:auto}.polli\:overflow-y-hidden{overflow-y:hidden}.polli\:overscroll-contain{overscroll-behavior:contain}.polli\:rounded{border-radius:.25rem}.polli\:rounded-3xl{border-radius:var(--polli-radius-3xl)}.polli\:rounded-block{border-radius:var(--polli-radius-block)}.polli\:rounded-card{border-radius:var(--polli-radius-card)}.polli\:rounded-full{border-radius:3.40282e38px}.polli\:rounded-lg{border-radius:var(--polli-radius-lg)}.polli\:rounded-md{border-radius:var(--polli-radius-md)}.polli\:rounded-sm{border-radius:var(--polli-radius-sm)}.polli\:rounded-xl{border-radius:var(--polli-radius-xl)}.polli\:rounded-t-lg{border-top-left-radius:var(--polli-radius-lg);border-top-right-radius:var(--polli-radius-lg)}.polli\:rounded-r-lg{border-top-right-radius:var(--polli-radius-lg);border-bottom-right-radius:var(--polli-radius-lg)}.polli\:border{border-style:var(--tw-border-style);border-width:1px}.polli\:border-0{border-style:var(--tw-border-style);border-width:0}.polli\:border-2{border-style:var(--tw-border-style);border-width:2px}.polli\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.polli\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.polli\:border-r-\[3px\]{border-right-style:var(--tw-border-style);border-right-width:3px}.polli\:border-b-\[3px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:3px}.polli\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.polli\:border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.polli\:border-dashed{--tw-border-style:dashed;border-style:dashed}.polli\:border-solid{--tw-border-style:solid;border-style:solid}.polli\:border-brand-dark\/20{border-color:var(--polli-color-brand-dark)}@supports (color:color-mix(in lab, red, red)){.polli\:border-brand-dark\/20{border-color:color-mix(in oklab, var(--polli-color-brand-dark) 20%, transparent)}}.polli\:border-current{border-color:currentColor}.polli\:border-divider{border-color:var(--polli-color-divider)}.polli\:border-intent-danger-border\/30{border-color:var(--polli-color-danger-border)}@supports (color:color-mix(in lab, red, red)){.polli\:border-intent-danger-border\/30{border-color:color-mix(in oklab, var(--polli-color-danger-border) 30%, transparent)}}.polli\:border-intent-danger-text{border-color:var(--polli-color-danger-text)}.polli\:border-social-github-border{border-color:var(--polli-color-social-github-border)}.polli\:border-theme-border,.polli\:border-theme-border\/20{border-color:var(--polli-color-border)}@supports (color:color-mix(in lab, red, red)){.polli\:border-theme-border\/20{border-color:color-mix(in oklab, var(--polli-color-border) 20%, transparent)}}.polli\:border-theme-border\/30{border-color:var(--polli-color-border)}@supports (color:color-mix(in lab, red, red)){.polli\:border-theme-border\/30{border-color:color-mix(in oklab, var(--polli-color-border) 30%, transparent)}}.polli\:border-theme-border\/35{border-color:var(--polli-color-border)}@supports (color:color-mix(in lab, red, red)){.polli\:border-theme-border\/35{border-color:color-mix(in oklab, var(--polli-color-border) 35%, transparent)}}.polli\:border-theme-border\/60{border-color:var(--polli-color-border)}@supports (color:color-mix(in lab, red, red)){.polli\:border-theme-border\/60{border-color:color-mix(in oklab, var(--polli-color-border) 60%, transparent)}}.polli\:border-theme-text-muted\/50{border-color:var(--polli-color-text-muted)}@supports (color:color-mix(in lab, red, red)){.polli\:border-theme-text-muted\/50{border-color:color-mix(in oklab, var(--polli-color-text-muted) 50%, transparent)}}.polli\:border-theme-text-soft{border-color:var(--polli-color-text-soft)}.polli\:border-theme-text-strong\/10{border-color:var(--polli-color-text-strong)}@supports (color:color-mix(in lab, red, red)){.polli\:border-theme-text-strong\/10{border-color:color-mix(in oklab, var(--polli-color-text-strong) 10%, transparent)}}.polli\:border-theme-text-strong\/15{border-color:var(--polli-color-text-strong)}@supports (color:color-mix(in lab, red, red)){.polli\:border-theme-text-strong\/15{border-color:color-mix(in oklab, var(--polli-color-text-strong) 15%, transparent)}}.polli\:border-theme-text-strong\/20{border-color:var(--polli-color-text-strong)}@supports (color:color-mix(in lab, red, red)){.polli\:border-theme-text-strong\/20{border-color:color-mix(in oklab, var(--polli-color-text-strong) 20%, transparent)}}.polli\:border-tier-soft{border-color:var(--polli-color-tier-soft)}.polli\:border-transparent{border-color:#0000}.polli\:border-r-transparent{border-right-color:#0000}.polli\:bg-\(--polli-card-tint\){background-color:var(--polli-card-tint)}.polli\:bg-\(--polli-placeholder-tint\){background-color:var(--polli-placeholder-tint)}.polli\:bg-\[\#000\]\/40{background-color:oklab(0% none none/.4)}.polli\:bg-\[\#000\]\/50{background-color:oklab(0% none none/.5)}.polli\:bg-app-bg{background-color:var(--polli-color-app-bg)}.polli\:bg-brand-accent{background-color:var(--polli-color-brand-accent)}.polli\:bg-brand-dark{background-color:var(--polli-color-brand-dark)}.polli\:bg-current{background-color:currentColor}.polli\:bg-ink-100\/80{background-color:var(--polli-color-ink-100)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-ink-100\/80{background-color:color-mix(in oklab, var(--polli-color-ink-100) 80%, transparent)}}.polli\:bg-intent-alpha-bg-light{background-color:var(--polli-color-alpha-bg-light)}.polli\:bg-intent-danger-bg-light,.polli\:bg-intent-danger-bg-light\/65{background-color:var(--polli-color-danger-bg-light)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-intent-danger-bg-light\/65{background-color:color-mix(in oklab, var(--polli-color-danger-bg-light) 65%, transparent)}}.polli\:bg-intent-danger-text{background-color:var(--polli-color-danger-text)}.polli\:bg-intent-free-bg-light{background-color:var(--polli-color-free-bg-light)}.polli\:bg-intent-info-bg-light{background-color:var(--polli-color-info-bg-light)}.polli\:bg-intent-new-bg-light{background-color:var(--polli-color-new-bg-light)}.polli\:bg-intent-news-bg-light{background-color:var(--polli-color-news-bg-light)}.polli\:bg-intent-success-bg-bright,.polli\:bg-intent-success-bg-bright\/15{background-color:var(--polli-color-success-bright)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-intent-success-bg-bright\/15{background-color:color-mix(in oklab, var(--polli-color-success-bright) 15%, transparent)}}.polli\:bg-intent-success-text-on-bright{background-color:var(--polli-color-success-text-on-bright)}.polli\:bg-intent-warning-bg-light,.polli\:bg-intent-warning-bg-light\/45{background-color:var(--polli-color-warning-bg-light)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-intent-warning-bg-light\/45{background-color:color-mix(in oklab, var(--polli-color-warning-bg-light) 45%, transparent)}}.polli\:bg-intent-warning-bg-light\/65{background-color:var(--polli-color-warning-bg-light)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-intent-warning-bg-light\/65{background-color:color-mix(in oklab, var(--polli-color-warning-bg-light) 65%, transparent)}}.polli\:bg-paid-pale{background-color:var(--polli-color-paid-pale)}.polli\:bg-social-discord{background-color:var(--polli-color-social-discord)}.polli\:bg-social-github{background-color:var(--polli-color-social-github)}.polli\:bg-surface-block{background-color:var(--polli-color-surface-block)}.polli\:bg-surface-menu{background-color:var(--polli-color-surface-menu)}.polli\:bg-surface-opaque,.polli\:bg-surface-opaque\/70{background-color:var(--polli-color-surface-opaque)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-surface-opaque\/70{background-color:color-mix(in oklab, var(--polli-color-surface-opaque) 70%, transparent)}}.polli\:bg-surface-opaque\/80{background-color:var(--polli-color-surface-opaque)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-surface-opaque\/80{background-color:color-mix(in oklab, var(--polli-color-surface-opaque) 80%, transparent)}}.polli\:bg-theme-bg-active,.polli\:bg-theme-bg-active\/30{background-color:var(--polli-color-bg-active)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-theme-bg-active\/30{background-color:color-mix(in oklab, var(--polli-color-bg-active) 30%, transparent)}}.polli\:bg-theme-bg-active\/45{background-color:var(--polli-color-bg-active)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-theme-bg-active\/45{background-color:color-mix(in oklab, var(--polli-color-bg-active) 45%, transparent)}}.polli\:bg-theme-bg-hover{background-color:var(--polli-color-bg-hover)}.polli\:bg-theme-bg-pale,.polli\:bg-theme-bg-pale\/35{background-color:var(--polli-color-bg-pale)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-theme-bg-pale\/35{background-color:color-mix(in oklab, var(--polli-color-bg-pale) 35%, transparent)}}.polli\:bg-theme-bg-subtle{background-color:var(--polli-color-bg-subtle)}.polli\:bg-theme-text-muted\/60{background-color:var(--polli-color-text-muted)}@supports (color:color-mix(in lab, red, red)){.polli\:bg-theme-text-muted\/60{background-color:color-mix(in oklab, var(--polli-color-text-muted) 60%, transparent)}}.polli\:bg-tier-pale{background-color:var(--polli-color-tier-pale)}.polli\:bg-tier-soft{background-color:var(--polli-color-tier-soft)}.polli\:bg-transparent{background-color:#0000}.polli\:object-cover{object-fit:cover}.polli\:p-0{padding:calc(var(--polli-spacing) * 0)}.polli\:p-0\.5{padding:calc(var(--polli-spacing) * .5)}.polli\:p-1{padding:calc(var(--polli-spacing) * 1)}.polli\:p-2{padding:calc(var(--polli-spacing) * 2)}.polli\:p-3{padding:calc(var(--polli-spacing) * 3)}.polli\:p-3\.5{padding:calc(var(--polli-spacing) * 3.5)}.polli\:p-4{padding:calc(var(--polli-spacing) * 4)}.polli\:p-5{padding:calc(var(--polli-spacing) * 5)}.polli\:p-6{padding:calc(var(--polli-spacing) * 6)}.polli\:px-\(--polli-dialog-gutter\){padding-inline:var(--polli-dialog-gutter)}.polli\:px-1{padding-inline:calc(var(--polli-spacing) * 1)}.polli\:px-1\.5{padding-inline:calc(var(--polli-spacing) * 1.5)}.polli\:px-2{padding-inline:calc(var(--polli-spacing) * 2)}.polli\:px-2\.5{padding-inline:calc(var(--polli-spacing) * 2.5)}.polli\:px-3{padding-inline:calc(var(--polli-spacing) * 3)}.polli\:px-4{padding-inline:calc(var(--polli-spacing) * 4)}.polli\:px-5{padding-inline:calc(var(--polli-spacing) * 5)}.polli\:px-6{padding-inline:calc(var(--polli-spacing) * 6)}.polli\:px-7{padding-inline:calc(var(--polli-spacing) * 7)}.polli\:px-8{padding-inline:calc(var(--polli-spacing) * 8)}.polli\:py-0{padding-block:calc(var(--polli-spacing) * 0)}.polli\:py-0\.5{padding-block:calc(var(--polli-spacing) * .5)}.polli\:py-1{padding-block:calc(var(--polli-spacing) * 1)}.polli\:py-1\.5{padding-block:calc(var(--polli-spacing) * 1.5)}.polli\:py-2{padding-block:calc(var(--polli-spacing) * 2)}.polli\:py-2\.5{padding-block:calc(var(--polli-spacing) * 2.5)}.polli\:py-3{padding-block:calc(var(--polli-spacing) * 3)}.polli\:py-3\.5{padding-block:calc(var(--polli-spacing) * 3.5)}.polli\:py-4{padding-block:calc(var(--polli-spacing) * 4)}.polli\:py-8{padding-block:calc(var(--polli-spacing) * 8)}.polli\:py-9{padding-block:calc(var(--polli-spacing) * 9)}.polli\:py-10{padding-block:calc(var(--polli-spacing) * 10)}.polli\:pt-0\.5{padding-top:calc(var(--polli-spacing) * .5)}.polli\:pt-1\.5{padding-top:calc(var(--polli-spacing) * 1.5)}.polli\:pt-2{padding-top:calc(var(--polli-spacing) * 2)}.polli\:pt-3{padding-top:calc(var(--polli-spacing) * 3)}.polli\:pt-4{padding-top:calc(var(--polli-spacing) * 4)}.polli\:pt-6{padding-top:calc(var(--polli-spacing) * 6)}.polli\:pr-2{padding-right:calc(var(--polli-spacing) * 2)}.polli\:pr-2\.5{padding-right:calc(var(--polli-spacing) * 2.5)}.polli\:pr-3{padding-right:calc(var(--polli-spacing) * 3)}.polli\:pr-10{padding-right:calc(var(--polli-spacing) * 10)}.polli\:pb-1{padding-bottom:calc(var(--polli-spacing) * 1)}.polli\:pb-2{padding-bottom:calc(var(--polli-spacing) * 2)}.polli\:pb-3{padding-bottom:calc(var(--polli-spacing) * 3)}.polli\:pb-4{padding-bottom:calc(var(--polli-spacing) * 4)}.polli\:pb-5{padding-bottom:calc(var(--polli-spacing) * 5)}.polli\:pb-6{padding-bottom:calc(var(--polli-spacing) * 6)}.polli\:pl-4{padding-left:calc(var(--polli-spacing) * 4)}.polli\:pl-5{padding-left:calc(var(--polli-spacing) * 5)}.polli\:pl-6{padding-left:calc(var(--polli-spacing) * 6)}.polli\:pl-8{padding-left:calc(var(--polli-spacing) * 8)}.polli\:text-center{text-align:center}.polli\:text-left{text-align:left}.polli\:text-right{text-align:right}.polli\:align-middle{vertical-align:middle}.polli\:font-body{font-family:var(--polli-font-body)}.polli\:font-heading{font-family:var(--polli-font-heading)}.polli\:font-mono{font-family:var(--polli-font-mono)}.polli\:font-pixel{font-family:var(--polli-font-pixel)}.polli\:font-subheading{font-family:var(--polli-font-subheading)}.polli\:text-2xl{font-size:var(--polli-text-2xl);line-height:var(--tw-leading,var(--polli-text-2xl--line-height))}.polli\:text-3xl{font-size:var(--polli-text-3xl);line-height:var(--tw-leading,var(--polli-text-3xl--line-height))}.polli\:text-4xl{font-size:var(--polli-text-4xl);line-height:var(--tw-leading,var(--polli-text-4xl--line-height))}.polli\:text-5xl{font-size:var(--polli-text-5xl);line-height:var(--tw-leading,var(--polli-text-5xl--line-height))}.polli\:text-base{font-size:var(--polli-text-base);line-height:var(--tw-leading,var(--polli-text-base--line-height))}.polli\:text-lg{font-size:var(--polli-text-lg);line-height:var(--tw-leading,var(--polli-text-lg--line-height))}.polli\:text-sm{font-size:var(--polli-text-sm);line-height:var(--tw-leading,var(--polli-text-sm--line-height))}.polli\:text-xl{font-size:var(--polli-text-xl);line-height:var(--tw-leading,var(--polli-text-xl--line-height))}.polli\:text-xs{font-size:var(--polli-text-xs);line-height:var(--tw-leading,var(--polli-text-xs--line-height))}.polli\:text-\[10px\]{font-size:10px}.polli\:text-\[11px\]{font-size:11px}.polli\:text-\[13px\]{font-size:13px}.polli\:text-micro{font-size:var(--polli-text-micro)}.polli\:leading-4{--tw-leading:calc(var(--polli-spacing) * 4);line-height:calc(var(--polli-spacing) * 4)}.polli\:leading-5{--tw-leading:calc(var(--polli-spacing) * 5);line-height:calc(var(--polli-spacing) * 5)}.polli\:leading-6{--tw-leading:calc(var(--polli-spacing) * 6);line-height:calc(var(--polli-spacing) * 6)}.polli\:leading-\[1\.08\]{--tw-leading:1.08;line-height:1.08}.polli\:leading-none{--tw-leading:1;line-height:1}.polli\:leading-normal{--tw-leading:var(--polli-leading-normal);line-height:var(--polli-leading-normal)}.polli\:leading-relaxed{--tw-leading:var(--polli-leading-relaxed);line-height:var(--polli-leading-relaxed)}.polli\:leading-snug{--tw-leading:var(--polli-leading-snug);line-height:var(--polli-leading-snug)}.polli\:leading-tight{--tw-leading:var(--polli-leading-tight);line-height:var(--polli-leading-tight)}.polli\:font-bold{--tw-font-weight:var(--polli-font-weight-bold);font-weight:var(--polli-font-weight-bold)}.polli\:font-medium{--tw-font-weight:var(--polli-font-weight-medium);font-weight:var(--polli-font-weight-medium)}.polli\:font-normal{--tw-font-weight:var(--polli-font-weight-normal);font-weight:var(--polli-font-weight-normal)}.polli\:font-semibold{--tw-font-weight:var(--polli-font-weight-semibold);font-weight:var(--polli-font-weight-semibold)}.polli\:tracking-normal{--tw-tracking:var(--polli-tracking-normal);letter-spacing:var(--polli-tracking-normal)}.polli\:tracking-tight{--tw-tracking:var(--polli-tracking-tight);letter-spacing:var(--polli-tracking-tight)}.polli\:tracking-wide{--tw-tracking:var(--polli-tracking-wide);letter-spacing:var(--polli-tracking-wide)}.polli\:tracking-wider{--tw-tracking:var(--polli-tracking-wider);letter-spacing:var(--polli-tracking-wider)}.polli\:tracking-widest{--tw-tracking:var(--polli-tracking-widest);letter-spacing:var(--polli-tracking-widest)}.polli\:text-balance{text-wrap:balance}.polli\:text-pretty{text-wrap:pretty}.polli\:\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.polli\:break-words{overflow-wrap:break-word}.polli\:break-all{word-break:break-all}.polli\:whitespace-nowrap{white-space:nowrap}.polli\:whitespace-pre-line{white-space:pre-line}.polli\:whitespace-pre-wrap{white-space:pre-wrap}.polli\:\[tab-size\:4\]{tab-size:4}.polli\:text-\(--polli-tab-icon\){color:var(--polli-tab-icon)}.polli\:text-app-bg{color:var(--polli-color-app-bg)}.polli\:text-brand-dark{color:var(--polli-color-brand-dark)}.polli\:text-inherit{color:inherit}.polli\:text-ink-700{color:var(--polli-color-ink-700)}.polli\:text-ink-800{color:var(--polli-color-ink-800)}.polli\:text-ink-900{color:var(--polli-color-ink-900)}.polli\:text-intent-alpha-text{color:var(--polli-color-alpha-text)}.polli\:text-intent-danger-text{color:var(--polli-color-danger-text)}.polli\:text-intent-free-text{color:var(--polli-color-free-text)}.polli\:text-intent-info-text{color:var(--polli-color-info-text)}.polli\:text-intent-new-text{color:var(--polli-color-new-text)}.polli\:text-intent-news-text{color:var(--polli-color-news-text)}.polli\:text-intent-success-text{color:var(--polli-color-success-text)}.polli\:text-intent-warning-text{color:var(--polli-color-warning-text)}.polli\:text-paid-deep{color:var(--polli-color-paid-deep)}.polli\:text-social-discord-text{color:var(--polli-color-social-discord-text)}.polli\:text-social-github-text{color:var(--polli-color-social-github-text)}.polli\:text-theme-text-base{color:var(--polli-color-text-base)}.polli\:text-theme-text-muted{color:var(--polli-color-text-muted)}.polli\:text-theme-text-soft{color:var(--polli-color-text-soft)}.polli\:text-theme-text-strong,.polli\:text-theme-text-strong\/40{color:var(--polli-color-text-strong)}@supports (color:color-mix(in lab, red, red)){.polli\:text-theme-text-strong\/40{color:color-mix(in oklab, var(--polli-color-text-strong) 40%, transparent)}}.polli\:text-theme-text-strong\/75{color:var(--polli-color-text-strong)}@supports (color:color-mix(in lab, red, red)){.polli\:text-theme-text-strong\/75{color:color-mix(in oklab, var(--polli-color-text-strong) 75%, transparent)}}.polli\:text-tier-deep{color:var(--polli-color-tier-deep)}.polli\:normal-case{text-transform:none}.polli\:uppercase{text-transform:uppercase}.polli\:not-italic{font-style:normal}.polli\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.polli\:no-underline{text-decoration-line:none}.polli\:underline{text-decoration-line:underline}.polli\:opacity-0{opacity:0}.polli\:opacity-30{opacity:.3}.polli\:opacity-50{opacity:.5}.polli\:opacity-60{opacity:.6}.polli\:opacity-65{opacity:.65}.polli\:opacity-70{opacity:.7}.polli\:opacity-100{opacity:1}.polli\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.polli\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.polli\:ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.polli\:ring-theme-border{--tw-ring-color:var(--polli-color-border)}.polli\:backdrop-blur-sm{--tw-backdrop-blur:blur(var(--polli-blur-sm));-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,);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,)}.polli\:transition-\[transform\,background-color\]{transition-property:transform,background-color;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--polli-default-transition-timing-function));transition-duration:var(--tw-duration,var(--polli-default-transition-duration))}.polli\:duration-150{--tw-duration:.15s;transition-duration:.15s}.polli\:duration-200{--tw-duration:.2s;transition-duration:.2s}.polli\:ease-out{--tw-ease:var(--polli-ease-out);transition-timing-function:var(--polli-ease-out)}.polli\:will-change-transform{will-change:transform}.polli\:outline-none{--tw-outline-style:none;outline-style:none}.polli\:select-all{-webkit-user-select:all;user-select:all}.polli\:select-none{-webkit-user-select:none;user-select:none}.polli\:\[animation-duration\:2\.4s\]{animation-duration:2.4s}@media (hover:hover){.polli\:group-hover\:translate-x-0\.5:is(:where(.polli\:group):hover *){--tw-translate-x:calc(var(--polli-spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:group-hover\:-translate-y-0\.5:is(:where(.polli\:group):hover *){--tw-translate-y:calc(var(--polli-spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:group-hover\:scale-110:is(:where(.polli\:group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.polli\:group-hover\:text-current:is(:where(.polli\:group):hover *){color:currentColor}.polli\:group-hover\:brightness-110:is(:where(.polli\:group):hover *){--tw-brightness:brightness(110%);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,)}}.polli\:group-focus-visible\:translate-x-0\.5:is(:where(.polli\:group):focus-visible *){--tw-translate-x:calc(var(--polli-spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:group-focus-visible\:-translate-y-0\.5:is(:where(.polli\:group):focus-visible *){--tw-translate-y:calc(var(--polli-spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:peer-checked\:border-theme-bg-active:is(:where(.polli\:peer):checked~*){border-color:var(--polli-color-bg-active)}.polli\:peer-checked\:bg-theme-bg-active:is(:where(.polli\:peer):checked~*){background-color:var(--polli-color-bg-active)}.polli\:peer-checked\:text-theme-text-strong:is(:where(.polli\:peer):checked~*){color:var(--polli-color-text-strong)}.polli\:peer-focus-visible\:outline-2:is(:where(.polli\:peer):focus-visible~*){outline-style:var(--tw-outline-style);outline-width:2px}.polli\:peer-focus-visible\:outline-offset-2:is(:where(.polli\:peer):focus-visible~*){outline-offset:2px}.polli\:peer-focus-visible\:outline-theme-text-soft:is(:where(.polli\:peer):focus-visible~*){outline-color:var(--polli-color-text-soft)}.polli\:peer-disabled\:opacity-50:is(:where(.polli\:peer):disabled~*){opacity:.5}.polli\:marker\:text-theme-text-muted ::marker{color:var(--polli-color-text-muted)}.polli\:marker\:text-theme-text-muted::marker{color:var(--polli-color-text-muted)}.polli\:marker\:text-theme-text-muted ::-webkit-details-marker{color:var(--polli-color-text-muted)}.polli\:marker\:text-theme-text-muted::-webkit-details-marker{color:var(--polli-color-text-muted)}.polli\:last\:mb-0:last-child{margin-bottom:calc(var(--polli-spacing) * 0)}@media (hover:hover){.polli\:hover\:translate-y-0\.5:hover{--tw-translate-y:calc(var(--polli-spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.polli\:hover\:border-theme-bg-active:hover{border-color:var(--polli-color-bg-active)}.polli\:hover\:border-theme-text-strong\/30:hover{border-color:var(--polli-color-text-strong)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:border-theme-text-strong\/30:hover{border-color:color-mix(in oklab, var(--polli-color-text-strong) 30%, transparent)}}.polli\:hover\:border-theme-text-strong\/45:hover{border-color:var(--polli-color-text-strong)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:border-theme-text-strong\/45:hover{border-color:color-mix(in oklab, var(--polli-color-text-strong) 45%, transparent)}}.polli\:hover\:bg-\[color-mix\(in_oklab\,var\(--polli-card-tint\)\,var\(--polli-color-surface-opaque\)_50\%\)\]:hover{background-color:var(--polli-card-tint)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:bg-\[color-mix\(in_oklab\,var\(--polli-card-tint\)\,var\(--polli-color-surface-opaque\)_50\%\)\]:hover{background-color:color-mix(in oklab,var(--polli-card-tint),var(--polli-color-surface-opaque) 50%)}}.polli\:hover\:bg-brand-accent\/60:hover{background-color:var(--polli-color-brand-accent)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:bg-brand-accent\/60:hover{background-color:color-mix(in oklab, var(--polli-color-brand-accent) 60%, transparent)}}.polli\:hover\:bg-intent-danger-bg-hover:hover{background-color:var(--polli-color-danger-bg-hover)}.polli\:hover\:bg-intent-info-bg-hover:hover{background-color:var(--polli-color-info-bg-hover)}.polli\:hover\:bg-paid-pale\/60:hover{background-color:var(--polli-color-paid-pale)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:bg-paid-pale\/60:hover{background-color:color-mix(in oklab, var(--polli-color-paid-pale) 60%, transparent)}}.polli\:hover\:bg-social-github-hover:hover{background-color:var(--polli-color-social-github-hover)}.polli\:hover\:bg-surface-opaque\/60:hover{background-color:var(--polli-color-surface-opaque)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:bg-surface-opaque\/60:hover{background-color:color-mix(in oklab, var(--polli-color-surface-opaque) 60%, transparent)}}.polli\:hover\:bg-surface-opaque\/95:hover{background-color:var(--polli-color-surface-opaque)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:bg-surface-opaque\/95:hover{background-color:color-mix(in oklab, var(--polli-color-surface-opaque) 95%, transparent)}}.polli\:hover\:bg-theme-bg-active:hover,.polli\:hover\:bg-theme-bg-active\/50:hover{background-color:var(--polli-color-bg-active)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:bg-theme-bg-active\/50:hover{background-color:color-mix(in oklab, var(--polli-color-bg-active) 50%, transparent)}}.polli\:hover\:bg-theme-bg-hover:hover,.polli\:hover\:bg-theme-bg-hover\/50:hover{background-color:var(--polli-color-bg-hover)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:bg-theme-bg-hover\/50:hover{background-color:color-mix(in oklab, var(--polli-color-bg-hover) 50%, transparent)}}.polli\:hover\:bg-theme-bg-subtle:hover{background-color:var(--polli-color-bg-subtle)}.polli\:hover\:bg-theme-text-muted\/15:hover{background-color:var(--polli-color-text-muted)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:bg-theme-text-muted\/15:hover{background-color:color-mix(in oklab, var(--polli-color-text-muted) 15%, transparent)}}.polli\:hover\:bg-theme-text-muted\/25:hover{background-color:var(--polli-color-text-muted)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:bg-theme-text-muted\/25:hover{background-color:color-mix(in oklab, var(--polli-color-text-muted) 25%, transparent)}}.polli\:hover\:bg-tier-pale\/60:hover{background-color:var(--polli-color-tier-pale)}@supports (color:color-mix(in lab, red, red)){.polli\:hover\:bg-tier-pale\/60:hover{background-color:color-mix(in oklab, var(--polli-color-tier-pale) 60%, transparent)}}.polli\:hover\:bg-transparent:hover{background-color:#0000}.polli\:hover\:text-brand-dark:hover{color:var(--polli-color-brand-dark)}.polli\:hover\:text-ink-950:hover{color:var(--polli-color-ink-950)}.polli\:hover\:text-theme-text-hover:hover{color:var(--polli-color-text-hover)}.polli\:hover\:text-theme-text-soft:hover{color:var(--polli-color-text-soft)}.polli\:hover\:text-theme-text-strong:hover{color:var(--polli-color-text-strong)}.polli\:hover\:brightness-105:hover{--tw-brightness:brightness(105%);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,)}.polli\:hover\:brightness-110:hover{--tw-brightness:brightness(110%);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,)}.polli\:hover\:filter:hover{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,)}}.polli\:focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.polli\:focus-visible\:border-theme-bg-active:focus-visible{border-color:var(--polli-color-bg-active)}.polli\:focus-visible\:bg-intent-danger-bg-hover:focus-visible{background-color:var(--polli-color-danger-bg-hover)}.polli\:focus-visible\:bg-theme-bg-active:focus-visible{background-color:var(--polli-color-bg-active)}.polli\:focus-visible\:bg-theme-bg-hover:focus-visible{background-color:var(--polli-color-bg-hover)}.polli\:focus-visible\:bg-theme-text-muted\/15:focus-visible{background-color:var(--polli-color-text-muted)}@supports (color:color-mix(in lab, red, red)){.polli\:focus-visible\:bg-theme-text-muted\/15:focus-visible{background-color:color-mix(in oklab, var(--polli-color-text-muted) 15%, transparent)}}.polli\:focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.polli\:focus-visible\:ring-theme-border:focus-visible{--tw-ring-color:var(--polli-color-border)}.polli\:focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.polli\:focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.polli\:focus-visible\:outline-offset-4:focus-visible{outline-offset:4px}.polli\:focus-visible\:outline-current:focus-visible{outline-color:currentColor}.polli\:focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.polli\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.polli\:disabled\:opacity-50:disabled{opacity:.5}.polli\:disabled\:opacity-60:disabled{opacity:.6}.polli\:data-\[highlighted\]\:bg-theme-bg-active[data-highlighted]{background-color:var(--polli-color-bg-active)}.polli\:data-\[highlighted\]\:bg-theme-bg-hover[data-highlighted]{background-color:var(--polli-color-bg-hover)}@media (prefers-reduced-motion:reduce){.polli\:motion-reduce\:hidden{display:none}.polli\:motion-reduce\:animate-none{animation:none}.polli\:motion-reduce\:transition-none{transition-property:none}@media (hover:hover){.polli\:motion-reduce\:group-hover\:translate-0:is(:where(.polli\:group):hover *){--tw-translate-x:calc(var(--polli-spacing) * 0);--tw-translate-y:calc(var(--polli-spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.polli\:motion-reduce\:group-hover\:scale-100:is(:where(.polli\:group):hover *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}.polli\:motion-reduce\:group-focus-visible\:translate-0:is(:where(.polli\:group):focus-visible *){--tw-translate-x:calc(var(--polli-spacing) * 0);--tw-translate-y:calc(var(--polli-spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}@media (hover:hover){.polli\:motion-reduce\:hover\:scale-100:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}@media not all and (min-width:40rem){.polli\:max-sm\:grid-cols-\[5\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:5.5rem minmax(0,1fr)}.polli\:max-sm\:gap-x-2{column-gap:calc(var(--polli-spacing) * 2)}}@media (min-width:40rem){.polli\:sm\:flex-row{flex-direction:row}.polli\:sm\:items-center{align-items:center}.polli\:sm\:justify-between{justify-content:space-between}.polli\:sm\:justify-items-end{justify-items:end}.polli\:sm\:gap-10{gap:calc(var(--polli-spacing) * 10)}.polli\:sm\:rounded-block{border-radius:var(--polli-radius-block)}.polli\:sm\:p-4{padding:calc(var(--polli-spacing) * 4)}.polli\:sm\:p-5{padding:calc(var(--polli-spacing) * 5)}.polli\:sm\:p-7{padding:calc(var(--polli-spacing) * 7)}.polli\:sm\:px-6{padding-inline:calc(var(--polli-spacing) * 6)}.polli\:sm\:px-10{padding-inline:calc(var(--polli-spacing) * 10)}.polli\:sm\:py-12{padding-block:calc(var(--polli-spacing) * 12)}.polli\:sm\:pt-6{padding-top:calc(var(--polli-spacing) * 6)}.polli\:sm\:text-4xl{font-size:var(--polli-text-4xl);line-height:var(--tw-leading,var(--polli-text-4xl--line-height))}.polli\:sm\:text-5xl{font-size:var(--polli-text-5xl);line-height:var(--tw-leading,var(--polli-text-5xl--line-height))}.polli\:sm\:text-lg{font-size:var(--polli-text-lg);line-height:var(--tw-leading,var(--polli-text-lg--line-height))}}@media (min-width:64rem){.polli\:lg\:text-7xl{font-size:var(--polli-text-7xl);line-height:var(--tw-leading,var(--polli-text-7xl--line-height))}}.polli\:\[\&_pre\]\:max-w-full pre{max-width:100%}.polli\:\[\&_pre\]\:overflow-x-auto pre{overflow-x:auto}.polli\:\[\&_strong\]\:text-theme-text-strong strong{color:var(--polli-color-text-strong)}.polli\:\[\&_table\]\:max-w-full table{max-width:100%}.polli\:\[\&_table\]\:overflow-x-auto table{overflow-x:auto}.polli\:\[\&\>\*\:not\(\:first-child\)\]\:col-start-2>:not(:first-child){grid-column-start:2}.polli\:\[\&\>\*\:not\(\:first-child\)\]\:min-w-0>:not(:first-child){min-width:calc(var(--polli-spacing) * 0)}.polli\:\[\&\>\.polli-control\]\:min-h-12>.polli-control{min-height:calc(var(--polli-spacing) * 12)}.polli\:\[\&\>\.polli-control\]\:text-base>.polli-control{font-size:var(--polli-text-base);line-height:var(--tw-leading,var(--polli-text-base--line-height))}@container not (min-width:36rem){.polli\:\@max-xl\:\[\&\>\.polli-control\]\:flex-auto>.polli-control{flex:auto}}.polli\:\[\&\>\.polli-control\:only-child\]\:flex-auto>.polli-control:only-child{flex:auto}.polli\:\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--polli-spacing) * 3.5);height:calc(var(--polli-spacing) * 3.5)}.polli\:\[\&\>svg\]\:size-full>svg{width:100%;height:100%}.polli\:\[\&\>svg\]\:h-4>svg{height:calc(var(--polli-spacing) * 4)}.polli\:\[\&\>svg\]\:h-full>svg{height:100%}.polli\:\[\&\>svg\]\:w-4>svg{width:calc(var(--polli-spacing) * 4)}.polli\:\[\&\>svg\]\:w-full>svg{width:100%}.polli\:\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.dark .polli\:\[\.dark_\&\]\:bg-transparent{background-color:#0000}@media (hover:hover){.dark .polli\:\[\.dark_\&\]\:hover\:bg-intent-danger-bg-hover:hover{background-color:var(--polli-color-danger-bg-hover)}.dark .polli\:\[\.dark_\&\]\:hover\:bg-theme-bg-active:hover{background-color:var(--polli-color-bg-active)}.dark .polli\:\[\.dark_\&\]\:hover\:bg-theme-text-soft\/10:hover{background-color:var(--polli-color-text-soft)}@supports (color:color-mix(in lab, red, red)){.dark .polli\:\[\.dark_\&\]\:hover\:bg-theme-text-soft\/10:hover{background-color:color-mix(in oklab, var(--polli-color-text-soft) 10%, transparent)}}}.dark .polli\:\[\.dark_\&\]\:focus-visible\:bg-intent-danger-bg-hover:focus-visible{background-color:var(--polli-color-danger-bg-hover)}.dark .polli\:\[\.dark_\&\]\:focus-visible\:bg-theme-bg-active:focus-visible{background-color:var(--polli-color-bg-active)}}@font-face{font-family:LCT Mogi;src:url(./fonts/lct-mogi-a.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Fraunces;src:url(./fonts/fraunces-soft-bold.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Uncut Sans;src:url(./fonts/uncut-sans-variable.woff2)format("woff2-variations");font-weight:300 700;font-style:normal;font-display:swap}@font-face{font-family:Geist Pixel Square;src:url(./fonts/geist-pixel-square.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}.polli-link{color:var(--polli-color-text-soft,oklch(47% .13 85));text-underline-offset:2px;border-radius:.125rem;font-family:inherit;font-weight:500;text-decoration:underline;transition:color .15s}.polli-link :where(span,strong,em,b,i,code){text-underline-offset:inherit;text-decoration-line:underline}.polli-link[data-size=footer]{font-size:13px}.polli-link[data-size=sm]{font-size:14px}.polli-link[data-tone=quiet]{color:var(--polli-color-text-muted,oklch(55% .02 80))}.polli-link:hover{color:var(--polli-color-text-strong,oklch(25% .02 80))}.polli-link:focus-visible,.polli-link-surface:focus-visible{outline:2px solid var(--polli-color-border,oklch(72% .15 85));outline-offset:2px}.polli-link-external-icon{vertical-align:baseline;opacity:.65;flex-shrink:0;width:.9em;height:.9em;margin-left:.25em;display:inline-block}button.polli-link{cursor:pointer;background:0 0;border:0;padding:0}button.polli-link:disabled{cursor:default;opacity:.5}:root{color-scheme:light;--polli-font-heading:"LCT Mogi", ui-sans-serif, sans-serif;--polli-font-subheading:"Fraunces", ui-serif, serif;--polli-font-body:"Uncut Sans", ui-sans-serif, sans-serif;--polli-font-pixel:"Geist Pixel Square", ui-monospace, monospace;--polli-text-micro:10px;--polli-text-base:16px;--polli-radius-block:1.75rem;--polli-radius-card:1.25rem;--polli-color-brand-dark:#110518;--polli-color-brand-accent:oklch(calc(.876 + var(--polli-nudge)) .135 var(--polli-hue));--polli-color-social-discord:#5865f2;--polli-color-social-discord-text:#fff;--polli-color-social-github:#0d1117;--polli-color-social-github-hover:#010409;--polli-color-social-github-text:#f0f6fc;--polli-color-social-github-border:#f0f6fc24;--polli-color-app-bg:oklch(90.2% .013 80);--polli-color-surface-block:oklch(.96 .02 var(--polli-hue));--polli-color-surface-opaque:oklch(99.6% .004 85);--polli-color-surface-translucent:oklch(99.6% .004 85/.8);--polli-color-surface-white:var(--polli-color-surface-translucent);--polli-color-surface-menu:oklch(96% .008 85);--polli-color-text-strong:oklch(25% .02 80);--polli-color-text-base:oklch(40% .017 80);--polli-color-text-muted:oklch(49% .013 80);--polli-color-text-hover:var(--polli-color-text-strong);--polli-color-divider:oklch(83.5% .007 80);--polli-color-ink-50:oklch(98.5% .002 247.839);--polli-color-ink-100:oklch(96.7% .003 264.542);--polli-color-ink-200:oklch(92.8% .006 264.531);--polli-color-ink-300:oklch(87.2% .01 258.338);--polli-color-ink-400:oklch(70.7% .022 261.325);--polli-color-ink-500:oklch(55.1% .027 264.364);--polli-color-ink-600:oklch(44.6% .03 256.802);--polli-color-ink-700:oklch(37.3% .034 259.733);--polli-color-ink-800:oklch(27.8% .033 256.848);--polli-color-ink-900:oklch(21% .034 264.665);--polli-color-ink-950:oklch(13% .028 261.692);--polli-hue:85;--polli-nudge:.024}:root,[data-theme=accent]{--polli-color-bg-pale:oklch(.981 .018 var(--polli-hue));--polli-color-bg-subtle:oklch(.918 .022 var(--polli-hue) / .7);--polli-color-bg-active:oklch(calc(.876 + var(--polli-nudge)) .135 var(--polli-hue));--polli-color-bg-hover:oklch(calc(.826 + var(--polli-nudge)) .165 var(--polli-hue));--polli-color-border:var(--polli-color-bg-hover);--polli-color-scrollbar-thumb:oklch(calc(.728 + var(--polli-nudge)) .17 var(--polli-hue) / .7);--polli-color-text-soft:oklch(.47 .13 var(--polli-hue));--polli-color-text-hover:var(--polli-color-text-strong)}[data-theme=neutral]{--polli-color-bg-pale:var(--polli-color-surface-opaque);--polli-color-bg-subtle:var(--polli-color-text-muted)}@supports (color:color-mix(in lab, red, red)){[data-theme=neutral]{--polli-color-bg-subtle:color-mix(in oklab, var(--polli-color-text-muted) 10%, transparent)}}[data-theme=neutral]{--polli-color-bg-active:var(--polli-color-text-muted)}@supports (color:color-mix(in lab, red, red)){[data-theme=neutral]{--polli-color-bg-active:color-mix(in oklab, var(--polli-color-text-muted) 32%, transparent)}}[data-theme=neutral]{--polli-color-bg-hover:var(--polli-color-text-muted)}@supports (color:color-mix(in lab, red, red)){[data-theme=neutral]{--polli-color-bg-hover:color-mix(in oklab, var(--polli-color-text-muted) 46%, transparent)}}[data-theme=neutral]{--polli-color-border:var(--polli-color-text-muted)}@supports (color:color-mix(in lab, red, red)){[data-theme=neutral]{--polli-color-border:color-mix(in oklab, var(--polli-color-text-muted) 50%, transparent)}}[data-theme=neutral]{--polli-color-scrollbar-thumb:var(--polli-color-text-muted)}@supports (color:color-mix(in lab, red, red)){[data-theme=neutral]{--polli-color-scrollbar-thumb:color-mix(in oklab, var(--polli-color-text-muted) 55%, transparent)}}[data-theme=neutral]{--polli-color-text-soft:var(--polli-color-text-muted);--polli-color-text-hover:var(--polli-color-text-strong)}:root{--polli-color-danger-bg-light:oklch(93.5% .045 25);--polli-color-danger-bg-hover:oklch(88% .075 25);--polli-color-danger-text:oklch(48% .18 25);--polli-color-danger-border:oklch(78% .115 25);--polli-color-success-text:oklch(42% .17 140);--polli-color-success-bright:oklch(68% .18 140);--polli-color-success-text-on-bright:oklch(98% .005 80);--polli-color-warning-bg-light:oklch(94% .06 75);--polli-color-warning-text:oklch(45% .13 65);--polli-color-info-bg-light:oklch(93.5% .04 252);--polli-color-info-bg-hover:oklch(88% .05 252);--polli-color-info-text:oklch(50% .15 252);--polli-color-news-bg-light:oklch(93.5% .06 158);--polli-color-news-text:oklch(46% .13 158);--polli-color-new-bg-light:oklch(93.5% .045 25);--polli-color-new-text:oklch(48% .18 25);--polli-color-free-bg-light:var(--polli-color-info-bg-light);--polli-color-free-text:var(--polli-color-info-text);--polli-color-alpha-bg-light:oklch(93% .06 300);--polli-color-alpha-text:oklch(42% .18 300);--polli-color-outcome-positive-text:var(--polli-color-info-text);--polli-color-outcome-negative-text:var(--polli-color-danger-text);--polli-color-modality-text:oklch(68% .11 252);--polli-color-modality-image:oklch(68% .11 350);--polli-color-modality-video:oklch(68% .11 190);--polli-color-modality-audio:oklch(68% .11 300);--polli-color-modality-realtime:oklch(68% .11 128);--polli-color-modality-embedding:oklch(68% .11 163);--polli-color-modality-text-bg:oklch(95% .03 252/.7);--polli-color-modality-image-bg:oklch(95% .03 350/.7);--polli-color-modality-video-bg:oklch(95% .03 190/.7);--polli-color-modality-audio-bg:oklch(95% .03 300/.7);--polli-color-modality-realtime-bg:oklch(95% .03 128/.7);--polli-color-modality-embedding-bg:oklch(95% .03 163/.7)}.dark{color-scheme:dark;--polli-color-app-bg:oklch(14.5% .004 80);--polli-color-surface-block:oklch(20.5% .005 80);--polli-color-surface-opaque:oklch(25.5% .006 80);--polli-color-surface-translucent:oklch(25.5% .006 80/.8);--polli-color-surface-white:var(--polli-color-surface-translucent);--polli-color-surface-menu:oklch(30% .006 80);--polli-color-text-strong:oklch(93% .004 80);--polli-color-text-base:oklch(85% .007 80);--polli-color-text-muted:oklch(72% .008 80);--polli-color-divider:oklch(35% .005 80);--polli-color-ink-50:oklch(16.5% .006 80);--polli-color-ink-100:oklch(20.5% .006 80);--polli-color-ink-200:oklch(25.5% .006 80);--polli-color-ink-300:oklch(31.5% .006 80);--polli-color-ink-400:oklch(39.5% .006 80);--polli-color-ink-500:oklch(50.5% .006 80);--polli-color-ink-600:oklch(62% .006 80);--polli-color-ink-700:oklch(72% .006 80);--polli-color-ink-800:oklch(82% .006 80);--polli-color-ink-900:oklch(90% .006 80);--polli-color-ink-950:oklch(96% .006 80);--polli-color-danger-bg-light:oklch(36% .095 25);--polli-color-danger-bg-hover:oklch(43% .11 25);--polli-color-danger-text:oklch(85.5% .105 25);--polli-color-danger-border:oklch(48% .11 25);--polli-color-success-text:oklch(86% .13 140);--polli-color-success-bright:oklch(68% .18 140);--polli-color-success-text-on-bright:oklch(98% .005 80);--polli-color-warning-bg-light:oklch(36% .075 75);--polli-color-warning-text:oklch(87% .1 75);--polli-color-info-bg-light:oklch(36% .08 252);--polli-color-info-bg-hover:oklch(43% .095 252);--polli-color-info-text:oklch(82% .09 252);--polli-color-news-bg-light:oklch(35% .07 158);--polli-color-news-text:oklch(86% .1 158);--polli-color-new-bg-light:oklch(36% .095 25);--polli-color-new-text:oklch(85.5% .105 25);--polli-color-alpha-bg-light:oklch(35% .085 300);--polli-color-alpha-text:oklch(85% .12 300);--polli-color-modality-text:oklch(62% .1 252);--polli-color-modality-image:oklch(62% .1 350);--polli-color-modality-video:oklch(62% .1 190);--polli-color-modality-audio:oklch(62% .1 300);--polli-color-modality-realtime:oklch(62% .1 128);--polli-color-modality-embedding:oklch(62% .1 163);--polli-color-modality-text-bg:oklch(39% .03 252/.7);--polli-color-modality-image-bg:oklch(39% .03 350/.7);--polli-color-modality-video-bg:oklch(39% .03 190/.7);--polli-color-modality-audio-bg:oklch(39% .03 300/.7);--polli-color-modality-realtime-bg:oklch(39% .03 128/.7);--polli-color-modality-embedding-bg:oklch(39% .03 163/.7)}.dark,.dark [data-theme=accent]{--polli-color-bg-pale:oklch(.262 .009 var(--polli-hue));--polli-color-bg-subtle:oklch(.33 .014 var(--polli-hue) / .7);--polli-color-bg-active:oklch(calc(.496 + var(--polli-nudge)) .145 var(--polli-hue));--polli-color-bg-hover:oklch(calc(.571 + var(--polli-nudge)) .16 var(--polli-hue));--polli-color-border:var(--polli-color-bg-hover);--polli-color-scrollbar-thumb:oklch(calc(.62 + var(--polli-nudge)) .15 var(--polli-hue) / .7);--polli-color-text-soft:oklch(.83 .135 var(--polli-hue))}:root{--polli-color-paid-pale:oklch(95.5% .062 92);--polli-color-paid-soft:oklch(82% .165 92);--polli-color-paid-deep:oklch(43% .105 82);--polli-color-tier-pale:oklch(95% .05 152);--polli-color-tier-soft:oklch(74% .135 152);--polli-color-tier-deep:oklch(42% .11 152)}.dark{--polli-color-paid-pale:oklch(33% .055 92);--polli-color-paid-soft:oklch(82% .135 92);--polli-color-paid-deep:oklch(88% .085 92);--polli-color-tier-pale:oklch(31% .045 152);--polli-color-tier-soft:oklch(75% .13 152);--polli-color-tier-deep:oklch(87% .1 152)}.polli-wallet-chip-paid{background-color:var(--polli-color-paid-pale);color:var(--polli-color-paid-deep)}.polli-wallet-chip-tier{background-color:var(--polli-color-tier-pale);color:var(--polli-color-tier-deep)}.polli-wallet-panel-paid{background-color:var(--polli-color-paid-pale);color:var(--polli-color-paid-deep)}.polli-wallet-panel-tier{background-color:var(--polli-color-tier-pale);color:var(--polli-color-tier-deep)}.polli-wallet-text-paid{color:var(--polli-color-paid-deep)}.polli-wallet-text-tier{color:var(--polli-color-tier-deep)}.polli-wallet-balance-value{font-size:2.25rem}@media (min-width:640px){.polli-wallet-balance-value{font-size:3rem}}.polli-scrollbar-subtle{scrollbar-width:thin;scrollbar-color:transparent transparent}.polli-scrollbar-subtle::-webkit-scrollbar{width:12px;height:12px}.polli-scrollbar-subtle::-webkit-scrollbar-track{background:0 0}.polli-scrollbar-subtle::-webkit-scrollbar-thumb{background-color:#0000;background-clip:content-box;border:3px solid #0000;border-radius:9999px;transition:background-color .16s}.polli-scrollbar-subtle[data-scrollbar-active=true]{scrollbar-color:var(--polli-color-scrollbar-thumb) transparent}.polli-scrollbar-subtle[data-scrollbar-active=true]::-webkit-scrollbar-thumb{background-color:var(--polli-color-scrollbar-thumb)}.polli-dialog-floating-controls:before{content:"";z-index:-1;background:linear-gradient(to bottom, transparent, var(--polli-color-surface-block) 40%);position:absolute;inset:-2rem 0 0}:root{--polli-dialog-gutter:1.5rem}@media not all and (min-width:30rem){.polli-dialog-mobile-positioner{padding:.5rem 0}.polli-dialog-mobile-page{--polli-dialog-gutter:1.25rem;max-width:none}.polli-dialog-mobile-page .polli-surface-card:not(.polli-surface-card .polli-surface-card){margin-inline:calc(-1 * var(--polli-dialog-gutter));padding:1rem var(--polli-dialog-gutter);border-radius:1.5rem}}.polli-input-number-clean::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.polli-input-number-clean::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.polli-input-number-clean{-moz-appearance:textfield}.polli-input,.polli-textarea{background-color:var(--polli-color-bg-pale);border-color:var(--polli-color-divider);box-shadow:none;outline:none}.polli-input:focus,.polli-input:focus-visible,.polli-textarea:focus,.polli-textarea:focus-visible{border-color:var(--polli-color-border);box-shadow:0 0 0 1px var(--polli-color-border);outline:none}.polli-input-shell{background-color:var(--polli-color-bg-pale);border-color:var(--polli-color-divider);box-shadow:none;outline:none}.polli-input-shell:focus-within{border-color:var(--polli-color-border);box-shadow:0 0 0 1px var(--polli-color-border)}.polli-input-shell>.polli-input,.polli-input-shell>.polli-input:focus,.polli-input-shell>.polli-input:focus-visible{box-shadow:none;background-color:#0000;border-color:#0000}.polli-input[data-error=true],.polli-input[data-invalid],.polli-textarea[data-error=true],.polli-textarea[data-invalid]{border-color:var(--polli-color-danger-border)}.polli-input[data-error=true]:focus,.polli-input[data-error=true]:focus-visible,.polli-input[data-invalid]:focus,.polli-input[data-invalid]:focus-visible,.polli-textarea[data-error=true]:focus,.polli-textarea[data-error=true]:focus-visible,.polli-textarea[data-invalid]:focus,.polli-textarea[data-invalid]:focus-visible{border-color:var(--polli-color-danger-border);box-shadow:0 0 0 1px var(--polli-color-danger-border)}.polli-textarea{--polli-textarea-resizer-color:var(--polli-color-divider);scrollbar-color:var(--polli-color-divider) transparent}.polli-textarea:focus{--polli-textarea-resizer-color:var(--polli-color-border);scrollbar-color:var(--polli-color-border) transparent}.polli-textarea::-webkit-resizer{background:linear-gradient(135deg, transparent 0 52%, var(--polli-textarea-resizer-color) 52% 58%, transparent 58% 100%), linear-gradient(135deg, transparent 0 66%, var(--polli-textarea-resizer-color) 66% 72%, transparent 72% 100%), linear-gradient(135deg, transparent 0 80%, var(--polli-textarea-resizer-color) 80% 86%, transparent 86% 100%)}.polli-control{outline:none}.polli-control:focus-visible{box-shadow:0 0 0 2px var(--polli-color-border);outline:none}.polli-control[data-intent=danger]:focus-visible{box-shadow:0 0 0 2px var(--polli-color-danger-border)}.polli-slider{--polli-slider-progress-value:var(--polli-slider-progress,0%);--polli-slider-fill-value:var(--polli-slider-fill,var(--polli-color-bg-active));--polli-slider-track-value:var(--polli-slider-track,var(--polli-color-divider));--polli-slider-thumb-border-value:var(--polli-slider-thumb-border,var(--polli-color-text-strong));cursor:grab;appearance:none;background:linear-gradient(to right, var(--polli-slider-fill-value) 0%, var(--polli-slider-fill-value) var(--polli-slider-progress-value), var(--polli-slider-track-value) var(--polli-slider-progress-value), var(--polli-slider-track-value) 100%);border-radius:9999px;outline:none;width:100%;height:.5rem;transition:opacity .15s,filter .15s}.polli-slider:active{cursor:grabbing}.polli-slider:disabled{cursor:not-allowed;opacity:.6}.polli-slider:focus-visible{box-shadow:0 0 0 2px var(--polli-slider-fill-value), 0 0 0 4px var(--polli-color-surface-white)}.polli-slider::-webkit-slider-runnable-track{background:0 0;border-radius:9999px;height:.5rem}.polli-slider::-moz-range-track{background:0 0;border-radius:9999px;height:.5rem}.polli-slider::-webkit-slider-thumb{appearance:none;border:3px solid var(--polli-slider-thumb-border-value);background:var(--polli-color-surface-opaque);border-radius:9999px;width:22px;height:22px;margin-top:-7px;transition:transform .15s}.polli-slider::-moz-range-thumb{border:3px solid var(--polli-slider-thumb-border-value);background:var(--polli-color-surface-opaque);border-radius:9999px;width:22px;height:22px;transition:transform .15s}.polli-slider:hover::-webkit-slider-thumb{transform:scale(1.1)}.polli-slider:active::-webkit-slider-thumb{transform:scale(1.05)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}
package/dist/theme.css ADDED
@@ -0,0 +1,94 @@
1
+ /** biome-ignore-all lint/suspicious/noUnknownAtRules: tailwind handles it */
2
+
3
+ /* One Tailwind utility map for both package components (`styles.css`) and
4
+ unprefixed host-app utilities (`app.css`). Keep token values in tokens.css
5
+ and module styles; this file only exposes them to Tailwind. */
6
+ @theme inline {
7
+ --color-*: initial;
8
+
9
+ --font-heading: var(--polli-font-heading);
10
+ --font-subheading: var(--polli-font-subheading);
11
+ --font-body: var(--polli-font-body);
12
+ --font-pixel: var(--polli-font-pixel);
13
+ --text-micro: var(--polli-text-micro);
14
+ --text-base: var(--polli-text-base);
15
+ --radius-block: var(--polli-radius-block);
16
+ --radius-card: var(--polli-radius-card);
17
+
18
+ --color-transparent: transparent;
19
+ --color-current: currentColor;
20
+ --color-inherit: inherit;
21
+
22
+ --color-brand-dark: var(--polli-color-brand-dark);
23
+ --color-brand-accent: var(--polli-color-brand-accent);
24
+
25
+ --color-social-discord: var(--polli-color-social-discord);
26
+ --color-social-discord-text: var(--polli-color-social-discord-text);
27
+ --color-social-github: var(--polli-color-social-github);
28
+ --color-social-github-hover: var(--polli-color-social-github-hover);
29
+ --color-social-github-text: var(--polli-color-social-github-text);
30
+ --color-social-github-border: var(--polli-color-social-github-border);
31
+
32
+ --color-app-bg: var(--polli-color-app-bg);
33
+ --color-divider: var(--polli-color-divider);
34
+
35
+ --color-ink-50: var(--polli-color-ink-50);
36
+ --color-ink-100: var(--polli-color-ink-100);
37
+ --color-ink-200: var(--polli-color-ink-200);
38
+ --color-ink-300: var(--polli-color-ink-300);
39
+ --color-ink-400: var(--polli-color-ink-400);
40
+ --color-ink-500: var(--polli-color-ink-500);
41
+ --color-ink-600: var(--polli-color-ink-600);
42
+ --color-ink-700: var(--polli-color-ink-700);
43
+ --color-ink-800: var(--polli-color-ink-800);
44
+ --color-ink-900: var(--polli-color-ink-900);
45
+ --color-ink-950: var(--polli-color-ink-950);
46
+
47
+ --color-theme-text-base: var(--polli-color-text-base);
48
+ --color-theme-text-strong: var(--polli-color-text-strong);
49
+ --color-theme-text-soft: var(--polli-color-text-soft);
50
+ --color-theme-text-muted: var(--polli-color-text-muted);
51
+ --color-theme-text-hover: var(--polli-color-text-hover);
52
+ --color-theme-border: var(--polli-color-border);
53
+ --color-theme-bg-subtle: var(--polli-color-bg-subtle);
54
+ --color-theme-bg-active: var(--polli-color-bg-active);
55
+ --color-theme-bg-hover: var(--polli-color-bg-hover);
56
+ --color-theme-bg-pale: var(--polli-color-bg-pale);
57
+
58
+ --color-paid-pale: var(--polli-color-paid-pale);
59
+ --color-paid-soft: var(--polli-color-paid-soft);
60
+ --color-paid-deep: var(--polli-color-paid-deep);
61
+ --color-tier-pale: var(--polli-color-tier-pale);
62
+ --color-tier-soft: var(--polli-color-tier-soft);
63
+ --color-tier-deep: var(--polli-color-tier-deep);
64
+
65
+ --color-intent-danger-bg-light: var(--polli-color-danger-bg-light);
66
+ --color-intent-danger-bg-hover: var(--polli-color-danger-bg-hover);
67
+ --color-intent-danger-text: var(--polli-color-danger-text);
68
+ --color-intent-danger-border: var(--polli-color-danger-border);
69
+ --color-intent-success-text: var(--polli-color-success-text);
70
+ --color-intent-success-bg-bright: var(--polli-color-success-bright);
71
+ --color-intent-success-text-on-bright: var(--polli-color-success-text-on-bright);
72
+ --color-intent-warning-bg-light: var(--polli-color-warning-bg-light);
73
+ --color-intent-warning-text: var(--polli-color-warning-text);
74
+ --color-intent-info-bg-light: var(--polli-color-info-bg-light);
75
+ --color-intent-info-bg-hover: var(--polli-color-info-bg-hover);
76
+ --color-intent-info-text: var(--polli-color-info-text);
77
+ --color-intent-news-bg-light: var(--polli-color-news-bg-light);
78
+ --color-intent-news-text: var(--polli-color-news-text);
79
+ --color-intent-new-bg-light: var(--polli-color-new-bg-light);
80
+ --color-intent-new-text: var(--polli-color-new-text);
81
+ --color-intent-free-bg-light: var(--polli-color-free-bg-light);
82
+ --color-intent-free-text: var(--polli-color-free-text);
83
+ --color-intent-alpha-bg-light: var(--polli-color-alpha-bg-light);
84
+ --color-intent-alpha-text: var(--polli-color-alpha-text);
85
+
86
+ --color-outcome-positive-text: var(--polli-color-outcome-positive-text);
87
+ --color-outcome-negative-text: var(--polli-color-outcome-negative-text);
88
+
89
+ --color-surface-block: var(--polli-color-surface-block);
90
+ --color-surface-opaque: var(--polli-color-surface-opaque);
91
+ --color-surface-menu: var(--polli-color-surface-menu);
92
+ --color-surface-translucent: var(--polli-color-surface-translucent);
93
+ --color-surface-white: var(--polli-color-surface-translucent);
94
+ }