@lupinum/ginko-docs 0.2.2

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 (240) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +112 -0
  3. package/app/app.config.ts +49 -0
  4. package/app/app.vue +71 -0
  5. package/app/assets/css/prose.css +1154 -0
  6. package/app/assets/css/tailwind.css +365 -0
  7. package/app/components/OgImage/GinkoDocs.satori.vue +117 -0
  8. package/app/components/content/DocumentPageShell.vue +55 -0
  9. package/app/components/content/Feedback.vue +97 -0
  10. package/app/components/content/PageMarkdownCopy.vue +102 -0
  11. package/app/components/mdc/MdcAccordion.vue +64 -0
  12. package/app/components/mdc/MdcAccordionItem.vue +51 -0
  13. package/app/components/mdc/MdcAlert.vue +34 -0
  14. package/app/components/mdc/MdcAside.vue +27 -0
  15. package/app/components/mdc/MdcCallout.vue +62 -0
  16. package/app/components/mdc/MdcCard.vue +186 -0
  17. package/app/components/mdc/MdcCardGroup.vue +47 -0
  18. package/app/components/mdc/MdcCenter.vue +71 -0
  19. package/app/components/mdc/MdcCodeGroup.vue +193 -0
  20. package/app/components/mdc/MdcColumn.vue +70 -0
  21. package/app/components/mdc/MdcDocImg.vue +25 -0
  22. package/app/components/mdc/MdcDropcap.vue +84 -0
  23. package/app/components/mdc/MdcError.vue +16 -0
  24. package/app/components/mdc/MdcField.vue +62 -0
  25. package/app/components/mdc/MdcFieldGroup.vue +18 -0
  26. package/app/components/mdc/MdcFigure.vue +51 -0
  27. package/app/components/mdc/MdcIdea.vue +16 -0
  28. package/app/components/mdc/MdcInfo.vue +16 -0
  29. package/app/components/mdc/MdcLayout.vue +57 -0
  30. package/app/components/mdc/MdcNote.vue +16 -0
  31. package/app/components/mdc/MdcPassage.vue +32 -0
  32. package/app/components/mdc/MdcQuiz.vue +281 -0
  33. package/app/components/mdc/MdcQuizOption.vue +91 -0
  34. package/app/components/mdc/MdcQuizQuestion.vue +226 -0
  35. package/app/components/mdc/MdcReadMore.vue +90 -0
  36. package/app/components/mdc/MdcReadMoreGroup.vue +18 -0
  37. package/app/components/mdc/MdcShortcut.vue +46 -0
  38. package/app/components/mdc/MdcStep.vue +42 -0
  39. package/app/components/mdc/MdcSteps.vue +25 -0
  40. package/app/components/mdc/MdcSuccess.vue +16 -0
  41. package/app/components/mdc/MdcTab.vue +17 -0
  42. package/app/components/mdc/MdcTabs.vue +132 -0
  43. package/app/components/mdc/MdcTimeline.vue +14 -0
  44. package/app/components/mdc/MdcTimelineItem.vue +49 -0
  45. package/app/components/mdc/MdcWarning.vue +16 -0
  46. package/app/components/mdc/icons.ts +10 -0
  47. package/app/components/prose/ProseA.vue +27 -0
  48. package/app/components/prose/ProseBlockquote.vue +14 -0
  49. package/app/components/prose/ProseCode.vue +14 -0
  50. package/app/components/prose/ProseEm.vue +14 -0
  51. package/app/components/prose/ProseH1.vue +18 -0
  52. package/app/components/prose/ProseH2.vue +24 -0
  53. package/app/components/prose/ProseH3.vue +24 -0
  54. package/app/components/prose/ProseH4.vue +14 -0
  55. package/app/components/prose/ProseHr.vue +12 -0
  56. package/app/components/prose/ProseImg.vue +120 -0
  57. package/app/components/prose/ProseLi.vue +14 -0
  58. package/app/components/prose/ProseOl.vue +14 -0
  59. package/app/components/prose/ProseP.vue +14 -0
  60. package/app/components/prose/ProsePre.vue +217 -0
  61. package/app/components/prose/ProseStrong.vue +14 -0
  62. package/app/components/prose/ProseTable.vue +16 -0
  63. package/app/components/prose/ProseTbody.vue +14 -0
  64. package/app/components/prose/ProseTd.vue +14 -0
  65. package/app/components/prose/ProseTh.vue +14 -0
  66. package/app/components/prose/ProseThead.vue +14 -0
  67. package/app/components/prose/ProseTr.vue +14 -0
  68. package/app/components/prose/ProseUl.vue +14 -0
  69. package/app/components/site/ModeToggle.vue +123 -0
  70. package/app/components/site/SiteBanner.vue +56 -0
  71. package/app/components/site/SiteFooter.vue +80 -0
  72. package/app/components/site/SiteHeader.vue +250 -0
  73. package/app/components/site/SiteInteractionLayer.vue +35 -0
  74. package/app/components/site/SiteLocaleSwitcher.vue +268 -0
  75. package/app/components/site/SiteLogoMark.vue +12 -0
  76. package/app/components/site/SiteSkipLink.vue +14 -0
  77. package/app/components/ui/accordion/Accordion.vue +15 -0
  78. package/app/components/ui/accordion/AccordionContent.vue +23 -0
  79. package/app/components/ui/accordion/AccordionItem.vue +24 -0
  80. package/app/components/ui/accordion/AccordionTrigger.vue +35 -0
  81. package/app/components/ui/accordion/index.ts +4 -0
  82. package/app/components/ui/alert/Alert.vue +21 -0
  83. package/app/components/ui/alert/AlertDescription.vue +22 -0
  84. package/app/components/ui/alert/AlertTitle.vue +22 -0
  85. package/app/components/ui/alert/index.ts +34 -0
  86. package/app/components/ui/badge/Badge.vue +28 -0
  87. package/app/components/ui/badge/index.ts +24 -0
  88. package/app/components/ui/button/Button.vue +31 -0
  89. package/app/components/ui/button/index.ts +35 -0
  90. package/app/components/ui/card/Card.vue +16 -0
  91. package/app/components/ui/card/CardAction.vue +17 -0
  92. package/app/components/ui/card/CardContent.vue +14 -0
  93. package/app/components/ui/card/CardDescription.vue +14 -0
  94. package/app/components/ui/card/CardFooter.vue +14 -0
  95. package/app/components/ui/card/CardHeader.vue +22 -0
  96. package/app/components/ui/card/CardTitle.vue +14 -0
  97. package/app/components/ui/card/card-variants.ts +15 -0
  98. package/app/components/ui/card/index.ts +8 -0
  99. package/app/components/ui/checkbox/Checkbox.vue +35 -0
  100. package/app/components/ui/checkbox/index.ts +1 -0
  101. package/app/components/ui/collapsible/Collapsible.vue +15 -0
  102. package/app/components/ui/collapsible/CollapsibleContent.vue +25 -0
  103. package/app/components/ui/collapsible/CollapsibleTrigger.vue +12 -0
  104. package/app/components/ui/collapsible/index.ts +3 -0
  105. package/app/components/ui/dialog/Dialog.vue +15 -0
  106. package/app/components/ui/dialog/DialogClose.vue +12 -0
  107. package/app/components/ui/dialog/DialogContent.vue +69 -0
  108. package/app/components/ui/dialog/DialogDescription.vue +21 -0
  109. package/app/components/ui/dialog/DialogFooter.vue +15 -0
  110. package/app/components/ui/dialog/DialogHeader.vue +12 -0
  111. package/app/components/ui/dialog/DialogOverlay.vue +26 -0
  112. package/app/components/ui/dialog/DialogPortal.vue +12 -0
  113. package/app/components/ui/dialog/DialogTitle.vue +21 -0
  114. package/app/components/ui/dialog/DialogTrigger.vue +12 -0
  115. package/app/components/ui/dialog/index.ts +10 -0
  116. package/app/components/ui/dropdown-menu/DropdownMenu.vue +15 -0
  117. package/app/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +36 -0
  118. package/app/components/ui/dropdown-menu/DropdownMenuContent.vue +40 -0
  119. package/app/components/ui/dropdown-menu/DropdownMenuGroup.vue +12 -0
  120. package/app/components/ui/dropdown-menu/DropdownMenuItem.vue +41 -0
  121. package/app/components/ui/dropdown-menu/DropdownMenuLabel.vue +25 -0
  122. package/app/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +15 -0
  123. package/app/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +37 -0
  124. package/app/components/ui/dropdown-menu/DropdownMenuSeparator.vue +23 -0
  125. package/app/components/ui/dropdown-menu/DropdownMenuShortcut.vue +17 -0
  126. package/app/components/ui/dropdown-menu/DropdownMenuSub.vue +15 -0
  127. package/app/components/ui/dropdown-menu/DropdownMenuSubContent.vue +29 -0
  128. package/app/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +31 -0
  129. package/app/components/ui/dropdown-menu/DropdownMenuTrigger.vue +14 -0
  130. package/app/components/ui/dropdown-menu/index.ts +16 -0
  131. package/app/components/ui/input/Input.vue +23 -0
  132. package/app/components/ui/input/index.ts +1 -0
  133. package/app/components/ui/kbd/Kbd.vue +23 -0
  134. package/app/components/ui/kbd/KbdGroup.vue +14 -0
  135. package/app/components/ui/kbd/index.ts +22 -0
  136. package/app/components/ui/label/Label.vue +14 -0
  137. package/app/components/ui/label/index.ts +1 -0
  138. package/app/components/ui/scroll-area/ScrollArea.vue +39 -0
  139. package/app/components/ui/scroll-area/ScrollBar.vue +33 -0
  140. package/app/components/ui/scroll-area/index.ts +2 -0
  141. package/app/components/ui/separator/Separator.vue +27 -0
  142. package/app/components/ui/separator/index.ts +1 -0
  143. package/app/components/ui/sheet/Sheet.vue +15 -0
  144. package/app/components/ui/sheet/SheetClose.vue +12 -0
  145. package/app/components/ui/sheet/SheetContent.vue +59 -0
  146. package/app/components/ui/sheet/SheetDescription.vue +21 -0
  147. package/app/components/ui/sheet/SheetFooter.vue +12 -0
  148. package/app/components/ui/sheet/SheetHeader.vue +12 -0
  149. package/app/components/ui/sheet/SheetOverlay.vue +26 -0
  150. package/app/components/ui/sheet/SheetTitle.vue +21 -0
  151. package/app/components/ui/sheet/SheetTrigger.vue +12 -0
  152. package/app/components/ui/sheet/index.ts +8 -0
  153. package/app/components/ui/switch/Switch.vue +39 -0
  154. package/app/components/ui/switch/index.ts +1 -0
  155. package/app/components/ui/tabs/Tabs.vue +24 -0
  156. package/app/components/ui/tabs/TabsContent.vue +21 -0
  157. package/app/components/ui/tabs/TabsList.vue +26 -0
  158. package/app/components/ui/tabs/TabsTrigger.vue +28 -0
  159. package/app/components/ui/tabs/index.ts +4 -0
  160. package/app/components/ui/textarea/Textarea.vue +31 -0
  161. package/app/components/ui/textarea/index.ts +1 -0
  162. package/app/composables/site-navigation.utils.ts +80 -0
  163. package/app/composables/useCanonicalUrl.ts +9 -0
  164. package/app/composables/useContentRouteAlternates.ts +43 -0
  165. package/app/composables/useGinkoAnalytics.ts +37 -0
  166. package/app/composables/useGinkoDocsConfig.ts +6 -0
  167. package/app/composables/useGinkoOgImage.ts +20 -0
  168. package/app/composables/useLocalizedPath.ts +12 -0
  169. package/app/composables/useLocalizedRouteSwitch.ts +31 -0
  170. package/app/composables/usePageMarkdownActions.ts +79 -0
  171. package/app/composables/useSchemaJsonLd.ts +25 -0
  172. package/app/composables/useSiteNavigation.ts +86 -0
  173. package/app/config/site.utils.ts +36 -0
  174. package/app/error.vue +125 -0
  175. package/app/features/docs/components/DocsContributeLinks.vue +65 -0
  176. package/app/features/docs/components/DocsMobileToc.vue +104 -0
  177. package/app/features/docs/components/DocsPageContent.vue +188 -0
  178. package/app/features/docs/components/DocsPageNav.vue +57 -0
  179. package/app/features/docs/components/DocsSidebar.vue +129 -0
  180. package/app/features/docs/components/DocsSidebarDropdown.vue +70 -0
  181. package/app/features/docs/components/DocsSidebarItem.vue +169 -0
  182. package/app/features/docs/components/DocsSidebarList.vue +35 -0
  183. package/app/features/docs/components/DocsSidebarTabs.vue +35 -0
  184. package/app/features/docs/components/DocsToc.vue +60 -0
  185. package/app/features/docs/composables/useDocsEntryPath.ts +13 -0
  186. package/app/features/docs/composables/useDocsNavigation.ts +29 -0
  187. package/app/features/docs/composables/useDocsNavigationData.ts +15 -0
  188. package/app/features/docs/composables/useScrollspy.ts +67 -0
  189. package/app/features/docs/docs-navigation.ts +170 -0
  190. package/app/features/search/command-center.ts +156 -0
  191. package/app/features/search/components/SiteCommandCenter.vue +323 -0
  192. package/app/features/search/components/SiteSearchPageHighlight.vue +124 -0
  193. package/app/features/search/useCommandCenter.ts +300 -0
  194. package/app/layouts/blog.vue +15 -0
  195. package/app/layouts/default.vue +12 -0
  196. package/app/layouts/docs.vue +20 -0
  197. package/app/lib/errors.ts +84 -0
  198. package/app/lib/schema-org.ts +38 -0
  199. package/app/lib/utils.ts +7 -0
  200. package/app/pages/blog/[slug].vue +211 -0
  201. package/app/pages/blog/index.vue +106 -0
  202. package/app/pages/docs/[...slug].vue +10 -0
  203. package/app/pages/docs/index.vue +23 -0
  204. package/app/pages/index.vue +140 -0
  205. package/app/plugins/ssr-width.ts +6 -0
  206. package/app/utils/content.ts +56 -0
  207. package/app/utils/index.ts +1 -0
  208. package/components.ts +9 -0
  209. package/content.js +175 -0
  210. package/content.ts +148 -0
  211. package/i18n/i18n.config.ts +10 -0
  212. package/i18n/locales.ts +81 -0
  213. package/i18n/messages/global/banner.ts +8 -0
  214. package/i18n/messages/global/blog.ts +14 -0
  215. package/i18n/messages/global/command.ts +44 -0
  216. package/i18n/messages/global/docs.ts +32 -0
  217. package/i18n/messages/global/errors.ts +36 -0
  218. package/i18n/messages/global/feedback.ts +11 -0
  219. package/i18n/messages/global/index.ts +21 -0
  220. package/i18n/messages/global/nav.ts +18 -0
  221. package/i18n/messages/global/site.ts +4 -0
  222. package/i18n/messages/global/theme.ts +7 -0
  223. package/i18n/messages/index.ts +20 -0
  224. package/i18n/messages/localize.ts +35 -0
  225. package/i18n/messages/source.ts +5 -0
  226. package/i18n/routes.ts +33 -0
  227. package/icon-bundle.ts +141 -0
  228. package/index.d.ts +13 -0
  229. package/modules/feature-routing.ts +32 -0
  230. package/nuxt.config.ts +194 -0
  231. package/package.json +91 -0
  232. package/runtime/markdown/inline-code-highlight.ts +155 -0
  233. package/runtime/server/agent-markdown.ts +21 -0
  234. package/runtime/utils.ts +7 -0
  235. package/server/mcp/tools/get-page.ts +14 -0
  236. package/server/mcp/tools/list-pages.ts +10 -0
  237. package/server/plugins/agent-markdown.ts +6 -0
  238. package/shared/route-slugs.ts +5 -0
  239. package/shared/types/app-config.ts +100 -0
  240. package/tags.ts +204 -0
@@ -0,0 +1,1154 @@
1
+ .content-prose,
2
+ .content-prose.content-prose,
3
+ [data-fd-codeblock] {
4
+ --content-prose-foreground: color-mix(in oklab, var(--foreground) 85%, transparent);
5
+ --content-prose-heading-foreground: color-mix(in oklab, var(--foreground) 90%, transparent);
6
+ --content-prose-inline-code-background: var(--background);
7
+ --content-prose-inline-code-foreground: var(--foreground);
8
+ --content-prose-code-highlight-border: var(--code-border);
9
+ /* Kept light enough that Shiki's light-plus tokens stay WCAG AA on top. */
10
+ --content-prose-code-highlight-background: color-mix(in oklab, var(--primary) 5%, transparent);
11
+ --content-prose-code-add-background: color-mix(in oklab, var(--chart-2) 22%, transparent);
12
+ --content-prose-code-remove-background: color-mix(in oklab, var(--destructive) 18%, transparent);
13
+ --content-media-bleed-md: 2rem;
14
+ --content-media-bleed-lg: 6rem;
15
+ --content-media-bleed-xl: 12rem;
16
+ }
17
+
18
+ .content-prose,
19
+ .content-prose.content-prose {
20
+ color: var(--content-prose-foreground);
21
+ font-size: 1rem;
22
+ line-height: 1.75;
23
+ text-wrap: pretty;
24
+ }
25
+
26
+ .content-prose.content-prose-docs {
27
+ --content-media-bleed-md: 1rem;
28
+ --content-media-bleed-lg: 1.5rem;
29
+ --content-media-bleed-xl: 2rem;
30
+ }
31
+
32
+ .content-prose :where(h1, h2, h3, h4, h5, h6) {
33
+ color: var(--content-prose-heading-foreground);
34
+ }
35
+
36
+ .content-prose :where(p) {
37
+ margin-top: 1rem;
38
+ margin-bottom: 1rem;
39
+ }
40
+
41
+ .content-prose p,
42
+ .content-prose li {
43
+ font-size: inherit;
44
+ line-height: inherit;
45
+ }
46
+
47
+ .content-prose :where(h1) {
48
+ margin-top: 2.5rem;
49
+ margin-bottom: 0.75rem;
50
+ }
51
+
52
+ .content-prose h1 {
53
+ font-size: 1.25rem;
54
+ line-height: 1.75rem;
55
+ font-weight: 600;
56
+ letter-spacing: 0;
57
+ }
58
+
59
+ .content-prose :where(h2) {
60
+ margin-top: 2.5rem;
61
+ margin-bottom: 0.75rem;
62
+ }
63
+
64
+ .content-prose h2 {
65
+ font-size: 1.25rem;
66
+ line-height: 1.75rem;
67
+ font-weight: 600;
68
+ letter-spacing: 0;
69
+ }
70
+
71
+ .content-prose :where(h3) {
72
+ margin-top: 2rem;
73
+ margin-bottom: 0.5rem;
74
+ }
75
+
76
+ .content-prose h3 {
77
+ font-size: 1.125rem;
78
+ line-height: 1.625rem;
79
+ font-weight: 600;
80
+ letter-spacing: 0;
81
+ }
82
+
83
+ .content-prose :where(h4, h5, h6) {
84
+ margin-top: 1.5rem;
85
+ margin-bottom: 0.5rem;
86
+ }
87
+
88
+ .content-prose h4,
89
+ .content-prose h5,
90
+ .content-prose h6 {
91
+ font-size: 0.875rem;
92
+ line-height: 1.5rem;
93
+ font-weight: 600;
94
+ letter-spacing: 0;
95
+ }
96
+
97
+ .content-prose :where(h2, h3, h4, h5, h6) + :where(p, ul, ol, blockquote, table, .not-prose) {
98
+ margin-top: 0;
99
+ }
100
+
101
+ .content-prose :where(ul, ol) {
102
+ margin-top: 1rem;
103
+ margin-bottom: 1rem;
104
+ padding-left: 1.25rem;
105
+ }
106
+
107
+ .content-prose :where(ul) {
108
+ list-style-type: disc;
109
+ }
110
+
111
+ .content-prose :where(ol) {
112
+ list-style-type: decimal;
113
+ }
114
+
115
+ .content-prose :where(ul ul) {
116
+ list-style-type: circle;
117
+ }
118
+
119
+ .content-prose :where(ul ul ul) {
120
+ list-style-type: square;
121
+ }
122
+
123
+ .content-prose :where(ol ol) {
124
+ list-style-type: lower-alpha;
125
+ }
126
+
127
+ .content-prose :where(ol ol ol) {
128
+ list-style-type: lower-roman;
129
+ }
130
+
131
+ .content-prose :where(li) {
132
+ margin-top: 0.375rem;
133
+ margin-bottom: 0.375rem;
134
+ }
135
+
136
+ .content-prose :where(li > p) {
137
+ margin-top: 0.5rem;
138
+ margin-bottom: 0.5rem;
139
+ }
140
+
141
+ .content-prose :where(blockquote) {
142
+ margin-top: 1.25rem;
143
+ margin-bottom: 1.25rem;
144
+ border-left: 2px solid color-mix(in oklab, var(--primary) 35%, var(--border));
145
+ padding-left: 1rem;
146
+ color: color-mix(in oklab, var(--foreground) 82%, transparent);
147
+ font-size: 0.9375rem;
148
+ font-style: italic;
149
+ line-height: 1.75;
150
+ }
151
+
152
+ .content-prose :where(blockquote > p) {
153
+ margin-top: 0.5rem;
154
+ margin-bottom: 0.5rem;
155
+ }
156
+
157
+ .content-prose :where(blockquote > p:first-child) {
158
+ margin-top: 0;
159
+ }
160
+
161
+ .content-prose :where(blockquote > p:last-child) {
162
+ margin-bottom: 0;
163
+ }
164
+
165
+ .content-prose :where(hr) {
166
+ margin-top: 2rem;
167
+ margin-bottom: 2rem;
168
+ border: 0;
169
+ border-top: 1px solid var(--border);
170
+ }
171
+
172
+ .content-prose :where(figure, .not-prose) {
173
+ margin-top: 1.5rem;
174
+ margin-bottom: 1.5rem;
175
+ }
176
+
177
+ .content-prose :where(figcaption, .content-caption) {
178
+ color: var(--muted-foreground);
179
+ font-size: 0.875rem;
180
+ line-height: 1.5rem;
181
+ }
182
+
183
+ .content-layout-row {
184
+ display: flex;
185
+ width: 100%;
186
+ height: 100%;
187
+ flex-direction: column;
188
+ gap: 0.5rem;
189
+ }
190
+
191
+ .content-layout-row-border,
192
+ .content-layout-row-border-dashed {
193
+ border: 1px solid var(--border);
194
+ border-radius: var(--radius-lg);
195
+ padding: 0.5rem;
196
+ }
197
+
198
+ .content-layout-row-border-dashed {
199
+ border-style: dashed;
200
+ }
201
+
202
+ .content-layout-row-outline,
203
+ .content-layout-row-outline-dashed {
204
+ border-radius: var(--radius-lg);
205
+ padding: 0.5rem;
206
+ outline: 1px solid var(--border);
207
+ outline-offset: 2px;
208
+ }
209
+
210
+ .content-layout-row-outline-dashed {
211
+ outline-style: dashed;
212
+ }
213
+
214
+ .content-layout-column {
215
+ width: 100%;
216
+ min-width: 0;
217
+ }
218
+
219
+ .content-layout-column-inner {
220
+ height: 100%;
221
+ padding-top: 0.5rem;
222
+ padding-bottom: 0.5rem;
223
+ }
224
+
225
+ .content-layout-column-divider {
226
+ border-bottom: 1px solid var(--border);
227
+ }
228
+
229
+ .content-layout-column-divider-dashed {
230
+ border-bottom-style: dashed;
231
+ }
232
+
233
+ @media (min-width: 640px) {
234
+ .content-layout-row {
235
+ gap: 1rem;
236
+ }
237
+ }
238
+
239
+ @media (min-width: 768px) {
240
+ .content-layout-row {
241
+ flex-direction: row;
242
+ }
243
+
244
+ .content-layout-column-sm {
245
+ width: 33.333333%;
246
+ }
247
+
248
+ .content-layout-column-md {
249
+ width: 50%;
250
+ }
251
+
252
+ .content-layout-column-lg {
253
+ width: 66.666667%;
254
+ }
255
+
256
+ .content-layout-column-divider {
257
+ border-right: 1px solid var(--border);
258
+ border-bottom: 0;
259
+ }
260
+
261
+ .content-layout-column-divider-dashed {
262
+ border-right-style: dashed;
263
+ }
264
+ }
265
+
266
+ .content-prose :where(a) {
267
+ color: var(--foreground);
268
+ font-weight: 500;
269
+ text-decoration-line: underline;
270
+ text-underline-offset: 4px;
271
+ }
272
+
273
+ .content-prose :where(a:hover) {
274
+ color: var(--primary);
275
+ }
276
+
277
+ .content-prose :where(a.not-prose) {
278
+ color: inherit;
279
+ font-weight: inherit;
280
+ text-decoration-line: none;
281
+ }
282
+
283
+ .content-prose :where(a.not-prose:hover) {
284
+ color: inherit;
285
+ }
286
+
287
+ .content-prose :where(h1, h2, h3, h4, h5, h6) :where(a) {
288
+ color: inherit;
289
+ text-decoration-line: none;
290
+ }
291
+
292
+ .content-prose :where(h1, h2, h3, h4, h5, h6) :where(a:hover) {
293
+ color: inherit;
294
+ }
295
+
296
+ .content-code,
297
+ .content-prose :where(code):not(:where(pre code, [class~="not-prose"], [class~="not-prose"] *)) {
298
+ display: inline;
299
+ position: relative;
300
+ max-width: 100%;
301
+ border: 1px solid color-mix(in oklab, var(--foreground) 15%, transparent);
302
+ border-radius: max(0.3125rem, calc(var(--radius) - 5px));
303
+ box-decoration-break: clone;
304
+ -webkit-box-decoration-break: clone;
305
+ background-color: var(--content-prose-inline-code-background, var(--muted));
306
+ color: var(--content-prose-inline-code-foreground, var(--foreground));
307
+ padding: 0 0.25rem;
308
+ font-family: var(--font-mono);
309
+ font-size: 0.8rem !important;
310
+ font-weight: 400;
311
+ line-height: inherit;
312
+ outline: none;
313
+ overflow-wrap: anywhere;
314
+ white-space: normal;
315
+ word-break: normal;
316
+ }
317
+
318
+ .content-prose :where(code):not(:where(pre code, [class~="not-prose"], [class~="not-prose"] *)) {
319
+ font-size: 0.8rem !important;
320
+ }
321
+
322
+ .content-code.shiki,
323
+ .content-prose
324
+ :where(code.shiki):not(:where(pre code, [class~="not-prose"], [class~="not-prose"] *)) {
325
+ white-space: break-spaces;
326
+ }
327
+
328
+ .shiki span {
329
+ background-color: var(--shiki-default-bg, transparent);
330
+ color: var(--shiki-default, var(--shiki-light, currentColor));
331
+ font-style: var(--shiki-default-font-style, var(--shiki-light-font-style, inherit));
332
+ font-weight: var(--shiki-default-font-weight, var(--shiki-light-font-weight, inherit));
333
+ text-decoration: var(
334
+ --shiki-default-text-decoration,
335
+ var(--shiki-light-text-decoration, inherit)
336
+ );
337
+ }
338
+
339
+ .content-prose :where(pre code) {
340
+ border: 0;
341
+ background-color: transparent;
342
+ color: inherit;
343
+ padding: 0;
344
+ font-size: inherit;
345
+ font-weight: inherit;
346
+ }
347
+
348
+ .content-prose :where(strong) {
349
+ color: var(--foreground);
350
+ font-weight: 600;
351
+ }
352
+
353
+ .content-prose :where(table) {
354
+ width: 100%;
355
+ margin: 0;
356
+ }
357
+
358
+ .content-table {
359
+ width: 100%;
360
+ margin-top: 1.25rem;
361
+ margin-bottom: 1.25rem;
362
+ overflow-x: auto;
363
+ border: 1px solid var(--border);
364
+ border-radius: var(--radius);
365
+ box-shadow: var(--shadow-xs);
366
+ }
367
+
368
+ .content-table table {
369
+ width: 100%;
370
+ caption-side: bottom;
371
+ font-size: 0.875rem;
372
+ line-height: 1.5rem;
373
+ }
374
+
375
+ .content-table thead {
376
+ background-color: color-mix(in oklab, var(--muted) 50%, transparent);
377
+ }
378
+
379
+ .content-table th {
380
+ height: 2.25rem;
381
+ padding: 0.5rem 0.75rem;
382
+ text-align: left;
383
+ vertical-align: middle;
384
+ color: var(--foreground);
385
+ font-weight: 500;
386
+ }
387
+
388
+ .content-table td {
389
+ padding: 0.5rem 0.75rem;
390
+ vertical-align: middle;
391
+ color: var(--muted-foreground);
392
+ }
393
+
394
+ .content-table tr {
395
+ border-bottom: 1px solid var(--border);
396
+ transition: background-color 150ms ease;
397
+ }
398
+
399
+ .content-table tr:hover {
400
+ background-color: color-mix(in oklab, var(--muted) 30%, transparent);
401
+ }
402
+
403
+ .content-table tbody tr:last-child {
404
+ border-bottom: 0;
405
+ }
406
+
407
+ /* Inside tables the wrapper scrolls horizontally, so inline code chips must
408
+ not break mid-token (e.g. "content.confi / g.ts" on narrow viewports). */
409
+ .content-table :where(th, td) :where(code, .content-code) {
410
+ white-space: nowrap;
411
+ overflow-wrap: normal;
412
+ }
413
+
414
+ html.dark .shiki span {
415
+ background-color: var(--shiki-dark-bg, transparent);
416
+ color: var(--shiki-dark) !important;
417
+ font-style: var(--shiki-dark-font-style, inherit) !important;
418
+ font-weight: var(--shiki-dark-font-weight, inherit) !important;
419
+ text-decoration: var(--shiki-dark-text-decoration, inherit) !important;
420
+ }
421
+
422
+ [data-fd-codeblock] {
423
+ background-color: var(--secondary);
424
+ color: var(--foreground);
425
+ }
426
+
427
+ .content-codeblock {
428
+ min-width: 0;
429
+ max-width: 100%;
430
+ margin-top: 0.875rem;
431
+ margin-bottom: 0.875rem;
432
+ border-radius: var(--radius);
433
+ color: var(--foreground);
434
+ font-size: 0.8125rem;
435
+ line-height: 1.5;
436
+ }
437
+
438
+ .content-codeblock-plain {
439
+ padding: 0.25rem;
440
+ }
441
+
442
+ .content-codeblock-with-caption {
443
+ padding: 0.125rem 0.25rem 0.25rem;
444
+ }
445
+
446
+ .content-codeblock [data-fd-caption] {
447
+ display: flex;
448
+ height: 1.75rem;
449
+ align-items: center;
450
+ justify-content: space-between;
451
+ gap: 0.5rem;
452
+ padding-right: 0.25rem;
453
+ padding-left: 0.5rem;
454
+ /* Strong enough against the caption's muted background for WCAG AA. */
455
+ color: color-mix(in oklab, var(--foreground) 80%, var(--muted-foreground));
456
+ font-size: 0.8125rem;
457
+ font-weight: 500;
458
+ line-height: 1rem;
459
+ }
460
+
461
+ .content-codeblock-caption-icon {
462
+ width: 0.8125rem;
463
+ height: 0.8125rem;
464
+ flex-shrink: 0;
465
+ }
466
+
467
+ .content-codeblock .fd-scroll-container {
468
+ width: 100%;
469
+ max-width: 100%;
470
+ overflow-x: auto;
471
+ overflow-y: hidden;
472
+ overscroll-behavior-x: none;
473
+ border: 1px solid var(--code-border);
474
+ border-radius: calc(var(--radius) - 2px);
475
+ background-color: var(--background);
476
+ }
477
+
478
+ .content-codeblock pre {
479
+ min-width: 100%;
480
+ padding-top: 0.75rem;
481
+ padding-bottom: 0.75rem;
482
+ color: var(--code-foreground);
483
+ font-size: 0.8125rem;
484
+ line-height: 1.5;
485
+ outline: none;
486
+ }
487
+
488
+ .content-codeblock pre > code {
489
+ display: flex;
490
+ width: max-content;
491
+ min-width: 100%;
492
+ flex-direction: column;
493
+ }
494
+
495
+ .content-codeblock-copy-button {
496
+ display: inline-flex;
497
+ width: 1.5rem;
498
+ height: 1.5rem;
499
+ flex-shrink: 0;
500
+ align-items: center;
501
+ justify-content: center;
502
+ border: 0;
503
+ border-radius: var(--radius);
504
+ background-color: transparent;
505
+ color: color-mix(in oklab, var(--primary) 45%, transparent);
506
+ font-size: 0.875rem;
507
+ font-weight: 500;
508
+ white-space: nowrap;
509
+ outline: none;
510
+ user-select: none;
511
+ transition:
512
+ color 150ms ease,
513
+ background-color 150ms ease,
514
+ opacity 150ms ease,
515
+ transform 150ms ease;
516
+ }
517
+
518
+ .content-codeblock-copy-button:hover,
519
+ .content-codeblock-copy-button:focus-visible {
520
+ background-color: var(--muted);
521
+ color: color-mix(in oklab, var(--primary) 70%, transparent);
522
+ }
523
+
524
+ .content-codeblock-copy-button:focus-visible {
525
+ opacity: 1;
526
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--ring) 50%, transparent);
527
+ }
528
+
529
+ .content-codeblock-copy-button:active {
530
+ transform: scale(0.9);
531
+ }
532
+
533
+ .content-codeblock-copy-button-floating {
534
+ opacity: 0;
535
+ }
536
+
537
+ .content-codeblock:hover .content-codeblock-copy-button-floating,
538
+ .content-codeblock-copy-button-floating:focus,
539
+ .content-codeblock-copy-button-floating:focus-visible {
540
+ opacity: 1;
541
+ }
542
+
543
+ .content-codeblock-in-group {
544
+ margin: 0;
545
+ padding: 0;
546
+ border-radius: 0;
547
+ background-color: transparent;
548
+ }
549
+
550
+ .content-codeblock-in-group .fd-scroll-container {
551
+ border: 0;
552
+ border-radius: 0;
553
+ }
554
+
555
+ .content-codegroup {
556
+ min-width: 0;
557
+ max-width: 100%;
558
+ margin-top: 0.875rem;
559
+ margin-bottom: 0.875rem;
560
+ border-radius: var(--radius);
561
+ background-color: var(--secondary);
562
+ padding: 0.125rem 0.25rem 0.25rem;
563
+ }
564
+
565
+ .content-codegroup-header {
566
+ display: flex;
567
+ min-width: 0;
568
+ align-items: center;
569
+ justify-content: space-between;
570
+ gap: 0.5rem;
571
+ padding: 0.25rem 0.25rem 0.25rem 0.5rem;
572
+ }
573
+
574
+ .content-tabs {
575
+ min-width: 0;
576
+ max-width: 100%;
577
+ margin-top: 0.875rem;
578
+ margin-bottom: 0.875rem;
579
+ border-radius: var(--radius);
580
+ background-color: var(--secondary);
581
+ padding: 0.125rem 0.25rem 0.25rem;
582
+ }
583
+
584
+ .content-tabs-in-stack {
585
+ margin-bottom: 0;
586
+ border-radius: 0;
587
+ padding: 0;
588
+ }
589
+
590
+ .content-tabs-header {
591
+ display: flex;
592
+ min-width: 0;
593
+ align-items: center;
594
+ gap: 0.5rem;
595
+ padding: 0.25rem 0.25rem 0.25rem 0.5rem;
596
+ }
597
+
598
+ .content-tabs-list {
599
+ display: flex;
600
+ min-width: 0;
601
+ align-items: flex-end;
602
+ gap: 0.125rem;
603
+ overflow-x: auto;
604
+ overflow-y: hidden;
605
+ }
606
+
607
+ .content-tabs-tab {
608
+ display: inline-flex;
609
+ height: 1.75rem;
610
+ flex-shrink: 0;
611
+ appearance: none;
612
+ cursor: pointer;
613
+ align-items: center;
614
+ justify-content: center;
615
+ gap: 0.375rem;
616
+ border: 1px solid transparent;
617
+ border-radius: calc(var(--radius) - 2px);
618
+ background-color: transparent;
619
+ padding: 0 0.5rem;
620
+ color: var(--muted-foreground);
621
+ font-size: 0.875rem;
622
+ font-weight: 500;
623
+ line-height: 1rem;
624
+ white-space: nowrap;
625
+ outline: none;
626
+ transition:
627
+ color 150ms ease,
628
+ border-color 150ms ease;
629
+ }
630
+
631
+ .content-tabs-tab-icon {
632
+ width: 0.875rem;
633
+ height: 0.875rem;
634
+ flex-shrink: 0;
635
+ }
636
+
637
+ .content-tabs-tab:hover,
638
+ .content-tabs-tab:focus-visible,
639
+ .content-tabs-tab-active,
640
+ .content-tabs-tab[aria-selected="true"] {
641
+ color: var(--foreground);
642
+ }
643
+
644
+ .content-tabs-tab-active,
645
+ .content-tabs-tab[aria-selected="true"] {
646
+ border-color: color-mix(in oklab, var(--border) 80%, transparent);
647
+ background-color: var(--background);
648
+ box-shadow: var(--shadow-xs);
649
+ }
650
+
651
+ .content-tabs-tab:focus-visible {
652
+ outline: 2px solid color-mix(in oklab, var(--ring) 50%, transparent);
653
+ outline-offset: 2px;
654
+ }
655
+
656
+ .content-tabs-panels {
657
+ overflow: hidden;
658
+ border: 1px solid var(--code-border);
659
+ border-radius: calc(var(--radius) - 2px);
660
+ background-color: var(--background);
661
+ }
662
+
663
+ .content-tabs-content-area {
664
+ margin: 0;
665
+ }
666
+
667
+ .content-codegroup-tabs {
668
+ display: flex;
669
+ min-width: 0;
670
+ align-items: flex-end;
671
+ gap: 0.125rem;
672
+ overflow-x: auto;
673
+ overflow-y: hidden;
674
+ }
675
+
676
+ .content-codegroup-tab {
677
+ display: inline-flex;
678
+ height: 1.625rem;
679
+ flex-shrink: 0;
680
+ appearance: none;
681
+ cursor: pointer;
682
+ align-items: center;
683
+ justify-content: center;
684
+ gap: 0.375rem;
685
+ border: 0;
686
+ border-bottom: 1px solid transparent;
687
+ border-radius: 0;
688
+ background-color: transparent;
689
+ padding: 0 0.375rem 0.25rem;
690
+ color: var(--muted-foreground);
691
+ font-size: 0.8125rem;
692
+ font-weight: 500;
693
+ line-height: 1rem;
694
+ white-space: nowrap;
695
+ outline: none;
696
+ transition:
697
+ color 150ms ease,
698
+ border-color 150ms ease;
699
+ }
700
+
701
+ .content-codegroup-tab:hover,
702
+ .content-codegroup-tab:focus-visible,
703
+ .content-codegroup-tab-active,
704
+ .content-codegroup-tab[aria-selected="true"] {
705
+ color: var(--primary);
706
+ }
707
+
708
+ .content-codegroup-tab-active,
709
+ .content-codegroup-tab[aria-selected="true"] {
710
+ border-bottom-color: var(--primary);
711
+ }
712
+
713
+ .content-codegroup-tab:focus-visible {
714
+ outline: 2px solid color-mix(in oklab, var(--ring) 50%, transparent);
715
+ outline-offset: 2px;
716
+ }
717
+
718
+ .content-codegroup-tab-icon {
719
+ width: 0.8125rem;
720
+ height: 0.8125rem;
721
+ flex-shrink: 0;
722
+ filter: grayscale(1);
723
+ opacity: 0.7;
724
+ transition:
725
+ filter 150ms ease,
726
+ opacity 150ms ease;
727
+ }
728
+
729
+ .content-codegroup-tab-active .content-codegroup-tab-icon,
730
+ .content-codegroup-tab[aria-selected="true"] .content-codegroup-tab-icon {
731
+ opacity: 1;
732
+ }
733
+
734
+ .content-codegroup-copy-button {
735
+ opacity: 1;
736
+ }
737
+
738
+ .content-codegroup-panels {
739
+ overflow: hidden;
740
+ border: 1px solid var(--code-border);
741
+ border-radius: calc(var(--radius) - 2px);
742
+ background-color: var(--background);
743
+ }
744
+
745
+ [data-fd-codeblock] pre code .line {
746
+ display: block;
747
+ min-height: 1.25rem;
748
+ padding-right: 0.75rem;
749
+ padding-left: 0.75rem;
750
+ }
751
+
752
+ [data-fd-codeblock] .language-text {
753
+ padding-right: 0.75rem;
754
+ padding-left: 0.75rem;
755
+ }
756
+
757
+ [data-fd-codeblock] .content-codeblock-inline-copy .line {
758
+ padding-right: 2.75rem;
759
+ }
760
+
761
+ [data-fd-codeblock] pre .line.highlight,
762
+ [data-fd-codeblock] pre .line.highlighted {
763
+ border-left: 2px solid var(--content-prose-code-highlight-border);
764
+ background-color: var(--content-prose-code-highlight-background);
765
+ padding-left: calc(0.75rem - 2px);
766
+ }
767
+
768
+ [data-fd-codeblock] pre .line.diff.add,
769
+ [data-fd-codeblock] pre .line.diff.remove {
770
+ position: relative;
771
+ display: block;
772
+ padding-left: 1.75rem;
773
+ }
774
+
775
+ [data-fd-codeblock] pre .line.diff.add::before,
776
+ [data-fd-codeblock] pre .line.diff.remove::before {
777
+ position: absolute;
778
+ left: 0.75rem;
779
+ font-weight: 700;
780
+ }
781
+
782
+ [data-fd-codeblock] pre .line.diff.add {
783
+ background-color: var(--content-prose-code-add-background);
784
+ }
785
+
786
+ [data-fd-codeblock] pre .line.diff.add::before {
787
+ color: var(--chart-2);
788
+ content: "+";
789
+ }
790
+
791
+ [data-fd-codeblock] pre .line.diff.remove {
792
+ background-color: var(--content-prose-code-remove-background);
793
+ }
794
+
795
+ [data-fd-codeblock] pre .line.diff.remove::before {
796
+ color: var(--destructive);
797
+ content: "-";
798
+ }
799
+
800
+ .content-prose :where(.footnote-ref) {
801
+ font-size: 0.75em;
802
+ line-height: 0;
803
+ vertical-align: super;
804
+ }
805
+
806
+ .content-prose :where(.footnote-ref a) {
807
+ color: var(--primary);
808
+ font-weight: 600;
809
+ scroll-margin-top: 7rem;
810
+ text-decoration-line: none;
811
+ }
812
+
813
+ .content-prose :where(.footnotes) {
814
+ margin-top: 2rem;
815
+ color: var(--muted-foreground);
816
+ font-size: 0.875rem;
817
+ line-height: 1.6;
818
+ }
819
+
820
+ .content-prose :where(.footnotes > hr) {
821
+ margin-top: 0;
822
+ margin-bottom: 1rem;
823
+ }
824
+
825
+ .content-prose :where(.footnotes-list) {
826
+ margin-top: 0;
827
+ margin-bottom: 0;
828
+ }
829
+
830
+ .content-prose :where(.footnotes-list li) {
831
+ margin-top: 0.375rem;
832
+ margin-bottom: 0.375rem;
833
+ scroll-margin-top: 7rem;
834
+ }
835
+
836
+ .content-prose :where(.footnote-backref) {
837
+ color: var(--primary);
838
+ font-weight: 600;
839
+ text-decoration-line: none;
840
+ }
841
+
842
+ .content-alert-title {
843
+ margin: 0;
844
+ }
845
+
846
+ .content-callout {
847
+ --content-callout-accent: var(--muted-foreground);
848
+ --content-callout-surface: color-mix(in oklab, var(--secondary) 90%, transparent);
849
+ width: 100%;
850
+ display: flex;
851
+ gap: 0.5rem;
852
+ border-radius: var(--radius);
853
+ background-color: var(--secondary);
854
+ padding: 0.75rem 0.75rem 0.75rem 0.4rem;
855
+ color: var(--foreground);
856
+ font-size: 0.875rem;
857
+ line-height: 1.625;
858
+ }
859
+
860
+ .content-callout-note {
861
+ --content-callout-accent: var(--muted-foreground);
862
+ --content-callout-surface: color-mix(in oklab, var(--secondary) 90%, transparent);
863
+ }
864
+
865
+ .content-callout-info {
866
+ --content-callout-accent: var(--info);
867
+ --content-callout-surface: color-mix(in oklab, var(--secondary) 90%, transparent);
868
+ }
869
+
870
+ .content-callout-warning {
871
+ --content-callout-accent: var(--warning);
872
+ --content-callout-surface: color-mix(in oklab, var(--secondary) 90%, transparent);
873
+ }
874
+
875
+ .content-callout-error {
876
+ --content-callout-accent: var(--destructive);
877
+ --content-callout-surface: color-mix(in oklab, var(--secondary) 90%, transparent);
878
+ }
879
+
880
+ .content-callout-success {
881
+ --content-callout-accent: var(--success);
882
+ --content-callout-surface: color-mix(in oklab, var(--secondary) 90%, transparent);
883
+ }
884
+
885
+ .content-callout-idea {
886
+ --content-callout-accent: var(--primary);
887
+ --content-callout-surface: color-mix(in oklab, var(--secondary) 90%, transparent);
888
+ }
889
+
890
+ .content-callout > .content-callout-bar {
891
+ width: 0.125rem;
892
+ flex-shrink: 0;
893
+ border-radius: var(--radius);
894
+ background-color: color-mix(in oklab, var(--content-callout-accent) 70%, transparent);
895
+ color: var(--content-callout-accent);
896
+ }
897
+
898
+ .content-callout > .content-callout-icon {
899
+ display: inline-flex;
900
+ width: 1.25rem !important;
901
+ height: 1.25rem !important;
902
+ transform: none !important;
903
+ align-items: center;
904
+ justify-content: center;
905
+ flex-shrink: 0;
906
+ border: 0;
907
+ border-radius: 0;
908
+ background-color: transparent;
909
+ color: var(--content-callout-accent);
910
+ }
911
+
912
+ .content-callout > .content-callout-icon > :where(svg, span, .iconify) {
913
+ width: 1.15rem !important;
914
+ height: 1.15rem !important;
915
+ }
916
+
917
+ .content-callout-body {
918
+ min-width: 0;
919
+ flex: 1;
920
+ }
921
+
922
+ .content-callout .content-prose {
923
+ font-size: 0.875rem;
924
+ line-height: inherit;
925
+ }
926
+
927
+ .content-callout .content-alert-title {
928
+ margin-bottom: 0.125rem;
929
+ color: var(--foreground);
930
+ font-size: 0.875rem;
931
+ font-weight: 600;
932
+ line-height: inherit;
933
+ }
934
+
935
+ .content-media {
936
+ margin-top: 1.5rem;
937
+ margin-bottom: 1.5rem;
938
+ overflow: hidden;
939
+ border: 1px solid var(--border);
940
+ border-radius: var(--radius);
941
+ background-color: var(--card);
942
+ box-shadow: var(--shadow-xs);
943
+ }
944
+
945
+ .content-media img {
946
+ display: block;
947
+ width: 100%;
948
+ }
949
+
950
+ .content-media figcaption {
951
+ border-top: 1px solid var(--border);
952
+ background-color: color-mix(in oklab, var(--muted) 30%, transparent);
953
+ padding: 0.75rem 1rem;
954
+ }
955
+
956
+ .content-media-description {
957
+ display: block;
958
+ margin-top: 0.25rem;
959
+ color: var(--muted-foreground);
960
+ }
961
+
962
+ .content-media[data-bleed="true"],
963
+ .content-doc-img[data-bleed="true"] {
964
+ margin-right: 0;
965
+ margin-left: 0;
966
+ }
967
+
968
+ @media (min-width: 768px) {
969
+ .content-media[data-bleed="true"],
970
+ .content-doc-img[data-bleed="true"] {
971
+ margin-right: calc(var(--content-media-bleed-md) * -1);
972
+ margin-left: calc(var(--content-media-bleed-md) * -1);
973
+ }
974
+ }
975
+
976
+ @media (min-width: 1024px) {
977
+ .content-media[data-bleed="true"],
978
+ .content-doc-img[data-bleed="true"] {
979
+ margin-right: calc(var(--content-media-bleed-lg) * -1);
980
+ margin-left: calc(var(--content-media-bleed-lg) * -1);
981
+ }
982
+ }
983
+
984
+ @media (min-width: 1280px) {
985
+ .content-media[data-bleed="true"],
986
+ .content-doc-img[data-bleed="true"] {
987
+ margin-right: calc(var(--content-media-bleed-xl) * -1);
988
+ margin-left: calc(var(--content-media-bleed-xl) * -1);
989
+ }
990
+ }
991
+
992
+ .content-card-group > * {
993
+ margin-top: 0 !important;
994
+ margin-bottom: 0 !important;
995
+ height: auto !important;
996
+ }
997
+
998
+ .content-card-group [data-slot="card"] {
999
+ height: auto;
1000
+ }
1001
+
1002
+ .content-card-icon {
1003
+ color: var(--content-card-icon-color, var(--muted-foreground));
1004
+ }
1005
+
1006
+ .content-prose > :where(.not-prose) + :where(.not-prose) {
1007
+ margin-top: 1rem;
1008
+ }
1009
+
1010
+ .content-prose > p:has(> img:only-child) {
1011
+ margin: 1.5rem 0;
1012
+ overflow: hidden;
1013
+ border: 1px solid var(--border);
1014
+ border-radius: 0.75rem;
1015
+ background-color: var(--card);
1016
+ box-shadow: var(--shadow-xs);
1017
+ }
1018
+
1019
+ .content-prose > p:has(> img[bleed="true"]:only-child) {
1020
+ margin-right: 0;
1021
+ margin-left: 0;
1022
+ }
1023
+
1024
+ .content-prose > p > img:only-child {
1025
+ display: block;
1026
+ width: 100%;
1027
+ height: auto;
1028
+ margin: 0;
1029
+ object-fit: cover;
1030
+ }
1031
+
1032
+ .content-prose > p > img[aspect="video"]:only-child {
1033
+ aspect-ratio: 16 / 9;
1034
+ }
1035
+
1036
+ .content-prose > p > img[aspect="wide"]:only-child {
1037
+ aspect-ratio: 21 / 9;
1038
+ }
1039
+
1040
+ .content-prose > p > img[aspect="square"]:only-child {
1041
+ aspect-ratio: 1 / 1;
1042
+ }
1043
+
1044
+ .content-prose > p > img[aspect="portrait"]:only-child {
1045
+ aspect-ratio: 4 / 5;
1046
+ }
1047
+
1048
+ @media (min-width: 768px) {
1049
+ .content-prose > p:has(> img[bleed="true"]:only-child) {
1050
+ margin-right: calc(var(--content-media-bleed-md) * -1);
1051
+ margin-left: calc(var(--content-media-bleed-md) * -1);
1052
+ }
1053
+ }
1054
+
1055
+ @media (min-width: 1024px) {
1056
+ .content-prose > p:has(> img[bleed="true"]:only-child) {
1057
+ margin-right: calc(var(--content-media-bleed-lg) * -1);
1058
+ margin-left: calc(var(--content-media-bleed-lg) * -1);
1059
+ }
1060
+ }
1061
+
1062
+ @media (min-width: 1280px) {
1063
+ .content-prose > p:has(> img[bleed="true"]:only-child) {
1064
+ margin-right: calc(var(--content-media-bleed-xl) * -1);
1065
+ margin-left: calc(var(--content-media-bleed-xl) * -1);
1066
+ }
1067
+ }
1068
+
1069
+ .content-prose-trim > :first-child {
1070
+ margin-top: 0 !important;
1071
+ }
1072
+
1073
+ .content-prose-trim > :last-child {
1074
+ margin-bottom: 0 !important;
1075
+ }
1076
+
1077
+ .content-steps {
1078
+ counter-reset: step;
1079
+ position: relative;
1080
+ margin: 1rem 0 1.5rem 0.875rem;
1081
+ border-inline-start: 1px solid var(--border);
1082
+ padding-inline-start: 2rem;
1083
+ }
1084
+
1085
+ .content-step {
1086
+ position: relative;
1087
+ min-height: 2rem;
1088
+ margin-block: 1.25rem;
1089
+ }
1090
+
1091
+ .content-step:first-child {
1092
+ margin-top: 0;
1093
+ }
1094
+
1095
+ .content-step:last-child {
1096
+ margin-bottom: 0;
1097
+ }
1098
+
1099
+ .content-step-marker {
1100
+ position: absolute;
1101
+ inset-block-start: 0.125rem;
1102
+ inset-inline-start: -2.875rem;
1103
+ display: flex;
1104
+ width: 1.75rem;
1105
+ height: 1.75rem;
1106
+ align-items: center;
1107
+ justify-content: center;
1108
+ border: 1px solid var(--border);
1109
+ border-radius: calc(var(--radius) - 2px);
1110
+ background-color: var(--secondary);
1111
+ color: var(--secondary-foreground);
1112
+ font-size: 0.875rem;
1113
+ font-weight: 500;
1114
+ line-height: 1.25rem;
1115
+ }
1116
+
1117
+ .content-steps[data-variant="numbered"] .content-step-marker {
1118
+ border-radius: 9999px;
1119
+ }
1120
+
1121
+ .content-steps[data-variant="numbered"] .content-step-marker::before {
1122
+ content: counter(step);
1123
+ counter-increment: step;
1124
+ }
1125
+
1126
+ .content-step-body {
1127
+ padding-block-start: 0.125rem;
1128
+ }
1129
+
1130
+ .content-step-title {
1131
+ margin: 0 0 0.375rem !important;
1132
+ color: var(--foreground);
1133
+ font-size: 1rem;
1134
+ line-height: 1.5rem;
1135
+ font-weight: 600;
1136
+ }
1137
+
1138
+ .fd-scroll-container::-webkit-scrollbar {
1139
+ width: 5px;
1140
+ height: 5px;
1141
+ }
1142
+
1143
+ .fd-scroll-container::-webkit-scrollbar-thumb {
1144
+ border-radius: 5px;
1145
+ background: var(--border);
1146
+ }
1147
+
1148
+ .fd-scroll-container::-webkit-scrollbar-track {
1149
+ background: transparent;
1150
+ }
1151
+
1152
+ .fd-scroll-container::-webkit-scrollbar-corner {
1153
+ display: none;
1154
+ }