@kubex/zinc 1.1.185 → 2.0.1

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 (358) hide show
  1. package/.browserslistrc +2 -0
  2. package/.github/workflows/js_build_and_deploy.yaml +54 -1
  3. package/.github/workflows/test.yaml +27 -0
  4. package/dist/chunks/zn.UWJLIXDT.js +1 -0
  5. package/dist/custom-elements.json +10319 -2666
  6. package/dist/vscode.html-custom-data.json +1012 -57
  7. package/dist/web-types.json +2097 -145
  8. package/dist/zn.d.ts +2294 -416
  9. package/dist/zn.min.css +1 -1
  10. package/dist/zn.min.js +2310 -1637
  11. package/docs/_includes/default.njk +4 -1
  12. package/docs/assets/scripts/docs.js +22 -6
  13. package/docs/assets/styles/docs.css +9 -2
  14. package/docs/data/report-table-day-compare.json +380 -0
  15. package/docs/data/report-table.json +314 -0
  16. package/docs/pages/components/avatar-group.md +57 -0
  17. package/docs/pages/components/badge.md +67 -0
  18. package/docs/pages/components/button.md +41 -1
  19. package/docs/pages/components/chat-message.md +16 -0
  20. package/docs/pages/components/checkbox.md +1 -1
  21. package/docs/pages/components/chip.md +25 -13
  22. package/docs/pages/components/color-picker.md +37 -0
  23. package/docs/pages/components/copy-button.md +2 -2
  24. package/docs/pages/components/data-table-filter.md +33 -50
  25. package/docs/pages/components/data-table-search.md +4 -4
  26. package/docs/pages/components/data-table.md +27 -3
  27. package/docs/pages/components/date-range.md +116 -0
  28. package/docs/pages/components/dialog.md +29 -37
  29. package/docs/pages/components/diff-row.md +28 -0
  30. package/docs/pages/components/diff.md +46 -0
  31. package/docs/pages/components/editor.md +55 -0
  32. package/docs/pages/components/icon.md +46 -1
  33. package/docs/pages/components/input.md +30 -11
  34. package/docs/pages/components/item.md +35 -0
  35. package/docs/pages/components/key-value.md +25 -0
  36. package/docs/pages/components/menu.md +74 -7
  37. package/docs/pages/components/nav-item.md +15 -0
  38. package/docs/pages/components/nav-list.md +132 -0
  39. package/docs/pages/components/navbar.md +100 -1
  40. package/docs/pages/components/page.md +242 -74
  41. package/docs/pages/components/priority-list.md +43 -5
  42. package/docs/pages/components/query-builder.md +23 -0
  43. package/docs/pages/components/radio-group.md +33 -1
  44. package/docs/pages/components/radio.md +1 -1
  45. package/docs/pages/components/report-table.md +202 -0
  46. package/docs/pages/components/stat.md +30 -0
  47. package/docs/pages/components/tile.md +11 -0
  48. package/docs/pages/components/tooltip.md +1 -1
  49. package/docs/pages/components/translation-grid.md +86 -0
  50. package/docs/pages/components/vertical-stepper.md +108 -64
  51. package/package.json +2 -1
  52. package/scss/_global-spacing.scss +2 -2
  53. package/scss/_root.scss +11 -171
  54. package/scss/boot.scss +14 -0
  55. package/scss/mixins/_helper-mixins.scss +24 -2
  56. package/scss/mixins/_motion-mixins.scss +126 -0
  57. package/scss/mixins/_spacing-mixins.scss +4 -3
  58. package/scss/mixins/_tab-indicator-mixins.scss +12 -0
  59. package/scss/mixins/_typography-mixins.scss +1 -1
  60. package/scss/mixins/index.scss +14 -0
  61. package/scss/shared/_base.scss +32 -1
  62. package/scss/shared/_button-mixin.scss +7 -5
  63. package/scss/shared/_table.scss +35 -4
  64. package/scss/shared/nav.scss +4 -0
  65. package/scss/shared/shimmer.scss +1 -1
  66. package/scss/table-controls.scss +206 -0
  67. package/scss/themes/_dark.scss +1 -3
  68. package/scss/themes/_index.scss +1 -1
  69. package/scss/themes/_light.scss +46 -6
  70. package/scss/themes/_modes.scss +11 -11
  71. package/scss/themes/_openbyte.scss +944 -0
  72. package/scss/themes/_typography.scss +4 -2
  73. package/scss/variables/index.scss +0 -9
  74. package/src/components/alert/alert.component.ts +14 -4
  75. package/src/components/alert/alert.scss +55 -69
  76. package/src/components/alert/alert.test.ts +8 -0
  77. package/src/components/animated-button/animated-button.component.ts +3 -2
  78. package/src/components/animated-button/animated-button.scss +6 -23
  79. package/src/components/animated-button/animated-button.test.ts +4 -3
  80. package/src/components/avatar-group/avatar-group.component.ts +84 -0
  81. package/src/components/avatar-group/avatar-group.scss +54 -0
  82. package/src/components/avatar-group/avatar-group.test.ts +59 -0
  83. package/src/components/avatar-group/index.ts +12 -0
  84. package/src/components/badge/badge.component.ts +49 -0
  85. package/src/components/badge/badge.scss +80 -0
  86. package/src/components/badge/badge.test.ts +34 -0
  87. package/src/components/badge/index.ts +12 -0
  88. package/src/components/bulk-actions/bulk-actions.component.ts +14 -2
  89. package/src/components/button/button.component.ts +228 -8
  90. package/src/components/button/button.scss +115 -32
  91. package/src/components/button/button.test.ts +122 -0
  92. package/src/components/button-menu/button-menu.component.ts +32 -11
  93. package/src/components/button-menu/button-menu.scss +5 -1
  94. package/src/components/channel-tile/channel-tile.component.ts +34 -27
  95. package/src/components/channel-tile/channel-tile.scss +76 -43
  96. package/src/components/chart/builders.test.ts +46 -0
  97. package/src/components/chart/builders.ts +27 -3
  98. package/src/components/chart/chart-live.test.ts +4 -6
  99. package/src/components/chart/chart.component.ts +125 -5
  100. package/src/components/chart/chart.scss +121 -0
  101. package/src/components/chart/chart.test.ts +81 -0
  102. package/src/components/chat-message/chat-message.component.ts +21 -1
  103. package/src/components/chat-message/chat-message.scss +13 -2
  104. package/src/components/chat-message/chat-message.test.ts +9 -0
  105. package/src/components/checkbox/checkbox.component.ts +61 -27
  106. package/src/components/checkbox/checkbox.scss +58 -25
  107. package/src/components/checkbox-group/checkbox-group.component.ts +7 -1
  108. package/src/components/chip/chip.component.ts +11 -1
  109. package/src/components/chip/chip.scss +91 -26
  110. package/src/components/chip/chip.test.ts +17 -0
  111. package/src/components/collapsible/collapsible.component.ts +17 -3
  112. package/src/components/collapsible/collapsible.scss +19 -10
  113. package/src/components/color-picker/color-picker.component.ts +277 -0
  114. package/src/components/color-picker/color-picker.scss +141 -0
  115. package/src/components/color-picker/color-picker.test.ts +57 -0
  116. package/src/components/color-picker/index.ts +12 -0
  117. package/src/components/cols/cols.component.ts +10 -0
  118. package/src/components/cols/cols.test.ts +17 -0
  119. package/src/components/confirm/confirm.component.ts +20 -6
  120. package/src/components/confirm/confirm.test.ts +52 -0
  121. package/src/components/content-block/content-block.component.ts +38 -9
  122. package/src/components/content-block/content-block.scss +11 -5
  123. package/src/components/content-block/content-block.test.ts +26 -0
  124. package/src/components/copy-button/copy-button.component.ts +2 -2
  125. package/src/components/copy-button/copy-button.scss +17 -4
  126. package/src/components/data-select/data-select.component.ts +3 -1
  127. package/src/components/data-table/data-table.component.ts +362 -140
  128. package/src/components/data-table/data-table.scss +136 -60
  129. package/src/components/data-table/data-table.test.ts +356 -4
  130. package/src/components/data-table-filter/data-table-filter.component.ts +426 -406
  131. package/src/components/data-table-filter/data-table-filter.scss +176 -148
  132. package/src/components/data-table-filter/data-table-filter.test.ts +271 -273
  133. package/src/components/data-table-search/data-table-search.component.ts +4 -2
  134. package/src/components/data-table-search/data-table-search.scss +8 -1
  135. package/src/components/data-table-search/data-table-search.test.ts +29 -0
  136. package/src/components/date-range/date-range-math.test.ts +78 -0
  137. package/src/components/date-range/date-range-math.ts +105 -0
  138. package/src/components/date-range/date-range.component.ts +375 -0
  139. package/src/components/date-range/date-range.scss +272 -0
  140. package/src/components/date-range/date-range.test.ts +247 -0
  141. package/src/components/date-range/index.ts +12 -0
  142. package/src/components/datepicker/datepicker.component.ts +44 -7
  143. package/src/components/datepicker/datepicker.scss +9 -0
  144. package/src/components/datepicker/datepicker.test.ts +2 -2
  145. package/src/components/dialog/dialog.component.ts +38 -19
  146. package/src/components/dialog/dialog.scss +65 -36
  147. package/src/components/dialog/dialog.test.ts +14 -0
  148. package/src/components/diff/diff.component.ts +55 -0
  149. package/src/components/diff/diff.scss +46 -0
  150. package/src/components/diff/diff.test.ts +15 -0
  151. package/src/components/diff/index.ts +12 -0
  152. package/src/components/diff-row/diff-row.component.ts +75 -0
  153. package/src/components/diff-row/diff-row.scss +70 -0
  154. package/src/components/diff-row/diff-row.test.ts +37 -0
  155. package/src/components/diff-row/index.ts +12 -0
  156. package/src/components/dropdown/dropdown.component.ts +12 -10
  157. package/src/components/dropdown/dropdown.scss +2 -0
  158. package/src/components/editor/editor.component.ts +159 -11
  159. package/src/components/editor/editor.scss +250 -1
  160. package/src/components/editor/editor.test.ts +31 -3
  161. package/src/components/editor/modules/ai/panel/ai-panel.scss +0 -1
  162. package/src/components/editor/modules/attachment/attachment.ts +53 -31
  163. package/src/components/editor/modules/context-menu/context-menu.ts +17 -0
  164. package/src/components/editor/modules/dialog/dialog.component.ts +23 -1
  165. package/src/components/editor/modules/dialog/dialog.test.ts +28 -0
  166. package/src/components/editor/modules/emoji/emoji.ts +4 -5
  167. package/src/components/editor/modules/merge-field/merge-field.ts +83 -0
  168. package/src/components/editor/modules/toolbar/toolbar.component.ts +121 -68
  169. package/src/components/editor/modules/toolbar/toolbar.scss +38 -0
  170. package/src/components/editor/modules/toolbar/toolbar.ts +25 -1
  171. package/src/components/empty-state/empty-state.component.ts +6 -1
  172. package/src/components/empty-state/empty-state.scss +21 -4
  173. package/src/components/expanding-action/expanding-action.component.ts +22 -34
  174. package/src/components/expanding-action/expanding-action.scss +3 -45
  175. package/src/components/expanding-action/expanding-action.test.ts +2 -1
  176. package/src/components/file/file.component.ts +30 -2
  177. package/src/components/file/file.scss +6 -0
  178. package/src/components/flow-builder/flow-builder.component.ts +36 -3
  179. package/src/components/flow-builder/flow-builder.scss +0 -6
  180. package/src/components/flow-builder/modules/flow-canvas/flow-canvas.component.ts +8 -0
  181. package/src/components/flow-builder/modules/flow-canvas/flow-canvas.scss +10 -5
  182. package/src/components/flow-builder/modules/flow-node/flow-node.component.ts +17 -0
  183. package/src/components/flow-builder/modules/flow-node/flow-node.scss +10 -0
  184. package/src/components/form-actions/form-actions.component.ts +48 -2
  185. package/src/components/form-actions/form-actions.scss +1 -1
  186. package/src/components/form-group/form-group.component.ts +10 -3
  187. package/src/components/form-group/form-group.scss +37 -4
  188. package/src/components/form-group/form-group.test.ts +10 -0
  189. package/src/components/header/header.component.ts +11 -4
  190. package/src/components/header/header.scss +47 -5
  191. package/src/components/hover-container/hover-container.component.ts +4 -5
  192. package/src/components/icon/icon.component.ts +95 -9
  193. package/src/components/icon/icon.scss +70 -6
  194. package/src/components/icon/icon.test.ts +55 -0
  195. package/src/components/icon-picker/icon-picker.component.ts +35 -1
  196. package/src/components/inline-edit/inline-edit.component.ts +38 -8
  197. package/src/components/inline-edit/inline-edit.scss +128 -19
  198. package/src/components/input/input.component.ts +173 -297
  199. package/src/components/input/input.scss +65 -43
  200. package/src/components/input/input.test.ts +86 -4
  201. package/src/components/item/item.component.ts +12 -0
  202. package/src/components/item/item.scss +102 -3
  203. package/src/components/item/item.test.ts +23 -0
  204. package/src/components/key/key.component.ts +2 -2
  205. package/src/components/key/key.scss +11 -0
  206. package/src/components/key-value/index.ts +12 -0
  207. package/src/components/key-value/key-value.component.ts +160 -0
  208. package/src/components/key-value/key-value.scss +20 -0
  209. package/src/components/key-value/key-value.test.ts +22 -0
  210. package/src/components/markdown-editor/markdown-editor.component.ts +8 -1
  211. package/src/components/menu/menu.component.ts +21 -2
  212. package/src/components/menu/menu.scss +43 -23
  213. package/src/components/menu/menu.test.ts +33 -0
  214. package/src/components/menu-item/menu-item.component.ts +13 -2
  215. package/src/components/menu-item/menu-item.scss +56 -23
  216. package/src/components/menu-item/menu-item.test.ts +31 -0
  217. package/src/components/menu-item/submenu-controller.ts +25 -15
  218. package/src/components/menu-label/index.ts +12 -0
  219. package/src/components/menu-label/menu-label.component.ts +30 -0
  220. package/src/components/menu-label/menu-label.scss +18 -0
  221. package/src/components/nav-item/index.ts +12 -0
  222. package/src/components/nav-item/nav-item.component.ts +83 -0
  223. package/src/components/nav-item/nav-item.scss +128 -0
  224. package/src/components/nav-list/index.ts +12 -0
  225. package/src/components/nav-list/nav-list.component.ts +313 -0
  226. package/src/components/nav-list/nav-list.scss +87 -0
  227. package/src/components/nav-list/nav-list.test.ts +250 -0
  228. package/src/components/navbar/navbar.component.ts +235 -171
  229. package/src/components/navbar/navbar.scss +333 -169
  230. package/src/components/navbar/navbar.test.ts +63 -143
  231. package/src/components/page/page.component.ts +114 -29
  232. package/src/components/page/page.scss +223 -95
  233. package/src/components/page/page.test.ts +214 -3
  234. package/src/components/page-builder/page-builder.component.ts +51 -5
  235. package/src/components/page-builder/page-builder.scss +6 -1
  236. package/src/components/page-nav/page-nav.component.ts +25 -3
  237. package/src/components/page-nav/page-nav.scss +10 -2
  238. package/src/components/pagination/pagination.scss +1 -1
  239. package/src/components/panel/panel.component.ts +14 -13
  240. package/src/components/panel/panel.scss +14 -10
  241. package/src/components/panel/panel.test.ts +42 -0
  242. package/src/components/popup/popup.component.ts +20 -13
  243. package/src/components/popup/popup.test.ts +21 -1
  244. package/src/components/priority-list/priority-list.component.ts +157 -172
  245. package/src/components/priority-list/priority-list.scss +113 -17
  246. package/src/components/priority-list/priority-list.test.ts +301 -3
  247. package/src/components/progress-bar/progress-bar.component.ts +1 -1
  248. package/src/components/progress-bar/progress-bar.scss +16 -4
  249. package/src/components/progress-tile/progress-tile.scss +1 -1
  250. package/src/components/query-builder/query-builder.component.ts +85 -10
  251. package/src/components/query-builder/query-builder.scss +7 -1
  252. package/src/components/query-builder/query-builder.test.ts +40 -0
  253. package/src/components/radio/radio.component.ts +57 -18
  254. package/src/components/radio/radio.scss +101 -26
  255. package/src/components/radio-group/radio-group.component.ts +45 -7
  256. package/src/components/radio-group/radio-group.scss +17 -0
  257. package/src/components/radio-group/radio-group.test.ts +63 -2
  258. package/src/components/rating/rating.component.ts +23 -0
  259. package/src/components/rating/rating.scss +1 -1
  260. package/src/components/remarkd-editor/remarkd-editor.component.ts +60 -5
  261. package/src/components/remarkd-editor/remarkd-editor.scss +12 -4
  262. package/src/components/report-table/index.ts +12 -0
  263. package/src/components/report-table/report-format.test.ts +86 -0
  264. package/src/components/report-table/report-format.ts +72 -0
  265. package/src/components/report-table/report-math.test.ts +74 -0
  266. package/src/components/report-table/report-math.ts +252 -0
  267. package/src/components/report-table/report-table.component.ts +681 -0
  268. package/src/components/report-table/report-table.scss +328 -0
  269. package/src/components/report-table/report-table.test.ts +702 -0
  270. package/src/components/reveal/reveal.component.ts +15 -1
  271. package/src/components/reveal/reveal.scss +5 -0
  272. package/src/components/schedule-builder/schedule-builder.component.ts +23 -8
  273. package/src/components/scroll-container/scroll-container.component.ts +19 -1
  274. package/src/components/scroll-container/scroll-container.scss +6 -1
  275. package/src/components/select/select.component.ts +52 -36
  276. package/src/components/select/select.scss +42 -25
  277. package/src/components/select/select.test.ts +14 -2
  278. package/src/components/settings-container/settings-container.scss +18 -5
  279. package/src/components/sidebar/sidebar.component.ts +8 -1
  280. package/src/components/sidebar/sidebar.scss +6 -1
  281. package/src/components/skeleton/skeleton.component.ts +3 -3
  282. package/src/components/skeleton/skeleton.scss +6 -6
  283. package/src/components/skeleton/skeleton.test.ts +9 -0
  284. package/src/components/slash-menu/slash-menu.scss +1 -1
  285. package/src/components/slideout/slideout.component.ts +20 -3
  286. package/src/components/slideout/slideout.scss +13 -6
  287. package/src/components/slideout/slideout.test.ts +19 -0
  288. package/src/components/split-button/split-button.component.ts +1 -1
  289. package/src/components/split-pane/split-pane.component.ts +71 -8
  290. package/src/components/split-pane/split-pane.scss +145 -41
  291. package/src/components/split-pane/split-pane.test.ts +23 -3
  292. package/src/components/stat/stat.component.ts +209 -14
  293. package/src/components/stat/stat.scss +305 -5
  294. package/src/components/stat/stat.test.ts +143 -2
  295. package/src/components/status-indicator/status-indicator.scss +22 -21
  296. package/src/components/stepper/stepper.scss +3 -3
  297. package/src/components/tab/tab.component.ts +1 -0
  298. package/src/components/table/table.component.ts +12 -1
  299. package/src/components/table/table.scss +21 -13
  300. package/src/components/table/table.test.ts +17 -0
  301. package/src/components/tabs/tabs.component.ts +150 -37
  302. package/src/components/tabs/tabs.scss +48 -7
  303. package/src/components/tabs/tabs.test.ts +169 -0
  304. package/src/components/textarea/textarea.component.ts +25 -3
  305. package/src/components/textarea/textarea.scss +10 -0
  306. package/src/components/textarea/textarea.test.ts +8 -4
  307. package/src/components/theme-editor/theme-editor.scss +0 -6
  308. package/src/components/tile/tile.component.ts +32 -2
  309. package/src/components/tile/tile.scss +40 -7
  310. package/src/components/tile/tile.test.ts +10 -0
  311. package/src/components/toggle/toggle.component.ts +23 -7
  312. package/src/components/toggle/toggle.scss +36 -29
  313. package/src/components/toggle/toggle.test.ts +17 -0
  314. package/src/components/tooltip/tooltip.component.ts +3 -0
  315. package/src/components/tooltip/tooltip.scss +11 -6
  316. package/src/components/tooltip/tooltip.test.ts +12 -0
  317. package/src/components/translation-field/index.ts +12 -0
  318. package/src/components/translation-field/translation-field.component.ts +55 -0
  319. package/src/components/translation-field/translation-field.scss +101 -0
  320. package/src/components/translation-fields/index.ts +12 -0
  321. package/src/components/translation-fields/translation-fields.component.ts +80 -0
  322. package/src/components/translation-fields/translation-fields.scss +60 -0
  323. package/src/components/translation-grid/index.ts +12 -0
  324. package/src/components/translation-grid/translation-grid.component.ts +157 -0
  325. package/src/components/translation-grid/translation-grid.scss +138 -0
  326. package/src/components/translation-grid/translation-grid.test.ts +28 -0
  327. package/src/components/vertical-stepper/vertical-stepper.component.ts +35 -9
  328. package/src/components/vertical-stepper/vertical-stepper.scss +110 -39
  329. package/src/components/vertical-stepper/vertical-stepper.test.ts +35 -0
  330. package/src/components/well/well.scss +2 -2
  331. package/src/events/events.ts +2 -0
  332. package/src/events/zn-chart-click.ts +13 -0
  333. package/src/events/zn-report-change.ts +7 -0
  334. package/src/form-control.scss +36 -3
  335. package/src/internal/anchored-popover.ts +175 -0
  336. package/src/internal/animate.ts +19 -5
  337. package/src/internal/cosmic-border.ts +15 -0
  338. package/src/internal/form.ts +1 -1
  339. package/src/internal/hover-intent.ts +15 -0
  340. package/src/internal/input-modality.ts +15 -0
  341. package/src/internal/pointer-intent.ts +37 -0
  342. package/src/internal/reorder.ts +632 -0
  343. package/src/internal/scroll.ts +51 -3
  344. package/src/internal/selection-card.ts +1 -1
  345. package/src/internal/tab-indicator.ts +92 -0
  346. package/src/internal/table-sort.ts +25 -0
  347. package/src/internal/table-tabs.ts +108 -0
  348. package/src/internal/test-drag.ts +35 -0
  349. package/src/internal/theme-openbyte.test.ts +126 -0
  350. package/src/internal/theme.ts +4 -4
  351. package/src/internal/zinc-element.ts +2 -2
  352. package/src/selection-card.scss +25 -0
  353. package/src/types/web-test-runner-commands.d.ts +1 -0
  354. package/src/utilities/color.test.ts +43 -0
  355. package/src/utilities/color.ts +189 -0
  356. package/src/zinc.ts +14 -0
  357. package/.github/workflows/eleventy_build.yml +0 -42
  358. package/scss/themes/_aura.scss +0 -114
@@ -0,0 +1,944 @@
1
+ @use "sass:map";
2
+ @use "sass:math";
3
+
4
+ // OpenByte — blue brand on blue-tinted neutrals, Plus Jakarta Sans headings and
5
+ // comfortable density (compact on request). The light block is mode-agnostic, so every colour it sets must
6
+ // also be set in the dark block below or the light value leaks into dark mode.
7
+ //
8
+ // The default theme, layered over the base light/dark primitives. Selectors are `html:root` (0,1,1) so they outrank
9
+ // the `:root` blocks in _root.scss that load after them, and root-qualified because ZincElement reflects `t`/`m`
10
+ // onto every component (see _modes.scss).
11
+ //
12
+ // Zinc's primary ramp is anchored on 600 (the brand step); OpenByte's on 500.
13
+ // The ramps below are shifted one step so brand blue lands on 600.
14
+
15
+ $text-roles: (
16
+ "page-title": ("size": 25px, "line": 30px, "weight": bold, "family": heading, "letter-spacing": -0.015em),
17
+ "h1": ("size": 14px, "line": 17px, "weight": bold, "family": heading),
18
+ "h2": ("size": 20px, "line": 24px, "weight": bold, "family": heading, "letter-spacing": -0.01em),
19
+ "h3": ("size": 11px, "line": 13px, "weight": semibold, "transform": uppercase, "letter-spacing": 0.06em),
20
+ "heading-section": ("size": 14px, "line": 17px, "weight": bold, "family": heading),
21
+ "paragraph": ("size": 13px, "line": 20px),
22
+ "table-content": ("size": 13px, "line": 16px),
23
+ "subheading": ("size": 13px, "line": 18px),
24
+ "subheading-small": ("size": 12px, "line": 16px),
25
+ "input-placeholder": ("size": 13px, "line": 20px),
26
+ "input-content": ("size": 13px, "line": 20px),
27
+ "input-label": ("size": 12px, "line": 16px, "weight": semibold),
28
+ "chart-minor": ("size": 12px, "line": 16px, "weight": semibold),
29
+ "chart-major": ("size": 25px, "line": 28px, "weight": bold, "family": heading, "letter-spacing": -0.02em),
30
+ "button-label": ("size": 13px, "line": 16px, "weight": semibold, "transform": none),
31
+ "chip": ("size": 12px, "line": 16px, "weight": medium, "transform": none),
32
+ "navbar-link": ("size": 13px, "line": 16px, "weight": semibold),
33
+ "tab-link": ("size": 13px, "line": 16px, "weight": semibold),
34
+ "tab-link-active": ("size": 13px, "line": 16px, "weight": semibold),
35
+ "menu-link": ("size": 13px, "line": 16px, "weight": medium),
36
+ );
37
+
38
+ @mixin text-roles {
39
+ @each $role, $style in $text-roles {
40
+ --zn-text-#{$role}-font-size: #{map.get($style, "size")};
41
+ --zn-text-#{$role}-line-height: #{map.get($style, "line")};
42
+ @if map.has-key($style, "weight") {
43
+ --zn-text-#{$role}-font-weight: var(--zn-font-weight-#{map.get($style, "weight")});
44
+ }
45
+ @if map.get($style, "family") == heading {
46
+ --zn-text-#{$role}-font-family: var(--zn-font-heading);
47
+ }
48
+ @if map.has-key($style, "transform") {
49
+ --zn-text-#{$role}-transform: #{map.get($style, "transform")};
50
+ }
51
+ @if map.has-key($style, "letter-spacing") {
52
+ --zn-text-#{$role}-letter-spacing: #{map.get($style, "letter-spacing")};
53
+ }
54
+ }
55
+ --zn-text-menu-link-color: var(--zn-text-color);
56
+ }
57
+
58
+ $compact: (
59
+ "control-height-sm": 24px,
60
+ "control-height": 28px,
61
+ "control-height-lg": 32px,
62
+ "row-height": 32px,
63
+ "cell-padding-x": 16px,
64
+ "card-padding": 14px,
65
+ "gap": 12px,
66
+ "stack": 8px,
67
+ "page-padding": 16px,
68
+ "input-height-x-small": 20px,
69
+ "head-gap": 12px,
70
+ "head-inner": 6px,
71
+ "card-tab-padding-top": 14px,
72
+ "card-tab-padding-bottom": 10px,
73
+ );
74
+
75
+ $comfortable: (
76
+ "control-height-sm": 28px,
77
+ "control-height": 36px,
78
+ "control-height-lg": 40px,
79
+ "row-height": 44px,
80
+ "cell-padding-x": 20px,
81
+ "card-padding": 20px,
82
+ "gap": 20px,
83
+ "stack": 12px,
84
+ "page-padding": 24px,
85
+ "input-height-x-small": 24px,
86
+ "head-gap": 16px,
87
+ "head-inner": 8px,
88
+ "card-tab-padding-top": 18px,
89
+ "card-tab-padding-bottom": 14px,
90
+ );
91
+
92
+ // Aliases are re-declared alongside the density tokens: a var() alias resolves
93
+ // where it is declared, so a nested [data-density] would not move it otherwise.
94
+ @mixin density($d) {
95
+ --zn-density-control-height-sm: #{map.get($d, "control-height-sm")};
96
+ --zn-density-control-height: #{map.get($d, "control-height")};
97
+ --zn-density-control-height-lg: #{map.get($d, "control-height-lg")};
98
+ --zn-density-row-height: #{map.get($d, "row-height")};
99
+ --zn-density-cell-padding-x: #{map.get($d, "cell-padding-x")};
100
+ --zn-density-card-padding: #{map.get($d, "card-padding")};
101
+ --zn-density-gap: #{map.get($d, "gap")};
102
+ --zn-density-stack: #{map.get($d, "stack")};
103
+ --zn-density-page-padding: #{map.get($d, "page-padding")};
104
+
105
+ --zn-input-height-x-small: #{map.get($d, "input-height-x-small")};
106
+ --zn-input-height-small: #{map.get($d, "control-height-sm")};
107
+ --zn-input-height-medium: #{map.get($d, "control-height")};
108
+ --zn-input-height-large: #{map.get($d, "control-height-lg")};
109
+
110
+ --zn-button-height-small: #{map.get($d, "control-height-sm")};
111
+ --zn-button-height: #{map.get($d, "control-height")};
112
+ --zn-button-height-large: #{map.get($d, "control-height-lg")};
113
+ --zn-button-icon-width: #{map.get($d, "control-height")};
114
+ --zn-button-pill-height: #{map.get($d, "control-height-sm")};
115
+ --zn-chip-height: #{map.get($d, "control-height-sm")};
116
+ --zn-select-tag-height: #{map.get($d, "input-height-x-small")};
117
+
118
+ $pad: map.get($d, "card-padding");
119
+ --zn-panel-padding: #{$pad};
120
+ --zn-panel-header-padding: #{math.round($pad * 0.6)} #{$pad};
121
+ --zn-panel-footer-padding: #{math.round($pad * 0.8)} #{$pad};
122
+ --zn-tile-min-height: #{map.get($d, "row-height") + 8px};
123
+ --zn-tile-padding-inline: #{$pad};
124
+ --zn-tile-padding-block: #{math.round($pad * 0.6)};
125
+
126
+ --zn-table-row-height: #{map.get($d, "row-height")};
127
+ --zn-table-header-height: #{map.get($d, "row-height") - 4px};
128
+ // Rows get their height from --zn-table-row-height; the block padding only keeps multi-line cells off the dividers.
129
+ --zn-table-cell-padding: 4px #{map.get($d, "cell-padding-x")};
130
+ --zn-table-edge-padding: #{$pad};
131
+
132
+ --zn-navbar-height: #{map.get($d, "control-height") + 4px};
133
+ --zn-menu-item-min-height: #{map.get($d, "control-height")};
134
+ // Tab label text lines up with the card padding.
135
+ --zn-navbar-inset: #{$pad - 12px};
136
+ --zn-page-header-padding-block: 20px;
137
+ // With no page gutter this is the whole inset from the page edge to its content.
138
+ --zn-base-gap: #{map.get($d, "page-padding")};
139
+ --zn-page-breadcrumb-gap: #{map.get($d, "head-gap")};
140
+ --zn-page-title-gap: #{map.get($d, "head-inner")};
141
+ --zn-card-tab-padding-top: #{map.get($d, "card-tab-padding-top")};
142
+ --zn-card-tab-padding-bottom: #{map.get($d, "card-tab-padding-bottom")};
143
+ }
144
+
145
+ html:root {
146
+ color-scheme: light;
147
+
148
+ /**************************************************************
149
+ * RGB triplets (legacy layer, scss/_root.scss)
150
+ *************************************************************/
151
+
152
+ --zn-backdrop-color: rgba(13, 23, 56, 0.45);
153
+
154
+ --zn-color-text: 6, 27, 49;
155
+ --zn-color-muted-text: 80, 97, 122;
156
+
157
+ --zn-color-base: 255, 255, 255;
158
+ --zn-color-body: 247, 250, 255;
159
+ --zn-color-navigation: var(--zn-color-base);
160
+ --zn-color-navigation-hightlight: 247, 250, 255;
161
+ --zn-color-border: 214, 224, 235;
162
+ --zn-color-border-active: 186, 200, 217;
163
+ --zn-color-tab: 240, 245, 251;
164
+ --zn-color-panel: 255, 255, 255;
165
+
166
+ --zn-color-primary: 8, 94, 253;
167
+ --zn-color-info: 8, 94, 253;
168
+ --zn-color-success: 18, 160, 106;
169
+ --zn-color-warning: 240, 160, 32;
170
+ --zn-color-error: 217, 46, 75;
171
+ --zn-color-disabled: 141, 156, 178;
172
+ --zn-color-ai: 117, 87, 245;
173
+
174
+ // White on amber is ~2.2:1.
175
+ --zn-color-on-primary: 255, 255, 255;
176
+ --zn-color-on-warning: 6, 27, 49;
177
+
178
+ --zn-panel-opacity: 1;
179
+ --zn-shadow: 229, 237, 245;
180
+ --zn-panel-secondary: 240 245 251;
181
+ --zn-panel-highlight: 247, 250, 255;
182
+ --zn-panel-highlight-opacity: 1;
183
+ --zn-input-bg-accent: 240, 245, 251;
184
+ --zn-bright-bg: 255, 255, 255;
185
+ --zn-light-text: 102, 118, 142;
186
+ --zn-dark-text: 6, 27, 49;
187
+ --zn-purple-text: 5, 60, 163;
188
+ --zn-accent: 15, 163, 177;
189
+
190
+ --zn-table-header-background-color: 240, 245, 251;
191
+
192
+ /**************************************************************
193
+ * Ramps
194
+ *************************************************************/
195
+
196
+ --zn-color-primary-50: #F5F8FF;
197
+ --zn-color-primary-100: #EEF4FF;
198
+ --zn-color-primary-200: #DBE7FF;
199
+ --zn-color-primary-300: #B8D0FF;
200
+ --zn-color-primary-400: #86AFFE;
201
+ --zn-color-primary-500: #4B88FD;
202
+ --zn-color-primary-600: #085EFD;
203
+ --zn-color-primary-700: #064DD0;
204
+ --zn-color-primary-800: #053CA3;
205
+ --zn-color-primary-900: #0B2E7A;
206
+
207
+ // Stopgap until checkbox, radio and data-table stop reading purple directly.
208
+ --zn-color-purple-50: #EEF4FF;
209
+ --zn-color-purple-100: #DBE7FF;
210
+ --zn-color-purple-200: #B8D0FF;
211
+ --zn-color-purple-600: #085EFD;
212
+
213
+ --zn-color-gray-50: #F0F5FB;
214
+ --zn-color-gray-100: #E5EDF5;
215
+ --zn-color-gray-200: #D6E0EB;
216
+ --zn-color-gray-300: #BAC8D9;
217
+ --zn-color-gray-400: #8D9CB2;
218
+ --zn-color-gray-500: #66768E;
219
+ --zn-color-gray-600: #50617A;
220
+ --zn-color-gray-700: #34445C;
221
+ --zn-color-gray-800: #1B2B44;
222
+ --zn-color-gray-900: #061B31;
223
+
224
+ --zn-color-neutral-0: #FFFFFF;
225
+ --zn-color-neutral-50: #F0F5FB;
226
+ --zn-color-neutral-100: #E5EDF5;
227
+ --zn-color-neutral-200: #D6E0EB;
228
+ --zn-color-neutral-300: #BAC8D9;
229
+ --zn-color-neutral-400: #8D9CB2;
230
+ --zn-color-neutral-500: #66768E;
231
+ --zn-color-neutral-600: #50617A;
232
+ --zn-color-neutral-700: #34445C;
233
+ --zn-color-neutral-800: #1B2B44;
234
+ --zn-color-neutral-900: #061B31;
235
+
236
+ --zn-color-success-50: #E3F6EC;
237
+ --zn-color-success-200: #B5E2CB;
238
+ --zn-color-success-300: #B5E2CB;
239
+ --zn-color-success-400: #12A06A;
240
+ --zn-color-success-500: #12A06A;
241
+ --zn-color-success-600: #12A06A;
242
+ --zn-color-success-700: #0B7A4F;
243
+
244
+ --zn-color-warning-50: #FFF3DA;
245
+ --zn-color-warning-400: #F0A020;
246
+ --zn-color-warning-500: #F0A020;
247
+ --zn-color-warning-600: #F0A020;
248
+
249
+ --zn-color-danger-50: #FDECEF;
250
+ --zn-color-danger-100: #FDECEF;
251
+ --zn-color-danger-200: #F5C2CB;
252
+ --zn-color-danger-300: #F5C2CB;
253
+ --zn-color-danger-500: #D92E4B;
254
+ --zn-color-danger-600: #D92E4B;
255
+ --zn-color-danger-700: #B91C3A;
256
+ --zn-color-danger-800: #B91C3A;
257
+
258
+ /**************************************************************
259
+ * Status roles
260
+ *************************************************************/
261
+
262
+ --zn-color-success-fg: #0B7A4F;
263
+ --zn-color-success-bg: #E3F6EC;
264
+ --zn-color-success-line: #B5E2CB;
265
+ --zn-color-success-solid: #12A06A;
266
+ --zn-color-warning-fg: #8A5200;
267
+ --zn-color-warning-bg: #FFF3DA;
268
+ --zn-color-warning-line: #F4D79B;
269
+ --zn-color-warning-solid: #F0A020;
270
+ --zn-color-danger-fg: #B91C3A;
271
+ --zn-color-danger-bg: #FDECEF;
272
+ --zn-color-danger-line: #F5C2CB;
273
+ --zn-color-danger-solid: #D92E4B;
274
+ --zn-color-info-fg: #053CA3;
275
+ --zn-color-info-bg: #EEF4FF;
276
+ --zn-color-info-line: #B8D0FF;
277
+ --zn-color-info-solid: #085EFD;
278
+ --zn-color-ai-fg: #5A3DD1;
279
+ --zn-color-ai-bg: #F0ECFF;
280
+ --zn-color-ai-line: #D4C9FF;
281
+ --zn-color-ai-solid: #7557F5;
282
+
283
+ /**************************************************************
284
+ * Shape, elevation, focus
285
+ *************************************************************/
286
+
287
+ --zn-border-radius: 6px;
288
+ --zn-border-radius-small: 4px;
289
+ --zn-border-radius-medium: 8px;
290
+ --zn-border-radius-large: 12px;
291
+ --zn-panel-border-radius: 12px;
292
+ --zn-shell-content-radius: 0px;
293
+ --zn-dialog-border-radius: 16px;
294
+ --zn-chip-border-radius: 999px;
295
+ --zn-select-tag-border-radius: 6px;
296
+
297
+ --zn-shadow-x-small: 0 1px 2px rgba(13, 23, 56, 0.05);
298
+ --zn-shadow-small: 0 1px 3px rgba(13, 23, 56, 0.08), 0 1px 2px rgba(13, 23, 56, 0.04);
299
+ --zn-shadow-medium: 0 4px 14px rgba(13, 23, 56, 0.10), 0 1px 3px rgba(13, 23, 56, 0.05);
300
+ --zn-shadow-large: 0 14px 40px rgba(13, 23, 56, 0.18), 0 2px 8px rgba(13, 23, 56, 0.06);
301
+ --zn-shadow-x-large: 0 14px 40px rgba(13, 23, 56, 0.18), 0 2px 8px rgba(13, 23, 56, 0.06);
302
+
303
+ --zn-focus-ring-color: var(--zn-color-primary-600);
304
+ --zn-input-focus-ring-color: rgba(8, 94, 253, 0.35);
305
+
306
+ // Links and other primary text use the guide's link blue, a step deeper than the fill.
307
+ --zn-color-primary-fg: #064DD0;
308
+
309
+ --zn-overlay-background-color: rgba(13, 23, 56, 0.45);
310
+
311
+ /**************************************************************
312
+ * Typography
313
+ *************************************************************/
314
+
315
+ --zn-font-sans: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
316
+ --zn-font-family-sans: var(--zn-font-sans);
317
+ --zn-font-mono: ui-monospace, 'SF Mono', 'JetBrains Mono', Menlo, Consolas, monospace;
318
+ --zn-font-family-mono: var(--zn-font-mono);
319
+ --zn-font-heading: 'Plus Jakarta Sans', 'Inter', system-ui, sans-serif;
320
+
321
+ // px, not rem: some hosts run a 14px root.
322
+ --zn-font-size-2x-small: 11px;
323
+ --zn-font-size-x-small: 12px;
324
+ --zn-font-size-small: 13px;
325
+ --zn-font-size-medium: 14px;
326
+ --zn-font-size-large: 16px;
327
+ --zn-font-size-x-large: 20px;
328
+ --zn-font-size-2x-large: 25px;
329
+ --zn-font-size-3x-large: 33px;
330
+ --zn-font-size-4x-large: 44px;
331
+
332
+ @include text-roles;
333
+
334
+ /**************************************************************
335
+ * Forms, panels, tooltips
336
+ *************************************************************/
337
+
338
+ --zn-input-background-color: #FFFFFF;
339
+ --zn-input-background-color-hover: #FFFFFF;
340
+ --zn-input-background-color-focus: #FFFFFF;
341
+ --zn-input-background-color-disabled: #F0F5FB;
342
+ --zn-input-border-color: #BAC8D9;
343
+ --zn-input-border-color-hover: #8D9CB2;
344
+ --zn-input-border-color-focus: var(--zn-color-primary-600);
345
+ --zn-input-border-color-disabled: #D6E0EB;
346
+ --zn-checkbox-border-color: #8D9CB2;
347
+ --zn-input-placeholder-color: #66768E;
348
+ --zn-input-help-text-color: #66768E;
349
+ --zn-input-required-content-color: rgb(var(--zn-color-error));
350
+ --zn-input-required-content-offset: 4px;
351
+ --zn-input-label-spacing: 4.8px;
352
+ --zn-input-label-line-height: 15.6px;
353
+ --zn-input-label-display: block;
354
+ --zn-input-help-text-line-height: 18px;
355
+ --zn-form-actions-gap: 8px;
356
+ --zn-form-control-input-margin: 0;
357
+ --zn-form-row-gap: 20px;
358
+ --zn-select-expand-icon: "chevron-down@lu";
359
+ --zn-select-expand-icon-size: 16px;
360
+ --zn-select-expand-icon-spacing: 8px;
361
+ --zn-select-expand-icon-color: #66768E;
362
+ --zn-input-shadow: var(--zn-shadow-x-small);
363
+ --zn-input-padding-inline: 12px;
364
+ --zn-input-spacing-small: 12px;
365
+ --zn-input-spacing-medium: 12px;
366
+ --zn-input-spacing-large: 16px;
367
+ --zn-input-help-text-font-size-small: 11px;
368
+ --zn-input-help-text-font-size-medium: 12px;
369
+ --zn-input-help-text-font-size-large: 13px;
370
+
371
+ --zn-checkbox-border-width: 1.5px;
372
+ --zn-toggle-size-small: 14px;
373
+ --zn-toggle-size-medium: 16px;
374
+ --zn-toggle-size-large: 20px;
375
+
376
+ --zn-selection-card-hover-background: var(--zn-color-primary-50);
377
+ --zn-selection-card-checked-background: var(--zn-color-primary-100);
378
+ --zn-selection-card-checked-color: var(--zn-color-primary-600);
379
+
380
+ --zn-toggle-track-width: 34px;
381
+ --zn-toggle-track-height: 20px;
382
+ --zn-toggle-knob-size: 16px;
383
+ --zn-toggle-track-width-small: 30px;
384
+ --zn-toggle-track-height-small: 17px;
385
+ --zn-toggle-knob-size-small: 13px;
386
+ --zn-toggle-knob-inset: 2px;
387
+ --zn-toggle-track-border-width: 0px;
388
+ --zn-toggle-track-background: var(--zn-color-neutral-300);
389
+ --zn-toggle-knob-shadow: var(--zn-shadow-small);
390
+
391
+ --zn-panel-border-color: #D6E0EB;
392
+ --zn-panel-shadow: var(--zn-shadow-x-small);
393
+ --zn-panel-shadow-raised: var(--zn-shadow-large);
394
+ --zn-panel-header-divider-color: var(--zn-color-neutral-100);
395
+ --zn-panel-footer-divider: 1px solid var(--zn-color-neutral-100);
396
+ --zn-tile-hover-background: rgb(var(--zn-color-body));
397
+ --zn-stat-numeric: tabular-nums;
398
+ --zn-well-border-radius: 8px;
399
+ --zn-well-background: var(--zn-color-neutral-50);
400
+
401
+ --zn-table-header-font-size: 12px;
402
+ --zn-table-header-color: var(--zn-text-color-muted);
403
+ --zn-table-header-transform: none;
404
+ --zn-table-row-divider-color: var(--zn-color-neutral-100);
405
+ --zn-table-row-hover-background: var(--zn-color-neutral-50);
406
+ --zn-table-numeric: tabular-nums;
407
+ --zn-table-page-active-background: var(--zn-color-info-bg);
408
+ --zn-table-page-active-color: var(--zn-color-info-fg);
409
+
410
+ /**************************************************************
411
+ * Tabs
412
+ *************************************************************/
413
+
414
+ --zn-navbar-tab-padding-inline: 12px;
415
+ // Underline tabs size to their label; the padding spaces the label off the indicator.
416
+ --zn-navbar-tab-strip-height: auto;
417
+ --zn-navbar-tab-padding-bottom: var(--zn-spacing-x-small);
418
+ // Page tab labels line up with the page title.
419
+ --zn-page-navbar-offset: calc(-1 * var(--zn-navbar-tab-padding-inline));
420
+ --zn-navbar-tab-border-width: 0px;
421
+ --zn-navbar-tab-radius: 0px;
422
+ --zn-navbar-tab-background: transparent;
423
+ --zn-navbar-tab-hover-background: transparent;
424
+ --zn-navbar-tab-hover-backdrop: transparent;
425
+ --zn-navbar-tab-active-background: transparent;
426
+ --zn-navbar-tab-hover-color: var(--zn-text-color);
427
+ --zn-navbar-tab-hover-indicator-color: transparent;
428
+ --zn-navbar-tab-indicator-color: rgb(var(--zn-primary));
429
+ --zn-navbar-tab-indicator-height: 2px;
430
+ --zn-navbar-tab-indicator-slide: 1;
431
+ --zn-text-tab-link-active-color: var(--zn-color-primary-fg, var(--zn-color-info-fg));
432
+
433
+ /**************************************************************
434
+ * Avatars
435
+ *************************************************************/
436
+
437
+ // Initials on a tinted circle in the per-name colour
438
+ --zn-avatar-tint: 1;
439
+ --zn-avatar-font-scale: 0.38;
440
+ --zn-avatar-font-weight: 700;
441
+
442
+ /**************************************************************
443
+ * Chips and status
444
+ *************************************************************/
445
+
446
+ --zn-chip-padding-inline: 12px;
447
+ --zn-chip-gap: 4.8px;
448
+ --zn-chip-icon-padding-start: 8px;
449
+ --zn-chip-letter-spacing: normal;
450
+ --zn-chip-border-width: 1px;
451
+ --zn-chip-neutral-fg: rgb(var(--zn-text));
452
+ --zn-chip-neutral-bg: var(--zn-input-background-color);
453
+ --zn-chip-neutral-line: var(--zn-input-border-color);
454
+ --zn-chip-primary-fg: var(--zn-color-info-fg);
455
+ --zn-chip-primary-bg: var(--zn-color-info-bg);
456
+ --zn-chip-primary-line: var(--zn-color-primary-400);
457
+ --zn-chip-action-color: var(--zn-color-neutral-500);
458
+ --zn-chip-action-hover-color: rgb(var(--zn-text));
459
+ --zn-chip-action-hover-background: var(--zn-color-neutral-100);
460
+
461
+ --zn-status-indicator-size: 8px;
462
+ --zn-status-indicator-fill-alpha: 1;
463
+ --zn-indicator-info: 8, 94, 253;
464
+ --zn-indicator-warning: 240, 160, 32;
465
+ --zn-indicator-error: 217, 46, 75;
466
+ --zn-indicator-success: 18, 160, 106;
467
+ --zn-indicator-disabled: 141, 156, 178;
468
+
469
+ --zn-tooltip-background-color: #0D1738;
470
+ --zn-tooltip-color: #FFFFFF;
471
+ --zn-tooltip-font-size: 12px;
472
+ --zn-tooltip-font-weight: var(--zn-font-weight-medium);
473
+ --zn-tooltip-line-height: 17px;
474
+ --zn-tooltip-padding: 6px 10px;
475
+ --zn-tooltip-shadow: var(--zn-shadow-medium);
476
+
477
+ /**************************************************************
478
+ * Menus
479
+ *************************************************************/
480
+
481
+ --zn-menu-padding: 4px;
482
+ --zn-menu-border-radius: 8px;
483
+ --zn-menu-shadow: var(--zn-shadow-large);
484
+ --zn-menu-item-divider: none;
485
+ --zn-menu-item-padding: 0 10px;
486
+ --zn-menu-item-border-radius: 6px;
487
+ --zn-menu-item-hover-background: var(--zn-color-neutral-50);
488
+ --zn-menu-item-primary-hover-background: var(--zn-color-primary-100);
489
+ --zn-menu-item-primary-hover-color: var(--zn-color-primary-fg);
490
+ --zn-menu-item-info-hover-background: var(--zn-color-info-bg);
491
+ --zn-menu-item-info-hover-color: var(--zn-color-info-fg);
492
+ --zn-menu-item-danger-hover-background: var(--zn-color-danger-bg);
493
+ --zn-menu-item-danger-hover-color: var(--zn-color-danger-fg);
494
+ --zn-menu-item-warning-hover-background: var(--zn-color-warning-bg);
495
+ --zn-menu-item-warning-hover-color: var(--zn-color-warning-fg);
496
+ --zn-menu-item-success-hover-background: var(--zn-color-success-bg);
497
+ --zn-menu-item-success-hover-color: var(--zn-color-success-fg);
498
+ --zn-menu-min-width: 192px;
499
+ --zn-menu-label-padding: 6px 10px 3px;
500
+ --zn-menu-item-icon-gap: 10px;
501
+ --zn-menu-item-icon-color: var(--zn-color-neutral-500);
502
+ --zn-menu-divider-color: var(--zn-color-neutral-100);
503
+
504
+ /**************************************************************
505
+ * Feedback
506
+ *************************************************************/
507
+
508
+ --zn-alert-border-radius: 8px;
509
+ --zn-alert-background: rgb(var(--zn-color-panel));
510
+ --zn-alert-border-alpha: 0.35;
511
+ --zn-alert-tint-alpha: 0.1;
512
+ --zn-alert-title-color: rgb(var(--zn-color-text));
513
+ --zn-alert-body-color: rgb(var(--zn-color-muted-text));
514
+ --zn-alert-note-border-color: var(--zn-color-neutral-200);
515
+
516
+ --zn-progress-track-color: var(--zn-color-neutral-100);
517
+ --zn-skeleton-border-radius: 6px;
518
+ --zn-skeleton-background: var(--zn-color-neutral-100);
519
+ --zn-skeleton-shimmer: var(--zn-color-neutral-50);
520
+
521
+ --zn-empty-state-caption-font-family: var(--zn-font-heading);
522
+ --zn-empty-state-caption-font-weight: var(--zn-font-weight-bold);
523
+ --zn-empty-state-description-color: rgb(var(--zn-color-muted-text));
524
+ --zn-empty-state-description-max-width: 28rem;
525
+ --zn-empty-state-description-line-height: 1.5;
526
+
527
+ --zn-form-group-label-font-family: var(--zn-font-heading);
528
+
529
+ /**************************************************************
530
+ * Overlays
531
+ *************************************************************/
532
+
533
+ --zn-dialog-backdrop: var(--zn-overlay-background-color);
534
+ --zn-overlay-backdrop-filter: blur(2px);
535
+ --zn-dialog-title-font-family: var(--zn-font-heading);
536
+ --zn-dialog-title-font-size: 16px;
537
+ --zn-dialog-title-font-weight: var(--zn-font-weight-bold);
538
+ --zn-dialog-header-spacing: 20px 20px 12px;
539
+ --zn-dialog-body-spacing: 4px 20px 20px;
540
+ --zn-dialog-footer-spacing: 12px 20px;
541
+ --zn-dialog-footer-divider: 1px solid var(--zn-color-neutral-100);
542
+ --zn-dialog-footer-background: rgb(var(--zn-color-body));
543
+ --zn-dialog-body-color: rgb(var(--zn-color-muted-text));
544
+ --zn-dialog-title-line-height: 20px;
545
+ --zn-dialog-body-font-size: 13px;
546
+ --zn-dialog-body-line-height: 1.45;
547
+ --zn-dialog-width-small: 384px;
548
+ --zn-dialog-width-medium: 512px;
549
+ --zn-dialog-width-large: 704px;
550
+ --zn-dialog-icon-background: transparent;
551
+ --zn-dialog-icon-padding: 0;
552
+ --zn-dialog-icon-gap: 12px;
553
+ --zn-dialog-close-size: var(--zn-density-control-height-sm);
554
+ --zn-dialog-close-padding: 2px;
555
+ --zn-dialog-close-color: rgb(var(--zn-color-muted-text));
556
+ --zn-dialog-close-icon-size: 16px;
557
+ // No announcement in the design: built from its tinted icon tile, eyebrow and heading roles
558
+ --zn-dialog-announcement-icon-size: 24px;
559
+ --zn-dialog-announcement-icon-padding: 12px;
560
+ --zn-dialog-announcement-icon-radius: var(--zn-border-radius-large);
561
+ --zn-dialog-announcement-icon-gap: 16px;
562
+ --zn-dialog-announcement-intro-color: rgb(var(--zn-primary));
563
+ --zn-dialog-announcement-intro-font-size: 11px;
564
+ --zn-dialog-announcement-intro-letter-spacing: 0.06em;
565
+ --zn-dialog-announcement-intro-transform: uppercase;
566
+ --zn-dialog-announcement-intro-spacing: 0 0 6px;
567
+ --zn-dialog-announcement-title-color: rgb(var(--zn-text-panel-title));
568
+ --zn-dialog-announcement-title-font-family: var(--zn-font-heading);
569
+ --zn-dialog-announcement-title-font-size: 20px;
570
+ --zn-dialog-announcement-title-font-weight: var(--zn-font-weight-bold);
571
+ --zn-dialog-announcement-title-line-height: 24px;
572
+ --zn-dialog-announcement-body-spacing: 4px 32px 24px;
573
+ --zn-dialog-announcement-footer-text-color: rgb(var(--zn-color-muted-text));
574
+ --zn-dialog-announcement-footer-text-font-size: 12px;
575
+ --zn-dialog-announcement-footer-text-spacing: 12px 0 0;
576
+ --zn-slideout-header-spacing: 16px 20px;
577
+ --zn-slideout-body-spacing: 20px;
578
+ --zn-slideout-footer-spacing: 12px 20px;
579
+ --zn-slideout-shadow: var(--zn-shadow-large);
580
+
581
+ /**************************************************************
582
+ * Steppers
583
+ *************************************************************/
584
+
585
+ --zn-stepper-track-color: var(--zn-color-neutral-100);
586
+ --zn-vertical-stepper-marker-size: 26px;
587
+ --zn-vertical-stepper-marker-background: var(--zn-color-neutral-50);
588
+ --zn-vertical-stepper-line-width: 1px;
589
+ --zn-vertical-stepper-line-color: rgb(var(--zn-border-color));
590
+ --zn-vertical-stepper-caption-font-size: 13px;
591
+ --zn-vertical-stepper-description-font-weight: var(--zn-font-weight-normal);
592
+
593
+ /**************************************************************
594
+ * Shell
595
+ *************************************************************/
596
+
597
+ --zn-container: 1792px;
598
+ --zn-page-gutter: 0px;
599
+ --zn-gutter: 0px;
600
+ --zn-page-title-line-height: 30px;
601
+ --zn-page-modal-caption-font-size: 16px;
602
+ --zn-page-modal-caption-line-height: 20px;
603
+ --zn-page-modal-gap: 20px;
604
+ --zn-page-modal-header-padding-top: 20px;
605
+ --zn-page-modal-header-padding-bottom: 0px;
606
+ --zn-page-modal-header-gap: 12px;
607
+ --zn-page-closer-size: 32px;
608
+ --zn-page-closer-gap: 12px;
609
+ --zn-page-modal-description-font-size: 12px;
610
+ --zn-page-modal-description-line-height: 18px;
611
+ --zn-page-modal-description-color: #66768E;
612
+ --zn-page-caption-wrap: wrap;
613
+ --zn-page-breadcrumb-display: flex;
614
+ --zn-page-breadcrumb-current-display: inline;
615
+ --zn-page-breadcrumb-separator-icon: "chevron-right@lu";
616
+ --zn-page-breadcrumb-separator-size: 12px;
617
+ --zn-page-breadcrumb-separator-color: var(--zn-color-neutral-400);
618
+ --zn-page-breadcrumb-font-family: var(--zn-font-sans);
619
+ --zn-page-breadcrumb-font-size: 12px;
620
+ --zn-page-breadcrumb-font-weight: var(--zn-font-weight-normal);
621
+ --zn-page-breadcrumb-letter-spacing: normal;
622
+ --zn-page-breadcrumb-line-height: 16px;
623
+ --zn-page-breadcrumb-color: rgb(var(--zn-color-muted-text));
624
+ --zn-split-pane-handle-hover: rgb(var(--zn-primary));
625
+ --zn-split-pane-secondary-background: rgb(var(--zn-color-panel));
626
+
627
+ /**************************************************************
628
+ * Content, code, charts
629
+ *************************************************************/
630
+
631
+ --zn-code-background: #0D1738;
632
+ --zn-code-color: #D7E3FF;
633
+ --zn-code-inline-background: var(--zn-color-neutral-100);
634
+ --zn-content-block-meta-color: rgb(var(--zn-color-muted-text));
635
+
636
+ --zn-flow-note-background: var(--zn-color-warning-bg);
637
+ --zn-flow-note-border: var(--zn-color-warning-line);
638
+ --zn-flow-note-fold: var(--zn-color-warning-solid);
639
+ --zn-flow-note-meta-color: var(--zn-color-warning-fg);
640
+ --zn-flow-note-color: var(--zn-color-warning-fg);
641
+
642
+ --zn-chart-text-color: var(--zn-color-neutral-500);
643
+
644
+ // Settings rows: the label leads and the switch sits at the far edge.
645
+ --zn-toggle-side-label-direction: row;
646
+ --zn-toggle-side-label-justify: space-between;
647
+ --zn-chart-color-1: #085EFD;
648
+ --zn-chart-color-2: #12A06A;
649
+ --zn-chart-color-3: #7557F5;
650
+ --zn-chart-color-4: #F0A020;
651
+ --zn-chart-color-5: #E0324F;
652
+ --zn-chart-color-6: #0FA3B1;
653
+
654
+ /**************************************************************
655
+ * Buttons
656
+ *************************************************************/
657
+
658
+ --zn-button-padding: 0 12px;
659
+ --zn-button-font-size-small: 12px;
660
+ --zn-button-shadow: var(--zn-shadow-x-small);
661
+ --zn-button-mix-color: black;
662
+ --zn-button-hover-mix: 85%;
663
+ --zn-button-active-mix: 72%;
664
+
665
+ --zn-button-secondary-background: rgb(var(--zn-color-panel));
666
+ // A neutral of its own: hosts re-point --zn-color-border-active at their accent.
667
+ --zn-button-secondary-border: var(--zn-color-neutral-300);
668
+ --zn-button-secondary-color: rgb(var(--zn-color-text));
669
+ --zn-button-secondary-hover-background: var(--zn-color-neutral-50);
670
+ --zn-button-secondary-active-background: var(--zn-color-neutral-100);
671
+
672
+ // Bordered icon buttons sit beside secondary buttons, so they share its edge.
673
+ --zn-button-icon-border: var(--zn-button-secondary-border);
674
+ --zn-button-icon-shadow: var(--zn-button-shadow);
675
+ --zn-button-plain-hover-background: var(--zn-color-neutral-100);
676
+
677
+ --zn-button-ghost-color: rgb(var(--zn-color-muted-text));
678
+ --zn-button-ghost-hover-background: var(--zn-color-neutral-100);
679
+ --zn-button-ghost-hover-color: rgb(var(--zn-color-text));
680
+
681
+ --zn-button-outline-border-alpha: 0.35;
682
+ --zn-button-outline-hover-alpha: 0.08;
683
+ --zn-button-outline-hover-ink-mix: 0%;
684
+
685
+ @include density($comfortable);
686
+
687
+ .zn-primary {
688
+ color: rgb(var(--zn-color-primary));
689
+ }
690
+ }
691
+
692
+ // The root form outranks html:root; the bare forms also reach pages inside a shadow root (the console's app-content)
693
+ html[data-density="compact"], [data-density="compact"] {
694
+ @include density($compact);
695
+ }
696
+
697
+ [data-density="comfortable"] {
698
+ @include density($comfortable);
699
+ }
700
+
701
+ // Derived dark: the guide is light-only. A near-neutral graphite canvas with the
702
+ // brand and status hues desaturated so they don't glare on it; ramps inverted
703
+ // (50 darkest) the way themes/_dark.scss inverts the base ramps.
704
+ // (0,2,1) outranks the base dark block's :root[m="dark"] (0,2,0).
705
+ html:root[m="dark"], html:root[t="dark"], html:root.theme-dark {
706
+ color-scheme: dark;
707
+
708
+ --zn-backdrop-color: rgba(5, 6, 8, 0.6);
709
+
710
+ --zn-color-text: 236, 234, 228;
711
+ --zn-color-muted-text: 156, 158, 168;
712
+
713
+ --zn-color-base: 37, 38, 45;
714
+ --zn-color-body: 24, 25, 30;
715
+ --zn-color-navigation: var(--zn-color-base);
716
+ --zn-color-navigation-hightlight: 44, 46, 54;
717
+ --zn-color-border: 50, 52, 61;
718
+ --zn-color-border-active: 65, 68, 78;
719
+ --zn-color-tab: 44, 46, 54;
720
+ --zn-color-panel: 31, 32, 38;
721
+
722
+ --zn-color-primary: 92, 133, 214;
723
+ // themes/_dark.scss pins --zn-primary to the base dark accent. Fills use the
724
+ // deeper blue: the lighter text blue under white ink is ~3.5:1.
725
+ --zn-primary: 53, 106, 212;
726
+ --zn-color-info: 49, 152, 196;
727
+ --zn-color-success: 56, 148, 110;
728
+ --zn-color-warning: 244, 167, 52;
729
+ --zn-color-error: 198, 57, 76;
730
+ --zn-color-disabled: 117, 120, 132;
731
+ --zn-color-ai: 119, 100, 216;
732
+
733
+ --zn-color-on-primary: 255, 255, 255;
734
+ --zn-color-on-warning: 24, 25, 30;
735
+
736
+ --zn-panel-opacity: 1;
737
+ --zn-shadow: 5, 6, 8;
738
+ --zn-panel-secondary: 37 38 45;
739
+ --zn-panel-highlight: 44, 46, 54;
740
+ --zn-panel-highlight-opacity: 1;
741
+ --zn-input-bg-accent: 37, 38, 45;
742
+ --zn-bright-bg: 50, 52, 61;
743
+ --zn-light-text: 156, 158, 168;
744
+ --zn-dark-text: 236, 234, 228;
745
+ --zn-purple-text: 146, 174, 232;
746
+ --zn-accent: 78, 170, 180;
747
+
748
+ --zn-table-header-background-color: 37, 38, 45;
749
+
750
+ --zn-color-primary-50: #18264A;
751
+ --zn-color-primary-100: #1E3566;
752
+ --zn-color-primary-200: #26478C;
753
+ --zn-color-primary-300: #2C57B0;
754
+ --zn-color-primary-400: #356AD4;
755
+ --zn-color-primary-500: #4877D8;
756
+ --zn-color-primary-600: #5C85D6;
757
+ --zn-color-primary-700: #92AEE8;
758
+ --zn-color-primary-800: #BDCDEF;
759
+ --zn-color-primary-900: #DCE4F5;
760
+
761
+ --zn-color-purple-50: #18264A;
762
+ --zn-color-purple-100: #1E3566;
763
+ --zn-color-purple-200: #26478C;
764
+ --zn-color-purple-600: #5C85D6;
765
+
766
+ --zn-color-gray-50: #25262D;
767
+ --zn-color-gray-100: #2C2E36;
768
+ --zn-color-gray-200: #32343D;
769
+ --zn-color-gray-300: #41444E;
770
+ --zn-color-gray-400: #565965;
771
+ --zn-color-gray-500: #757884;
772
+ --zn-color-gray-600: #9C9EA8;
773
+ --zn-color-gray-700: #C9C7C1;
774
+ --zn-color-gray-800: #DAD8D2;
775
+ --zn-color-gray-900: #ECEAE4;
776
+
777
+ --zn-color-neutral-0: #18191E;
778
+ --zn-color-neutral-50: #25262D;
779
+ --zn-color-neutral-100: #2C2E36;
780
+ --zn-color-neutral-200: #32343D;
781
+ --zn-color-neutral-300: #41444E;
782
+ --zn-color-neutral-400: #565965;
783
+ --zn-color-neutral-500: #757884;
784
+ --zn-color-neutral-600: #9C9EA8;
785
+ --zn-color-neutral-700: #C9C7C1;
786
+ --zn-color-neutral-800: #DAD8D2;
787
+ --zn-color-neutral-900: #ECEAE4;
788
+
789
+ --zn-color-success-50: rgba(56, 148, 110, 0.15);
790
+ --zn-color-success-200: rgba(56, 148, 110, 0.4);
791
+ --zn-color-success-300: rgba(56, 148, 110, 0.4);
792
+ --zn-color-success-400: #38946E;
793
+ --zn-color-success-500: #38946E;
794
+ --zn-color-success-600: #38946E;
795
+ --zn-color-success-700: #79D2AD;
796
+
797
+ --zn-color-warning-50: rgba(244, 167, 52, 0.1);
798
+ --zn-color-warning-400: #F4A734;
799
+ --zn-color-warning-500: #F4A734;
800
+ --zn-color-warning-600: #F4A734;
801
+
802
+ --zn-color-danger-50: rgba(198, 57, 76, 0.15);
803
+ --zn-color-danger-100: rgba(198, 57, 76, 0.15);
804
+ --zn-color-danger-200: rgba(198, 57, 76, 0.4);
805
+ --zn-color-danger-300: rgba(198, 57, 76, 0.4);
806
+ --zn-color-danger-500: #C6394C;
807
+ --zn-color-danger-600: #C6394C;
808
+ --zn-color-danger-700: #EA8693;
809
+ --zn-color-danger-800: #EA8693;
810
+
811
+ --zn-color-success-fg: #79D2AD;
812
+ --zn-color-success-bg: rgba(56, 148, 110, 0.15);
813
+ --zn-color-success-line: rgba(56, 148, 110, 0.4);
814
+ --zn-color-success-solid: #38946E;
815
+ --zn-color-warning-fg: #FBCE74;
816
+ --zn-color-warning-bg: rgba(244, 167, 52, 0.1);
817
+ --zn-color-warning-line: rgba(244, 167, 52, 0.4);
818
+ --zn-color-warning-solid: #F4A734;
819
+ --zn-color-danger-fg: #EA8693;
820
+ --zn-color-danger-bg: rgba(198, 57, 76, 0.15);
821
+ --zn-color-danger-line: rgba(198, 57, 76, 0.4);
822
+ --zn-color-danger-solid: #C6394C;
823
+ --zn-color-info-fg: #89CFE6;
824
+ --zn-color-info-bg: rgba(49, 152, 196, 0.15);
825
+ --zn-color-info-line: rgba(49, 152, 196, 0.4);
826
+ --zn-color-info-solid: #3198C4;
827
+ --zn-color-ai-fg: #B8ADEB;
828
+ --zn-color-ai-bg: rgba(119, 100, 216, 0.18);
829
+ --zn-color-ai-line: rgba(119, 100, 216, 0.4);
830
+ --zn-color-ai-solid: #7764D8;
831
+
832
+ --zn-shadow-x-small: 0 1px 2px rgba(0, 0, 0, 0.30);
833
+ --zn-shadow-small: 0 1px 3px rgba(0, 0, 0, 0.35), 0 1px 2px rgba(0, 0, 0, 0.20);
834
+ --zn-shadow-medium: 0 4px 14px rgba(0, 0, 0, 0.40), 0 1px 3px rgba(0, 0, 0, 0.25);
835
+ --zn-shadow-large: 0 14px 40px rgba(0, 0, 0, 0.50), 0 2px 8px rgba(0, 0, 0, 0.30);
836
+ --zn-shadow-x-large: 0 14px 40px rgba(0, 0, 0, 0.50), 0 2px 8px rgba(0, 0, 0, 0.30);
837
+ --zn-menu-submenu-shadow: 0 4px 12px rgba(0, 0, 0, 0.40), 0 1px 3px rgba(0, 0, 0, 0.30);
838
+
839
+ --zn-focus-ring-color: var(--zn-color-primary-700);
840
+ --zn-input-focus-ring-color: rgba(92, 133, 214, 0.45);
841
+
842
+ --zn-overlay-background-color: rgba(5, 6, 8, 0.6);
843
+
844
+ --zn-input-background-color: #1F2026;
845
+ --zn-input-background-color-hover: #1F2026;
846
+ --zn-input-background-color-focus: #25262D;
847
+ --zn-input-background-color-disabled: #1B1C21;
848
+ --zn-input-border-color: #41444E;
849
+ --zn-input-border-color-hover: #565965;
850
+ --zn-input-border-color-focus: var(--zn-color-primary-600);
851
+ --zn-input-border-color-disabled: #32343D;
852
+ --zn-checkbox-border-color: #565965;
853
+ --zn-input-placeholder-color: #757884;
854
+ --zn-input-help-text-color: #9C9EA8;
855
+
856
+ --zn-panel-border-color: #32343D;
857
+
858
+ --zn-tooltip-background-color: #34363F;
859
+ --zn-tooltip-color: #FFFFFF;
860
+
861
+ --zn-selection-card-checked-color: var(--zn-color-primary-700);
862
+ --zn-panel-footer-background: #25262D;
863
+ --zn-menu-item-hover-background: var(--zn-color-neutral-200);
864
+ --zn-alert-tint-alpha: 0.15;
865
+ --zn-dialog-footer-background: #25262D;
866
+ --zn-skeleton-shimmer: rgba(255, 255, 255, 0.06);
867
+ --zn-color-primary-fg: #92AEE8;
868
+
869
+ // Info is sky in dark mode so it doesn't read as primary; the places that
870
+ // borrow info for primary pin the primary blue instead.
871
+ --zn-chip-primary-fg: #92AEE8;
872
+ --zn-chip-primary-bg: rgba(53, 106, 212, 0.18);
873
+ --zn-chip-primary-line: rgba(92, 133, 214, 0.4);
874
+ --zn-table-page-active-background: rgba(53, 106, 212, 0.18);
875
+
876
+ --zn-indicator-info: 49, 152, 196;
877
+ --zn-indicator-warning: 244, 167, 52;
878
+ --zn-indicator-error: 198, 57, 76;
879
+ --zn-indicator-success: 56, 148, 110;
880
+
881
+ --zn-chart-color-1: #5C85D6;
882
+ --zn-chart-color-2: #38946E;
883
+ --zn-chart-color-3: #7764D8;
884
+ --zn-chart-color-4: #F4A734;
885
+ --zn-chart-color-5: #C6394C;
886
+ --zn-chart-color-6: #3A9EA8;
887
+
888
+ // !important to beat #{modes.$dark}'s `.zn-primary { ... !important }`.
889
+ .zn-primary {
890
+ color: rgb(var(--zn-color-primary)) !important;
891
+ }
892
+ }
893
+
894
+ // Toasts are always drawn on the inverse (navy) surface, with the status
895
+ // colours switched to their on-dark tones.
896
+ .zn-toast-stack zn-alert {
897
+ --zn-alert-background: #0D1738;
898
+ --zn-alert-solid-background: #0D1738;
899
+ --zn-alert-align-items: flex-start;
900
+ // 12px 16px inside the alert's 1px border
901
+ --zn-alert-padding: 11px 15px;
902
+ --zn-alert-gap: 12px;
903
+ --zn-alert-content-padding: 0;
904
+ --zn-alert-icon-padding: 0;
905
+ --zn-alert-icon-offset: 1.6px;
906
+ --zn-alert-icon-stroke-width: 1.75;
907
+ --zn-alert-body-font-size: 12px;
908
+ line-height: 1.5;
909
+ --zn-alert-tint-alpha: 0;
910
+ --zn-alert-border-alpha: 0;
911
+ --zn-alert-title-color: #FFFFFF;
912
+ --zn-alert-body-color: rgba(255, 255, 255, 0.72);
913
+ --zn-color-success-fg: #3DDC97;
914
+ --zn-color-danger-fg: #FF7A90;
915
+ --zn-color-warning-fg: #FFC857;
916
+ --zn-color-info-fg: #86AFFE;
917
+ --zn-color-ai-fg: #B4A3FF;
918
+ color: #FFFFFF;
919
+ }
920
+
921
+ // Keyed on the alert's own reflected mode, as the root is not an ancestor inside a shadow root
922
+ .zn-toast-stack zn-alert[m="dark"] {
923
+ --zn-alert-background: #34363F;
924
+ --zn-alert-solid-background: #34363F;
925
+ --zn-color-success-fg: #79D2AD;
926
+ --zn-color-danger-fg: #EA8693;
927
+ --zn-color-warning-fg: #FBCE74;
928
+ --zn-color-info-fg: #89CFE6;
929
+ --zn-color-ai-fg: #B8ADEB;
930
+ }
931
+
932
+ // Stacks a dialog's content, as its body is a block that can hold inline content too. A page rule, as the page's
933
+ // reset of paragraph and heading margins out-ranks a shadow root's ::slotted() rules.
934
+ zn-dialog > :not([slot]) + :not([slot]) {
935
+ margin-block-start: var(--zn-density-stack);
936
+ }
937
+
938
+ // Tabs heading a panel form a card's tab strip: its height, and labels inset by the panel padding.
939
+ // No html prefix: the console renders pages inside app-content's shadow root, where html is not an ancestor.
940
+ zn-panel > zn-tabs > zn-navbar[slot="top"] {
941
+ --zn-navbar-inset: var(--zn-panel-padding);
942
+ --zn-navbar-tab-padding-top: var(--zn-card-tab-padding-top);
943
+ --zn-navbar-tab-padding-bottom: var(--zn-card-tab-padding-bottom);
944
+ }