@proyecto-viviana/silapse 0.4.0

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 (394) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +192 -0
  3. package/dist/accordion/index.d.ts +6 -0
  4. package/dist/accordion/index.d.ts.map +1 -0
  5. package/dist/actionbar/index.d.ts +34 -0
  6. package/dist/actionbar/index.d.ts.map +1 -0
  7. package/dist/actiongroup/index.d.ts +42 -0
  8. package/dist/actiongroup/index.d.ts.map +1 -0
  9. package/dist/alert/index.d.ts +13 -0
  10. package/dist/alert/index.d.ts.map +1 -0
  11. package/dist/autocomplete/index.d.ts +51 -0
  12. package/dist/autocomplete/index.d.ts.map +1 -0
  13. package/dist/avatar/index.d.ts +18 -0
  14. package/dist/avatar/index.d.ts.map +1 -0
  15. package/dist/badge/index.d.ts +12 -0
  16. package/dist/badge/index.d.ts.map +1 -0
  17. package/dist/breadcrumbs/index.d.ts +38 -0
  18. package/dist/breadcrumbs/index.d.ts.map +1 -0
  19. package/dist/button/ActionButton.d.ts +21 -0
  20. package/dist/button/ActionButton.d.ts.map +1 -0
  21. package/dist/button/Button.d.ts +19 -0
  22. package/dist/button/Button.d.ts.map +1 -0
  23. package/dist/button/ClearButton.d.ts +19 -0
  24. package/dist/button/ClearButton.d.ts.map +1 -0
  25. package/dist/button/FieldButton.d.ts +16 -0
  26. package/dist/button/FieldButton.d.ts.map +1 -0
  27. package/dist/button/LogicButton.d.ts +16 -0
  28. package/dist/button/LogicButton.d.ts.map +1 -0
  29. package/dist/button/ToggleButton.d.ts +19 -0
  30. package/dist/button/ToggleButton.d.ts.map +1 -0
  31. package/dist/button/index.d.ts +13 -0
  32. package/dist/button/index.d.ts.map +1 -0
  33. package/dist/button/types.d.ts +23 -0
  34. package/dist/button/types.d.ts.map +1 -0
  35. package/dist/buttongroup/index.d.ts +11 -0
  36. package/dist/buttongroup/index.d.ts.map +1 -0
  37. package/dist/calendar/DateField.d.ts +47 -0
  38. package/dist/calendar/DateField.d.ts.map +1 -0
  39. package/dist/calendar/DatePicker.d.ts +28 -0
  40. package/dist/calendar/DatePicker.d.ts.map +1 -0
  41. package/dist/calendar/DateRangePicker.d.ts +26 -0
  42. package/dist/calendar/DateRangePicker.d.ts.map +1 -0
  43. package/dist/calendar/RangeCalendar.d.ts +42 -0
  44. package/dist/calendar/RangeCalendar.d.ts.map +1 -0
  45. package/dist/calendar/TimeField.d.ts +44 -0
  46. package/dist/calendar/TimeField.d.ts.map +1 -0
  47. package/dist/calendar/index.d.ts +50 -0
  48. package/dist/calendar/index.d.ts.map +1 -0
  49. package/dist/card/index.d.ts +11 -0
  50. package/dist/card/index.d.ts.map +1 -0
  51. package/dist/checkbox/index.d.ts +43 -0
  52. package/dist/checkbox/index.d.ts.map +1 -0
  53. package/dist/color/ColorEditor.d.ts +17 -0
  54. package/dist/color/ColorEditor.d.ts.map +1 -0
  55. package/dist/color/ColorSwatchPicker.d.ts +36 -0
  56. package/dist/color/ColorSwatchPicker.d.ts.map +1 -0
  57. package/dist/color/index.d.ts +233 -0
  58. package/dist/color/index.d.ts.map +1 -0
  59. package/dist/combobox/index.d.ts +81 -0
  60. package/dist/combobox/index.d.ts.map +1 -0
  61. package/dist/components.css +1152 -0
  62. package/dist/contextualhelp/index.d.ts +18 -0
  63. package/dist/contextualhelp/index.d.ts.map +1 -0
  64. package/dist/custom/calendar-card/index.d.ts +12 -0
  65. package/dist/custom/calendar-card/index.d.ts.map +1 -0
  66. package/dist/custom/chip/index.d.ts +16 -0
  67. package/dist/custom/chip/index.d.ts.map +1 -0
  68. package/dist/custom/conversation/index.d.ts +32 -0
  69. package/dist/custom/conversation/index.d.ts.map +1 -0
  70. package/dist/custom/event-card/index.d.ts +30 -0
  71. package/dist/custom/event-card/index.d.ts.map +1 -0
  72. package/dist/custom/header/index.d.ts +16 -0
  73. package/dist/custom/header/index.d.ts.map +1 -0
  74. package/dist/custom/lateral-nav/index.d.ts +32 -0
  75. package/dist/custom/lateral-nav/index.d.ts.map +1 -0
  76. package/dist/custom/logo/index.d.ts +28 -0
  77. package/dist/custom/logo/index.d.ts.map +1 -0
  78. package/dist/custom/nav-header/index.d.ts +13 -0
  79. package/dist/custom/nav-header/index.d.ts.map +1 -0
  80. package/dist/custom/page-layout/index.d.ts +13 -0
  81. package/dist/custom/page-layout/index.d.ts.map +1 -0
  82. package/dist/custom/profile-card/index.d.ts +16 -0
  83. package/dist/custom/profile-card/index.d.ts.map +1 -0
  84. package/dist/custom/project-card/index.d.ts +24 -0
  85. package/dist/custom/project-card/index.d.ts.map +1 -0
  86. package/dist/custom/timeline-item/index.d.ts +28 -0
  87. package/dist/custom/timeline-item/index.d.ts.map +1 -0
  88. package/dist/datepicker/index.d.ts +10 -0
  89. package/dist/datepicker/index.d.ts.map +1 -0
  90. package/dist/dialog/AlertDialog.d.ts +41 -0
  91. package/dist/dialog/AlertDialog.d.ts.map +1 -0
  92. package/dist/dialog/Dialog.d.ts +62 -0
  93. package/dist/dialog/Dialog.d.ts.map +1 -0
  94. package/dist/dialog/index.d.ts +5 -0
  95. package/dist/dialog/index.d.ts.map +1 -0
  96. package/dist/disclosure/index.d.ts +84 -0
  97. package/dist/disclosure/index.d.ts.map +1 -0
  98. package/dist/divider/index.d.ts +6 -0
  99. package/dist/divider/index.d.ts.map +1 -0
  100. package/dist/dnd/index.d.ts +7 -0
  101. package/dist/dnd/index.d.ts.map +1 -0
  102. package/dist/dropzone/index.d.ts +13 -0
  103. package/dist/dropzone/index.d.ts.map +1 -0
  104. package/dist/filetrigger/index.d.ts +13 -0
  105. package/dist/filetrigger/index.d.ts.map +1 -0
  106. package/dist/form/Field.d.ts +35 -0
  107. package/dist/form/Field.d.ts.map +1 -0
  108. package/dist/form/HelpText.d.ts +23 -0
  109. package/dist/form/HelpText.d.ts.map +1 -0
  110. package/dist/form/index.d.ts +20 -0
  111. package/dist/form/index.d.ts.map +1 -0
  112. package/dist/gridlist/index.d.ts +92 -0
  113. package/dist/gridlist/index.d.ts.map +1 -0
  114. package/dist/icon/Illustration.d.ts +22 -0
  115. package/dist/icon/Illustration.d.ts.map +1 -0
  116. package/dist/icon/UIIcon.d.ts +24 -0
  117. package/dist/icon/UIIcon.d.ts.map +1 -0
  118. package/dist/icon/icons/GitHubIcon.d.ts +8 -0
  119. package/dist/icon/icons/GitHubIcon.d.ts.map +1 -0
  120. package/dist/icon/index.d.ts +40 -0
  121. package/dist/icon/index.d.ts.map +1 -0
  122. package/dist/illustratedmessage/index.d.ts +14 -0
  123. package/dist/illustratedmessage/index.d.ts.map +1 -0
  124. package/dist/image/index.d.ts +11 -0
  125. package/dist/image/index.d.ts.map +1 -0
  126. package/dist/index.d.ts +231 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +10697 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/index.ssr.js +8944 -0
  131. package/dist/index.ssr.js.map +1 -0
  132. package/dist/inlinealert/index.d.ts +6 -0
  133. package/dist/inlinealert/index.d.ts.map +1 -0
  134. package/dist/label/index.d.ts +14 -0
  135. package/dist/label/index.d.ts.map +1 -0
  136. package/dist/labeledvalue/index.d.ts +25 -0
  137. package/dist/labeledvalue/index.d.ts.map +1 -0
  138. package/dist/landmark/index.d.ts +83 -0
  139. package/dist/landmark/index.d.ts.map +1 -0
  140. package/dist/layout/Flex.d.ts +29 -0
  141. package/dist/layout/Flex.d.ts.map +1 -0
  142. package/dist/layout/Grid.d.ts +37 -0
  143. package/dist/layout/Grid.d.ts.map +1 -0
  144. package/dist/layout/css-utils.d.ts +23 -0
  145. package/dist/layout/css-utils.d.ts.map +1 -0
  146. package/dist/layout/index.d.ts +11 -0
  147. package/dist/layout/index.d.ts.map +1 -0
  148. package/dist/link/index.d.ts +39 -0
  149. package/dist/link/index.d.ts.map +1 -0
  150. package/dist/list/index.d.ts +6 -0
  151. package/dist/list/index.d.ts.map +1 -0
  152. package/dist/listbox/index.d.ts +47 -0
  153. package/dist/listbox/index.d.ts.map +1 -0
  154. package/dist/menu/ActionMenu.d.ts +24 -0
  155. package/dist/menu/ActionMenu.d.ts.map +1 -0
  156. package/dist/menu/ContextualHelpTrigger.d.ts +36 -0
  157. package/dist/menu/ContextualHelpTrigger.d.ts.map +1 -0
  158. package/dist/menu/SubmenuTrigger.d.ts +14 -0
  159. package/dist/menu/SubmenuTrigger.d.ts.map +1 -0
  160. package/dist/menu/index.d.ts +80 -0
  161. package/dist/menu/index.d.ts.map +1 -0
  162. package/dist/meter/index.d.ts +51 -0
  163. package/dist/meter/index.d.ts.map +1 -0
  164. package/dist/numberfield/index.d.ts +32 -0
  165. package/dist/numberfield/index.d.ts.map +1 -0
  166. package/dist/overlays/Modal.d.ts +21 -0
  167. package/dist/overlays/Modal.d.ts.map +1 -0
  168. package/dist/overlays/OpenTransition.d.ts +46 -0
  169. package/dist/overlays/OpenTransition.d.ts.map +1 -0
  170. package/dist/overlays/Overlay.d.ts +21 -0
  171. package/dist/overlays/Overlay.d.ts.map +1 -0
  172. package/dist/overlays/Tray.d.ts +18 -0
  173. package/dist/overlays/Tray.d.ts.map +1 -0
  174. package/dist/overlays/index.d.ts +18 -0
  175. package/dist/overlays/index.d.ts.map +1 -0
  176. package/dist/picker/index.d.ts +6 -0
  177. package/dist/picker/index.d.ts.map +1 -0
  178. package/dist/popover/index.d.ts +86 -0
  179. package/dist/popover/index.d.ts.map +1 -0
  180. package/dist/progress/ProgressCircle.d.ts +31 -0
  181. package/dist/progress/ProgressCircle.d.ts.map +1 -0
  182. package/dist/progress/index.d.ts +8 -0
  183. package/dist/progress/index.d.ts.map +1 -0
  184. package/dist/progress-bar/index.d.ts +51 -0
  185. package/dist/progress-bar/index.d.ts.map +1 -0
  186. package/dist/provider/index.d.ts +77 -0
  187. package/dist/provider/index.d.ts.map +1 -0
  188. package/dist/radio/index.d.ts +39 -0
  189. package/dist/radio/index.d.ts.map +1 -0
  190. package/dist/searchfield/index.d.ts +29 -0
  191. package/dist/searchfield/index.d.ts.map +1 -0
  192. package/dist/select/index.d.ts +72 -0
  193. package/dist/select/index.d.ts.map +1 -0
  194. package/dist/separator/index.d.ts +38 -0
  195. package/dist/separator/index.d.ts.map +1 -0
  196. package/dist/shared-element/index.d.ts +10 -0
  197. package/dist/shared-element/index.d.ts.map +1 -0
  198. package/dist/slider/RangeSlider.d.ts +48 -0
  199. package/dist/slider/RangeSlider.d.ts.map +1 -0
  200. package/dist/slider/index.d.ts +32 -0
  201. package/dist/slider/index.d.ts.map +1 -0
  202. package/dist/statuslight/index.d.ts +22 -0
  203. package/dist/statuslight/index.d.ts.map +1 -0
  204. package/dist/steplist/index.d.ts +15 -0
  205. package/dist/steplist/index.d.ts.map +1 -0
  206. package/dist/story-utils/ErrorBoundary.d.ts +17 -0
  207. package/dist/story-utils/ErrorBoundary.d.ts.map +1 -0
  208. package/dist/story-utils/generatePowerset.d.ts +32 -0
  209. package/dist/story-utils/generatePowerset.d.ts.map +1 -0
  210. package/dist/story-utils/index.d.ts +9 -0
  211. package/dist/story-utils/index.d.ts.map +1 -0
  212. package/dist/style-macro-s1/index.d.ts +5 -0
  213. package/dist/style-macro-s1/index.d.ts.map +1 -0
  214. package/dist/styles.css +487 -0
  215. package/dist/switch/ToggleSwitch.d.ts +28 -0
  216. package/dist/switch/ToggleSwitch.d.ts.map +1 -0
  217. package/dist/switch/index.d.ts +26 -0
  218. package/dist/switch/index.d.ts.map +1 -0
  219. package/dist/table/index.d.ts +140 -0
  220. package/dist/table/index.d.ts.map +1 -0
  221. package/dist/tabs/index.d.ts +56 -0
  222. package/dist/tabs/index.d.ts.map +1 -0
  223. package/dist/tag/index.d.ts +6 -0
  224. package/dist/tag/index.d.ts.map +1 -0
  225. package/dist/tag-group/index.d.ts +84 -0
  226. package/dist/tag-group/index.d.ts.map +1 -0
  227. package/dist/text/Heading.d.ts +22 -0
  228. package/dist/text/Heading.d.ts.map +1 -0
  229. package/dist/text/Keyboard.d.ts +16 -0
  230. package/dist/text/Keyboard.d.ts.map +1 -0
  231. package/dist/text/index.d.ts +20 -0
  232. package/dist/text/index.d.ts.map +1 -0
  233. package/dist/textfield/TextArea.d.ts +30 -0
  234. package/dist/textfield/TextArea.d.ts.map +1 -0
  235. package/dist/textfield/index.d.ts +27 -0
  236. package/dist/textfield/index.d.ts.map +1 -0
  237. package/dist/theme/types.d.ts +10 -0
  238. package/dist/theme/types.d.ts.map +1 -0
  239. package/dist/theme-dark/index.d.ts +10 -0
  240. package/dist/theme-dark/index.d.ts.map +1 -0
  241. package/dist/theme-default/index.d.ts +8 -0
  242. package/dist/theme-default/index.d.ts.map +1 -0
  243. package/dist/theme-express/index.d.ts +5 -0
  244. package/dist/theme-express/index.d.ts.map +1 -0
  245. package/dist/theme-light/index.d.ts +10 -0
  246. package/dist/theme-light/index.d.ts.map +1 -0
  247. package/dist/theme.css +360 -0
  248. package/dist/toast/index.d.ts +101 -0
  249. package/dist/toast/index.d.ts.map +1 -0
  250. package/dist/toolbar/index.d.ts +42 -0
  251. package/dist/toolbar/index.d.ts.map +1 -0
  252. package/dist/tooltip/index.d.ts +78 -0
  253. package/dist/tooltip/index.d.ts.map +1 -0
  254. package/dist/tree/index.d.ts +99 -0
  255. package/dist/tree/index.d.ts.map +1 -0
  256. package/dist/view/Content.d.ts +37 -0
  257. package/dist/view/Content.d.ts.map +1 -0
  258. package/dist/view/index.d.ts +13 -0
  259. package/dist/view/index.d.ts.map +1 -0
  260. package/dist/well/index.d.ts +11 -0
  261. package/dist/well/index.d.ts.map +1 -0
  262. package/package.json +67 -0
  263. package/src/accordion/index.tsx +19 -0
  264. package/src/actionbar/index.tsx +92 -0
  265. package/src/actiongroup/index.tsx +110 -0
  266. package/src/alert/index.tsx +59 -0
  267. package/src/assets/favicon.png +0 -0
  268. package/src/assets/fire.gif +0 -0
  269. package/src/autocomplete/index.tsx +151 -0
  270. package/src/avatar/index.tsx +75 -0
  271. package/src/badge/index.tsx +43 -0
  272. package/src/breadcrumbs/index.tsx +212 -0
  273. package/src/button/ActionButton.tsx +80 -0
  274. package/src/button/Button.tsx +76 -0
  275. package/src/button/ClearButton.tsx +81 -0
  276. package/src/button/FieldButton.tsx +60 -0
  277. package/src/button/LogicButton.tsx +62 -0
  278. package/src/button/ToggleButton.tsx +77 -0
  279. package/src/button/index.ts +12 -0
  280. package/src/button/types.ts +24 -0
  281. package/src/buttongroup/index.tsx +25 -0
  282. package/src/calendar/DateField.tsx +208 -0
  283. package/src/calendar/DatePicker.tsx +257 -0
  284. package/src/calendar/DateRangePicker.tsx +254 -0
  285. package/src/calendar/RangeCalendar.tsx +238 -0
  286. package/src/calendar/TimeField.tsx +204 -0
  287. package/src/calendar/index.tsx +225 -0
  288. package/src/card/index.tsx +24 -0
  289. package/src/checkbox/index.tsx +259 -0
  290. package/src/color/ColorEditor.tsx +60 -0
  291. package/src/color/ColorSwatchPicker.tsx +169 -0
  292. package/src/color/index.tsx +725 -0
  293. package/src/combobox/index.tsx +398 -0
  294. package/src/components.css +1152 -0
  295. package/src/contextualhelp/index.tsx +42 -0
  296. package/src/custom/calendar-card/index.tsx +66 -0
  297. package/src/custom/chip/index.tsx +47 -0
  298. package/src/custom/conversation/index.tsx +107 -0
  299. package/src/custom/event-card/index.tsx +133 -0
  300. package/src/custom/header/index.tsx +33 -0
  301. package/src/custom/lateral-nav/index.tsx +88 -0
  302. package/src/custom/logo/index.tsx +58 -0
  303. package/src/custom/nav-header/index.tsx +45 -0
  304. package/src/custom/page-layout/index.tsx +29 -0
  305. package/src/custom/profile-card/index.tsx +64 -0
  306. package/src/custom/project-card/index.tsx +59 -0
  307. package/src/custom/timeline-item/index.tsx +105 -0
  308. package/src/datepicker/index.tsx +23 -0
  309. package/src/dialog/AlertDialog.tsx +140 -0
  310. package/src/dialog/Dialog.tsx +195 -0
  311. package/src/dialog/index.tsx +5 -0
  312. package/src/disclosure/index.tsx +310 -0
  313. package/src/divider/index.tsx +11 -0
  314. package/src/dnd/index.tsx +23 -0
  315. package/src/dropzone/index.tsx +48 -0
  316. package/src/filetrigger/index.tsx +28 -0
  317. package/src/form/Field.tsx +94 -0
  318. package/src/form/HelpText.tsx +48 -0
  319. package/src/form/index.tsx +48 -0
  320. package/src/gridlist/index.tsx +403 -0
  321. package/src/icon/Illustration.tsx +55 -0
  322. package/src/icon/UIIcon.tsx +59 -0
  323. package/src/icon/icons/GitHubIcon.tsx +22 -0
  324. package/src/icon/index.tsx +81 -0
  325. package/src/illustratedmessage/index.tsx +44 -0
  326. package/src/image/index.tsx +22 -0
  327. package/src/index.ts +666 -0
  328. package/src/inlinealert/index.tsx +10 -0
  329. package/src/label/index.tsx +36 -0
  330. package/src/labeledvalue/index.tsx +62 -0
  331. package/src/landmark/index.tsx +231 -0
  332. package/src/layout/Flex.tsx +94 -0
  333. package/src/layout/Grid.tsx +98 -0
  334. package/src/layout/css-utils.ts +31 -0
  335. package/src/layout/index.tsx +12 -0
  336. package/src/link/index.tsx +132 -0
  337. package/src/list/index.tsx +17 -0
  338. package/src/listbox/index.tsx +251 -0
  339. package/src/menu/ActionMenu.tsx +117 -0
  340. package/src/menu/ContextualHelpTrigger.tsx +122 -0
  341. package/src/menu/SubmenuTrigger.tsx +28 -0
  342. package/src/menu/index.tsx +309 -0
  343. package/src/meter/index.tsx +141 -0
  344. package/src/numberfield/index.tsx +282 -0
  345. package/src/overlays/Modal.tsx +64 -0
  346. package/src/overlays/OpenTransition.tsx +110 -0
  347. package/src/overlays/Overlay.tsx +47 -0
  348. package/src/overlays/Tray.tsx +48 -0
  349. package/src/overlays/index.tsx +55 -0
  350. package/src/picker/index.tsx +20 -0
  351. package/src/popover/index.tsx +261 -0
  352. package/src/progress/ProgressCircle.tsx +114 -0
  353. package/src/progress/index.tsx +14 -0
  354. package/src/progress-bar/index.tsx +144 -0
  355. package/src/provider/index.tsx +358 -0
  356. package/src/radio/index.tsx +192 -0
  357. package/src/searchfield/index.tsx +274 -0
  358. package/src/select/index.tsx +366 -0
  359. package/src/separator/index.tsx +110 -0
  360. package/src/shared-element/index.tsx +38 -0
  361. package/src/slider/RangeSlider.tsx +344 -0
  362. package/src/slider/index.tsx +232 -0
  363. package/src/statuslight/index.tsx +54 -0
  364. package/src/steplist/index.tsx +40 -0
  365. package/src/story-utils/ErrorBoundary.tsx +50 -0
  366. package/src/story-utils/generatePowerset.ts +63 -0
  367. package/src/story-utils/index.ts +13 -0
  368. package/src/style-macro-s1/index.ts +8 -0
  369. package/src/styles.css +487 -0
  370. package/src/switch/ToggleSwitch.tsx +114 -0
  371. package/src/switch/index.tsx +95 -0
  372. package/src/table/index.tsx +534 -0
  373. package/src/tabs/index.tsx +276 -0
  374. package/src/tag/index.tsx +12 -0
  375. package/src/tag-group/index.tsx +246 -0
  376. package/src/test-utils/index.ts +40 -0
  377. package/src/text/Heading.tsx +61 -0
  378. package/src/text/Keyboard.tsx +38 -0
  379. package/src/text/index.tsx +52 -0
  380. package/src/textfield/TextArea.tsx +193 -0
  381. package/src/textfield/index.tsx +191 -0
  382. package/src/theme/types.ts +10 -0
  383. package/src/theme-dark/index.ts +63 -0
  384. package/src/theme-default/index.ts +8 -0
  385. package/src/theme-express/index.ts +6 -0
  386. package/src/theme-light/index.ts +63 -0
  387. package/src/theme.css +360 -0
  388. package/src/toast/index.tsx +328 -0
  389. package/src/toolbar/index.tsx +110 -0
  390. package/src/tooltip/index.tsx +197 -0
  391. package/src/tree/index.tsx +496 -0
  392. package/src/view/Content.tsx +76 -0
  393. package/src/view/index.tsx +28 -0
  394. package/src/well/index.tsx +24 -0
@@ -0,0 +1,1152 @@
1
+ /*
2
+ * Viviana UI Component Styles
3
+ *
4
+ * Pure CSS component styles that use theme CSS variables.
5
+ * These styles work with any theme that defines the required variables.
6
+ */
7
+
8
+ /* ===== BASE TYPOGRAPHY ===== */
9
+ /* Sen = body text, paragraphs, descriptions */
10
+ /* Jost = titles, headings, labels, buttons */
11
+
12
+ .font-sen {
13
+ font-family: 'Sen', sans-serif;
14
+ }
15
+
16
+ .font-jost {
17
+ font-family: 'Jost', sans-serif;
18
+ }
19
+
20
+ /* Base body font */
21
+ .vui-body {
22
+ font-family: 'Sen', sans-serif;
23
+ }
24
+
25
+ /* Titles and headings */
26
+ .vui-title {
27
+ font-family: 'Jost', sans-serif;
28
+ }
29
+
30
+ /* ===== CUSTOM SHADOWS ===== */
31
+ .drop-shadow-title-card {
32
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
33
+ }
34
+
35
+ .drop-shadow-logo {
36
+ filter: drop-shadow(0 0 10px rgba(255, 160, 213, 0.8));
37
+ }
38
+
39
+
40
+ /* ===== BUTTON COMPONENT ===== */
41
+ .vui-button {
42
+ position: relative;
43
+ font-family: 'Jost', sans-serif;
44
+ display: inline-flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ white-space: nowrap;
48
+ letter-spacing: 0.05em;
49
+ font-weight: 500;
50
+ text-transform: uppercase;
51
+ border-radius: 0.5rem;
52
+ transition: all 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
53
+ cursor: pointer;
54
+ border: none;
55
+ outline: none;
56
+ overflow: hidden;
57
+ }
58
+
59
+ /* Shimmer overlay for hover effect */
60
+ .vui-button::before {
61
+ content: '';
62
+ position: absolute;
63
+ inset: 0;
64
+ background: linear-gradient(
65
+ 90deg,
66
+ transparent 0%,
67
+ rgba(255, 255, 255, 0.1) 50%,
68
+ transparent 100%
69
+ );
70
+ transform: translateX(-100%);
71
+ transition: transform 0.5s ease;
72
+ }
73
+
74
+ .vui-button:hover::before {
75
+ transform: translateX(100%);
76
+ }
77
+
78
+ .vui-button:focus-visible {
79
+ outline: none;
80
+ box-shadow: 0 0 0 2px var(--color-bg-400),
81
+ 0 0 0 4px var(--color-accent-300),
82
+ 0 0 20px rgba(255, 160, 213, 0.3);
83
+ }
84
+
85
+ .vui-button:disabled {
86
+ opacity: 0.5;
87
+ cursor: not-allowed;
88
+ }
89
+
90
+ .vui-button:disabled::before {
91
+ display: none;
92
+ }
93
+
94
+ .vui-button.is-pressed {
95
+ transform: scale(0.97);
96
+ }
97
+
98
+ /* Size variants */
99
+ .vui-button--sm {
100
+ padding: 0.375rem 0.75rem;
101
+ font-size: 0.875rem;
102
+ }
103
+
104
+ .vui-button--md {
105
+ padding: 0.5rem 1rem;
106
+ font-size: 1rem;
107
+ }
108
+
109
+ .vui-button--lg {
110
+ padding: 0.75rem 1.5rem;
111
+ font-size: 1.125rem;
112
+ }
113
+
114
+ /* Full width */
115
+ .vui-button--full-width {
116
+ width: 100%;
117
+ }
118
+
119
+ /* ===== FILL VARIANTS ===== */
120
+
121
+ /* Primary = bg-primary-700, text-primary-200, border-bottom-primary-200 */
122
+ .vui-button--fill.vui-button--primary {
123
+ background: var(--color-primary-700);
124
+ color: var(--color-primary-200);
125
+ border-bottom: 1px solid var(--color-primary-200);
126
+ }
127
+
128
+ /* Secondary = darker blue for AA-safe text contrast */
129
+ .vui-button--fill.vui-button--secondary {
130
+ background: var(--color-primary-700);
131
+ color: var(--color-primary-100);
132
+ }
133
+
134
+ /* Accent = light pink background with dark foreground for contrast */
135
+ .vui-button--fill.vui-button--accent {
136
+ background: var(--color-accent);
137
+ color: var(--color-bg-400);
138
+ }
139
+
140
+ .vui-button--fill.vui-button--accent:hover:not(:disabled) {
141
+ box-shadow: 0 0 20px rgba(255, 160, 213, 0.4),
142
+ 0 4px 12px rgba(255, 160, 213, 0.3);
143
+ }
144
+
145
+ /* Positive = bg-success-600, text-success-100, border-success-400 */
146
+ .vui-button--fill.vui-button--positive {
147
+ background: var(--color-success-600);
148
+ color: #ffffff;
149
+ border: 1px solid var(--color-success-400);
150
+ }
151
+
152
+ /* Negative = bg-danger-600, text-danger-100, border-danger-400 */
153
+ .vui-button--fill.vui-button--negative {
154
+ background: var(--color-danger-600);
155
+ color: #ffffff;
156
+ border: 1px solid var(--color-danger-400);
157
+ }
158
+
159
+ /* Ghost = transparent, text-primary-300, hover:bg-bg-200 */
160
+ .vui-button--fill.vui-button--ghost,
161
+ .vui-button--outline.vui-button--ghost {
162
+ background: transparent;
163
+ color: var(--color-primary-300);
164
+ }
165
+ .vui-button--fill.vui-button--ghost:hover:not(:disabled),
166
+ .vui-button--outline.vui-button--ghost:hover:not(:disabled) {
167
+ background: var(--color-bg-200);
168
+ }
169
+
170
+ /* Link = transparent, text-accent-200, hover:text-accent-300 */
171
+ .vui-button--fill.vui-button--link,
172
+ .vui-button--outline.vui-button--link {
173
+ background: transparent;
174
+ color: var(--color-accent-200);
175
+ }
176
+ .vui-button--fill.vui-button--link:hover:not(:disabled),
177
+ .vui-button--outline.vui-button--link:hover:not(:disabled) {
178
+ color: var(--color-accent-300);
179
+ }
180
+
181
+ /* ===== OUTLINE VARIANTS ===== */
182
+
183
+ /* Primary outline = bg-bg-400, text-primary-500, border-primary-500 */
184
+ .vui-button--outline.vui-button--primary {
185
+ background: var(--color-bg-400);
186
+ color: var(--color-primary-500);
187
+ border: 1px solid var(--color-primary-500);
188
+ }
189
+
190
+ /* Secondary outline = transparent, text-primary-300, border-primary-600 */
191
+ .vui-button--outline.vui-button--secondary {
192
+ background: transparent;
193
+ color: var(--color-primary-300);
194
+ border: 1px solid var(--color-primary-600);
195
+ }
196
+
197
+ /* Accent outline = transparent, text-accent-200, border-accent */
198
+ .vui-button--outline.vui-button--accent {
199
+ background: transparent;
200
+ color: var(--color-accent-200);
201
+ border: 1px solid var(--color-accent);
202
+ }
203
+
204
+ /* Positive outline = transparent, text-success-400, border-success-400 */
205
+ .vui-button--outline.vui-button--positive {
206
+ background: transparent;
207
+ color: var(--color-success-400);
208
+ border: 1px solid var(--color-success-400);
209
+ }
210
+
211
+ /* Negative outline = transparent, text-danger-400, border-danger-400 */
212
+ .vui-button--outline.vui-button--negative {
213
+ background: transparent;
214
+ color: var(--color-danger-400);
215
+ border: 1px solid var(--color-danger-400);
216
+ }
217
+
218
+ /* ===== ICON COMPONENT ===== */
219
+ .vui-icon {
220
+ position: relative;
221
+ display: inline-flex;
222
+ align-items: center;
223
+ justify-content: center;
224
+ }
225
+
226
+ .vui-icon--button {
227
+ appearance: none;
228
+ background: none;
229
+ border: 0;
230
+ padding: 0;
231
+ cursor: pointer;
232
+ color: inherit;
233
+ font: inherit;
234
+ }
235
+
236
+ .vui-icon__main {
237
+ position: relative;
238
+ z-index: 1;
239
+ display: flex;
240
+ align-items: center;
241
+ justify-content: center;
242
+ }
243
+
244
+ .vui-icon__shadow {
245
+ position: absolute;
246
+ top: 2px;
247
+ left: 0;
248
+ z-index: 0;
249
+ display: flex;
250
+ align-items: center;
251
+ justify-content: center;
252
+ opacity: 0.8;
253
+ }
254
+
255
+ /* ===== CHIP COMPONENT ===== */
256
+ .vui-chip {
257
+ display: inline-flex;
258
+ align-items: center;
259
+ justify-content: center;
260
+ padding: 0.125rem 0.5rem;
261
+ font-size: 0.75rem;
262
+ font-weight: 600;
263
+ border-radius: 9999px;
264
+ text-transform: uppercase;
265
+ }
266
+
267
+ .vui-chip--primary {
268
+ background: var(--color-primary-700);
269
+ color: var(--color-primary-100);
270
+ box-shadow: 0 2px 8px rgba(17, 88, 199, 0.4);
271
+ border-bottom: 1px solid var(--color-primary-200);
272
+ }
273
+
274
+ .vui-chip--accent {
275
+ background: var(--color-accent);
276
+ color: var(--color-bg-400);
277
+ }
278
+
279
+ .vui-chip--success {
280
+ background: var(--color-success-600);
281
+ color: #ffffff;
282
+ }
283
+
284
+ .vui-chip--warning {
285
+ background: var(--color-warning-600);
286
+ color: var(--color-warning-100);
287
+ }
288
+
289
+ .vui-chip--danger {
290
+ background: var(--color-danger-600);
291
+ color: #ffffff;
292
+ }
293
+
294
+ /* ===== BADGE COMPONENT ===== */
295
+ .vui-badge {
296
+ display: inline-flex;
297
+ align-items: center;
298
+ justify-content: center;
299
+ padding: 0.25rem 0.75rem;
300
+ font-size: 0.875rem;
301
+ font-weight: 500;
302
+ border-radius: 0.375rem;
303
+ }
304
+
305
+ .vui-badge--primary {
306
+ background: var(--color-primary-700);
307
+ color: var(--color-primary-100);
308
+ }
309
+
310
+ .vui-badge--accent {
311
+ background: var(--color-accent);
312
+ color: var(--color-bg-400);
313
+ }
314
+
315
+ .vui-badge--success {
316
+ background: var(--color-success-600);
317
+ color: #ffffff;
318
+ }
319
+
320
+ .vui-badge--warning {
321
+ background: var(--color-warning-600);
322
+ color: var(--color-warning-100);
323
+ }
324
+
325
+ .vui-badge--danger {
326
+ background: var(--color-danger-600);
327
+ color: #ffffff;
328
+ }
329
+
330
+ /* ===== ALERT COMPONENT ===== */
331
+ .vui-alert {
332
+ display: flex;
333
+ align-items: flex-start;
334
+ gap: 0.75rem;
335
+ padding: 1rem;
336
+ border-radius: 0.5rem;
337
+ border-width: 1px;
338
+ }
339
+
340
+ .vui-alert--info {
341
+ background: color-mix(in srgb, var(--color-primary-700) 20%, transparent);
342
+ border-color: var(--color-primary-600);
343
+ color: var(--color-primary-200);
344
+ }
345
+
346
+ .vui-alert--success {
347
+ background: color-mix(in srgb, var(--color-success-600) 20%, transparent);
348
+ border-color: var(--color-success-600);
349
+ color: var(--color-success-100);
350
+ }
351
+
352
+ .vui-alert--warning {
353
+ background: color-mix(in srgb, var(--color-warning-600) 20%, transparent);
354
+ border-color: var(--color-warning-600);
355
+ color: var(--color-warning-100);
356
+ }
357
+
358
+ .vui-alert--error {
359
+ background: color-mix(in srgb, var(--color-danger-600) 20%, transparent);
360
+ border-color: var(--color-danger-400);
361
+ color: var(--color-danger-100);
362
+ }
363
+
364
+ /* ===== AVATAR COMPONENT ===== */
365
+ .vui-avatar {
366
+ display: inline-flex;
367
+ align-items: center;
368
+ justify-content: center;
369
+ border-radius: 9999px;
370
+ overflow: hidden;
371
+ background: var(--color-bg-300);
372
+ color: var(--color-primary-300);
373
+ font-weight: 600;
374
+ }
375
+
376
+ .vui-avatar--sm {
377
+ width: 2rem;
378
+ height: 2rem;
379
+ font-size: 0.75rem;
380
+ }
381
+
382
+ .vui-avatar--md {
383
+ width: 2.5rem;
384
+ height: 2.5rem;
385
+ font-size: 0.875rem;
386
+ }
387
+
388
+ .vui-avatar--lg {
389
+ width: 3rem;
390
+ height: 3rem;
391
+ font-size: 1rem;
392
+ }
393
+
394
+ .vui-avatar--xl {
395
+ width: 4rem;
396
+ height: 4rem;
397
+ font-size: 1.25rem;
398
+ }
399
+
400
+ /* ===== CARD COMPONENT ===== */
401
+ .vui-card {
402
+ background: var(--color-bg-300);
403
+ border: 1px solid var(--color-primary-600);
404
+ border-radius: 0.75rem;
405
+ overflow: hidden;
406
+ }
407
+
408
+ .vui-card--accent-border {
409
+ border-bottom-color: var(--color-accent-500);
410
+ }
411
+
412
+ /* ===== GRADIENTS ===== */
413
+ .hero-gradient {
414
+ background: linear-gradient(135deg, var(--color-bg-300) 0%, var(--color-bg-400) 100%);
415
+ }
416
+
417
+ .gradient-text {
418
+ background: linear-gradient(135deg, var(--color-primary-300), var(--color-accent-300));
419
+ -webkit-background-clip: text;
420
+ -webkit-text-fill-color: transparent;
421
+ background-clip: text;
422
+ }
423
+
424
+ /* ===== PROSE/DOCS — Silapse angular aesthetic ===== */
425
+ .prose {
426
+ max-width: 65ch;
427
+ }
428
+
429
+ .prose h1 {
430
+ font-family: 'Jost', sans-serif;
431
+ font-size: 1.5rem;
432
+ font-weight: 600;
433
+ margin: 0 0 1rem 0;
434
+ padding-bottom: 10px;
435
+ padding-left: 12px;
436
+ border-left: 3px solid var(--color-accent);
437
+ border-bottom: 1px solid rgba(255, 160, 213, 0.25);
438
+ letter-spacing: -0.01em;
439
+ color: var(--color-primary-100);
440
+ filter: drop-shadow(0 0 4px rgba(255, 160, 213, 0.4));
441
+ }
442
+
443
+ .prose h2 {
444
+ font-family: 'Jost', sans-serif;
445
+ font-size: 1.25rem;
446
+ font-weight: 600;
447
+ margin-top: 2rem;
448
+ margin-bottom: 0.75rem;
449
+ padding-left: 10px;
450
+ border-left: 2px solid var(--color-primary-300);
451
+ color: var(--color-primary-200);
452
+ }
453
+
454
+ .prose h3 {
455
+ font-family: 'Jost', sans-serif;
456
+ font-size: 0.8125rem;
457
+ font-weight: 600;
458
+ margin-top: 1.5rem;
459
+ margin-bottom: 0.5rem;
460
+ color: var(--color-accent);
461
+ text-transform: uppercase;
462
+ letter-spacing: 0.1em;
463
+ }
464
+
465
+ .prose p {
466
+ margin-bottom: 1rem;
467
+ line-height: 1.7;
468
+ font-size: 0.875rem;
469
+ color: var(--color-primary-300);
470
+ }
471
+
472
+ .prose code {
473
+ background: rgba(128, 204, 255, 0.08);
474
+ padding: 3px 8px;
475
+ font-family: var(--font-mono);
476
+ font-size: 0.8em;
477
+ font-weight: 500;
478
+ color: var(--color-primary-300);
479
+ border: 1px solid rgba(128, 204, 255, 0.25);
480
+ clip-path: polygon(3px 0, 100% 0, calc(100% - 3px) 100%, 0 100%);
481
+ }
482
+
483
+ .prose pre {
484
+ background: var(--color-bg-400);
485
+ color: var(--color-primary-100);
486
+ padding: 1rem;
487
+ overflow-x: auto;
488
+ margin: 1rem 0;
489
+ border: 1px solid rgba(128, 204, 255, 0.1);
490
+ border-left: 3px solid var(--color-primary-500);
491
+ }
492
+
493
+ .prose pre code {
494
+ background: transparent;
495
+ padding: 0;
496
+ color: inherit;
497
+ border: none;
498
+ clip-path: none;
499
+ }
500
+
501
+ .prose ul, .prose ol {
502
+ padding-left: 1.25rem;
503
+ margin-bottom: 1rem;
504
+ }
505
+
506
+ .prose li {
507
+ font-size: 0.875rem;
508
+ line-height: 1.7;
509
+ color: var(--color-primary-300);
510
+ margin-bottom: 0.375rem;
511
+ }
512
+
513
+ .prose strong {
514
+ color: var(--color-primary-100);
515
+ font-weight: 600;
516
+ }
517
+
518
+ /* ===== SIDEBAR — Silapse flat navigation ===== */
519
+ .sidebar-link {
520
+ position: relative;
521
+ display: block;
522
+ padding: 7px 14px;
523
+ border-left: 3px solid transparent;
524
+ color: var(--color-primary-400);
525
+ font-size: 0.8125rem;
526
+ font-family: 'Sen', sans-serif;
527
+ text-decoration: none;
528
+ transition: all 0.1s ease;
529
+ }
530
+
531
+ .sidebar-link:hover {
532
+ background: rgba(255, 160, 213, 0.08);
533
+ color: var(--color-primary-200);
534
+ }
535
+
536
+ .sidebar-link.active {
537
+ background: var(--color-accent);
538
+ border-left-color: var(--color-accent);
539
+ color: var(--color-bg-400);
540
+ font-weight: 600;
541
+ }
542
+
543
+ /* ===== LOGO COMPONENT ===== */
544
+ .vui-logo {
545
+ display: inline-flex;
546
+ align-items: baseline;
547
+ font-family: 'Jost', sans-serif;
548
+ text-transform: uppercase;
549
+ letter-spacing: 0.01em;
550
+ }
551
+
552
+ .vui-logo__first {
553
+ color: var(--color-primary-800);
554
+ font-weight: 300;
555
+ }
556
+
557
+ .vui-logo__second {
558
+ position: relative;
559
+ color: var(--color-primary-500);
560
+ font-weight: 900;
561
+ -webkit-text-stroke: 2px rgba(255, 255, 255, 0.9);
562
+ paint-order: stroke fill;
563
+ }
564
+
565
+ .vui-logo__second::before {
566
+ content: attr(data-text);
567
+ position: absolute;
568
+ left: 0;
569
+ top: 0;
570
+ z-index: -1;
571
+ color: transparent;
572
+ -webkit-text-stroke: 0;
573
+ text-shadow: 4px 3px 0 var(--color-accent);
574
+ }
575
+
576
+ /* Logo size variants */
577
+ .vui-logo--sm {
578
+ font-size: 2.5rem;
579
+ }
580
+
581
+ .vui-logo--md {
582
+ font-size: 3.5rem;
583
+ }
584
+
585
+ .vui-logo--lg {
586
+ font-size: 2.0rem;
587
+ }
588
+
589
+ .vui-logo--lg .vui-logo__second::before {
590
+ text-shadow: 5px 4px 0 var(--color-accent);
591
+ }
592
+
593
+ .vui-logo--xl {
594
+ font-size: 6rem;
595
+ }
596
+
597
+ .vui-logo--xl .vui-logo__second::before {
598
+ text-shadow: 6px 5px 0 var(--color-accent);
599
+ }
600
+
601
+ /* Inverted variant - first word gets the 3D effect, second word is muted */
602
+ .vui-logo.vui-logo--inverted .vui-logo__first {
603
+ position: relative;
604
+ color: var(--color-primary-500);
605
+ font-weight: 900;
606
+ -webkit-text-stroke: 2px rgba(255, 255, 255, 0.9);
607
+ paint-order: stroke fill;
608
+ }
609
+
610
+ .vui-logo.vui-logo--inverted .vui-logo__first::before {
611
+ content: attr(data-text);
612
+ position: absolute;
613
+ left: 0;
614
+ top: 0;
615
+ z-index: -1;
616
+ color: transparent;
617
+ -webkit-text-stroke: 0;
618
+ text-shadow: 4px 3px 0 var(--color-accent);
619
+ }
620
+
621
+ .vui-logo.vui-logo--inverted .vui-logo__second {
622
+ position: static;
623
+ color: var(--color-primary-800);
624
+ font-weight: 300;
625
+ -webkit-text-stroke: 0;
626
+ paint-order: normal;
627
+ }
628
+
629
+ .vui-logo.vui-logo--inverted .vui-logo__second::before {
630
+ content: none;
631
+ }
632
+
633
+ .vui-logo.vui-logo--inverted.vui-logo--lg .vui-logo__first::before {
634
+ text-shadow: 5px 4px 0 var(--color-accent);
635
+ }
636
+
637
+ .vui-logo.vui-logo--inverted.vui-logo--xl .vui-logo__first::before {
638
+ text-shadow: 6px 5px 0 var(--color-accent);
639
+ }
640
+
641
+ /* ===== HEADER COMPONENT ===== */
642
+ .vui-header {
643
+ position: fixed;
644
+ top: 0;
645
+ left: 0;
646
+ right: 0;
647
+ z-index: 50;
648
+ border-bottom: 4px solid var(--color-accent);
649
+ background: color-mix(in srgb, var(--color-bg-400) 80%, transparent);
650
+ backdrop-filter: blur(8px);
651
+ -webkit-backdrop-filter: blur(8px);
652
+ }
653
+
654
+ .vui-header__container {
655
+ height: 70px;
656
+ padding-left: 32px;
657
+ padding-right: 32px;
658
+ display: flex;
659
+ align-items: center;
660
+ justify-content: space-between;
661
+ }
662
+
663
+ .vui-header__nav {
664
+ display: flex;
665
+ align-items: center;
666
+ gap: 1.5rem;
667
+ }
668
+
669
+ .vui-header__link {
670
+ font-family: 'Jost', sans-serif;
671
+ font-size: 0.875rem;
672
+ font-weight: 500;
673
+ color: var(--color-primary-300);
674
+ transition: color 0.15s;
675
+ }
676
+
677
+ .vui-header__link:hover {
678
+ color: var(--color-primary-100);
679
+ }
680
+
681
+ .vui-header__link--active {
682
+ color: var(--color-accent);
683
+ }
684
+
685
+ .vui-header__link--active:hover {
686
+ color: var(--color-accent-300);
687
+ }
688
+
689
+ /* ===== PAGE LAYOUT ===== */
690
+ .vui-page {
691
+ display: flex;
692
+ flex-direction: column;
693
+ min-height: 100vh;
694
+ background: var(--color-bg-100);
695
+ font-family: 'Sen', sans-serif;
696
+ }
697
+
698
+ /* Use this modifier for pages with fixed header where content shouldn't go behind it */
699
+ .vui-page--with-header {
700
+ padding-top: 4rem; /* 64px - matches h-16 header */
701
+ }
702
+
703
+ .vui-page h1,
704
+ .vui-page h2,
705
+ .vui-page h3,
706
+ .vui-page h4,
707
+ .vui-page h5,
708
+ .vui-page h6 {
709
+ font-family: 'Jost', sans-serif;
710
+ }
711
+
712
+ /* ===== LANDING PAGE LAYOUT ===== */
713
+ .vui-landing {
714
+ display: flex;
715
+ flex-direction: column;
716
+ min-height: 100vh;
717
+ background: var(--color-bg-100);
718
+ font-family: 'Sen', sans-serif;
719
+ }
720
+
721
+ /* Hero Section */
722
+ .vui-hero {
723
+ min-height: 50vh;
724
+ padding-top: 7.5rem;
725
+ padding-bottom: 2rem;
726
+ background: var(--color-bg-200);
727
+ border-bottom: 1px solid var(--color-primary-600);
728
+ display: flex;
729
+ align-items: center;
730
+ justify-content: center;
731
+ }
732
+
733
+ .vui-hero__container {
734
+ margin-left: auto;
735
+ margin-right: auto;
736
+ max-width: 56rem;
737
+ padding-left: 1.5rem;
738
+ padding-right: 1.5rem;
739
+ text-align: center;
740
+ width: 100%;
741
+ }
742
+
743
+ .vui-hero__title {
744
+ font-family: 'Jost', sans-serif;
745
+ font-size: 3rem;
746
+ font-weight: 800;
747
+ letter-spacing: -0.025em;
748
+ color: var(--color-primary-100);
749
+ line-height: 1.1;
750
+ }
751
+
752
+ @media (min-width: 640px) {
753
+ .vui-hero__title {
754
+ font-size: 3.75rem;
755
+ }
756
+ }
757
+
758
+ @media (min-width: 1024px) {
759
+ .vui-hero__title {
760
+ font-size: 4.5rem;
761
+ }
762
+ }
763
+
764
+ .vui-hero__subtitle {
765
+ margin-top: 1.5rem;
766
+ margin-left: auto;
767
+ margin-right: auto;
768
+ max-width: 42rem;
769
+ font-size: 1.25rem;
770
+ color: var(--color-primary-300);
771
+ line-height: 1.75;
772
+ }
773
+
774
+ .vui-hero__actions {
775
+ margin-top: 2.5rem;
776
+ display: flex;
777
+ justify-content: center;
778
+ gap: 1rem;
779
+ }
780
+
781
+ /* Section */
782
+ .vui-section {
783
+ padding-top: 2rem;
784
+ padding-bottom: 2rem;
785
+ }
786
+
787
+ .vui-section--alt {
788
+ background: var(--color-bg-200);
789
+ }
790
+
791
+ .vui-section__container {
792
+ margin-left: auto;
793
+ margin-right: auto;
794
+ max-width: 72rem;
795
+ padding-left: 1.5rem;
796
+ padding-right: 1.5rem;
797
+ }
798
+
799
+ .vui-section__container--narrow {
800
+ max-width: 56rem;
801
+ }
802
+
803
+ .vui-section__header {
804
+ text-align: center;
805
+ margin-bottom: 3rem;
806
+ }
807
+
808
+ .vui-section__title {
809
+ font-family: 'Jost', sans-serif;
810
+ font-size: 1.875rem;
811
+ font-weight: 700;
812
+ color: var(--color-primary-100);
813
+ }
814
+
815
+ .vui-section__description {
816
+ margin-top: 1rem;
817
+ margin-left: auto;
818
+ margin-right: auto;
819
+ max-width: 42rem;
820
+ font-size: 1.125rem;
821
+ color: var(--color-primary-300);
822
+ }
823
+
824
+ /* Feature Grid */
825
+ .vui-feature-grid {
826
+ display: grid;
827
+ gap: 2rem;
828
+ }
829
+
830
+ @media (min-width: 640px) {
831
+ .vui-feature-grid {
832
+ grid-template-columns: repeat(2, 1fr);
833
+ }
834
+ }
835
+
836
+ @media (min-width: 1024px) {
837
+ .vui-feature-grid {
838
+ grid-template-columns: repeat(3, 1fr);
839
+ }
840
+ }
841
+
842
+ /* Feature Card */
843
+ .vui-feature-card {
844
+ padding: 1.5rem;
845
+ border-radius: 0.75rem;
846
+ border: 1px solid var(--color-bg-300);
847
+ background: var(--color-bg-200);
848
+ color: var(--color-primary-100);
849
+ transition: box-shadow 0.2s, border-color 0.2s;
850
+ }
851
+
852
+ .vui-feature-card--alt {
853
+ background: var(--color-bg-300);
854
+ border-color: var(--color-bg-400);
855
+ }
856
+
857
+ .vui-feature-card:hover {
858
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
859
+ border-color: var(--color-primary-600);
860
+ }
861
+
862
+ .vui-feature-card__icon {
863
+ font-size: 1.875rem;
864
+ margin-bottom: 1rem;
865
+ }
866
+
867
+ .vui-feature-card__title {
868
+ font-family: 'Jost', sans-serif;
869
+ font-size: 1.125rem;
870
+ font-weight: 600;
871
+ color: var(--color-primary-100);
872
+ }
873
+
874
+ .vui-feature-card__description {
875
+ margin-top: 0.5rem;
876
+ color: var(--color-primary-300);
877
+ line-height: 1.625;
878
+ }
879
+
880
+ /* Code Block */
881
+ .vui-code-block {
882
+ overflow: hidden;
883
+ border-radius: 0.75rem;
884
+ border: 1px solid var(--color-bg-300);
885
+ background: var(--color-bg-400);
886
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
887
+ }
888
+
889
+ .vui-code-block__header {
890
+ display: flex;
891
+ align-items: center;
892
+ gap: 0.5rem;
893
+ padding: 0.75rem 1rem;
894
+ border-bottom: 1px solid var(--color-bg-300);
895
+ background: var(--color-bg-300);
896
+ }
897
+
898
+ .vui-code-block__dot {
899
+ width: 0.75rem;
900
+ height: 0.75rem;
901
+ border-radius: 9999px;
902
+ }
903
+
904
+ .vui-code-block__dot--red {
905
+ background: var(--color-danger-400);
906
+ }
907
+
908
+ .vui-code-block__dot--yellow {
909
+ background: var(--color-warning-400);
910
+ }
911
+
912
+ .vui-code-block__dot--green {
913
+ background: var(--color-success-400);
914
+ }
915
+
916
+ .vui-code-block__filename {
917
+ margin-left: 1rem;
918
+ font-size: 0.875rem;
919
+ color: var(--color-primary-400);
920
+ }
921
+
922
+ .vui-code-block__content {
923
+ padding: 1.5rem;
924
+ overflow-x: auto;
925
+ }
926
+
927
+ .vui-code-block__code {
928
+ font-size: 0.875rem;
929
+ line-height: 1.625;
930
+ color: var(--color-primary-200);
931
+ font-family: var(--font-mono);
932
+ }
933
+
934
+ /* Footer */
935
+ .vui-footer {
936
+ border-top: 1px solid var(--color-bg-300);
937
+ background: var(--color-bg-300);
938
+ }
939
+
940
+ .vui-footer__container {
941
+ margin-left: auto;
942
+ margin-right: auto;
943
+ max-width: 72rem;
944
+ padding: 2rem 1.5rem;
945
+ display: flex;
946
+ flex-direction: column;
947
+ align-items: center;
948
+ justify-content: space-between;
949
+ gap: 1.5rem;
950
+ }
951
+
952
+ @media (min-width: 640px) {
953
+ .vui-footer__container {
954
+ flex-direction: row;
955
+ }
956
+ }
957
+
958
+ .vui-footer__text {
959
+ font-size: 0.875rem;
960
+ color: var(--color-primary-400);
961
+ }
962
+
963
+ .vui-footer__links {
964
+ display: flex;
965
+ gap: 1.5rem;
966
+ }
967
+
968
+ .vui-footer__link {
969
+ font-family: 'Jost', sans-serif;
970
+ font-size: 0.875rem;
971
+ color: var(--color-primary-300);
972
+ transition: color 0.15s;
973
+ }
974
+
975
+ .vui-footer__link:hover {
976
+ color: var(--color-primary-100);
977
+ }
978
+
979
+ /* Gradient Text Utility */
980
+ .vui-gradient-text {
981
+ background: linear-gradient(135deg, var(--color-primary-300), var(--color-accent-300));
982
+ -webkit-background-clip: text;
983
+ -webkit-text-fill-color: transparent;
984
+ background-clip: text;
985
+ }
986
+
987
+ /* ===== TOOLTIP COMPONENT ===== */
988
+ .vui-tooltip {
989
+ position: relative;
990
+ display: inline-flex;
991
+ }
992
+
993
+ .vui-tooltip__trigger {
994
+ display: inline-flex;
995
+ }
996
+
997
+ .vui-tooltip__content {
998
+ position: absolute;
999
+ z-index: 10;
1000
+ padding: 0.5rem 1rem;
1001
+ background: var(--color-primary-700);
1002
+ color: var(--color-primary-200);
1003
+ border: 1px solid var(--color-primary-500);
1004
+ border-radius: 0.5rem;
1005
+ font-family: 'Jost', sans-serif;
1006
+ font-size: 0.875rem;
1007
+ font-weight: 500;
1008
+ white-space: nowrap;
1009
+ opacity: 0;
1010
+ pointer-events: none;
1011
+ transition: opacity 0.15s ease-in-out, transform 0.15s ease-in-out;
1012
+ }
1013
+
1014
+ .vui-tooltip__content--bottom {
1015
+ top: calc(100% + 0.5rem);
1016
+ left: 50%;
1017
+ transform: translateX(-50%) translateY(0.25rem);
1018
+ }
1019
+
1020
+ .vui-tooltip__content--top {
1021
+ bottom: calc(100% + 0.5rem);
1022
+ left: 50%;
1023
+ transform: translateX(-50%) translateY(-0.25rem);
1024
+ }
1025
+
1026
+ .vui-tooltip:hover .vui-tooltip__content {
1027
+ opacity: 1;
1028
+ transform: translateX(-50%) translateY(0);
1029
+ }
1030
+
1031
+ /* ===== PROJECT CARD COMPONENT ===== */
1032
+ .vui-project-card {
1033
+ position: relative;
1034
+ display: grid;
1035
+ place-items: center;
1036
+ padding: 1rem;
1037
+ border-radius: 0.75rem;
1038
+ border: 1px solid var(--color-primary-700);
1039
+ background: var(--color-bg-200);
1040
+ transition: background 0.15s ease-in-out;
1041
+ text-decoration: none;
1042
+ }
1043
+
1044
+ .vui-project-card:hover {
1045
+ background: var(--color-bg-300);
1046
+ }
1047
+
1048
+ .vui-project-card--sm {
1049
+ height: 4rem;
1050
+ }
1051
+
1052
+ .vui-project-card--md {
1053
+ height: 6rem;
1054
+ }
1055
+
1056
+ .vui-project-card--lg {
1057
+ padding: 1rem;
1058
+ }
1059
+
1060
+ .vui-project-card--inactive {
1061
+ filter: grayscale(1);
1062
+ background: var(--color-bg-400);
1063
+ }
1064
+
1065
+ .vui-project-card--inactive:hover {
1066
+ background: var(--color-bg-400);
1067
+ }
1068
+
1069
+ .vui-project-card__tooltip {
1070
+ position: absolute;
1071
+ top: calc(100% + 0.5rem);
1072
+ z-index: 10;
1073
+ padding: 0.5rem 1rem;
1074
+ background: var(--color-primary-700);
1075
+ color: var(--color-primary-200);
1076
+ border: 1px solid var(--color-primary-500);
1077
+ border-radius: 0.5rem;
1078
+ font-family: 'Jost', sans-serif;
1079
+ font-size: 0.875rem;
1080
+ font-weight: 500;
1081
+ white-space: nowrap;
1082
+ opacity: 0;
1083
+ pointer-events: none;
1084
+ transition: opacity 0.15s ease-in-out;
1085
+ }
1086
+
1087
+ .vui-project-card:hover .vui-project-card__tooltip {
1088
+ opacity: 1;
1089
+ }
1090
+
1091
+ .vui-project-card__image {
1092
+ max-height: 2rem;
1093
+ max-width: 100%;
1094
+ object-fit: contain;
1095
+ }
1096
+
1097
+ .vui-project-card--lg .vui-project-card__image {
1098
+ max-height: none;
1099
+ max-width: 300px;
1100
+ width: 100%;
1101
+ }
1102
+
1103
+ /* ===== LIGHT MODE OVERRIDES ===== */
1104
+
1105
+ [data-theme="light"] .vui-button:focus-visible {
1106
+ box-shadow: 0 0 0 2px var(--color-bg-400),
1107
+ 0 0 0 4px var(--color-accent-300),
1108
+ 0 0 20px rgba(160, 37, 88, 0.2);
1109
+ }
1110
+
1111
+ [data-theme="light"] .vui-button--fill.vui-button--accent:hover:not(:disabled) {
1112
+ box-shadow: 0 0 20px rgba(160, 37, 88, 0.3),
1113
+ 0 4px 12px rgba(160, 37, 88, 0.2);
1114
+ }
1115
+
1116
+ [data-theme="light"] .drop-shadow-logo {
1117
+ filter: drop-shadow(0 0 10px rgba(160, 37, 88, 0.6));
1118
+ }
1119
+
1120
+ [data-theme="light"] .sidebar-link:hover {
1121
+ background: rgba(160, 37, 88, 0.06);
1122
+ }
1123
+
1124
+ [data-theme="light"] .sidebar-link.active {
1125
+ background: var(--color-accent);
1126
+ color: #ffffff;
1127
+ }
1128
+
1129
+ [data-theme="light"] .prose h1 {
1130
+ filter: drop-shadow(0 0 4px rgba(160, 37, 88, 0.3));
1131
+ }
1132
+
1133
+ [data-theme="light"] .prose code {
1134
+ background: rgba(25, 80, 115, 0.08);
1135
+ border-color: rgba(25, 80, 115, 0.2);
1136
+ }
1137
+
1138
+ [data-theme="light"] .vui-logo__second {
1139
+ -webkit-text-stroke: 2px rgba(0, 0, 0, 0.15);
1140
+ }
1141
+
1142
+ [data-theme="light"] .vui-logo.vui-logo--inverted .vui-logo__first {
1143
+ -webkit-text-stroke: 2px rgba(0, 0, 0, 0.15);
1144
+ }
1145
+
1146
+ [data-theme="light"] .vui-feature-card:hover {
1147
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
1148
+ }
1149
+
1150
+ [data-theme="light"] .vui-code-block {
1151
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
1152
+ }