@birdapi/velinstyle 0.7.0 → 0.9.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 (336) hide show
  1. package/README.de.md +135 -224
  2. package/README.md +134 -223
  3. package/cli/blueprint.js +8 -0
  4. package/cli/blueprints/bottom-nav-mobile.html +17 -0
  5. package/cli/blueprints/cookie-consent.html +9 -0
  6. package/cli/blueprints/empty-state.html +5 -0
  7. package/cli/blueprints/filter-bar.html +15 -0
  8. package/cli/blueprints/notification-center.html +13 -0
  9. package/cli/blueprints/onboarding.html +23 -0
  10. package/cli/blueprints/pricing-table.html +20 -0
  11. package/cli/blueprints/settings-panel.html +20 -0
  12. package/cli/cli-manifest.json +97 -0
  13. package/cli/docgen/extract-a11y.js +89 -0
  14. package/cli/docgen/extract-attributes.js +95 -0
  15. package/cli/docgen/extract-cli.js +50 -0
  16. package/cli/docgen/extract-components.js +175 -0
  17. package/cli/docgen/extract-meta.js +32 -0
  18. package/cli/docgen/extract-rules.js +76 -0
  19. package/cli/docgen/extract-tokens.js +79 -0
  20. package/cli/docgen/extract-utilities.js +75 -0
  21. package/cli/docgen/markdown.js +43 -0
  22. package/cli/docs-generate.js +196 -0
  23. package/cli/index.js +236 -5
  24. package/cli/layout-audit.js +325 -0
  25. package/cli/meta.js +97 -0
  26. package/cli/perf-audit.js +174 -0
  27. package/cli/pii-scanner.js +134 -0
  28. package/cli/scaffold-recipes.json +70 -0
  29. package/cli/scaffold.js +155 -0
  30. package/cli/scanner-rules-data.js +62 -0
  31. package/cli/scanner.js +136 -1
  32. package/cli/search-index.js +163 -0
  33. package/cli/tokens-build.js +21 -1
  34. package/cli/tokens-validate.js +69 -0
  35. package/components/a11y-entry.js +42 -0
  36. package/components/a11y-utils.js +71 -0
  37. package/components/focus-manager.js +45 -8
  38. package/components/index.js +40 -11
  39. package/components/runtime/component-loaders.js +43 -0
  40. package/components/runtime/index.js +77 -0
  41. package/components/runtime-entry.js +10 -0
  42. package/components/sanitize.js +135 -28
  43. package/components/shadow-a11y-styles.js +18 -0
  44. package/components/velin-accordion.js +12 -0
  45. package/components/velin-announcer.js +35 -0
  46. package/components/velin-bottom-nav.js +108 -0
  47. package/components/velin-carousel.js +2 -2
  48. package/components/velin-code-block.js +142 -0
  49. package/components/velin-combobox.js +149 -0
  50. package/components/velin-command.js +142 -0
  51. package/components/velin-copy.js +18 -5
  52. package/components/velin-counter.js +155 -0
  53. package/components/velin-dialog.js +9 -1
  54. package/components/velin-email.js +94 -0
  55. package/components/velin-flip.js +220 -0
  56. package/components/velin-icon.js +99 -22
  57. package/components/velin-lightbox.js +8 -3
  58. package/components/velin-live-dot.js +90 -0
  59. package/components/velin-menubar.js +83 -0
  60. package/components/velin-modal.js +6 -3
  61. package/components/velin-popover.js +34 -2
  62. package/components/velin-rating.js +91 -0
  63. package/components/velin-reveal.js +22 -0
  64. package/components/velin-scroll-top.js +1 -1
  65. package/components/velin-search.js +267 -0
  66. package/components/velin-secure-field.js +99 -0
  67. package/components/velin-segmented-control.js +108 -0
  68. package/components/velin-sheet.js +107 -0
  69. package/components/velin-sparkline.js +227 -0
  70. package/components/{velin-stepper-wc.js → velin-stepper.js} +37 -8
  71. package/components/velin-theme-toggle.js +284 -60
  72. package/components/velin-toast.js +4 -0
  73. package/components/{velin-tooltip-wc.js → velin-tooltip.js} +22 -3
  74. package/core/a11y/component-contracts.json +221 -0
  75. package/core/attributes/index.js +6 -0
  76. package/core/attributes/registry.js +268 -0
  77. package/core/highlight/highlight.js +114 -0
  78. package/core/highlight/index.js +29 -0
  79. package/core/highlight/languages/_utils.js +52 -0
  80. package/core/highlight/languages/blade.js +16 -0
  81. package/core/highlight/languages/css.js +26 -0
  82. package/core/highlight/languages/html.js +17 -0
  83. package/core/highlight/languages/js.js +58 -0
  84. package/core/highlight/languages/json.js +14 -0
  85. package/core/highlight/languages/markdown.js +16 -0
  86. package/core/highlight/languages/php.js +39 -0
  87. package/core/highlight/languages/plain.js +7 -0
  88. package/core/highlight/languages/shell.js +33 -0
  89. package/core/highlight/languages/sql.js +20 -0
  90. package/core/highlight/languages/typescript.js +28 -0
  91. package/core/highlight/observe.js +53 -0
  92. package/core/highlight/registry.js +107 -0
  93. package/core/highlight/render.js +35 -0
  94. package/core/highlight/types.js +28 -0
  95. package/core/meta/build.js +293 -0
  96. package/core/meta/index.js +17 -0
  97. package/core/meta/schema.js +49 -0
  98. package/core/motion/effects.js +54 -0
  99. package/core/motion/index.js +76 -0
  100. package/core/motion/scheduler.js +72 -0
  101. package/core/motion/scroll.js +32 -0
  102. package/core/motion/stagger.js +24 -0
  103. package/core/search/docs-url.js +96 -0
  104. package/core/search/engine.js +139 -0
  105. package/core/search/highlight.js +48 -0
  106. package/core/search/index.js +126 -0
  107. package/core/search/providers.js +36 -0
  108. package/core/search/types.js +61 -0
  109. package/core/search/worker-client.js +56 -0
  110. package/core/search/worker.js +20 -0
  111. package/dist/chunks/a11y-utils-IRC7LOPF.js +16 -0
  112. package/dist/chunks/attributes-3BZLI7XF.js +364 -0
  113. package/dist/chunks/attributes-4N5JP4CG.js +364 -0
  114. package/dist/chunks/attributes-5Q2WXGRC.js +374 -0
  115. package/dist/chunks/attributes-AIR7SVLK.js +364 -0
  116. package/dist/chunks/attributes-BGRN5XZO.js +364 -0
  117. package/dist/chunks/attributes-BVSQAYLR.js +364 -0
  118. package/dist/chunks/attributes-CDYFUY7Y.js +364 -0
  119. package/dist/chunks/attributes-JMYJZBPE.js +364 -0
  120. package/dist/chunks/attributes-R5JY3X4O.js +374 -0
  121. package/dist/chunks/attributes-STYCS3O5.js +391 -0
  122. package/dist/chunks/attributes-TNSPQTHX.js +374 -0
  123. package/dist/chunks/attributes-TPANLMLF.js +391 -0
  124. package/dist/chunks/blade-LIQLVKZQ.js +19 -0
  125. package/dist/chunks/browser-MRKYZPEH.js +1149 -0
  126. package/dist/chunks/chunk-2354NEBP.js +109 -0
  127. package/dist/chunks/chunk-2VNA7G7S.js +109 -0
  128. package/dist/chunks/chunk-42VVPW6N.js +132 -0
  129. package/dist/chunks/chunk-7FFAMRFV.js +44 -0
  130. package/dist/chunks/chunk-7MCGPHVC.js +69 -0
  131. package/dist/chunks/chunk-AQLRJSGG.js +109 -0
  132. package/dist/chunks/chunk-EWPSDMQT.js +109 -0
  133. package/dist/chunks/chunk-F7OLHTGX.js +22 -0
  134. package/dist/chunks/chunk-J472ERN2.js +242 -0
  135. package/dist/chunks/chunk-LA7264K4.js +85 -0
  136. package/dist/chunks/chunk-M5CHQVP6.js +61 -0
  137. package/dist/chunks/chunk-MKZP2TBH.js +89 -0
  138. package/dist/chunks/chunk-QTJJ3DPO.js +109 -0
  139. package/dist/chunks/chunk-RDE3QE7Z.js +89 -0
  140. package/dist/chunks/chunk-RSMRR27R.js +109 -0
  141. package/dist/chunks/chunk-RZQVWFHW.js +109 -0
  142. package/dist/chunks/chunk-SRL6EWHP.js +109 -0
  143. package/dist/chunks/chunk-U4XHMZ7D.js +109 -0
  144. package/dist/chunks/chunk-V5YIUA6G.js +109 -0
  145. package/dist/chunks/chunk-XIET2VSZ.js +109 -0
  146. package/dist/chunks/chunk-XYLJ2GCB.js +205 -0
  147. package/dist/chunks/chunk-Z4JYQ2XX.js +51 -0
  148. package/dist/chunks/chunk-ZPSPKUYD.js +109 -0
  149. package/dist/chunks/css-MQ5YU77P.js +28 -0
  150. package/dist/chunks/highlight-GJHHV4KM.js +37 -0
  151. package/dist/chunks/highlight-XTHRKBA3.js +37 -0
  152. package/dist/chunks/html-ZODC4DLQ.js +20 -0
  153. package/dist/chunks/js-MNSNYTJU.js +7 -0
  154. package/dist/chunks/json-VEM2HFH3.js +17 -0
  155. package/dist/chunks/markdown-E7OPGS3S.js +19 -0
  156. package/dist/chunks/php-MLL7T3LT.js +41 -0
  157. package/dist/chunks/plain-LJJDC5TN.js +8 -0
  158. package/dist/chunks/runtime-entry.js +14 -0
  159. package/dist/chunks/shell-QTRK4U4E.js +35 -0
  160. package/dist/chunks/sql-PPWLHGJ2.js +23 -0
  161. package/dist/chunks/typescript-JT3CCYWL.js +30 -0
  162. package/dist/chunks/velin-accordion-FBIPAEXG.js +105 -0
  163. package/dist/chunks/velin-accordion-QAQO7BI7.js +117 -0
  164. package/dist/chunks/velin-announcer-PVTXXCWR.js +33 -0
  165. package/dist/chunks/velin-bottom-nav-2N2TYWOF.js +86 -0
  166. package/dist/chunks/velin-bottom-nav-7GEMPIM6.js +86 -0
  167. package/dist/chunks/velin-bottom-nav-CTU6FFZV.js +101 -0
  168. package/dist/chunks/velin-bottom-nav-N3DFQR66.js +86 -0
  169. package/dist/chunks/velin-carousel-Y5VCOABZ.js +213 -0
  170. package/dist/chunks/velin-carousel-ZTBANFQQ.js +213 -0
  171. package/dist/chunks/velin-code-block-ASUBTAQV.js +119 -0
  172. package/dist/chunks/velin-code-block-CIAURDRJ.js +132 -0
  173. package/dist/chunks/velin-code-block-TSUKPY4C.js +123 -0
  174. package/dist/chunks/velin-code-block-Y6CM726Q.js +119 -0
  175. package/dist/chunks/velin-collapse-5XYBUIID.js +80 -0
  176. package/dist/chunks/velin-combobox-2KDTCQ7N.js +155 -0
  177. package/dist/chunks/velin-combobox-NXS4QB4R.js +155 -0
  178. package/dist/chunks/velin-combobox-UGA56HP3.js +155 -0
  179. package/dist/chunks/velin-command-CKDNO4BW.js +148 -0
  180. package/dist/chunks/velin-command-M7RNHUPR.js +136 -0
  181. package/dist/chunks/velin-command-ONKO2A3J.js +136 -0
  182. package/dist/chunks/velin-command-TMLSRGIU.js +136 -0
  183. package/dist/chunks/velin-copy-G2TZ5YBB.js +81 -0
  184. package/dist/chunks/velin-copy-NYDBOKXT.js +81 -0
  185. package/dist/chunks/velin-copy-T5KDTDXP.js +81 -0
  186. package/dist/chunks/velin-countdown-4ZVDGK4R.js +101 -0
  187. package/dist/chunks/velin-countdown-5XSTN3BH.js +101 -0
  188. package/dist/chunks/velin-countdown-7AIY66CU.js +101 -0
  189. package/dist/chunks/velin-counter-ISCTEAHI.js +118 -0
  190. package/dist/chunks/velin-counter-L5FYJF7A.js +121 -0
  191. package/dist/chunks/velin-dialog-D2GUHSCD.js +144 -0
  192. package/dist/chunks/velin-dialog-ELFOZIXZ.js +152 -0
  193. package/dist/chunks/velin-dialog-GTTZI564.js +147 -0
  194. package/dist/chunks/velin-dialog-IJLFDXAJ.js +144 -0
  195. package/dist/chunks/velin-dialog-TNS3WXMB.js +144 -0
  196. package/dist/chunks/velin-drawer-BE6TYN3H.js +130 -0
  197. package/dist/chunks/velin-drawer-DLL2GLT6.js +130 -0
  198. package/dist/chunks/velin-drawer-MJS6WCF7.js +130 -0
  199. package/dist/chunks/velin-dropdown-PLUIFA5M.js +172 -0
  200. package/dist/chunks/velin-email-N5B5ZYTE.js +90 -0
  201. package/dist/chunks/velin-email-NTM6DG3V.js +90 -0
  202. package/dist/chunks/velin-email-RBX6ZR4S.js +90 -0
  203. package/dist/chunks/velin-haptic-4QQTM3RK.js +50 -0
  204. package/dist/chunks/velin-icon-7M76DOPB.js +164 -0
  205. package/dist/chunks/velin-icon-KZO3IEHG.js +164 -0
  206. package/dist/chunks/velin-icon-WTFPG2DD.js +191 -0
  207. package/dist/chunks/velin-icon-ZTSKUOVN.js +193 -0
  208. package/dist/chunks/velin-lightbox-6E7CAATP.js +149 -0
  209. package/dist/chunks/velin-lightbox-I75U6JF4.js +140 -0
  210. package/dist/chunks/velin-lightbox-QOTB4PRL.js +140 -0
  211. package/dist/chunks/velin-lightbox-UCD6N7HF.js +140 -0
  212. package/dist/chunks/velin-live-dot-RJHX2DGY.js +74 -0
  213. package/dist/chunks/velin-live-dot-XHUZCIDZ.js +67 -0
  214. package/dist/chunks/velin-menubar-I426AED2.js +86 -0
  215. package/dist/chunks/velin-menubar-J66JXRWW.js +86 -0
  216. package/dist/chunks/velin-menubar-SFEXJE56.js +86 -0
  217. package/dist/chunks/velin-modal-2HOBXE6F.js +176 -0
  218. package/dist/chunks/velin-modal-5HYNNNUI.js +176 -0
  219. package/dist/chunks/velin-modal-AEOTZ67O.js +177 -0
  220. package/dist/chunks/velin-modal-GLI2XZZB.js +176 -0
  221. package/dist/chunks/velin-persist-DFPL3QP4.js +110 -0
  222. package/dist/chunks/velin-popover-EXINRIGJ.js +145 -0
  223. package/dist/chunks/velin-popover-HQW6Q2Y6.js +172 -0
  224. package/dist/chunks/velin-popover-OXX7MRZ6.js +145 -0
  225. package/dist/chunks/velin-popover-T72HK3DF.js +151 -0
  226. package/dist/chunks/velin-popover-YKCCROJG.js +145 -0
  227. package/dist/chunks/velin-progress-ring-E4YRLZHH.js +66 -0
  228. package/dist/chunks/velin-rating-6CDBI6DG.js +91 -0
  229. package/dist/chunks/velin-rating-N4DI2XNL.js +91 -0
  230. package/dist/chunks/velin-rating-XRQJV4LO.js +91 -0
  231. package/dist/chunks/velin-scroll-top-F2FCZNYD.js +58 -0
  232. package/dist/chunks/velin-scroll-top-OHYVVHHY.js +58 -0
  233. package/dist/chunks/velin-scrollspy-OKCT4FDV.js +50 -0
  234. package/dist/chunks/velin-search-2XRQFBCS.js +556 -0
  235. package/dist/chunks/velin-search-4YHJWYSS.js +556 -0
  236. package/dist/chunks/velin-search-7B4KJ6TX.js +557 -0
  237. package/dist/chunks/velin-search-LWHY23Q5.js +474 -0
  238. package/dist/chunks/velin-secure-field-6PV7RZDJ.js +95 -0
  239. package/dist/chunks/velin-secure-field-H7FSBUJW.js +95 -0
  240. package/dist/chunks/velin-secure-field-OFNAXCDP.js +95 -0
  241. package/dist/chunks/velin-segmented-control-EKL4E3BL.js +109 -0
  242. package/dist/chunks/velin-segmented-control-GYD5BIXQ.js +109 -0
  243. package/dist/chunks/velin-segmented-control-PQX6LKOJ.js +109 -0
  244. package/dist/chunks/velin-sheet-3OGI4HD7.js +119 -0
  245. package/dist/chunks/velin-sheet-OUK6572T.js +119 -0
  246. package/dist/chunks/velin-sheet-R2Y67X6H.js +119 -0
  247. package/dist/chunks/velin-sparkline-GVEANJVW.js +184 -0
  248. package/dist/chunks/velin-sparkline-KDA3GQAN.js +162 -0
  249. package/dist/chunks/velin-sparkline-XVTFC6GE.js +181 -0
  250. package/dist/chunks/velin-stepper-2ZIHLKGM.js +141 -0
  251. package/dist/chunks/velin-stepper-7ECRUYHD.js +148 -0
  252. package/dist/chunks/velin-stepper-FYEUEWE6.js +141 -0
  253. package/dist/chunks/velin-stepper-X54WGHDG.js +141 -0
  254. package/dist/chunks/velin-stepper-wc-QU3KRVQR.js +133 -0
  255. package/dist/chunks/velin-tabs-5UQ5ZVMV.js +138 -0
  256. package/dist/chunks/velin-theme-toggle-32J2CBNC.js +291 -0
  257. package/dist/chunks/velin-theme-toggle-BNNS7WLV.js +285 -0
  258. package/dist/chunks/velin-theme-toggle-NO7V4TWI.js +285 -0
  259. package/dist/chunks/velin-theme-toggle-QELCJM2Q.js +291 -0
  260. package/dist/chunks/velin-toast-OMMOA2DK.js +109 -0
  261. package/dist/chunks/velin-toast-RCZ4CSUC.js +109 -0
  262. package/dist/chunks/velin-toast-RSF2IHT3.js +113 -0
  263. package/dist/chunks/velin-toast-WEUBTJG6.js +109 -0
  264. package/dist/chunks/velin-tooltip-664IOHZA.js +112 -0
  265. package/dist/chunks/velin-tooltip-BDHGRTQB.js +112 -0
  266. package/dist/chunks/velin-tooltip-HVUOKNVX.js +112 -0
  267. package/dist/chunks/velin-tooltip-wc-LXDVT6DE.js +103 -0
  268. package/dist/chunks/worker-client-R6DBYPFT.js +46 -0
  269. package/dist/llms.test.txt +40 -0
  270. package/dist/llms.txt +40 -0
  271. package/dist/search-index.json +1773 -0
  272. package/dist/search-index.test.json +1773 -0
  273. package/dist/themes/brutalist.min.css +1 -1
  274. package/dist/themes/midnight.min.css +1 -1
  275. package/dist/themes/pastel.min.css +1 -1
  276. package/dist/themes/retro.min.css +1 -1
  277. package/dist/themes/sunset.min.css +1 -1
  278. package/dist/velin-agent.json +684 -0
  279. package/dist/velin-agent.test.json +684 -0
  280. package/dist/velinstyle-components.iife.js +7959 -2199
  281. package/dist/velinstyle-components.js +7982 -2174
  282. package/dist/velinstyle-components.min.js +521 -90
  283. package/dist/velinstyle.css +1290 -282
  284. package/dist/velinstyle.d.ts +54 -0
  285. package/dist/velinstyle.min.css +1 -1
  286. package/examples/search-index.schema.json +33 -0
  287. package/package.json +57 -10
  288. package/src/a11y/authentication.css +37 -0
  289. package/src/a11y/consistent-help.css +22 -0
  290. package/src/a11y/dragging-alternatives.css +30 -0
  291. package/src/a11y/focus-appearance.css +20 -0
  292. package/src/a11y/high-contrast-aaa.css +16 -26
  293. package/src/a11y/security.css +18 -0
  294. package/src/a11y/skip-link.css +3 -1
  295. package/src/a11y/sr-only.css +1 -1
  296. package/src/base/reset.css +0 -25
  297. package/src/base/wc-placeholder.css +102 -0
  298. package/src/components/attributes.css +42 -0
  299. package/src/components/highlight.css +182 -0
  300. package/src/components/input-group.css +1 -2
  301. package/src/components/nav.css +151 -151
  302. package/src/components/search.css +95 -0
  303. package/src/components/stepper.css +2 -4
  304. package/src/components/timeline.css +1 -2
  305. package/src/components/tooltip.css +2 -4
  306. package/src/layout/container.css +5 -5
  307. package/src/layout/grid.css +8 -8
  308. package/src/layout/patterns.css +5 -5
  309. package/src/themes/brutalist.css +2 -11
  310. package/src/themes/corporate.css +0 -9
  311. package/src/themes/earth.css +0 -9
  312. package/src/themes/forest.css +0 -9
  313. package/src/themes/midnight.css +1 -10
  314. package/src/themes/neon.css +0 -9
  315. package/src/themes/nordic.css +0 -9
  316. package/src/themes/ocean.css +0 -9
  317. package/src/themes/pastel.css +1 -10
  318. package/src/themes/retro.css +2 -11
  319. package/src/themes/sharp.css +0 -7
  320. package/src/themes/soft.css +0 -7
  321. package/src/themes/sunset.css +1 -10
  322. package/src/tokens/color.css +45 -46
  323. package/src/tokens/fonts.css +10 -0
  324. package/src/tokens/motion.css +7 -0
  325. package/src/tokens/typography.css +4 -5
  326. package/src/utilities/animation.css +99 -3
  327. package/src/utilities/chart-animation.css +101 -0
  328. package/src/utilities/display.css +3 -3
  329. package/src/utilities/divide.css +2 -6
  330. package/src/utilities/filter-effects.css +103 -0
  331. package/src/utilities/responsive.css +4 -4
  332. package/src/utilities/safe-area.css +39 -0
  333. package/src/utilities/scroll-animation.css +34 -0
  334. package/src/utilities/spacing.css +17 -8
  335. package/src/utilities/text.css +4 -1
  336. package/src/velinstyle.css +12 -0
@@ -1,8 +1,9 @@
1
1
  @layer tokens {
2
2
  :root {
3
- --velin-color-primary: oklch(55% .15 250);
4
- --velin-color-primary-hover: oklch(48% .15 250);
5
- --velin-color-primary-active: oklch(42% .15 250);
3
+ --velin-color-primary: oklch(38% .18 250);
4
+ --velin-color-primary-text: oklch(38% .18 250);
5
+ --velin-color-primary-hover: oklch(32% .18 250);
6
+ --velin-color-primary-active: oklch(32% .18 250);
6
7
  --velin-color-primary-subtle: oklch(92% .04 250);
7
8
  --velin-color-on-primary: oklch(100% 0 0);
8
9
  --velin-color-secondary: oklch(55% .12 320);
@@ -13,18 +14,21 @@
13
14
  --velin-color-surface: oklch(98% .005 250);
14
15
  --velin-color-surface-dim: oklch(93% .005 250);
15
16
  --velin-color-surface-bright: oklch(100% 0 0);
16
- --velin-color-text: oklch(15% .01 250);
17
- --velin-color-text-muted: oklch(45% .01 250);
18
- --velin-color-text-subtle: oklch(60% .005 250);
19
- --velin-color-border: oklch(82% .01 250);
20
- --velin-color-border-strong: oklch(65% .01 250);
17
+ --velin-color-text: oklch(8% .01 250);
18
+ --velin-color-text-muted: oklch(28% .01 250);
19
+ --velin-color-text-subtle: oklch(38% .005 250);
20
+ --velin-color-border: oklch(35% .01 250);
21
+ --velin-color-border-strong: oklch(20% .01 250);
21
22
  --velin-color-success: oklch(55% .16 145);
23
+ --velin-color-success-text: oklch(38% .16 145);
22
24
  --velin-color-success-subtle: oklch(92% .04 145);
23
25
  --velin-color-on-success: oklch(100% 0 0);
24
26
  --velin-color-warning: oklch(75% .15 85);
27
+ --velin-color-warning-text: oklch(42% .14 85);
25
28
  --velin-color-warning-subtle: oklch(95% .04 85);
26
29
  --velin-color-on-warning: oklch(20% .02 85);
27
30
  --velin-color-danger: oklch(55% .2 25);
31
+ --velin-color-danger-text: oklch(40% .2 25);
28
32
  --velin-color-danger-hover: oklch(48% .2 25);
29
33
  --velin-color-danger-subtle: oklch(92% .04 25);
30
34
  --velin-color-on-danger: oklch(100% 0 0);
@@ -32,16 +36,16 @@
32
36
  --velin-color-info-subtle: oklch(92% .04 240);
33
37
  --velin-color-on-info: oklch(100% 0 0);
34
38
  --velin-color-overlay: oklch(0% 0 0 / .4);
35
- --velin-color-focus: oklch(60% .2 250);
39
+ --velin-color-focus: oklch(35% .22 250);
36
40
  }
37
41
 
38
42
  @media (prefers-color-scheme: dark) {
39
43
  :root:not([data-velin-theme="light"]) {
40
- --velin-color-primary: oklch(72% .12 250);
41
- --velin-color-primary-hover: oklch(78% .12 250);
42
- --velin-color-primary-active: oklch(65% .12 250);
44
+ --velin-color-primary: oklch(48% .14 250);
45
+ --velin-color-primary-hover: oklch(55% .14 250);
46
+ --velin-color-primary-active: oklch(42% .14 250);
43
47
  --velin-color-primary-subtle: oklch(25% .06 250);
44
- --velin-color-on-primary: oklch(10% .01 250);
48
+ --velin-color-on-primary: oklch(98% 0 0);
45
49
  --velin-color-secondary: oklch(72% .1 320);
46
50
  --velin-color-secondary-hover: oklch(78% .1 320);
47
51
  --velin-color-secondary-active: oklch(65% .1 320);
@@ -51,20 +55,24 @@
51
55
  --velin-color-surface-dim: oklch(10% .01 250);
52
56
  --velin-color-surface-bright: oklch(22% .01 250);
53
57
  --velin-color-text: oklch(92% .005 250);
54
- --velin-color-text-muted: oklch(70% .005 250);
55
- --velin-color-text-subtle: oklch(55% .005 250);
58
+ --velin-color-text-muted: oklch(85% .005 250);
59
+ --velin-color-text-subtle: oklch(72% .005 250);
56
60
  --velin-color-border: oklch(30% .01 250);
57
61
  --velin-color-border-strong: oklch(45% .01 250);
62
+ --velin-color-primary-text: oklch(82% .12 250);
58
63
  --velin-color-success: oklch(72% .14 145);
64
+ --velin-color-success-text: oklch(82% .14 145);
59
65
  --velin-color-success-subtle: oklch(25% .06 145);
60
66
  --velin-color-on-success: oklch(10% .01 145);
61
67
  --velin-color-warning: oklch(80% .12 85);
68
+ --velin-color-warning-text: oklch(80% .12 85);
62
69
  --velin-color-warning-subtle: oklch(25% .06 85);
63
70
  --velin-color-on-warning: oklch(10% .02 85);
64
- --velin-color-danger: oklch(70% .16 25);
65
- --velin-color-danger-hover: oklch(76% .16 25);
71
+ --velin-color-danger: oklch(52% .16 25);
72
+ --velin-color-danger-text: oklch(82% .16 25);
73
+ --velin-color-danger-hover: oklch(58% .16 25);
66
74
  --velin-color-danger-subtle: oklch(25% .06 25);
67
- --velin-color-on-danger: oklch(10% .01 25);
75
+ --velin-color-on-danger: oklch(98% 0 0);
68
76
  --velin-color-info: oklch(72% .1 240);
69
77
  --velin-color-info-subtle: oklch(25% .04 240);
70
78
  --velin-color-on-info: oklch(10% .01 240);
@@ -74,11 +82,12 @@
74
82
  }
75
83
 
76
84
  [data-velin-theme="dark"] {
77
- --velin-color-primary: oklch(72% .12 250);
78
- --velin-color-primary-hover: oklch(78% .12 250);
79
- --velin-color-primary-active: oklch(65% .12 250);
85
+ --velin-color-primary: oklch(48% .12 250);
86
+ --velin-color-primary-text: oklch(82% .12 250);
87
+ --velin-color-primary-hover: oklch(55% .12 250);
88
+ --velin-color-primary-active: oklch(42% .12 250);
80
89
  --velin-color-primary-subtle: oklch(25% .06 250);
81
- --velin-color-on-primary: oklch(10% .01 250);
90
+ --velin-color-on-primary: oklch(98% 0 0);
82
91
  --velin-color-secondary: oklch(72% .1 320);
83
92
  --velin-color-secondary-hover: oklch(78% .1 320);
84
93
  --velin-color-secondary-active: oklch(65% .1 320);
@@ -88,25 +97,28 @@
88
97
  --velin-color-surface-dim: oklch(10% .01 250);
89
98
  --velin-color-surface-bright: oklch(22% .01 250);
90
99
  --velin-color-text: oklch(92% .005 250);
91
- --velin-color-text-muted: oklch(70% .005 250);
92
- --velin-color-text-subtle: oklch(55% .005 250);
100
+ --velin-color-text-muted: oklch(88% .005 250);
101
+ --velin-color-text-subtle: oklch(78% .005 250);
93
102
  --velin-color-border: oklch(30% .01 250);
94
103
  --velin-color-border-strong: oklch(45% .01 250);
95
104
  --velin-color-success: oklch(72% .14 145);
105
+ --velin-color-success-text: oklch(82% .14 145);
96
106
  --velin-color-success-subtle: oklch(25% .06 145);
97
107
  --velin-color-on-success: oklch(10% .01 145);
98
108
  --velin-color-warning: oklch(80% .12 85);
109
+ --velin-color-warning-text: oklch(80% .12 85);
99
110
  --velin-color-warning-subtle: oklch(25% .06 85);
100
111
  --velin-color-on-warning: oklch(10% .02 85);
101
- --velin-color-danger: oklch(70% .16 25);
112
+ --velin-color-danger: oklch(52% .16 25);
113
+ --velin-color-danger-text: oklch(82% .16 25);
102
114
  --velin-color-danger-hover: oklch(76% .16 25);
103
115
  --velin-color-danger-subtle: oklch(25% .06 25);
104
- --velin-color-on-danger: oklch(10% .01 25);
116
+ --velin-color-on-danger: oklch(98% 0 0);
105
117
  --velin-color-info: oklch(72% .1 240);
106
118
  --velin-color-info-subtle: oklch(25% .04 240);
107
- --velin-color-on-info: oklch(10% .01 240);
119
+ --velin-color-on-info: oklch(98% 0 0);
108
120
  --velin-color-overlay: oklch(0% 0 0 / .6);
109
- --velin-color-focus: oklch(72% .18 250);
121
+ --velin-color-focus: oklch(82% .18 250);
110
122
  }
111
123
 
112
124
  :root {
@@ -128,11 +140,17 @@
128
140
  --velin-space-20: 5rem;
129
141
  --velin-space-24: 6rem;
130
142
  --velin-space-32: 8rem;
131
- --velin-font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
143
+ --velin-font-display: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
144
+ --velin-font-text: var(--velin-font-display);
145
+ --velin-font-code: "JetBrains Mono", "Cascadia Code", "Fira Code", Consolas, monospace;
146
+ --velin-font-features: "cv02", "ss01";
147
+ --velin-font-optical: auto;
148
+ --velin-font-size-adjust-fallback: .52;
149
+ --velin-font-sans: var(--velin-font-text, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);
132
150
  --velin-font-serif: Georgia, Cambria, "Times New Roman", Times, serif;
133
- --velin-font-mono: "Cascadia Code", "Fira Code", Consolas, "Courier New", monospace;
134
- --velin-font-heading: var(--velin-font-sans);
135
- --velin-font-body: var(--velin-font-sans);
151
+ --velin-font-mono: var(--velin-font-code, "Cascadia Code", "Fira Code", Consolas, "Courier New", monospace);
152
+ --velin-font-heading: var(--velin-font-display, var(--velin-font-sans));
153
+ --velin-font-body: var(--velin-font-text, var(--velin-font-sans));
136
154
  --velin-fluid-min-vw: 20;
137
155
  --velin-fluid-max-vw: 90;
138
156
  --velin-text-xs: clamp(.625rem, .6rem + .1vw, .75rem);
@@ -196,11 +214,18 @@
196
214
  --velin-duration-normal: .2s;
197
215
  --velin-duration-slow: .3s;
198
216
  --velin-duration-slower: .5s;
217
+ --velin-duration-slowest: .8s;
218
+ --velin-duration-cinematic: 1.2s;
199
219
  --velin-ease-default: cubic-bezier(.4, 0, .2, 1);
200
220
  --velin-ease-in: cubic-bezier(.4, 0, 1, 1);
201
221
  --velin-ease-out: cubic-bezier(0, 0, .2, 1);
202
222
  --velin-ease-in-out: cubic-bezier(.4, 0, .2, 1);
203
223
  --velin-ease-bounce: cubic-bezier(.34, 1.56, .64, 1);
224
+ --velin-ease-spring: cubic-bezier(.34, 1.56, .64, 1.4);
225
+ --velin-ease-elastic: cubic-bezier(.68, -.6, .32, 1.6);
226
+ --velin-ease-expo-out: cubic-bezier(.16, 1, .3, 1);
227
+ --velin-ease-back-out: cubic-bezier(.34, 1.4, .64, 1);
228
+ --velin-ease-snappy: cubic-bezier(.2, .8, .2, 1);
204
229
  --velin-transition-colors: color var(--velin-duration-normal) var(--velin-ease-default),
205
230
  background-color var(--velin-duration-normal) var(--velin-ease-default),
206
231
  border-color var(--velin-duration-normal) var(--velin-ease-default);
@@ -333,14 +358,75 @@
333
358
  [hidden] {
334
359
  display: none !important;
335
360
  }
361
+ }
362
+
363
+ @layer base {
364
+ velin-modal:not(:defined), velin-drawer:not(:defined), velin-dialog:not(:defined), velin-sheet:not(:defined), velin-lightbox:not(:defined), velin-command:not(:defined) {
365
+ opacity: 0;
366
+ visibility: hidden;
367
+ contain: layout style;
368
+ block-size: 0;
369
+ display: block;
370
+ overflow: hidden;
371
+ }
336
372
 
337
- velin-modal:not(:defined), velin-drawer:not(:defined), velin-tabs:not(:defined), velin-accordion:not(:defined), velin-dropdown:not(:defined), velin-toast:not(:defined), velin-dialog:not(:defined), velin-popover:not(:defined), velin-tooltip-wc:not(:defined), velin-lightbox:not(:defined), velin-carousel:not(:defined), velin-collapse:not(:defined), velin-stepper-wc:not(:defined), velin-countdown:not(:defined), velin-progress-ring:not(:defined), velin-persist:not(:defined), velin-copy:not(:defined), velin-scroll-top:not(:defined), velin-scrollspy:not(:defined), velin-theme-toggle:not(:defined), velin-icon:not(:defined) {
373
+ velin-tabs:not(:defined), velin-accordion:not(:defined), velin-carousel:not(:defined), velin-collapse:not(:defined), velin-stepper:not(:defined), velin-stepper-wc:not(:defined), velin-bottom-nav:not(:defined), velin-menubar:not(:defined), velin-segmented-control:not(:defined), velin-code-block:not(:defined), velin-secure-field:not(:defined), velin-search:not(:defined) {
338
374
  opacity: 0;
339
375
  visibility: hidden;
376
+ contain: layout style;
377
+ min-block-size: 2.75rem;
378
+ display: block;
379
+ }
380
+
381
+ velin-dropdown:not(:defined), velin-combobox:not(:defined), velin-popover:not(:defined), velin-tooltip:not(:defined), velin-tooltip-wc:not(:defined), velin-rating:not(:defined), velin-copy:not(:defined), velin-email:not(:defined), velin-countdown:not(:defined), velin-counter:not(:defined), velin-live-dot:not(:defined), velin-progress-ring:not(:defined), velin-icon:not(:defined), velin-theme-toggle:not(:defined) {
382
+ vertical-align: middle;
383
+ opacity: 0;
384
+ visibility: hidden;
385
+ contain: layout style;
386
+ min-block-size: 2.75rem;
387
+ min-inline-size: 2.75rem;
388
+ display: inline-block;
389
+ }
390
+
391
+ velin-sparkline:not(:defined) {
392
+ vertical-align: middle;
393
+ opacity: 0;
394
+ visibility: hidden;
395
+ contain: layout style;
396
+ min-block-size: 1.5rem;
397
+ min-inline-size: 4rem;
398
+ display: inline-block;
399
+ }
400
+
401
+ velin-scroll-top:not(:defined) {
402
+ opacity: 0;
403
+ visibility: hidden;
404
+ pointer-events: none;
405
+ contain: layout style;
406
+ block-size: 2.75rem;
407
+ inline-size: 2.75rem;
408
+ position: fixed;
409
+ inset-block-end: var(--velin-space-4, 1rem);
410
+ inset-inline-end: var(--velin-space-4, 1rem);
411
+ }
412
+
413
+ velin-toast:not(:defined), velin-announcer:not(:defined) {
414
+ opacity: 0;
415
+ visibility: hidden;
416
+ pointer-events: none;
417
+ contain: strict;
418
+ block-size: 1px;
419
+ inline-size: 1px;
420
+ position: fixed;
421
+ overflow: hidden;
422
+ }
423
+
424
+ velin-persist:not(:defined), velin-scrollspy:not(:defined) {
425
+ opacity: 0;
426
+ visibility: hidden;
427
+ display: contents;
340
428
  }
341
- }
342
429
 
343
- @layer base {
344
430
  :focus-visible {
345
431
  outline: 3px solid var(--velin-color-focus);
346
432
  outline-offset: 2px;
@@ -531,7 +617,7 @@
531
617
  overflow: hidden;
532
618
  }
533
619
 
534
- .velin-sr-only--focusable:focus, .velin-sr-only--focusable:active {
620
+ .velin-sr-only--focusable:focus-visible, .velin-sr-only--focusable:active {
535
621
  width: auto;
536
622
  height: auto;
537
623
  padding: inherit;
@@ -570,7 +656,9 @@
570
656
  inset-inline-start: var(--velin-space-4);
571
657
  }
572
658
 
573
- .velin-skip-link:focus {
659
+ .velin-skip-link:focus-visible {
660
+ outline: 3px solid var(--velin-color-focus);
661
+ outline-offset: 2px;
574
662
  inset-block-start: var(--velin-space-4);
575
663
  }
576
664
 
@@ -836,32 +924,111 @@
836
924
  min-inline-size: 2.75rem;
837
925
  }
838
926
 
839
- :root[data-velin-contrast="aaa"] {
840
- --velin-color-text: oklch(8% .01 250);
841
- --velin-color-text-muted: oklch(28% .01 250);
842
- --velin-color-text-subtle: oklch(38% .01 250);
843
- --velin-color-border: oklch(35% .01 250);
844
- --velin-color-border-strong: oklch(20% .01 250);
845
- --velin-color-primary: oklch(38% .18 250);
846
- --velin-color-primary-hover: oklch(32% .18 250);
847
- --velin-color-on-primary: oklch(100% 0 0);
848
- --velin-color-focus: oklch(35% .22 250);
927
+ :root[data-velin-contrast="aa"] {
928
+ --velin-color-text: oklch(15% .01 250);
929
+ --velin-color-text-muted: oklch(45% .01 250);
930
+ --velin-color-text-subtle: oklch(60% .005 250);
931
+ --velin-color-primary: oklch(55% .15 250);
932
+ --velin-color-primary-text: oklch(42% .15 250);
933
+ --velin-color-border: oklch(82% .01 250);
934
+ --velin-color-focus: oklch(60% .2 250);
849
935
  }
850
936
 
851
- :root[data-velin-contrast="aaa"][data-velin-theme="dark"], :root[data-velin-contrast="aaa"]:not([data-velin-theme="light"]) {
852
- @media (prefers-color-scheme: dark) {
853
- --velin-color-text: oklch(98% .005 250);
854
- --velin-color-text-muted: oklch(82% .005 250);
855
- --velin-color-text-subtle: oklch(72% .005 250);
856
- --velin-color-border: oklch(55% .01 250);
857
- --velin-color-border-strong: oklch(70% .01 250);
858
- --velin-color-primary: oklch(78% .14 250);
859
- --velin-color-on-primary: oklch(8% .01 250);
860
- }
937
+ :root[data-velin-contrast="aaa"] .velin-btn, :root:not([data-velin-contrast="aa"]) .velin-btn, :root[data-velin-contrast="aaa"] .velin-input, :root[data-velin-contrast="aaa"] .velin-select, :root[data-velin-contrast="aaa"] .velin-textarea, :root:not([data-velin-contrast="aa"]) .velin-input, :root:not([data-velin-contrast="aa"]) .velin-select, :root:not([data-velin-contrast="aa"]) .velin-textarea {
938
+ border-width: 2px;
861
939
  }
862
940
 
863
- :root[data-velin-contrast="aaa"] .velin-btn, :root[data-velin-contrast="aaa"] .velin-input, :root[data-velin-contrast="aaa"] .velin-select, :root[data-velin-contrast="aaa"] .velin-textarea {
864
- border-width: 2px;
941
+ .velin-auth-form {
942
+ gap: var(--velin-space-4);
943
+ flex-direction: column;
944
+ max-width: 28rem;
945
+ display: flex;
946
+ }
947
+
948
+ .velin-auth-form .velin-field-error {
949
+ color: var(--velin-color-danger, #b91c1c);
950
+ font-size: var(--velin-text-sm);
951
+ align-items: flex-start;
952
+ gap: var(--velin-space-2);
953
+ display: flex;
954
+ }
955
+
956
+ .velin-auth-form .velin-field-error:before {
957
+ content: "";
958
+ background: currentColor;
959
+ flex-shrink: 0;
960
+ width: 1.25rem;
961
+ height: 1.25rem;
962
+ margin-block-start: .1em;
963
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='12' y1='8' x2='12' y2='12'/%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'/%3E%3C/svg%3E") center / contain no-repeat;
964
+ }
965
+
966
+ .velin-input[aria-invalid="true"], .velin-auth-form .velin-input:invalid:not(:placeholder-shown) {
967
+ border-color: var(--velin-color-danger, #b91c1c);
968
+ outline-color: var(--velin-color-danger, #b91c1c);
969
+ }
970
+
971
+ .velin-auth-form .velin-input[aria-invalid="true"] {
972
+ background-image: linear-gradient(#0000, #0000);
973
+ }
974
+
975
+ .velin-field-help {
976
+ font-size: var(--velin-text-sm);
977
+ color: var(--velin-color-text-muted);
978
+ line-height: var(--velin-leading-snug);
979
+ margin-block-start: var(--velin-space-1);
980
+ }
981
+
982
+ .velin-form-legend {
983
+ font-size: var(--velin-text-lg);
984
+ font-weight: var(--velin-weight-semibold);
985
+ margin-block-end: var(--velin-space-2);
986
+ padding: 0;
987
+ }
988
+
989
+ .velin-form-section-help {
990
+ font-size: var(--velin-text-sm);
991
+ color: var(--velin-color-text-muted);
992
+ margin-block-end: var(--velin-space-4);
993
+ }
994
+
995
+ .velin-drag-handle {
996
+ cursor: grab;
997
+ touch-action: none;
998
+ justify-content: center;
999
+ align-items: center;
1000
+ min-width: 2.75rem;
1001
+ min-height: 2.75rem;
1002
+ display: inline-flex;
1003
+ }
1004
+
1005
+ .velin-drag-handle:active {
1006
+ cursor: grabbing;
1007
+ }
1008
+
1009
+ .velin-drag-keyboard-hint {
1010
+ font-size: var(--velin-text-xs);
1011
+ color: var(--velin-color-text-muted);
1012
+ margin-block-start: var(--velin-space-1);
1013
+ }
1014
+
1015
+ .velin-drag-keyboard-hint kbd {
1016
+ font-family: var(--velin-font-mono);
1017
+ border-radius: var(--velin-radius-sm);
1018
+ border: 1px solid var(--velin-color-border);
1019
+ background: var(--velin-color-surface-dim);
1020
+ padding: .1em .35em;
1021
+ }
1022
+
1023
+ :root {
1024
+ --velin-focus-ring-width: 3px;
1025
+ --velin-focus-ring-offset: 2px;
1026
+ --velin-focus-ring-color: var(--velin-color-focus, oklch(55% .2 264));
1027
+ }
1028
+
1029
+ :where(a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:not([tabindex="-1"]):focus-visible) {
1030
+ outline: var(--velin-focus-ring-width) solid var(--velin-focus-ring-color);
1031
+ outline-offset: var(--velin-focus-ring-offset);
865
1032
  }
866
1033
  }
867
1034
 
@@ -4396,110 +4563,416 @@
4396
4563
  transition: none;
4397
4564
  }
4398
4565
  }
4399
- }
4400
4566
 
4401
- @layer utilities {
4402
- .velin-text-primary {
4403
- color: var(--velin-color-primary);
4567
+ .velin-search {
4568
+ inline-size: 100%;
4569
+ position: relative;
4404
4570
  }
4405
4571
 
4406
- .velin-text-secondary {
4407
- color: var(--velin-color-secondary);
4572
+ .velin-search__input {
4573
+ inline-size: 100%;
4574
+ padding: var(--velin-space-2) var(--velin-space-3);
4575
+ border: 1px solid var(--velin-color-border);
4576
+ border-radius: var(--velin-radius-md);
4577
+ background: var(--velin-color-surface);
4578
+ color: var(--velin-color-text);
4408
4579
  }
4409
4580
 
4410
- .velin-text-muted {
4411
- color: var(--velin-color-text-muted);
4581
+ .velin-search__results {
4582
+ z-index: var(--velin-z-dropdown, 100);
4583
+ border: 1px solid var(--velin-color-border);
4584
+ border-radius: var(--velin-radius-md);
4585
+ background: var(--velin-color-surface);
4586
+ max-block-size: 20rem;
4587
+ box-shadow: var(--velin-shadow-lg);
4588
+ opacity: 0;
4589
+ transition: opacity var(--velin-duration-fast, .15s) ease,
4590
+ transform var(--velin-duration-fast, .15s) ease;
4591
+ position: absolute;
4592
+ inset-block-start: calc(100% + var(--velin-space-1));
4593
+ inset-inline: 0;
4594
+ overflow: auto;
4595
+ transform: translateY(-.25rem);
4412
4596
  }
4413
4597
 
4414
- .velin-text-subtle {
4415
- color: var(--velin-color-text-subtle);
4598
+ .velin-search__results--open {
4599
+ opacity: 1;
4600
+ transform: translateY(0);
4416
4601
  }
4417
4602
 
4418
- .velin-text-success {
4419
- color: var(--velin-color-success);
4603
+ .velin-search__group-label {
4604
+ padding: var(--velin-space-2) var(--velin-space-3);
4605
+ font-size: var(--velin-text-xs, .75rem);
4606
+ text-transform: uppercase;
4607
+ letter-spacing: .04em;
4608
+ color: var(--velin-color-text-muted);
4609
+ border-block-end: 1px solid var(--velin-color-border);
4610
+ font-weight: 600;
4420
4611
  }
4421
4612
 
4422
- .velin-text-warning {
4423
- color: var(--velin-color-warning);
4613
+ .velin-search__item {
4614
+ gap: var(--velin-space-1);
4615
+ padding: var(--velin-space-2) var(--velin-space-3);
4616
+ color: inherit;
4617
+ flex-direction: column;
4618
+ text-decoration: none;
4619
+ display: flex;
4424
4620
  }
4425
4621
 
4426
- .velin-text-danger {
4427
- color: var(--velin-color-danger);
4622
+ .velin-search__item:hover, .velin-search__item--active {
4623
+ background: var(--velin-color-surface-hover, color-mix(in oklch, var(--velin-color-primary) 12%, transparent));
4428
4624
  }
4429
4625
 
4430
- .velin-text-info {
4431
- color: var(--velin-color-info);
4626
+ .velin-search__title {
4627
+ font-weight: 600;
4432
4628
  }
4433
4629
 
4434
- .velin-text-inherit {
4435
- color: inherit;
4630
+ .velin-search__excerpt {
4631
+ font-size: var(--velin-text-sm, .875rem);
4632
+ color: var(--velin-color-text-muted);
4436
4633
  }
4437
4634
 
4438
- .velin-bg-surface {
4439
- background-color: var(--velin-color-surface);
4635
+ .velin-search-hit {
4636
+ background: color-mix(in oklch, var(--velin-color-primary) 35%, transparent);
4637
+ border-radius: 2px;
4638
+ padding-inline: 1px;
4440
4639
  }
4441
4640
 
4442
- .velin-bg-surface-dim {
4443
- background-color: var(--velin-color-surface-dim);
4641
+ @media (prefers-reduced-motion: reduce) {
4642
+ .velin-search__results {
4643
+ transition: none;
4644
+ }
4444
4645
  }
4445
4646
 
4446
- .velin-bg-surface-bright {
4447
- background-color: var(--velin-color-surface-bright);
4647
+ @media (width <= 640px) {
4648
+ .velin-search {
4649
+ min-inline-size: 0;
4650
+ }
4651
+
4652
+ .velin-search__results {
4653
+ box-sizing: border-box;
4654
+ max-inline-size: min(100vw, 100%);
4655
+ inset-inline: 0;
4656
+ }
4448
4657
  }
4449
4658
 
4450
- .velin-bg-primary {
4451
- background-color: var(--velin-color-primary);
4659
+ .velin-quote {
4660
+ margin-block: var(--velin-space-4);
4661
+ border-inline-start: 4px solid var(--velin-color-primary);
4662
+ color: var(--velin-color-text-muted);
4663
+ padding-inline-start: var(--velin-space-4);
4664
+ font-style: italic;
4452
4665
  }
4453
4666
 
4454
- .velin-bg-primary-subtle {
4455
- background-color: var(--velin-color-primary-subtle);
4667
+ .velin-code-block {
4668
+ margin-block: var(--velin-space-4);
4669
+ border-radius: var(--velin-radius-md);
4670
+ background: var(--velin-color-surface-elevated, var(--velin-color-surface));
4671
+ border: 1px solid var(--velin-color-border);
4672
+ position: relative;
4673
+ overflow: hidden;
4456
4674
  }
4457
4675
 
4458
- .velin-bg-secondary {
4459
- background-color: var(--velin-color-secondary);
4676
+ .velin-code-block pre {
4677
+ padding: var(--velin-space-4);
4678
+ font-family: var(--velin-font-mono, ui-monospace, monospace);
4679
+ font-size: var(--velin-text-sm, .875rem);
4680
+ margin: 0;
4681
+ overflow-x: auto;
4460
4682
  }
4461
4683
 
4462
- .velin-bg-secondary-subtle {
4463
- background-color: var(--velin-color-secondary-subtle);
4684
+ .velin-code-block__copy {
4685
+ position: absolute;
4686
+ inset-block-start: var(--velin-space-2);
4687
+ inset-inline-end: var(--velin-space-2);
4464
4688
  }
4465
4689
 
4466
- .velin-bg-success {
4467
- background-color: var(--velin-color-success);
4690
+ .velin-highlight {
4691
+ background: color-mix(in oklch, var(--velin-color-warning, #f59e0b) 35%, transparent);
4692
+ border-radius: 2px;
4693
+ padding-inline: 2px;
4468
4694
  }
4469
4695
 
4470
- .velin-bg-success-subtle {
4471
- background-color: var(--velin-color-success-subtle);
4696
+ [velin-anchor] {
4697
+ scroll-margin-block: var(--velin-space-16, 4rem);
4472
4698
  }
4473
4699
 
4474
- .velin-bg-warning {
4475
- background-color: var(--velin-color-warning);
4700
+ pre.velin-syntax-pending code, code.velin-syntax-pending {
4701
+ opacity: 0;
4476
4702
  }
4477
4703
 
4478
- .velin-bg-warning-subtle {
4479
- background-color: var(--velin-color-warning-subtle);
4704
+ pre.velin-syntax-ready code, code.velin-syntax-ready {
4705
+ opacity: 1;
4706
+ transition: opacity var(--velin-duration-normal, .25s) var(--velin-ease-out, ease-out);
4480
4707
  }
4481
4708
 
4482
- .velin-bg-danger {
4483
- background-color: var(--velin-color-danger);
4709
+ @media (prefers-reduced-motion: reduce) {
4710
+ pre.velin-syntax-ready code, code.velin-syntax-ready {
4711
+ transition: none;
4712
+ }
4484
4713
  }
4485
4714
 
4486
- .velin-bg-danger-subtle {
4487
- background-color: var(--velin-color-danger-subtle);
4715
+ .velin-token {
4716
+ font-family: inherit;
4488
4717
  }
4489
4718
 
4490
- .velin-bg-info {
4491
- background-color: var(--velin-color-info);
4719
+ .velin-token--keyword {
4720
+ color: oklch(45% .2 265);
4492
4721
  }
4493
4722
 
4494
- .velin-bg-info-subtle {
4495
- background-color: var(--velin-color-info-subtle);
4723
+ .velin-token--string {
4724
+ color: oklch(42% .14 145);
4496
4725
  }
4497
4726
 
4498
- .velin-bg-transparent {
4499
- background-color: #0000;
4727
+ .velin-token--comment {
4728
+ color: oklch(55% .02 265);
4729
+ font-style: italic;
4500
4730
  }
4501
4731
 
4502
- .velin-m-0 {
4732
+ .velin-token--number {
4733
+ color: oklch(48% .16 55);
4734
+ }
4735
+
4736
+ .velin-token--operator {
4737
+ color: oklch(50% .18 25);
4738
+ }
4739
+
4740
+ .velin-token--punctuation {
4741
+ color: oklch(52% .02 265);
4742
+ }
4743
+
4744
+ .velin-token--identifier {
4745
+ color: oklch(38% .04 265);
4746
+ }
4747
+
4748
+ .velin-token--tag {
4749
+ color: oklch(48% .18 25);
4750
+ }
4751
+
4752
+ .velin-token--attr-name {
4753
+ color: oklch(45% .16 265);
4754
+ }
4755
+
4756
+ .velin-token--attr-value {
4757
+ color: oklch(42% .14 145);
4758
+ }
4759
+
4760
+ .velin-token--builtin {
4761
+ color: oklch(46% .17 310);
4762
+ }
4763
+
4764
+ .velin-token--regex {
4765
+ color: oklch(50% .16 55);
4766
+ }
4767
+
4768
+ @supports (color: color(display-p3 1 1 1)) {
4769
+ .velin-token--keyword {
4770
+ color: color(display-p3 .2 .35 .85);
4771
+ }
4772
+
4773
+ .velin-token--string {
4774
+ color: color(display-p3 .15 .55 .35);
4775
+ }
4776
+ }
4777
+
4778
+ @media (prefers-color-scheme: dark) {
4779
+ :root:not([data-velin-theme="light"]) .velin-token--keyword {
4780
+ color: oklch(78% .14 285);
4781
+ }
4782
+ }
4783
+
4784
+ [data-velin-theme="dark"] .velin-token--keyword {
4785
+ color: oklch(78% .14 285);
4786
+ }
4787
+
4788
+ [data-velin-theme="dark"] .velin-token--string {
4789
+ color: oklch(78% .12 145);
4790
+ }
4791
+
4792
+ [data-velin-theme="dark"] .velin-token--comment {
4793
+ color: oklch(62% .03 285);
4794
+ }
4795
+
4796
+ [data-velin-theme="dark"] .velin-token--number {
4797
+ color: oklch(80% .12 75);
4798
+ }
4799
+
4800
+ [data-velin-theme="dark"] .velin-token--operator, [data-velin-theme="dark"] .velin-token--tag {
4801
+ color: oklch(78% .14 25);
4802
+ }
4803
+
4804
+ [data-velin-theme="dark"] .velin-token--attr-name {
4805
+ color: oklch(76% .12 285);
4806
+ }
4807
+
4808
+ [data-velin-theme="dark"] .velin-token--identifier {
4809
+ color: oklch(88% .02 285);
4810
+ }
4811
+
4812
+ .velin-code-block__line--highlight {
4813
+ background: color-mix(in oklch, var(--velin-color-primary, oklch(55% .2 265)) 18%, transparent);
4814
+ margin-inline: calc(-1 * var(--velin-space-4, 1rem));
4815
+ padding-inline: var(--velin-space-4, 1rem);
4816
+ display: block;
4817
+ }
4818
+
4819
+ velin-code-block {
4820
+ display: block;
4821
+ position: relative;
4822
+ }
4823
+
4824
+ velin-code-block[data-collapsed] pre {
4825
+ max-height: 12rem;
4826
+ overflow: hidden;
4827
+ }
4828
+
4829
+ velin-code-block .velin-code-block__gutter {
4830
+ grid-template-columns: auto 1fr;
4831
+ gap: 0;
4832
+ display: grid;
4833
+ }
4834
+
4835
+ velin-code-block .velin-code-block__line-numbers {
4836
+ padding: var(--velin-space-4);
4837
+ text-align: end;
4838
+ user-select: none;
4839
+ color: var(--velin-color-text-muted);
4840
+ font-family: var(--velin-font-mono, ui-monospace, monospace);
4841
+ font-size: var(--velin-text-sm, .875rem);
4842
+ border-inline-end: 1px solid var(--velin-color-border);
4843
+ flex-direction: column;
4844
+ flex-shrink: 0;
4845
+ align-items: flex-end;
4846
+ padding-inline-end: var(--velin-space-2);
4847
+ line-height: 1.55;
4848
+ display: flex;
4849
+ }
4850
+
4851
+ velin-code-block .velin-code-block__line-numbers > span {
4852
+ min-height: 1.55em;
4853
+ line-height: 1.55;
4854
+ display: block;
4855
+ }
4856
+
4857
+ velin-code-block .velin-code-block__gutter pre, velin-code-block .velin-code-block__gutter pre code {
4858
+ white-space: pre;
4859
+ tab-size: 2;
4860
+ margin: 0;
4861
+ line-height: 1.55;
4862
+ }
4863
+
4864
+ velin-code-block .velin-code-block__toolbar {
4865
+ gap: var(--velin-space-2);
4866
+ z-index: 1;
4867
+ display: flex;
4868
+ position: absolute;
4869
+ inset-block-start: var(--velin-space-2);
4870
+ inset-inline-end: var(--velin-space-2);
4871
+ }
4872
+ }
4873
+
4874
+ @layer utilities {
4875
+ .velin-text-primary {
4876
+ color: var(--velin-color-primary);
4877
+ }
4878
+
4879
+ .velin-text-secondary {
4880
+ color: var(--velin-color-secondary);
4881
+ }
4882
+
4883
+ .velin-text-muted {
4884
+ color: var(--velin-color-text-muted);
4885
+ }
4886
+
4887
+ .velin-text-subtle {
4888
+ color: var(--velin-color-text-subtle);
4889
+ }
4890
+
4891
+ .velin-text-success {
4892
+ color: var(--velin-color-success);
4893
+ }
4894
+
4895
+ .velin-text-warning {
4896
+ color: var(--velin-color-warning);
4897
+ }
4898
+
4899
+ .velin-text-danger {
4900
+ color: var(--velin-color-danger);
4901
+ }
4902
+
4903
+ .velin-text-info {
4904
+ color: var(--velin-color-info);
4905
+ }
4906
+
4907
+ .velin-text-inherit {
4908
+ color: inherit;
4909
+ }
4910
+
4911
+ .velin-bg-surface {
4912
+ background-color: var(--velin-color-surface);
4913
+ }
4914
+
4915
+ .velin-bg-surface-dim {
4916
+ background-color: var(--velin-color-surface-dim);
4917
+ }
4918
+
4919
+ .velin-bg-surface-bright {
4920
+ background-color: var(--velin-color-surface-bright);
4921
+ }
4922
+
4923
+ .velin-bg-primary {
4924
+ background-color: var(--velin-color-primary);
4925
+ }
4926
+
4927
+ .velin-bg-primary-subtle {
4928
+ background-color: var(--velin-color-primary-subtle);
4929
+ }
4930
+
4931
+ .velin-bg-secondary {
4932
+ background-color: var(--velin-color-secondary);
4933
+ }
4934
+
4935
+ .velin-bg-secondary-subtle {
4936
+ background-color: var(--velin-color-secondary-subtle);
4937
+ }
4938
+
4939
+ .velin-bg-success {
4940
+ background-color: var(--velin-color-success);
4941
+ }
4942
+
4943
+ .velin-bg-success-subtle {
4944
+ background-color: var(--velin-color-success-subtle);
4945
+ }
4946
+
4947
+ .velin-bg-warning {
4948
+ background-color: var(--velin-color-warning);
4949
+ }
4950
+
4951
+ .velin-bg-warning-subtle {
4952
+ background-color: var(--velin-color-warning-subtle);
4953
+ }
4954
+
4955
+ .velin-bg-danger {
4956
+ background-color: var(--velin-color-danger);
4957
+ }
4958
+
4959
+ .velin-bg-danger-subtle {
4960
+ background-color: var(--velin-color-danger-subtle);
4961
+ }
4962
+
4963
+ .velin-bg-info {
4964
+ background-color: var(--velin-color-info);
4965
+ }
4966
+
4967
+ .velin-bg-info-subtle {
4968
+ background-color: var(--velin-color-info-subtle);
4969
+ }
4970
+
4971
+ .velin-bg-transparent {
4972
+ background-color: #0000;
4973
+ }
4974
+
4975
+ .velin-m-0 {
4503
4976
  margin: var(--velin-space-0);
4504
4977
  }
4505
4978
 
@@ -4532,30 +5005,58 @@
4532
5005
  }
4533
5006
 
4534
5007
  .velin-mb-0 {
4535
- margin-block: var(--velin-space-0);
5008
+ margin-bottom: var(--velin-space-0);
4536
5009
  }
4537
5010
 
4538
5011
  .velin-mb-1 {
4539
- margin-block: var(--velin-space-1);
5012
+ margin-bottom: var(--velin-space-1);
4540
5013
  }
4541
5014
 
4542
5015
  .velin-mb-2 {
4543
- margin-block: var(--velin-space-2);
5016
+ margin-bottom: var(--velin-space-2);
4544
5017
  }
4545
5018
 
4546
5019
  .velin-mb-3 {
4547
- margin-block: var(--velin-space-3);
5020
+ margin-bottom: var(--velin-space-3);
4548
5021
  }
4549
5022
 
4550
5023
  .velin-mb-4 {
4551
- margin-block: var(--velin-space-4);
5024
+ margin-bottom: var(--velin-space-4);
4552
5025
  }
4553
5026
 
4554
5027
  .velin-mb-6 {
4555
- margin-block: var(--velin-space-6);
5028
+ margin-bottom: var(--velin-space-6);
4556
5029
  }
4557
5030
 
4558
5031
  .velin-mb-8 {
5032
+ margin-bottom: var(--velin-space-8);
5033
+ }
5034
+
5035
+ .velin-my-0 {
5036
+ margin-block: var(--velin-space-0);
5037
+ }
5038
+
5039
+ .velin-my-1 {
5040
+ margin-block: var(--velin-space-1);
5041
+ }
5042
+
5043
+ .velin-my-2 {
5044
+ margin-block: var(--velin-space-2);
5045
+ }
5046
+
5047
+ .velin-my-3 {
5048
+ margin-block: var(--velin-space-3);
5049
+ }
5050
+
5051
+ .velin-my-4 {
5052
+ margin-block: var(--velin-space-4);
5053
+ }
5054
+
5055
+ .velin-my-6 {
5056
+ margin-block: var(--velin-space-6);
5057
+ }
5058
+
5059
+ .velin-my-8 {
4559
5060
  margin-block: var(--velin-space-8);
4560
5061
  }
4561
5062
 
@@ -5049,6 +5550,18 @@
5049
5550
  font-family: var(--velin-font-mono);
5050
5551
  }
5051
5552
 
5553
+ .velin-font-display {
5554
+ font-family: var(--velin-font-display);
5555
+ }
5556
+
5557
+ .velin-font-text {
5558
+ font-family: var(--velin-font-text);
5559
+ }
5560
+
5561
+ .velin-tabular-nums {
5562
+ font-variant-numeric: tabular-nums;
5563
+ }
5564
+
5052
5565
  .velin-text-start {
5053
5566
  text-align: start;
5054
5567
  }
@@ -6183,251 +6696,657 @@
6183
6696
  }
6184
6697
  }
6185
6698
 
6186
- .velin-animate-flip {
6187
- animation: velin-flip var(--velin-duration-normal) var(--velin-ease-out) both;
6699
+ .velin-animate-flip {
6700
+ animation: velin-flip var(--velin-duration-normal) var(--velin-ease-out) both;
6701
+ }
6702
+
6703
+ .velin-animate-drop-in {
6704
+ animation: velin-drop-in var(--velin-duration-normal) var(--velin-ease-bounce) both;
6705
+ }
6706
+
6707
+ .velin-animate-rubber-band {
6708
+ animation: velin-rubber-band 1s var(--velin-ease-default) both;
6709
+ }
6710
+
6711
+ .velin-animate-jello {
6712
+ animation: velin-jello 1s var(--velin-ease-default) both;
6713
+ }
6714
+
6715
+ .velin-animate-heartbeat {
6716
+ animation: velin-heartbeat 1.5s var(--velin-ease-in-out) infinite;
6717
+ }
6718
+
6719
+ .velin-animate-swing {
6720
+ animation: velin-swing 1s var(--velin-ease-default) both;
6721
+ transform-origin: top;
6722
+ }
6723
+
6724
+ .velin-animate-tada {
6725
+ animation: velin-tada 1s var(--velin-ease-default) both;
6726
+ }
6727
+
6728
+ @keyframes velin-flip {
6729
+ from {
6730
+ opacity: 0;
6731
+ transform: perspective(400px) rotateY(90deg);
6732
+ }
6733
+
6734
+ 40% {
6735
+ transform: perspective(400px) rotateY(-15deg);
6736
+ }
6737
+
6738
+ 70% {
6739
+ transform: perspective(400px) rotateY(15deg);
6740
+ }
6741
+
6742
+ to {
6743
+ opacity: 1;
6744
+ transform: perspective(400px) rotateY(0);
6745
+ }
6746
+ }
6747
+
6748
+ @keyframes velin-drop-in {
6749
+ from {
6750
+ opacity: 0;
6751
+ transform: translateY(-3rem) scale(.9);
6752
+ }
6753
+
6754
+ to {
6755
+ opacity: 1;
6756
+ transform: translateY(0) scale(1);
6757
+ }
6758
+ }
6759
+
6760
+ @keyframes velin-rubber-band {
6761
+ 0% {
6762
+ transform: scaleX(1);
6763
+ }
6764
+
6765
+ 30% {
6766
+ transform: scaleX(1.25) scaleY(.75);
6767
+ }
6768
+
6769
+ 40% {
6770
+ transform: scaleX(.75) scaleY(1.25);
6771
+ }
6772
+
6773
+ 50% {
6774
+ transform: scaleX(1.15) scaleY(.85);
6775
+ }
6776
+
6777
+ 65% {
6778
+ transform: scaleX(.95) scaleY(1.05);
6779
+ }
6780
+
6781
+ 75% {
6782
+ transform: scaleX(1.05) scaleY(.95);
6783
+ }
6784
+
6785
+ 100% {
6786
+ transform: scaleX(1);
6787
+ }
6788
+ }
6789
+
6790
+ @keyframes velin-jello {
6791
+ 0%, 11.1%, 100% {
6792
+ transform: none;
6793
+ }
6794
+
6795
+ 22.2% {
6796
+ transform: skewX(-12.5deg) skewY(-12.5deg);
6797
+ }
6798
+
6799
+ 33.3% {
6800
+ transform: skewX(6.25deg) skewY(6.25deg);
6801
+ }
6802
+
6803
+ 44.4% {
6804
+ transform: skewX(-3.125deg) skewY(-3.125deg);
6805
+ }
6806
+
6807
+ 55.5% {
6808
+ transform: skewX(1.5625deg) skewY(1.5625deg);
6809
+ }
6810
+
6811
+ 66.6% {
6812
+ transform: skewX(-.78125deg) skewY(-.78125deg);
6813
+ }
6814
+
6815
+ 77.7% {
6816
+ transform: skewX(.390625deg) skewY(.390625deg);
6817
+ }
6818
+
6819
+ 88.8% {
6820
+ transform: skewX(-.195313deg) skewY(-.195313deg);
6821
+ }
6822
+ }
6823
+
6824
+ @keyframes velin-heartbeat {
6825
+ 0%, 100% {
6826
+ transform: scale(1);
6827
+ }
6828
+
6829
+ 14% {
6830
+ transform: scale(1.3);
6831
+ }
6832
+
6833
+ 28% {
6834
+ transform: scale(1);
6835
+ }
6836
+
6837
+ 42% {
6838
+ transform: scale(1.3);
6839
+ }
6840
+
6841
+ 70% {
6842
+ transform: scale(1);
6843
+ }
6844
+ }
6845
+
6846
+ @keyframes velin-swing {
6847
+ 20% {
6848
+ transform: rotate(15deg);
6849
+ }
6850
+
6851
+ 40% {
6852
+ transform: rotate(-10deg);
6853
+ }
6854
+
6855
+ 60% {
6856
+ transform: rotate(5deg);
6857
+ }
6858
+
6859
+ 80% {
6860
+ transform: rotate(-5deg);
6861
+ }
6862
+
6863
+ 100% {
6864
+ transform: rotate(0);
6865
+ }
6866
+ }
6867
+
6868
+ @keyframes velin-tada {
6869
+ 0% {
6870
+ transform: scale(1) rotate(0);
6871
+ }
6872
+
6873
+ 10%, 20% {
6874
+ transform: scale(.9) rotate(-3deg);
6875
+ }
6876
+
6877
+ 30%, 50%, 70%, 90% {
6878
+ transform: scale(1.1) rotate(3deg);
6879
+ }
6880
+
6881
+ 40%, 60%, 80% {
6882
+ transform: scale(1.1) rotate(-3deg);
6883
+ }
6884
+
6885
+ 100% {
6886
+ transform: scale(1) rotate(0);
6887
+ }
6888
+ }
6889
+
6890
+ .velin-animate-stagger-1 > :first-child {
6891
+ animation-delay: 0s;
6892
+ }
6893
+
6894
+ .velin-animate-stagger-1 > :nth-child(2) {
6895
+ animation-delay: .1s;
6896
+ }
6897
+
6898
+ .velin-animate-stagger-1 > :nth-child(3) {
6899
+ animation-delay: .2s;
6900
+ }
6901
+
6902
+ .velin-animate-stagger-1 > :nth-child(4) {
6903
+ animation-delay: .3s;
6904
+ }
6905
+
6906
+ .velin-animate-stagger-1 > :nth-child(5) {
6907
+ animation-delay: .4s;
6908
+ }
6909
+
6910
+ .velin-animate-stagger-1 > :nth-child(6) {
6911
+ animation-delay: .5s;
6912
+ }
6913
+
6914
+ .velin-animate-stagger-1 > :nth-child(7) {
6915
+ animation-delay: .6s;
6916
+ }
6917
+
6918
+ .velin-animate-stagger-1 > :nth-child(8) {
6919
+ animation-delay: .7s;
6920
+ }
6921
+
6922
+ .velin-animate-stagger-2 > :first-child {
6923
+ animation-delay: 0s;
6924
+ }
6925
+
6926
+ .velin-animate-stagger-2 > :nth-child(2) {
6927
+ animation-delay: .2s;
6928
+ }
6929
+
6930
+ .velin-animate-stagger-2 > :nth-child(3) {
6931
+ animation-delay: .4s;
6932
+ }
6933
+
6934
+ .velin-animate-stagger-2 > :nth-child(4) {
6935
+ animation-delay: .6s;
6936
+ }
6937
+
6938
+ .velin-animate-hover {
6939
+ animation-play-state: paused;
6940
+ }
6941
+
6942
+ @media (hover: hover) and (pointer: fine) {
6943
+ .velin-animate-hover:hover {
6944
+ animation-play-state: running;
6945
+ }
6946
+ }
6947
+
6948
+ .velin-animate-blur-in {
6949
+ animation: velin-blur-in var(--velin-duration-normal) var(--velin-ease-out) both;
6950
+ }
6951
+
6952
+ .velin-animate-blur-out {
6953
+ animation: velin-blur-out var(--velin-duration-normal) var(--velin-ease-in) both;
6954
+ }
6955
+
6956
+ .velin-animate-rotate-in {
6957
+ animation: velin-rotate-in var(--velin-duration-normal) var(--velin-ease-out) both;
6958
+ }
6959
+
6960
+ .velin-animate-float {
6961
+ animation: velin-float 3s var(--velin-ease-in-out) infinite;
6962
+ }
6963
+
6964
+ .velin-animate-flash {
6965
+ animation: velin-flash .6s var(--velin-ease-default) both;
6966
+ }
6967
+
6968
+ .velin-animate-reveal-up {
6969
+ animation: velin-reveal-up var(--velin-duration-normal) var(--velin-ease-out) both;
6970
+ }
6971
+
6972
+ .velin-animate-reveal-down {
6973
+ animation: velin-reveal-down var(--velin-duration-normal) var(--velin-ease-out) both;
6974
+ }
6975
+
6976
+ .velin-animate-glow {
6977
+ animation: velin-glow 2s var(--velin-ease-in-out) infinite;
6978
+ }
6979
+
6980
+ .velin-animate-slide-fade-left {
6981
+ animation: velin-slide-fade-left var(--velin-duration-normal) var(--velin-ease-out) both;
6982
+ }
6983
+
6984
+ .velin-animate-slide-fade-right {
6985
+ animation: velin-slide-fade-right var(--velin-duration-normal) var(--velin-ease-out) both;
6986
+ }
6987
+
6988
+ @keyframes velin-blur-in {
6989
+ from {
6990
+ opacity: 0;
6991
+ filter: blur(8px);
6992
+ }
6993
+
6994
+ to {
6995
+ opacity: 1;
6996
+ filter: blur();
6997
+ }
6998
+ }
6999
+
7000
+ @keyframes velin-blur-out {
7001
+ from {
7002
+ opacity: 1;
7003
+ filter: blur();
7004
+ }
7005
+
7006
+ to {
7007
+ opacity: 0;
7008
+ filter: blur(8px);
7009
+ }
7010
+ }
7011
+
7012
+ @keyframes velin-rotate-in {
7013
+ from {
7014
+ opacity: 0;
7015
+ transform: rotate(-8deg) scale(.95);
7016
+ }
7017
+
7018
+ to {
7019
+ opacity: 1;
7020
+ transform: rotate(0) scale(1);
7021
+ }
7022
+ }
7023
+
7024
+ @keyframes velin-float {
7025
+ 0%, 100% {
7026
+ transform: translateY(0);
7027
+ }
7028
+
7029
+ 50% {
7030
+ transform: translateY(-.35rem);
7031
+ }
7032
+ }
7033
+
7034
+ @keyframes velin-flash {
7035
+ 0%, 50%, 100% {
7036
+ opacity: 1;
7037
+ }
7038
+
7039
+ 25%, 75% {
7040
+ opacity: .35;
7041
+ }
7042
+ }
7043
+
7044
+ @keyframes velin-reveal-up {
7045
+ from {
7046
+ clip-path: inset(100% 0 0);
7047
+ opacity: 0;
7048
+ }
7049
+
7050
+ to {
7051
+ clip-path: inset(0);
7052
+ opacity: 1;
7053
+ }
7054
+ }
7055
+
7056
+ @keyframes velin-reveal-down {
7057
+ from {
7058
+ clip-path: inset(0 0 100%);
7059
+ opacity: 0;
7060
+ }
7061
+
7062
+ to {
7063
+ clip-path: inset(0);
7064
+ opacity: 1;
7065
+ }
7066
+ }
7067
+
7068
+ @keyframes velin-glow {
7069
+ 0%, 100% {
7070
+ box-shadow: 0 0 #0000;
7071
+ }
7072
+
7073
+ 50% {
7074
+ box-shadow: 0 0 1rem 0 color-mix(in oklch, var(--velin-color-primary, #2563eb) 35%, transparent);
7075
+ }
7076
+ }
7077
+
7078
+ @keyframes velin-slide-fade-left {
7079
+ from {
7080
+ opacity: 0;
7081
+ transform: translateX(1rem);
7082
+ }
7083
+
7084
+ to {
7085
+ opacity: 1;
7086
+ transform: translateX(0);
7087
+ }
7088
+ }
7089
+
7090
+ @keyframes velin-slide-fade-right {
7091
+ from {
7092
+ opacity: 0;
7093
+ transform: translateX(-1rem);
7094
+ }
7095
+
7096
+ to {
7097
+ opacity: 1;
7098
+ transform: translateX(0);
7099
+ }
7100
+ }
7101
+
7102
+ @media (prefers-reduced-motion: reduce) {
7103
+ .velin-animate-blur-in, .velin-animate-blur-out, .velin-animate-rotate-in, .velin-animate-reveal-up, .velin-animate-reveal-down, .velin-animate-slide-fade-left, .velin-animate-slide-fade-right {
7104
+ opacity: 1;
7105
+ filter: none;
7106
+ clip-path: none;
7107
+ animation: none;
7108
+ transform: none;
7109
+ }
7110
+
7111
+ .velin-animate-float, .velin-animate-glow, .velin-animate-flash {
7112
+ animation: none;
7113
+ }
7114
+ }
7115
+
7116
+ .velin-saturate-0 {
7117
+ filter: saturate(0);
7118
+ }
7119
+
7120
+ .velin-saturate-50 {
7121
+ filter: saturate(.5);
7122
+ }
7123
+
7124
+ .velin-saturate-100 {
7125
+ filter: saturate();
7126
+ }
7127
+
7128
+ .velin-saturate-150 {
7129
+ filter: saturate(1.5);
7130
+ }
7131
+
7132
+ .velin-saturate-200 {
7133
+ filter: saturate(2);
7134
+ }
7135
+
7136
+ .velin-hue-rotate-15 {
7137
+ filter: hue-rotate(15deg);
6188
7138
  }
6189
7139
 
6190
- .velin-animate-drop-in {
6191
- animation: velin-drop-in var(--velin-duration-normal) var(--velin-ease-bounce) both;
7140
+ .velin-hue-rotate-30 {
7141
+ filter: hue-rotate(30deg);
6192
7142
  }
6193
7143
 
6194
- .velin-animate-rubber-band {
6195
- animation: velin-rubber-band 1s var(--velin-ease-default) both;
7144
+ .velin-hue-rotate-60 {
7145
+ filter: hue-rotate(60deg);
6196
7146
  }
6197
7147
 
6198
- .velin-animate-jello {
6199
- animation: velin-jello 1s var(--velin-ease-default) both;
7148
+ .velin-hue-rotate-90 {
7149
+ filter: hue-rotate(90deg);
6200
7150
  }
6201
7151
 
6202
- .velin-animate-heartbeat {
6203
- animation: velin-heartbeat 1.5s var(--velin-ease-in-out) infinite;
7152
+ .velin-hue-rotate-180 {
7153
+ filter: hue-rotate(180deg);
6204
7154
  }
6205
7155
 
6206
- .velin-animate-swing {
6207
- animation: velin-swing 1s var(--velin-ease-default) both;
6208
- transform-origin: top;
7156
+ .velin-contrast-50 {
7157
+ filter: contrast(.5);
6209
7158
  }
6210
7159
 
6211
- .velin-animate-tada {
6212
- animation: velin-tada 1s var(--velin-ease-default) both;
7160
+ .velin-contrast-75 {
7161
+ filter: contrast(.75);
6213
7162
  }
6214
7163
 
6215
- @keyframes velin-flip {
6216
- from {
6217
- opacity: 0;
6218
- transform: perspective(400px) rotateY(90deg);
6219
- }
7164
+ .velin-contrast-100 {
7165
+ filter: contrast();
7166
+ }
6220
7167
 
6221
- 40% {
6222
- transform: perspective(400px) rotateY(-15deg);
6223
- }
7168
+ .velin-contrast-125 {
7169
+ filter: contrast(1.25);
7170
+ }
6224
7171
 
6225
- 70% {
6226
- transform: perspective(400px) rotateY(15deg);
6227
- }
7172
+ .velin-contrast-150 {
7173
+ filter: contrast(1.5);
7174
+ }
6228
7175
 
6229
- to {
6230
- opacity: 1;
6231
- transform: perspective(400px) rotateY(0);
6232
- }
7176
+ .velin-invert {
7177
+ filter: invert();
6233
7178
  }
6234
7179
 
6235
- @keyframes velin-drop-in {
6236
- from {
6237
- opacity: 0;
6238
- transform: translateY(-3rem) scale(.9);
6239
- }
7180
+ .velin-invert-0 {
7181
+ filter: invert(0);
7182
+ }
6240
7183
 
6241
- to {
6242
- opacity: 1;
6243
- transform: translateY(0) scale(1);
6244
- }
7184
+ .velin-sepia {
7185
+ filter: sepia();
6245
7186
  }
6246
7187
 
6247
- @keyframes velin-rubber-band {
6248
- 0% {
6249
- transform: scaleX(1);
6250
- }
7188
+ .velin-sepia-50 {
7189
+ filter: sepia(.5);
7190
+ }
6251
7191
 
6252
- 30% {
6253
- transform: scaleX(1.25) scaleY(.75);
6254
- }
7192
+ .velin-sepia-0 {
7193
+ filter: sepia(0);
7194
+ }
6255
7195
 
6256
- 40% {
6257
- transform: scaleX(.75) scaleY(1.25);
6258
- }
7196
+ .velin-drop-shadow-sm {
7197
+ filter: drop-shadow(0 1px 1px oklch(0% 0 0 / .18));
7198
+ }
6259
7199
 
6260
- 50% {
6261
- transform: scaleX(1.15) scaleY(.85);
6262
- }
7200
+ .velin-drop-shadow-md {
7201
+ filter: drop-shadow(0 4px 6px oklch(0% 0 0 / .18));
7202
+ }
6263
7203
 
6264
- 65% {
6265
- transform: scaleX(.95) scaleY(1.05);
6266
- }
7204
+ .velin-drop-shadow-lg {
7205
+ filter: drop-shadow(0 12px 24px oklch(0% 0 0 / .22));
7206
+ }
6267
7207
 
6268
- 75% {
6269
- transform: scaleX(1.05) scaleY(.95);
6270
- }
7208
+ .velin-drop-shadow-glow {
7209
+ filter: drop-shadow(0 0 1.5rem color-mix(in oklch, var(--velin-color-primary, #2563eb) 60%, transparent));
7210
+ }
6271
7211
 
6272
- 100% {
6273
- transform: scaleX(1);
6274
- }
7212
+ .velin-backdrop-saturate {
7213
+ -webkit-backdrop-filter: saturate(180%);
6275
7214
  }
6276
7215
 
6277
- @keyframes velin-jello {
6278
- 0%, 11.1%, 100% {
6279
- transform: none;
6280
- }
7216
+ .velin-backdrop-brightness-90 {
7217
+ -webkit-backdrop-filter: brightness(.9);
7218
+ }
6281
7219
 
6282
- 22.2% {
6283
- transform: skewX(-12.5deg) skewY(-12.5deg);
6284
- }
7220
+ .velin-backdrop-brightness-110 {
7221
+ -webkit-backdrop-filter: brightness(1.1);
7222
+ }
6285
7223
 
6286
- 33.3% {
6287
- transform: skewX(6.25deg) skewY(6.25deg);
6288
- }
7224
+ .velin-backdrop-grayscale {
7225
+ -webkit-backdrop-filter: grayscale();
7226
+ }
6289
7227
 
6290
- 44.4% {
6291
- transform: skewX(-3.125deg) skewY(-3.125deg);
6292
- }
7228
+ .velin-glass {
7229
+ background: color-mix(in oklch, var(--velin-color-surface-bright, #fff) 70%, transparent);
7230
+ -webkit-backdrop-filter: blur(12px) saturate(160%);
7231
+ border: 1px solid color-mix(in oklch, var(--velin-color-border, #ddd) 60%, transparent);
7232
+ }
6293
7233
 
6294
- 55.5% {
6295
- transform: skewX(1.5625deg) skewY(1.5625deg);
6296
- }
7234
+ .velin-glass-strong {
7235
+ background: color-mix(in oklch, var(--velin-color-surface-bright, #fff) 55%, transparent);
7236
+ -webkit-backdrop-filter: blur(20px) saturate(180%);
7237
+ border: 1px solid color-mix(in oklch, var(--velin-color-border, #ddd) 70%, transparent);
7238
+ }
6297
7239
 
6298
- 66.6% {
6299
- transform: skewX(-.78125deg) skewY(-.78125deg);
7240
+ @media (prefers-reduced-motion: reduce) {
7241
+ .velin-saturate-0, .velin-saturate-50, .velin-saturate-100, .velin-saturate-150, .velin-saturate-200, .velin-hue-rotate-15, .velin-hue-rotate-30, .velin-hue-rotate-60, .velin-hue-rotate-90, .velin-hue-rotate-180 {
7242
+ filter: none;
6300
7243
  }
7244
+ }
6301
7245
 
6302
- 77.7% {
6303
- transform: skewX(.390625deg) skewY(.390625deg);
7246
+ @keyframes velin-stroke-draw {
7247
+ from {
7248
+ stroke-dashoffset: var(--velin-chart-len, 1000);
6304
7249
  }
6305
7250
 
6306
- 88.8% {
6307
- transform: skewX(-.195313deg) skewY(-.195313deg);
7251
+ to {
7252
+ stroke-dashoffset: 0;
6308
7253
  }
6309
7254
  }
6310
7255
 
6311
- @keyframes velin-heartbeat {
7256
+ @keyframes velin-sparkline-glow {
6312
7257
  0%, 100% {
6313
- transform: scale(1);
7258
+ filter: drop-shadow(0 0 #0000);
6314
7259
  }
6315
7260
 
6316
- 14% {
6317
- transform: scale(1.3);
7261
+ 50% {
7262
+ filter: drop-shadow(0 0 .5rem color-mix(in oklch, var(--velin-chart-glow-color, var(--velin-color-primary, #2563eb)) 50%, transparent));
6318
7263
  }
7264
+ }
6319
7265
 
6320
- 28% {
7266
+ @keyframes velin-value-bump {
7267
+ 0% {
6321
7268
  transform: scale(1);
6322
7269
  }
6323
7270
 
6324
- 42% {
6325
- transform: scale(1.3);
7271
+ 35% {
7272
+ color: var(--velin-chart-bump-color, var(--velin-color-primary, #2563eb));
7273
+ transform: scale(1.06);
6326
7274
  }
6327
7275
 
6328
- 70% {
7276
+ 100% {
6329
7277
  transform: scale(1);
6330
7278
  }
6331
7279
  }
6332
7280
 
6333
- @keyframes velin-swing {
6334
- 20% {
6335
- transform: rotate(15deg);
6336
- }
6337
-
6338
- 40% {
6339
- transform: rotate(-10deg);
6340
- }
6341
-
6342
- 60% {
6343
- transform: rotate(5deg);
7281
+ @keyframes velin-live-pulse {
7282
+ 0% {
7283
+ box-shadow: 0 0 0 0 color-mix(in oklch, var(--velin-live-color, var(--velin-color-success, oklch(60% .16 145))) 65%, transparent);
6344
7284
  }
6345
7285
 
6346
- 80% {
6347
- transform: rotate(-5deg);
7286
+ 70% {
7287
+ box-shadow: 0 0 0 .65rem color-mix(in oklch, var(--velin-live-color, var(--velin-color-success, oklch(60% .16 145))) 0%, transparent);
6348
7288
  }
6349
7289
 
6350
7290
  100% {
6351
- transform: rotate(0);
7291
+ box-shadow: 0 0 #0000;
6352
7292
  }
6353
7293
  }
6354
7294
 
6355
- @keyframes velin-tada {
6356
- 0% {
6357
- transform: scale(1) rotate(0);
6358
- }
6359
-
6360
- 10%, 20% {
6361
- transform: scale(.9) rotate(-3deg);
6362
- }
6363
-
6364
- 30%, 50%, 70%, 90% {
6365
- transform: scale(1.1) rotate(3deg);
6366
- }
6367
-
6368
- 40%, 60%, 80% {
6369
- transform: scale(1.1) rotate(-3deg);
7295
+ @keyframes velin-count-fade {
7296
+ from {
7297
+ opacity: 0;
7298
+ transform: translateY(.4rem);
6370
7299
  }
6371
7300
 
6372
- 100% {
6373
- transform: scale(1) rotate(0);
7301
+ to {
7302
+ opacity: 1;
7303
+ transform: translateY(0);
6374
7304
  }
6375
7305
  }
6376
7306
 
6377
- .velin-animate-stagger-1 > :first-child {
6378
- animation-delay: 0s;
6379
- }
6380
-
6381
- .velin-animate-stagger-1 > :nth-child(2) {
6382
- animation-delay: .1s;
6383
- }
6384
-
6385
- .velin-animate-stagger-1 > :nth-child(3) {
6386
- animation-delay: .2s;
6387
- }
6388
-
6389
- .velin-animate-stagger-1 > :nth-child(4) {
6390
- animation-delay: .3s;
6391
- }
6392
-
6393
- .velin-animate-stagger-1 > :nth-child(5) {
6394
- animation-delay: .4s;
6395
- }
6396
-
6397
- .velin-animate-stagger-1 > :nth-child(6) {
6398
- animation-delay: .5s;
6399
- }
6400
-
6401
- .velin-animate-stagger-1 > :nth-child(7) {
6402
- animation-delay: .6s;
6403
- }
6404
-
6405
- .velin-animate-stagger-1 > :nth-child(8) {
6406
- animation-delay: .7s;
7307
+ .velin-chart-line {
7308
+ fill: none;
7309
+ stroke: currentColor;
7310
+ stroke-width: 2px;
7311
+ stroke-linecap: round;
7312
+ stroke-linejoin: round;
7313
+ stroke-dasharray: var(--velin-chart-len, 1000);
7314
+ stroke-dashoffset: 0;
7315
+ animation: velin-stroke-draw var(--velin-duration-cinematic, 1.2s) var(--velin-ease-expo-out, ease-out) both;
6407
7316
  }
6408
7317
 
6409
- .velin-animate-stagger-2 > :first-child {
6410
- animation-delay: 0s;
7318
+ .velin-chart-area {
7319
+ fill: var(--velin-chart-area-fill, currentColor);
7320
+ opacity: 0;
7321
+ animation: velin-count-fade var(--velin-duration-slowest, .8s) var(--velin-ease-expo-out, ease-out) .2s forwards;
6411
7322
  }
6412
7323
 
6413
- .velin-animate-stagger-2 > :nth-child(2) {
6414
- animation-delay: .2s;
7324
+ .velin-chart-glow {
7325
+ animation: velin-sparkline-glow 2.4s var(--velin-ease-in-out, ease-in-out) infinite;
6415
7326
  }
6416
7327
 
6417
- .velin-animate-stagger-2 > :nth-child(3) {
6418
- animation-delay: .4s;
7328
+ .velin-spark-tick {
7329
+ animation: velin-value-bump var(--velin-duration-slow, .3s) var(--velin-ease-spring, ease-out) both;
6419
7330
  }
6420
7331
 
6421
- .velin-animate-stagger-2 > :nth-child(4) {
6422
- animation-delay: .6s;
7332
+ .velin-live-pulse {
7333
+ animation: velin-live-pulse 1.8s var(--velin-ease-out, ease-out) infinite;
7334
+ border-radius: 50%;
6423
7335
  }
6424
7336
 
6425
- .velin-animate-hover {
6426
- animation-play-state: paused;
7337
+ .velin-count-fade {
7338
+ animation: velin-count-fade var(--velin-duration-slow, .3s) var(--velin-ease-expo-out, ease-out) both;
6427
7339
  }
6428
7340
 
6429
- .velin-animate-hover:hover {
6430
- animation-play-state: running;
7341
+ @media (prefers-reduced-motion: reduce) {
7342
+ .velin-chart-line, .velin-chart-area, .velin-chart-glow, .velin-spark-tick, .velin-live-pulse, .velin-count-fade {
7343
+ stroke-dashoffset: 0;
7344
+ opacity: 1;
7345
+ filter: none;
7346
+ box-shadow: none;
7347
+ animation: none;
7348
+ transform: none;
7349
+ }
6431
7350
  }
6432
7351
 
6433
7352
  .velin-gradient-primary {
@@ -7488,6 +8407,44 @@
7488
8407
  }
7489
8408
  }
7490
8409
 
8410
+ .velin-pt-safe {
8411
+ padding-block-start: max(var(--velin-space-4, 1rem), env(safe-area-inset-top, 0px));
8412
+ }
8413
+
8414
+ .velin-pb-safe {
8415
+ padding-block-end: max(var(--velin-space-4, 1rem), env(safe-area-inset-bottom, 0px));
8416
+ }
8417
+
8418
+ .velin-px-safe {
8419
+ padding-inline: max(var(--velin-space-4, 1rem), env(safe-area-inset-left, 0px))
8420
+ max(var(--velin-space-4, 1rem), env(safe-area-inset-right, 0px));
8421
+ }
8422
+
8423
+ .velin-p-safe {
8424
+ padding-block: max(var(--velin-space-4, 1rem), env(safe-area-inset-top, 0px))
8425
+ max(var(--velin-space-4, 1rem), env(safe-area-inset-bottom, 0px));
8426
+ padding-inline: max(var(--velin-space-4, 1rem), env(safe-area-inset-left, 0px))
8427
+ max(var(--velin-space-4, 1rem), env(safe-area-inset-right, 0px));
8428
+ }
8429
+
8430
+ .velin-mobile-only {
8431
+ display: block;
8432
+ }
8433
+
8434
+ .velin-desktop-only {
8435
+ display: none;
8436
+ }
8437
+
8438
+ @media (width >= 48rem) {
8439
+ .velin-mobile-only {
8440
+ display: none;
8441
+ }
8442
+
8443
+ .velin-desktop-only {
8444
+ display: block;
8445
+ }
8446
+ }
8447
+
7491
8448
  .velin-divide-y > * + * {
7492
8449
  border-block-start: 1px solid var(--velin-color-border);
7493
8450
  }
@@ -7845,6 +8802,39 @@
7845
8802
  }
7846
8803
  }
7847
8804
 
8805
+ @supports not (animation-timeline: view()) {
8806
+ .velin-animate-on-scroll:not(.velin-in-view) {
8807
+ opacity: 0;
8808
+ transform: translateY(1.5rem);
8809
+ }
8810
+
8811
+ .velin-animate-on-scroll--fade:not(.velin-in-view) {
8812
+ opacity: 0;
8813
+ transform: none;
8814
+ }
8815
+
8816
+ .velin-animate-on-scroll--slide-up:not(.velin-in-view) {
8817
+ opacity: 0;
8818
+ transform: translateY(2rem);
8819
+ }
8820
+
8821
+ .velin-animate-on-scroll--scale:not(.velin-in-view) {
8822
+ opacity: 0;
8823
+ transform: scale(.92);
8824
+ }
8825
+
8826
+ .velin-animate-on-scroll.velin-in-view, .velin-animate-on-scroll--fade.velin-in-view, .velin-animate-on-scroll--slide-up.velin-in-view, .velin-animate-on-scroll--scale.velin-in-view {
8827
+ opacity: 1;
8828
+ transition: opacity var(--velin-duration-normal, .4s) var(--velin-ease-out, ease-out),
8829
+ transform var(--velin-duration-normal, .4s) var(--velin-ease-out, ease-out);
8830
+ transform: none;
8831
+ }
8832
+ }
8833
+
8834
+ .velin-stagger-item {
8835
+ transition-delay: var(--velin-stagger-delay, 0s);
8836
+ }
8837
+
7848
8838
  @media (prefers-reduced-motion: reduce) {
7849
8839
  .velin-animate-on-scroll, .velin-animate-on-scroll--fade, .velin-animate-on-scroll--slide-up, .velin-animate-on-scroll--scale, .velin-parallax, .velin-parallax--slow {
7850
8840
  opacity: 1;
@@ -8682,6 +9672,24 @@
8682
9672
  -webkit-text-fill-color: var(--velin-color-text, #1a1a2e);
8683
9673
  transition: background-color 600000s, color 600000s;
8684
9674
  }
9675
+
9676
+ .velin-isolate {
9677
+ isolation: isolate;
9678
+ contain: layout style paint;
9679
+ }
9680
+
9681
+ .velin-sensitive {
9682
+ -webkit-user-select: none;
9683
+ user-select: none;
9684
+ }
9685
+
9686
+ .velin-overlay-lock {
9687
+ overscroll-behavior: contain;
9688
+ }
9689
+
9690
+ .velin-user-content img[src^="data:"] {
9691
+ max-inline-size: 100%;
9692
+ }
8685
9693
  }
8686
9694
 
8687
9695
  @layer themes;