@kenlo/sds-design-system 0.9.9

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 (246) hide show
  1. package/README.md +129 -0
  2. package/components/Accordion/Accordion.css +186 -0
  3. package/components/Accordion/accordion-variants.js +17 -0
  4. package/components/Accordion/accordion.marko +264 -0
  5. package/components/AccordionGroup/AccordionGroup.css +35 -0
  6. package/components/AccordionGroup/accordion-group.marko +17 -0
  7. package/components/Alert/Alert.css +104 -0
  8. package/components/Alert/alert-variants.js +35 -0
  9. package/components/Alert/alert.marko +94 -0
  10. package/components/AttachmentList/AttachmentList.css +92 -0
  11. package/components/AttachmentList/attachment-list.marko +51 -0
  12. package/components/AttachmentList/attachment-row.marko +167 -0
  13. package/components/Avatar/Avatar.css +110 -0
  14. package/components/Avatar/avatar-variants.js +12 -0
  15. package/components/Avatar/avatar.marko +71 -0
  16. package/components/Badge/Badge.css +381 -0
  17. package/components/Badge/badge-dismissible.marko +143 -0
  18. package/components/Badge/badge-variants.js +35 -0
  19. package/components/Badge/badge.marko +134 -0
  20. package/components/BottomSheet/BottomSheet.css +300 -0
  21. package/components/BottomSheet/bottom-sheet.marko +340 -0
  22. package/components/BulkActionBar/BulkActionBar.css +88 -0
  23. package/components/BulkActionBar/bulk-action-bar.marko +186 -0
  24. package/components/Button/Button.css +340 -0
  25. package/components/Button/button-variants.js +25 -0
  26. package/components/Button/button.marko +139 -0
  27. package/components/Card/Card.css +391 -0
  28. package/components/Card/card-body.marko +5 -0
  29. package/components/Card/card-collapsible.marko +94 -0
  30. package/components/Card/card-footer.marko +12 -0
  31. package/components/Card/card-header.marko +30 -0
  32. package/components/Card/card-info-pair.marko +17 -0
  33. package/components/Card/card-info-row.marko +12 -0
  34. package/components/Card/card-section.marko +14 -0
  35. package/components/Card/card-variants.js +24 -0
  36. package/components/Card/card.marko +124 -0
  37. package/components/Checkbox/Checkbox.css +249 -0
  38. package/components/Checkbox/checkbox-variants.js +21 -0
  39. package/components/Checkbox/checkbox.marko +128 -0
  40. package/components/ColorPicker/ColorPicker.css +253 -0
  41. package/components/ColorPicker/color-maths.js +104 -0
  42. package/components/ColorPicker/color-picker.marko +474 -0
  43. package/components/DatePicker/DatePicker.css +429 -0
  44. package/components/DatePicker/date-logic.js +225 -0
  45. package/components/DatePicker/date-picker.marko +492 -0
  46. package/components/Drawer/Drawer.css +174 -0
  47. package/components/Drawer/drawer.marko +262 -0
  48. package/components/Floating/Floating.css +28 -0
  49. package/components/Floating/floating-position.js +251 -0
  50. package/components/Floating/floating.marko +291 -0
  51. package/components/Form/Form.css +15 -0
  52. package/components/Form/form-context.js +69 -0
  53. package/components/Form/form.marko +73 -0
  54. package/components/GradientPicker/GradientPicker.css +179 -0
  55. package/components/GradientPicker/gradient-picker.marko +398 -0
  56. package/components/Grid/Grid.css +161 -0
  57. package/components/Grid/col.marko +36 -0
  58. package/components/Grid/grid-variants.js +43 -0
  59. package/components/Grid/grid.marko +25 -0
  60. package/components/Header/Header.css +457 -0
  61. package/components/Header/header.marko +523 -0
  62. package/components/Icon/Icon.css +44 -0
  63. package/components/Icon/icon-colors.js +31 -0
  64. package/components/Icon/icon.marko +56 -0
  65. package/components/IconButton/IconButton.css +85 -0
  66. package/components/IconButton/icon-button-variants.js +18 -0
  67. package/components/IconButton/icon-button.marko +103 -0
  68. package/components/Incrementer/Incrementer.css +94 -0
  69. package/components/Incrementer/incrementer.marko +70 -0
  70. package/components/Input/Input.css +547 -0
  71. package/components/Input/input-countries.js +109 -0
  72. package/components/Input/input-masks.js +218 -0
  73. package/components/Input/input-types.js +194 -0
  74. package/components/Input/input.marko +530 -0
  75. package/components/Menu/Menu.css +651 -0
  76. package/components/Menu/menu-variants.js +89 -0
  77. package/components/Menu/menu.marko +560 -0
  78. package/components/Modal/Modal.css +160 -0
  79. package/components/Modal/modal.marko +296 -0
  80. package/components/Nav/Nav.css +298 -0
  81. package/components/Nav/nav-variants.js +23 -0
  82. package/components/Nav/nav.marko +164 -0
  83. package/components/Notification/Notification.css +78 -0
  84. package/components/Notification/notification-variants.js +30 -0
  85. package/components/Notification/notification.marko +55 -0
  86. package/components/Pagination/Pagination.css +78 -0
  87. package/components/Pagination/pagination-pages.js +66 -0
  88. package/components/Pagination/pagination.marko +141 -0
  89. package/components/Pill/Pill.css +193 -0
  90. package/components/Pill/pill-variants.js +16 -0
  91. package/components/Pill/pill.marko +165 -0
  92. package/components/Popover/Popover.css +121 -0
  93. package/components/Popover/popover.marko +96 -0
  94. package/components/Radio/Radio.css +230 -0
  95. package/components/Radio/radio-variants.js +16 -0
  96. package/components/Radio/radio.marko +93 -0
  97. package/components/RadioGroup/RadioGroup.css +32 -0
  98. package/components/RadioGroup/radio-group.marko +93 -0
  99. package/components/SearchBar/SearchBar.css +181 -0
  100. package/components/SearchBar/search-bar-variants.js +24 -0
  101. package/components/SearchBar/search-bar.marko +157 -0
  102. package/components/Select/Select.css +427 -0
  103. package/components/Select/select-options.js +163 -0
  104. package/components/Select/select.marko +449 -0
  105. package/components/Separator/Separator.css +22 -0
  106. package/components/Separator/separator.marko +14 -0
  107. package/components/Skeleton/Skeleton.css +100 -0
  108. package/components/Skeleton/skeleton-avatar.marko +28 -0
  109. package/components/Skeleton/skeleton-button.marko +22 -0
  110. package/components/Skeleton/skeleton-image.marko +20 -0
  111. package/components/Skeleton/skeleton-input.marko +22 -0
  112. package/components/Skeleton/skeleton-variants.js +16 -0
  113. package/components/Skeleton/skeleton.marko +53 -0
  114. package/components/Spinner/Spinner.css +173 -0
  115. package/components/Spinner/spinner-geometry.js +39 -0
  116. package/components/Spinner/spinner-overlay.marko +97 -0
  117. package/components/Spinner/spinner.marko +88 -0
  118. package/components/StatCard/StatCard.css +90 -0
  119. package/components/StatCard/stat-card-group.marko +5 -0
  120. package/components/StatCard/stat-card.marko +57 -0
  121. package/components/Switch/Switch.css +209 -0
  122. package/components/Switch/switch.marko +99 -0
  123. package/components/Table/Table.css +270 -0
  124. package/components/Table/table-cell.marko +28 -0
  125. package/components/Table/table-header.marko +27 -0
  126. package/components/Table/table-logic.js +129 -0
  127. package/components/Table/table.marko +372 -0
  128. package/components/Text/Text.css +79 -0
  129. package/components/Text/text-variants.js +25 -0
  130. package/components/Text/text.marko +48 -0
  131. package/components/TextEditor/TextEditor.css +78 -0
  132. package/components/TextEditor/safe-url.js +50 -0
  133. package/components/TextEditor/text-editor-commands.js +22 -0
  134. package/components/TextEditor/text-editor.marko +253 -0
  135. package/components/Toast/Toast.css +88 -0
  136. package/components/Toast/toast-api.js +19 -0
  137. package/components/Toast/toast-store.js +118 -0
  138. package/components/Toast/toast-variants.js +16 -0
  139. package/components/Toast/toast.marko +93 -0
  140. package/components/Toast/toaster.marko +70 -0
  141. package/components/Toggle/Toggle.css +169 -0
  142. package/components/Toggle/toggle.marko +93 -0
  143. package/components/Tooltip/Tooltip.css +115 -0
  144. package/components/Tooltip/tooltip.marko +77 -0
  145. package/components/Uploader/Uploader.css +180 -0
  146. package/components/Uploader/crop-geometry.js +161 -0
  147. package/components/Uploader/uploader.marko +269 -0
  148. package/foundations/Scrollbar/Scrollbar.css +26 -0
  149. package/foundations/attrs.js +27 -0
  150. package/foundations/breakpoints.js +27 -0
  151. package/foundations/contrast.js +74 -0
  152. package/foundations/custom-scheme.js +222 -0
  153. package/foundations/overlay.js +108 -0
  154. package/foundations/styles.css +284 -0
  155. package/foundations/text.js +22 -0
  156. package/foundations/theme-server.js +81 -0
  157. package/foundations/theme.js +42 -0
  158. package/foundations/tokens.css +1656 -0
  159. package/icons/custom/custom-video-horizontal-filled.marko +6 -0
  160. package/icons/custom/custom-video-horizontal-regular.marko +6 -0
  161. package/icons/custom/custom-video-tour-3d-filled.marko +7 -0
  162. package/icons/custom/custom-video-tour-3d-regular.marko +9 -0
  163. package/icons/custom/custom-video-vertical-filled.marko +6 -0
  164. package/icons/custom/custom-video-vertical-regular.marko +6 -0
  165. package/icons/generated/fluent-add-regular.marko +3 -0
  166. package/icons/generated/fluent-alert-regular.marko +3 -0
  167. package/icons/generated/fluent-apps-regular.marko +3 -0
  168. package/icons/generated/fluent-arrow-download-regular.marko +3 -0
  169. package/icons/generated/fluent-arrow-left-regular.marko +3 -0
  170. package/icons/generated/fluent-arrow-right-regular.marko +3 -0
  171. package/icons/generated/fluent-arrow-rotate-clockwise-regular.marko +3 -0
  172. package/icons/generated/fluent-arrow-rotate-counterclockwise-regular.marko +3 -0
  173. package/icons/generated/fluent-border-all-regular.marko +3 -0
  174. package/icons/generated/fluent-calendar-regular.marko +3 -0
  175. package/icons/generated/fluent-checkmark-circle-filled.marko +3 -0
  176. package/icons/generated/fluent-checkmark-regular.marko +3 -0
  177. package/icons/generated/fluent-chevron-down-regular.marko +3 -0
  178. package/icons/generated/fluent-chevron-left-regular.marko +3 -0
  179. package/icons/generated/fluent-chevron-right-regular.marko +3 -0
  180. package/icons/generated/fluent-chevron-up-regular.marko +3 -0
  181. package/icons/generated/fluent-circle-half-fill-regular.marko +3 -0
  182. package/icons/generated/fluent-clock-regular.marko +3 -0
  183. package/icons/generated/fluent-color-regular.marko +3 -0
  184. package/icons/generated/fluent-crop-regular.marko +3 -0
  185. package/icons/generated/fluent-dark-theme-regular.marko +3 -0
  186. package/icons/generated/fluent-delete-regular.marko +3 -0
  187. package/icons/generated/fluent-desktop-regular.marko +3 -0
  188. package/icons/generated/fluent-dismiss-circle-filled.marko +3 -0
  189. package/icons/generated/fluent-dismiss-regular.marko +3 -0
  190. package/icons/generated/fluent-document-pdf-regular.marko +3 -0
  191. package/icons/generated/fluent-document-regular.marko +3 -0
  192. package/icons/generated/fluent-eye-off-regular.marko +3 -0
  193. package/icons/generated/fluent-eye-regular.marko +3 -0
  194. package/icons/generated/fluent-eyedropper-regular.marko +3 -0
  195. package/icons/generated/fluent-grid-regular.marko +3 -0
  196. package/icons/generated/fluent-history-regular.marko +3 -0
  197. package/icons/generated/fluent-home-regular.marko +3 -0
  198. package/icons/generated/fluent-image-regular.marko +3 -0
  199. package/icons/generated/fluent-info-regular.marko +3 -0
  200. package/icons/generated/fluent-link-regular.marko +3 -0
  201. package/icons/generated/fluent-more-horizontal-regular.marko +3 -0
  202. package/icons/generated/fluent-navigation-regular.marko +3 -0
  203. package/icons/generated/fluent-paint-brush-regular.marko +3 -0
  204. package/icons/generated/fluent-question-circle-regular.marko +3 -0
  205. package/icons/generated/fluent-search-regular.marko +3 -0
  206. package/icons/generated/fluent-settings-regular.marko +3 -0
  207. package/icons/generated/fluent-square-hint-regular.marko +3 -0
  208. package/icons/generated/fluent-subtract-regular.marko +3 -0
  209. package/icons/generated/fluent-text-align-center-regular.marko +3 -0
  210. package/icons/generated/fluent-text-align-left-regular.marko +3 -0
  211. package/icons/generated/fluent-text-align-right-regular.marko +3 -0
  212. package/icons/generated/fluent-text-bold-regular.marko +3 -0
  213. package/icons/generated/fluent-text-bullet-list-regular.marko +3 -0
  214. package/icons/generated/fluent-text-font-regular.marko +3 -0
  215. package/icons/generated/fluent-text-font-size-regular.marko +3 -0
  216. package/icons/generated/fluent-text-italic-regular.marko +3 -0
  217. package/icons/generated/fluent-text-number-list-ltr-regular.marko +3 -0
  218. package/icons/generated/fluent-video-regular.marko +3 -0
  219. package/icons/generated/fluent-warning-filled.marko +3 -0
  220. package/icons/generated/fluent-weather-moon-regular.marko +3 -0
  221. package/icons/generated/fluent-weather-sunny-regular.marko +3 -0
  222. package/icons/generated/fluent-zoom-in-regular.marko +3 -0
  223. package/icons/generated/fluent-zoom-out-regular.marko +3 -0
  224. package/icons/manifest.json +61 -0
  225. package/icons/social/social-facebook-color.marko +7 -0
  226. package/icons/social/social-facebook.marko +6 -0
  227. package/icons/social/social-google-color.marko +20 -0
  228. package/icons/social/social-google.marko +6 -0
  229. package/icons/social/social-instagram-color.marko +16 -0
  230. package/icons/social/social-instagram.marko +6 -0
  231. package/icons/social/social-linkedin-color.marko +8 -0
  232. package/icons/social/social-linkedin.marko +8 -0
  233. package/icons/social/social-messenger-color.marko +15 -0
  234. package/icons/social/social-messenger.marko +6 -0
  235. package/icons/social/social-pinterest-color.marko +6 -0
  236. package/icons/social/social-pinterest.marko +6 -0
  237. package/icons/social/social-telegram-color.marko +7 -0
  238. package/icons/social/social-telegram.marko +6 -0
  239. package/icons/social/social-whatsapp-color.marko +8 -0
  240. package/icons/social/social-whatsapp.marko +7 -0
  241. package/icons/social/social-x-color.marko +7 -0
  242. package/icons/social/social-x.marko +6 -0
  243. package/icons/social/social-youtube-color.marko +7 -0
  244. package/icons/social/social-youtube.marko +6 -0
  245. package/marko.json +203 -0
  246. package/package.json +55 -0
@@ -0,0 +1,1656 @@
1
+ /* SDS design tokens.
2
+ Derived from kdls-design-system v2.5.1 (0f3edf8) by scripts/derive-tokens.mjs.
3
+ Divergences from KDLS, all deliberate:
4
+ - the secondary, tertiary and lya colour families are removed, along with
5
+ their [data-color-scheme] blocks and the --color-kenlo-blue-* aliases;
6
+ - primary is a slot with a neutral floor, never a Kenlo value;
7
+ - the Kenlo radius scheme named `default` is removed; `soft` is the install
8
+ default and keeps its name.
9
+ SDS owns this file from here on — edit it directly, do not regenerate. */
10
+ /* Source for foundations/tokens.css — run `npm run gen:tokens` after editing.
11
+ No usage-rule comments here — token usage rules live in
12
+ .claude/tokens-reference.md. General component rules: .claude/component-rules.md. */
13
+
14
+ /* ── The one layout rule this package asserts ──────────────────────────────────
15
+
16
+ A component that sets `width: 100%` and also has padding is wider than its parent
17
+ under the CSS default of `content-box`. Measured at 320px: Alert, Checkbox, Switch,
18
+ RadioGroup, Pagination, Skeleton, AccordionGroup and Separator each reached 48px past
19
+ their container, and the page scrolled sideways under every section.
20
+
21
+ KDLS has the same components and does not say this anywhere in the package — its
22
+ portal carries a global reset (`portal/src/styles/_reset.css`), so the problem is
23
+ invisible there and arrives in any consumer that does not have one.
24
+
25
+ The selector claims only elements this package named. A design system may not impose
26
+ a global reset on a page it does not own; it may insist its own boxes measure the way
27
+ its stylesheets assume. It lives in the token sheet because that is the one file SDS
28
+ cannot be used without.
29
+ ─────────────────────────────────────────────────────────────────────────── */
30
+
31
+ [class*="sds-"],
32
+ [class*="sds-"]::before,
33
+ [class*="sds-"]::after {
34
+ box-sizing: border-box;
35
+ }
36
+ @import url("https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap");
37
+ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Montserrat:wght@400;500;600;700&family=Nunito:wght@400;500;600;700&family=Source+Sans+3:wght@400;500;600;700&display=swap");/* -------------------------------SEMANTIC ALIASES------------------------------- */
38
+ :root {
39
+ /* The absolutes: the two ends of the neutral ramp, and the only colours in the system
40
+ that do NOT invert with the theme.
41
+
42
+ `--color-neutral-00` used to invert — #ffffff in the light theme, #1a1a1a in the dark
43
+ one — which made two tokens with symmetric names behave in opposite ways once
44
+ `--color-neutral-100` existed. Rafael asked for them as a pair, and a pair is what
45
+ they are now: white and black, meaning exactly that in both themes.
46
+
47
+ What inverts moved to where it belongs, which is the semantic layer. Every one of the
48
+ 29 rules that read `--color-neutral-00` was painting a component's ground, and says so
49
+ now with `--component-bg-color` — which reads the inverting pair directly. Nothing on
50
+ screen changed; the same colour arrives by a name that admits what it is for.
51
+
52
+ `--color-white` and `--color-black` stay as the plain names for the same two values.
53
+ Both spellings are in the system already and neither is wrong. */
54
+ --color-white: #ffffff;
55
+ --color-black: #000000;
56
+ --color-neutral-00: var(--color-white);
57
+ --color-neutral-100: var(--color-black);
58
+ /* What goes ON a primary-50 surface. It was a fixed `--color-white`, and
59
+ `--color-primary-50` inverts between the themes while white does not — so in the dark
60
+ theme every filled primary surface painted white text on #f2f2f2, measured at 1.12:1.
61
+ A Button, a Notification, an Avatar's initials, an active Pill, an active Toggle item:
62
+ all unreadable, all for the same reason.
63
+
64
+ Thirteen rules across the components tried to patch it with
65
+ `[data-color-scheme="neutral"][data-theme="dark"]`, and not one of them ever ran:
66
+ `neutral` is the install default, and a value equal to the default is written by
67
+ REMOVING the attribute rather than setting it (see theme-server.js `resolveSlot`). The
68
+ selector could not match in the configuration it was written for.
69
+
70
+ `--color-primary-50-on` is the palette's own answer for this surface — it is derived
71
+ per family and it inverts with the theme, so the guards are not needed and the
72
+ per-scheme black overrides are not either. */
73
+ --color-on-primary: var(--color-primary-50-on);
74
+ /* The pair, not the tone: `--color-neutral-00` is absolute white now, and this is the
75
+ thing that has to follow the theme. `--color-neutral-00-90` is the pair it always
76
+ read through. */
77
+ --component-bg-color: var(--color-neutral-00-90);
78
+ --border-interactive-color: var(--color-neutral-30);
79
+ --border-static-color: var(--color-neutral-20);
80
+ --placeholder-color: var(--color-neutral-50);
81
+ --focus-stroke-color: var(--color-neutral-90-00);
82
+
83
+ /* The focus ring, declared once.
84
+ Two rings rather than one: the inner one is the surface the control sits on, so the
85
+ outer one reads as a ring and not as a thick border, whatever the control is touching.
86
+ `--focus-ring-inset` is the same shape turned inwards, for a control whose own box is
87
+ clipped by something above it.
88
+ `--focus-ring-outline` is for a control inside a scroll container, where a box-shadow
89
+ would be cut off — an outline is never clipped. */
90
+ --focus-ring-width: 2px;
91
+ --focus-ring: 0 0 0 var(--focus-ring-width) var(--component-bg-color),
92
+ 0 0 0 calc(var(--focus-ring-width) * 2) var(--focus-stroke-color);
93
+ --focus-ring-inset: inset 0 0 0 var(--focus-ring-width) var(--component-bg-color),
94
+ inset 0 0 0 calc(var(--focus-ring-width) * 2) var(--focus-stroke-color);
95
+ }
96
+
97
+ /* ------------------------------------------------------------------------------ *//* ORDER MATTERS HERE. :root and [data-color-scheme="x"] have the same specificity, so
98
+ whichever comes last in the file wins. This floor must therefore sit BEFORE the scheme
99
+ blocks — placed after them, it silently overrode every one of them and selecting a
100
+ colour scheme did nothing at all. */
101
+ /* Primary is a slot, not a value.
102
+ SDS carries no Kenlo brand colour. The slot is filled by the site's own colour
103
+ through applyCustomColor / applyCustomGradient, and falls back to neutral so a
104
+ consumer that declares nothing still gets a coherent system.
105
+
106
+ In kdls-design-system v2.5.1 (0f3edf8) this section held the Kenlo blue ramp
107
+ (--color-primary-*-* hexes, light and dark) plus the --color-kenlo-blue-*
108
+ aliases. All of it is removed; the mapping below is lifted verbatim from that
109
+ file's own [data-color-scheme="neutral"] block. */
110
+ :root {
111
+ --color-primary-10: var(--color-neutral-10);
112
+ --color-primary-20: var(--color-neutral-20);
113
+ --color-primary-30: var(--color-neutral-30);
114
+ --color-primary-40: var(--color-neutral-50);
115
+ /* The principal tone. It points at neutral-80 rather than neutral-50, and it is the only
116
+ scheme where the 50 is not the family's own 50: a mid grey has no presence as the
117
+ colour of a button. */
118
+ --color-primary-50: var(--color-neutral-80);
119
+ /* Above the 50 the neutral ramp runs out — it ends at 90, and the slot still needs four
120
+ steps. KDLS answered by repeating neutral-90 four times, and the port carried that
121
+ verbatim: tones 60, 70, 80 and 90 were ONE colour. That is 81 declarations across the
122
+ stylesheets resolving to #1a1a1a, and it showed: a primary button's `:hover` reads
123
+ `--color-primary-60` and its `:active` reads `--color-primary-70`, so in the default
124
+ scheme pressing the button changed nothing at all.
125
+
126
+ The missing steps are mixed from the two ends rather than written as new hexes — the
127
+ rule here is that the answer to a missing value is a token, not a literal, which is
128
+ how --color-scrim is built too. The ramp is monotonic again: each step is darker than
129
+ the one before it, and nothing repeats. */
130
+ --color-primary-60: var(--color-neutral-90);
131
+ --color-primary-70: color-mix(in srgb, var(--color-neutral-90) 65%, var(--color-black));
132
+ --color-primary-80: color-mix(in srgb, var(--color-neutral-90) 30%, var(--color-black));
133
+ --color-primary-90: var(--color-black);
134
+ }
135
+
136
+ /* --------------------------------COLOR SCHEMES--------------------------------- */
137
+ [data-color-scheme="neutral"] {
138
+ --color-primary-10: var(--color-neutral-10);
139
+ --color-primary-20: var(--color-neutral-20);
140
+ --color-primary-30: var(--color-neutral-30);
141
+ --color-primary-40: var(--color-neutral-50);
142
+ --color-primary-50: var(--color-neutral-80);
143
+ --color-primary-60: var(--color-neutral-90);
144
+ --color-primary-70: var(--color-neutral-90);
145
+ --color-primary-80: var(--color-neutral-90);
146
+ --color-primary-90: var(--color-neutral-90);
147
+ }
148
+
149
+ /* Map key = attribute value; tuple = (source family, force --color-on-primary: black?) */
150
+ [data-color-scheme="leaf"] {
151
+ --color-primary-10: var(--color-leaf-10);
152
+ --color-primary-20: var(--color-leaf-20);
153
+ --color-primary-30: var(--color-leaf-30);
154
+ --color-primary-40: var(--color-leaf-40);
155
+ --color-primary-50: var(--color-leaf-50);
156
+ --color-primary-60: var(--color-leaf-60);
157
+ --color-primary-70: var(--color-leaf-70);
158
+ --color-primary-80: var(--color-leaf-80);
159
+ --color-primary-90: var(--color-leaf-90);
160
+ }
161
+
162
+ [data-color-scheme="sand"] {
163
+ --color-primary-10: var(--color-sand-10);
164
+ --color-primary-20: var(--color-sand-20);
165
+ --color-primary-30: var(--color-sand-30);
166
+ --color-primary-40: var(--color-sand-40);
167
+ --color-primary-50: var(--color-sand-50);
168
+ --color-primary-60: var(--color-sand-60);
169
+ --color-primary-70: var(--color-sand-70);
170
+ --color-primary-80: var(--color-sand-80);
171
+ --color-primary-90: var(--color-sand-90);
172
+ }
173
+
174
+ [data-color-scheme="wood"] {
175
+ --color-primary-10: var(--color-wood-10);
176
+ --color-primary-20: var(--color-wood-20);
177
+ --color-primary-30: var(--color-wood-30);
178
+ --color-primary-40: var(--color-wood-40);
179
+ --color-primary-50: var(--color-wood-50);
180
+ --color-primary-60: var(--color-wood-60);
181
+ --color-primary-70: var(--color-wood-70);
182
+ --color-primary-80: var(--color-wood-80);
183
+ --color-primary-90: var(--color-wood-90);
184
+ }
185
+
186
+ [data-color-scheme="clay"] {
187
+ --color-primary-10: var(--color-clay-10);
188
+ --color-primary-20: var(--color-clay-20);
189
+ --color-primary-30: var(--color-clay-30);
190
+ --color-primary-40: var(--color-clay-40);
191
+ --color-primary-50: var(--color-clay-50);
192
+ --color-primary-60: var(--color-clay-60);
193
+ --color-primary-70: var(--color-clay-70);
194
+ --color-primary-80: var(--color-clay-80);
195
+ --color-primary-90: var(--color-clay-90);
196
+ }
197
+
198
+ [data-color-scheme="flower"] {
199
+ --color-primary-10: var(--color-flower-10);
200
+ --color-primary-20: var(--color-flower-20);
201
+ --color-primary-30: var(--color-flower-30);
202
+ --color-primary-40: var(--color-flower-40);
203
+ --color-primary-50: var(--color-flower-50);
204
+ --color-primary-60: var(--color-flower-60);
205
+ --color-primary-70: var(--color-flower-70);
206
+ --color-primary-80: var(--color-flower-80);
207
+ --color-primary-90: var(--color-flower-90);
208
+ }
209
+
210
+ [data-color-scheme="dusk"] {
211
+ --color-primary-10: var(--color-dusk-10);
212
+ --color-primary-20: var(--color-dusk-20);
213
+ --color-primary-30: var(--color-dusk-30);
214
+ --color-primary-40: var(--color-dusk-40);
215
+ --color-primary-50: var(--color-dusk-50);
216
+ --color-primary-60: var(--color-dusk-60);
217
+ --color-primary-70: var(--color-dusk-70);
218
+ --color-primary-80: var(--color-dusk-80);
219
+ --color-primary-90: var(--color-dusk-90);
220
+ }
221
+
222
+ [data-color-scheme="sky"] {
223
+ --color-primary-10: var(--color-sky-10);
224
+ --color-primary-20: var(--color-sky-20);
225
+ --color-primary-30: var(--color-sky-30);
226
+ --color-primary-40: var(--color-sky-40);
227
+ --color-primary-50: var(--color-sky-50);
228
+ --color-primary-60: var(--color-sky-60);
229
+ --color-primary-70: var(--color-sky-70);
230
+ --color-primary-80: var(--color-sky-80);
231
+ --color-primary-90: var(--color-sky-90);
232
+ }
233
+
234
+ [data-color-scheme="sea"] {
235
+ --color-primary-10: var(--color-sea-10);
236
+ --color-primary-20: var(--color-sea-20);
237
+ --color-primary-30: var(--color-sea-30);
238
+ --color-primary-40: var(--color-sea-40);
239
+ --color-primary-50: var(--color-sea-50);
240
+ --color-primary-60: var(--color-sea-60);
241
+ --color-primary-70: var(--color-sea-70);
242
+ --color-primary-80: var(--color-sea-80);
243
+ --color-primary-90: var(--color-sea-90);
244
+ }
245
+
246
+ [data-color-scheme="lake"] {
247
+ --color-primary-10: var(--color-lake-10);
248
+ --color-primary-20: var(--color-lake-20);
249
+ --color-primary-30: var(--color-lake-30);
250
+ --color-primary-40: var(--color-lake-40);
251
+ --color-primary-50: var(--color-lake-50);
252
+ --color-primary-60: var(--color-lake-60);
253
+ --color-primary-70: var(--color-lake-70);
254
+ --color-primary-80: var(--color-lake-80);
255
+ --color-primary-90: var(--color-lake-90);
256
+ }
257
+
258
+ /* ------------------------------------------------------------------------------ *//* -----------------------------------NEUTRAL------------------------------------ */
259
+ :root {
260
+ --color-neutral-00-90: #ffffff;
261
+ --color-neutral-10-80: #f2f2f2;
262
+ --color-neutral-20-70: #e6e6e6;
263
+ --color-neutral-30-60: #d8d8d8;
264
+ --color-neutral-40-50: #b8b8b8;
265
+ --color-neutral-50-40: #808080;
266
+ --color-neutral-60-30: #595959;
267
+ --color-neutral-70-20: #404040;
268
+ --color-neutral-80-10: #262626;
269
+ --color-neutral-90-00: #1a1a1a;
270
+ }
271
+
272
+ [data-theme="dark"] {
273
+ --color-neutral-00-90: #1a1a1a;
274
+ --color-neutral-10-80: #262626;
275
+ --color-neutral-20-70: #404040;
276
+ --color-neutral-30-60: #595959;
277
+ --color-neutral-40-50: #808080;
278
+ --color-neutral-50-40: #b8b8b8;
279
+ --color-neutral-60-30: #d8d8d8;
280
+ --color-neutral-70-20: #e6e6e6;
281
+ --color-neutral-80-10: #f2f2f2;
282
+ --color-neutral-90-00: #ffffff;
283
+ }
284
+
285
+ :root {
286
+ --color-neutral-10: var(
287
+ --color-neutral-10-80
288
+ );
289
+ --color-neutral-20: var(
290
+ --color-neutral-20-70
291
+ );
292
+ --color-neutral-30: var(
293
+ --color-neutral-30-60
294
+ );
295
+ --color-neutral-40: var(
296
+ --color-neutral-40-50
297
+ );
298
+ --color-neutral-50: var(
299
+ --color-neutral-50-40
300
+ );
301
+ --color-neutral-60: var(
302
+ --color-neutral-60-30
303
+ );
304
+ --color-neutral-70: var(
305
+ --color-neutral-70-20
306
+ );
307
+ --color-neutral-80: var(
308
+ --color-neutral-80-10
309
+ );
310
+ --color-neutral-90: var(
311
+ --color-neutral-90-00
312
+ );
313
+ }
314
+
315
+ /* ------------------------------------------------------------------------------ *//* -----------------------------------PRIMARY------------------------------------ */
316
+
317
+
318
+ /* Solid companions to the primary slot.
319
+ `background` accepts a gradient; `color`, `box-shadow` and `border-color` do not —
320
+ they treat one as an invalid value and fall back. So every component that paints
321
+ TEXT or a BORDER from the primary slot reads the -solid companion instead, and
322
+ every component that paints a SURFACE reads the slot itself.
323
+
324
+ In solid mode these are the same value and this costs nothing. applyCustomGradient
325
+ overrides only the companions, with a representative stop, so a gradient theme keeps
326
+ readable text and a visible outline while surfaces still get the real gradient. */
327
+ :root {
328
+ --color-primary-10-solid: var(--color-primary-10);
329
+ --color-primary-20-solid: var(--color-primary-20);
330
+ --color-primary-30-solid: var(--color-primary-30);
331
+ --color-primary-40-solid: var(--color-primary-40);
332
+ --color-primary-50-solid: var(--color-primary-50);
333
+ --color-primary-60-solid: var(--color-primary-60);
334
+ --color-primary-70-solid: var(--color-primary-70);
335
+ --color-primary-80-solid: var(--color-primary-80);
336
+ --color-primary-90-solid: var(--color-primary-90);
337
+ }
338
+
339
+ /* ------------------------------FEEDBACK - SUCCESS------------------------------ */
340
+ :root {
341
+ --color-success-10-90: #d1fad8;
342
+ --color-success-20-80: #a3f5b1;
343
+ --color-success-30-70: #75f08a;
344
+ --color-success-40-60: #47eb63;
345
+ --color-success-50-50: #14b830;
346
+ --color-success-60-40: #0f8a24;
347
+ --color-success-70-30: #0a5c18;
348
+ --color-success-80-20: #084512;
349
+ --color-success-90-10: #052e0c;
350
+ }
351
+
352
+ [data-theme="dark"] {
353
+ --color-success-10-90: #052e0c;
354
+ --color-success-20-80: #084512;
355
+ --color-success-30-70: #0a5c18;
356
+ --color-success-40-60: #0f8a24;
357
+ --color-success-50-50: #14b830;
358
+ --color-success-60-40: #47eb63;
359
+ --color-success-70-30: #75f08a;
360
+ --color-success-80-20: #a3f5b1;
361
+ --color-success-90-10: #d1fad8;
362
+ }
363
+
364
+ :root {
365
+ --color-success-10: var(
366
+ --color-success-10-90
367
+ );
368
+ --color-success-20: var(
369
+ --color-success-20-80
370
+ );
371
+ --color-success-30: var(
372
+ --color-success-30-70
373
+ );
374
+ --color-success-40: var(
375
+ --color-success-40-60
376
+ );
377
+ --color-success-50: var(
378
+ --color-success-50-50
379
+ );
380
+ --color-success-60: var(
381
+ --color-success-60-40
382
+ );
383
+ --color-success-70: var(
384
+ --color-success-70-30
385
+ );
386
+ --color-success-80: var(
387
+ --color-success-80-20
388
+ );
389
+ --color-success-90: var(
390
+ --color-success-90-10
391
+ );
392
+ }
393
+
394
+ /* ------------------------------------------------------------------------------ *//* -------------------------------FEEDBACK - ALERT------------------------------- */
395
+ :root {
396
+ --color-alert-10-90: #faecd1;
397
+ --color-alert-20-80: #f5daa3;
398
+ --color-alert-30-70: #f0c775;
399
+ --color-alert-40-60: #ebb447;
400
+ --color-alert-50-50: #e5a119;
401
+ --color-alert-60-40: #b88114;
402
+ --color-alert-70-30: #8a610f;
403
+ --color-alert-80-20: #5c410a;
404
+ --color-alert-90-10: #2e2005;
405
+ }
406
+
407
+ [data-theme="dark"] {
408
+ --color-alert-10-90: #2e2005;
409
+ --color-alert-20-80: #5c410a;
410
+ --color-alert-30-70: #8a610f;
411
+ --color-alert-40-60: #b88114;
412
+ --color-alert-50-50: #e5a119;
413
+ --color-alert-60-40: #ebb447;
414
+ --color-alert-70-30: #f0c775;
415
+ --color-alert-80-20: #f5daa3;
416
+ --color-alert-90-10: #faecd1;
417
+ }
418
+
419
+ :root {
420
+ --color-alert-10: var(
421
+ --color-alert-10-90
422
+ );
423
+ --color-alert-20: var(
424
+ --color-alert-20-80
425
+ );
426
+ --color-alert-30: var(
427
+ --color-alert-30-70
428
+ );
429
+ --color-alert-40: var(
430
+ --color-alert-40-60
431
+ );
432
+ --color-alert-50: var(
433
+ --color-alert-50-50
434
+ );
435
+ --color-alert-60: var(
436
+ --color-alert-60-40
437
+ );
438
+ --color-alert-70: var(
439
+ --color-alert-70-30
440
+ );
441
+ --color-alert-80: var(
442
+ --color-alert-80-20
443
+ );
444
+ --color-alert-90: var(
445
+ --color-alert-90-10
446
+ );
447
+ }
448
+
449
+ /* ------------------------------------------------------------------------------ *//* -------------------------------FEEDBACK - ERROR------------------------------- */
450
+ :root {
451
+ --color-error-10-90: #fad5d1;
452
+ --color-error-20-80: #f5aaa3;
453
+ --color-error-30-70: #ef8076;
454
+ --color-error-40-60: #ea5548;
455
+ --color-error-50-50: #e52b1a;
456
+ --color-error-60-40: #b72215;
457
+ --color-error-70-30: #891a10;
458
+ --color-error-80-20: #5c110a;
459
+ --color-error-90-10: #2e0905;
460
+ }
461
+
462
+ [data-theme="dark"] {
463
+ --color-error-10-90: #2e0905;
464
+ --color-error-20-80: #5c110a;
465
+ --color-error-30-70: #891a10;
466
+ --color-error-40-60: #b72215;
467
+ --color-error-50-50: #e52b1a;
468
+ --color-error-60-40: #ea5548;
469
+ --color-error-70-30: #ef8076;
470
+ --color-error-80-20: #f5aaa3;
471
+ --color-error-90-10: #fad5d1;
472
+ }
473
+
474
+ :root {
475
+ --color-error-10: var(
476
+ --color-error-10-90
477
+ );
478
+ --color-error-20: var(
479
+ --color-error-20-80
480
+ );
481
+ --color-error-30: var(
482
+ --color-error-30-70
483
+ );
484
+ --color-error-40: var(
485
+ --color-error-40-60
486
+ );
487
+ --color-error-50: var(
488
+ --color-error-50-50
489
+ );
490
+ --color-error-60: var(
491
+ --color-error-60-40
492
+ );
493
+ --color-error-70: var(
494
+ --color-error-70-30
495
+ );
496
+ --color-error-80: var(
497
+ --color-error-80-20
498
+ );
499
+ --color-error-90: var(
500
+ --color-error-90-10
501
+ );
502
+ }
503
+
504
+ /* ------------------------------------------------------------------------------ *//* --------------------------------SUPPORT - LEAF-------------------------------- */
505
+ :root {
506
+ --color-leaf-10-90: #ecf2d9;
507
+ --color-leaf-20-80: #d9e5b3;
508
+ --color-leaf-30-70: #c5d98c;
509
+ --color-leaf-40-60: #b2cc66;
510
+ --color-leaf-50-50: #9fbf40;
511
+ --color-leaf-60-40: #7f9933;
512
+ --color-leaf-70-30: #5f7326;
513
+ --color-leaf-80-20: #404c1a;
514
+ --color-leaf-90-10: #20260d;
515
+ }
516
+
517
+ [data-theme="dark"] {
518
+ --color-leaf-10-90: #20260d;
519
+ --color-leaf-20-80: #404c1a;
520
+ --color-leaf-30-70: #5f7326;
521
+ --color-leaf-40-60: #7f9933;
522
+ --color-leaf-50-50: #9fbf40;
523
+ --color-leaf-60-40: #b2cc66;
524
+ --color-leaf-70-30: #c5d98c;
525
+ --color-leaf-80-20: #d9e5b3;
526
+ --color-leaf-90-10: #ecf2d9;
527
+ }
528
+
529
+ :root {
530
+ --color-leaf-10: var(
531
+ --color-leaf-10-90
532
+ );
533
+ --color-leaf-20: var(
534
+ --color-leaf-20-80
535
+ );
536
+ --color-leaf-30: var(
537
+ --color-leaf-30-70
538
+ );
539
+ --color-leaf-40: var(
540
+ --color-leaf-40-60
541
+ );
542
+ --color-leaf-50: var(
543
+ --color-leaf-50-50
544
+ );
545
+ --color-leaf-60: var(
546
+ --color-leaf-60-40
547
+ );
548
+ --color-leaf-70: var(
549
+ --color-leaf-70-30
550
+ );
551
+ --color-leaf-80: var(
552
+ --color-leaf-80-20
553
+ );
554
+ --color-leaf-90: var(
555
+ --color-leaf-90-10
556
+ );
557
+ }
558
+
559
+ /* ------------------------------------------------------------------------------ *//* --------------------------------SUPPORT - SAND-------------------------------- */
560
+ :root {
561
+ --color-sand-10-90: #f2eed9;
562
+ --color-sand-20-80: #e5ddb3;
563
+ --color-sand-30-70: #d9cc8c;
564
+ --color-sand-40-60: #ccbb66;
565
+ --color-sand-50-50: #bfaa40;
566
+ --color-sand-60-40: #998833;
567
+ --color-sand-70-30: #736626;
568
+ --color-sand-80-20: #4c441a;
569
+ --color-sand-90-10: #26220d;
570
+ }
571
+
572
+ [data-theme="dark"] {
573
+ --color-sand-10-90: #26220d;
574
+ --color-sand-20-80: #4c441a;
575
+ --color-sand-30-70: #736626;
576
+ --color-sand-40-60: #998833;
577
+ --color-sand-50-50: #bfaa40;
578
+ --color-sand-60-40: #ccbb66;
579
+ --color-sand-70-30: #d9cc8c;
580
+ --color-sand-80-20: #e5ddb3;
581
+ --color-sand-90-10: #f2eed9;
582
+ }
583
+
584
+ :root {
585
+ --color-sand-10: var(
586
+ --color-sand-10-90
587
+ );
588
+ --color-sand-20: var(
589
+ --color-sand-20-80
590
+ );
591
+ --color-sand-30: var(
592
+ --color-sand-30-70
593
+ );
594
+ --color-sand-40: var(
595
+ --color-sand-40-60
596
+ );
597
+ --color-sand-50: var(
598
+ --color-sand-50-50
599
+ );
600
+ --color-sand-60: var(
601
+ --color-sand-60-40
602
+ );
603
+ --color-sand-70: var(
604
+ --color-sand-70-30
605
+ );
606
+ --color-sand-80: var(
607
+ --color-sand-80-20
608
+ );
609
+ --color-sand-90: var(
610
+ --color-sand-90-10
611
+ );
612
+ }
613
+
614
+ /* ------------------------------------------------------------------------------ *//* --------------------------------SUPPORT - WOOD-------------------------------- */
615
+ :root {
616
+ --color-wood-10-90: #f2e1d9;
617
+ --color-wood-20-80: #e5c3b3;
618
+ --color-wood-30-70: #d9a68c;
619
+ --color-wood-40-60: #cc8866;
620
+ --color-wood-50-50: #bf6a40;
621
+ --color-wood-60-40: #995533;
622
+ --color-wood-70-30: #734026;
623
+ --color-wood-80-20: #4c2a1a;
624
+ --color-wood-90-10: #26170d;
625
+ }
626
+
627
+ [data-theme="dark"] {
628
+ --color-wood-10-90: #26170d;
629
+ --color-wood-20-80: #4c2a1a;
630
+ --color-wood-30-70: #734026;
631
+ --color-wood-40-60: #995533;
632
+ --color-wood-50-50: #bf6a40;
633
+ --color-wood-60-40: #cc8866;
634
+ --color-wood-70-30: #d9a68c;
635
+ --color-wood-80-20: #e5c3b3;
636
+ --color-wood-90-10: #f2e1d9;
637
+ }
638
+
639
+ :root {
640
+ --color-wood-10: var(
641
+ --color-wood-10-90
642
+ );
643
+ --color-wood-20: var(
644
+ --color-wood-20-80
645
+ );
646
+ --color-wood-30: var(
647
+ --color-wood-30-70
648
+ );
649
+ --color-wood-40: var(
650
+ --color-wood-40-60
651
+ );
652
+ --color-wood-50: var(
653
+ --color-wood-50-50
654
+ );
655
+ --color-wood-60: var(
656
+ --color-wood-60-40
657
+ );
658
+ --color-wood-70: var(
659
+ --color-wood-70-30
660
+ );
661
+ --color-wood-80: var(
662
+ --color-wood-80-20
663
+ );
664
+ --color-wood-90: var(
665
+ --color-wood-90-10
666
+ );
667
+ }
668
+
669
+ /* ------------------------------------------------------------------------------ *//* --------------------------------SUPPORT - CLAY-------------------------------- */
670
+ :root {
671
+ --color-clay-10-90: #f2d9df;
672
+ --color-clay-20-80: #e5b3bf;
673
+ --color-clay-30-70: #d98ca0;
674
+ --color-clay-40-60: #cc6680;
675
+ --color-clay-50-50: #bf4060;
676
+ --color-clay-60-40: #99334d;
677
+ --color-clay-70-30: #73263a;
678
+ --color-clay-80-20: #4c1a26;
679
+ --color-clay-90-10: #260d13;
680
+ }
681
+
682
+ [data-theme="dark"] {
683
+ --color-clay-10-90: #260d13;
684
+ --color-clay-20-80: #4c1a26;
685
+ --color-clay-30-70: #73263a;
686
+ --color-clay-40-60: #99334d;
687
+ --color-clay-50-50: #bf4060;
688
+ --color-clay-60-40: #cc6680;
689
+ --color-clay-70-30: #d98ca0;
690
+ --color-clay-80-20: #e5b3bf;
691
+ --color-clay-90-10: #f2d9df;
692
+ }
693
+
694
+ :root {
695
+ --color-clay-10: var(
696
+ --color-clay-10-90
697
+ );
698
+ --color-clay-20: var(
699
+ --color-clay-20-80
700
+ );
701
+ --color-clay-30: var(
702
+ --color-clay-30-70
703
+ );
704
+ --color-clay-40: var(
705
+ --color-clay-40-60
706
+ );
707
+ --color-clay-50: var(
708
+ --color-clay-50-50
709
+ );
710
+ --color-clay-60: var(
711
+ --color-clay-60-40
712
+ );
713
+ --color-clay-70: var(
714
+ --color-clay-70-30
715
+ );
716
+ --color-clay-80: var(
717
+ --color-clay-80-20
718
+ );
719
+ --color-clay-90: var(
720
+ --color-clay-90-10
721
+ );
722
+ }
723
+
724
+ /* ------------------------------------------------------------------------------ *//* -------------------------------SUPPORT - FLOWER------------------------------- */
725
+ :root {
726
+ --color-flower-10-90: #f2d9f2;
727
+ --color-flower-20-80: #e5b3e5;
728
+ --color-flower-30-70: #d98cd9;
729
+ --color-flower-40-60: #cc66cc;
730
+ --color-flower-50-50: #bf40bf;
731
+ --color-flower-60-40: #993399;
732
+ --color-flower-70-30: #732673;
733
+ --color-flower-80-20: #4c1a4c;
734
+ --color-flower-90-10: #260d26;
735
+ }
736
+
737
+ [data-theme="dark"] {
738
+ --color-flower-10-90: #260d26;
739
+ --color-flower-20-80: #4c1a4c;
740
+ --color-flower-30-70: #732673;
741
+ --color-flower-40-60: #993399;
742
+ --color-flower-50-50: #bf40bf;
743
+ --color-flower-60-40: #cc66cc;
744
+ --color-flower-70-30: #d98cd9;
745
+ --color-flower-80-20: #e5b3e5;
746
+ --color-flower-90-10: #f2d9f2;
747
+ }
748
+
749
+ :root {
750
+ --color-flower-10: var(
751
+ --color-flower-10-90
752
+ );
753
+ --color-flower-20: var(
754
+ --color-flower-20-80
755
+ );
756
+ --color-flower-30: var(
757
+ --color-flower-30-70
758
+ );
759
+ --color-flower-40: var(
760
+ --color-flower-40-60
761
+ );
762
+ --color-flower-50: var(
763
+ --color-flower-50-50
764
+ );
765
+ --color-flower-60: var(
766
+ --color-flower-60-40
767
+ );
768
+ --color-flower-70: var(
769
+ --color-flower-70-30
770
+ );
771
+ --color-flower-80: var(
772
+ --color-flower-80-20
773
+ );
774
+ --color-flower-90: var(
775
+ --color-flower-90-10
776
+ );
777
+ }
778
+
779
+ /* ------------------------------------------------------------------------------ *//* --------------------------------SUPPORT - DUSK-------------------------------- */
780
+ :root {
781
+ --color-dusk-10-90: #e1d9f2;
782
+ --color-dusk-20-80: #c3b3e5;
783
+ --color-dusk-30-70: #a68cd9;
784
+ --color-dusk-40-60: #8866cc;
785
+ --color-dusk-50-50: #6a40bf;
786
+ --color-dusk-60-40: #553399;
787
+ --color-dusk-70-30: #402673;
788
+ --color-dusk-80-20: #2a1a4c;
789
+ --color-dusk-90-10: #150d26;
790
+ }
791
+
792
+ [data-theme="dark"] {
793
+ --color-dusk-10-90: #150d26;
794
+ --color-dusk-20-80: #2a1a4c;
795
+ --color-dusk-30-70: #402673;
796
+ --color-dusk-40-60: #553399;
797
+ --color-dusk-50-50: #6a40bf;
798
+ --color-dusk-60-40: #8866cc;
799
+ --color-dusk-70-30: #a68cd9;
800
+ --color-dusk-80-20: #c3b3e5;
801
+ --color-dusk-90-10: #e1d9f2;
802
+ }
803
+
804
+ :root {
805
+ --color-dusk-10: var(
806
+ --color-dusk-10-90
807
+ );
808
+ --color-dusk-20: var(
809
+ --color-dusk-20-80
810
+ );
811
+ --color-dusk-30: var(
812
+ --color-dusk-30-70
813
+ );
814
+ --color-dusk-40: var(
815
+ --color-dusk-40-60
816
+ );
817
+ --color-dusk-50: var(
818
+ --color-dusk-50-50
819
+ );
820
+ --color-dusk-60: var(
821
+ --color-dusk-60-40
822
+ );
823
+ --color-dusk-70: var(
824
+ --color-dusk-70-30
825
+ );
826
+ --color-dusk-80: var(
827
+ --color-dusk-80-20
828
+ );
829
+ --color-dusk-90: var(
830
+ --color-dusk-90-10
831
+ );
832
+ }
833
+
834
+ /* ------------------------------------------------------------------------------ *//* --------------------------------SUPPORT - SKY--------------------------------- */
835
+ :root {
836
+ --color-sky-10-90: #d9e1f2;
837
+ --color-sky-20-80: #b3c3e5;
838
+ --color-sky-30-70: #8ca6d9;
839
+ --color-sky-40-60: #6688cc;
840
+ --color-sky-50-50: #406abf;
841
+ --color-sky-60-40: #335599;
842
+ --color-sky-70-30: #264073;
843
+ --color-sky-80-20: #1a2a4c;
844
+ --color-sky-90-10: #0d1526;
845
+ }
846
+
847
+ [data-theme="dark"] {
848
+ --color-sky-10-90: #0d1526;
849
+ --color-sky-20-80: #1a2a4c;
850
+ --color-sky-30-70: #264073;
851
+ --color-sky-40-60: #335599;
852
+ --color-sky-50-50: #406abf;
853
+ --color-sky-60-40: #6688cc;
854
+ --color-sky-70-30: #8ca6d9;
855
+ --color-sky-80-20: #b3c3e5;
856
+ --color-sky-90-10: #d9e1f2;
857
+ }
858
+
859
+ :root {
860
+ --color-sky-10: var(
861
+ --color-sky-10-90
862
+ );
863
+ --color-sky-20: var(
864
+ --color-sky-20-80
865
+ );
866
+ --color-sky-30: var(
867
+ --color-sky-30-70
868
+ );
869
+ --color-sky-40: var(
870
+ --color-sky-40-60
871
+ );
872
+ --color-sky-50: var(
873
+ --color-sky-50-50
874
+ );
875
+ --color-sky-60: var(
876
+ --color-sky-60-40
877
+ );
878
+ --color-sky-70: var(
879
+ --color-sky-70-30
880
+ );
881
+ --color-sky-80: var(
882
+ --color-sky-80-20
883
+ );
884
+ --color-sky-90: var(
885
+ --color-sky-90-10
886
+ );
887
+ }
888
+
889
+ /* ------------------------------------------------------------------------------ *//* --------------------------------SUPPORT - SEA--------------------------------- */
890
+ :root {
891
+ --color-sea-10-90: #d9eaf2;
892
+ --color-sea-20-80: #b3d5e5;
893
+ --color-sea-30-70: #8cbfd9;
894
+ --color-sea-40-60: #66aacc;
895
+ --color-sea-50-50: #4095bf;
896
+ --color-sea-60-40: #337799;
897
+ --color-sea-70-30: #265973;
898
+ --color-sea-80-20: #1a3c4c;
899
+ --color-sea-90-10: #0d1e26;
900
+ }
901
+
902
+ [data-theme="dark"] {
903
+ --color-sea-10-90: #0d1e26;
904
+ --color-sea-20-80: #1a3c4c;
905
+ --color-sea-30-70: #265973;
906
+ --color-sea-40-60: #337799;
907
+ --color-sea-50-50: #4095bf;
908
+ --color-sea-60-40: #66aacc;
909
+ --color-sea-70-30: #8cbfd9;
910
+ --color-sea-80-20: #b3d5e5;
911
+ --color-sea-90-10: #d9eaf2;
912
+ }
913
+
914
+ :root {
915
+ --color-sea-10: var(
916
+ --color-sea-10-90
917
+ );
918
+ --color-sea-20: var(
919
+ --color-sea-20-80
920
+ );
921
+ --color-sea-30: var(
922
+ --color-sea-30-70
923
+ );
924
+ --color-sea-40: var(
925
+ --color-sea-40-60
926
+ );
927
+ --color-sea-50: var(
928
+ --color-sea-50-50
929
+ );
930
+ --color-sea-60: var(
931
+ --color-sea-60-40
932
+ );
933
+ --color-sea-70: var(
934
+ --color-sea-70-30
935
+ );
936
+ --color-sea-80: var(
937
+ --color-sea-80-20
938
+ );
939
+ --color-sea-90: var(
940
+ --color-sea-90-10
941
+ );
942
+ }
943
+
944
+ /* ------------------------------------------------------------------------------ *//* --------------------------------SUPPORT - LAKE-------------------------------- */
945
+ :root {
946
+ --color-lake-10-90: #d9f2ee;
947
+ --color-lake-20-80: #b3e5dd;
948
+ --color-lake-30-70: #8cd9cc;
949
+ --color-lake-40-60: #66ccbb;
950
+ --color-lake-50-50: #40bfaa;
951
+ --color-lake-60-40: #339988;
952
+ --color-lake-70-30: #267366;
953
+ --color-lake-80-20: #1a4c44;
954
+ --color-lake-90-10: #0d2622;
955
+ }
956
+
957
+ [data-theme="dark"] {
958
+ --color-lake-10-90: #0d2622;
959
+ --color-lake-20-80: #1a4c44;
960
+ --color-lake-30-70: #267366;
961
+ --color-lake-40-60: #339988;
962
+ --color-lake-50-50: #40bfaa;
963
+ --color-lake-60-40: #66ccbb;
964
+ --color-lake-70-30: #8cd9cc;
965
+ --color-lake-80-20: #b3e5dd;
966
+ --color-lake-90-10: #d9f2ee;
967
+ }
968
+
969
+ :root {
970
+ --color-lake-10: var(
971
+ --color-lake-10-90
972
+ );
973
+ --color-lake-20: var(
974
+ --color-lake-20-80
975
+ );
976
+ --color-lake-30: var(
977
+ --color-lake-30-70
978
+ );
979
+ --color-lake-40: var(
980
+ --color-lake-40-60
981
+ );
982
+ --color-lake-50: var(
983
+ --color-lake-50-50
984
+ );
985
+ --color-lake-60: var(
986
+ --color-lake-60-40
987
+ );
988
+ --color-lake-70: var(
989
+ --color-lake-70-30
990
+ );
991
+ --color-lake-80: var(
992
+ --color-lake-80-20
993
+ );
994
+ --color-lake-90: var(
995
+ --color-lake-90-10
996
+ );
997
+ }
998
+
999
+ /* ------------------------------------------------------------------------------ *//* -----------------------------------OPACITY------------------------------------ */
1000
+ :root {
1001
+ --color-opacity-05: rgba(26, 26, 26, 0.05);
1002
+ /* The step between hover and active, which is where a keyboard focus sits: Nav and
1003
+ BottomSheet both reach for it by name, and neither KDLS nor this system had ever
1004
+ declared it — so the declaration was dropped and a focused row had no tint at all. */
1005
+ --color-opacity-08: rgba(26, 26, 26, 0.08);
1006
+ --color-opacity-10: rgba(26, 26, 26, 0.1);
1007
+ --color-opacity-20: rgba(26, 26, 26, 0.2);
1008
+ --color-opacity-30: rgba(26, 26, 26, 0.3);
1009
+ --color-opacity-40: rgba(26, 26, 26, 0.4);
1010
+ --color-opacity-50: rgba(26, 26, 26, 0.5);
1011
+ }
1012
+
1013
+ [data-theme="dark"] {
1014
+ --color-opacity-05: rgba(255, 255, 255, 0.05);
1015
+ --color-opacity-08: rgba(255, 255, 255, 0.08);
1016
+ --color-opacity-10: rgba(255, 255, 255, 0.1);
1017
+ --color-opacity-20: rgba(255, 255, 255, 0.2);
1018
+ --color-opacity-30: rgba(255, 255, 255, 0.3);
1019
+ --color-opacity-40: rgba(255, 255, 255, 0.4);
1020
+ --color-opacity-50: rgba(255, 255, 255, 0.5);
1021
+ }
1022
+
1023
+ /* The same veil, for a surface that runs against the theme.
1024
+
1025
+ A toast is dark in the light theme and light in the dark one, so --color-opacity-*, which
1026
+ follows the theme, is exactly backwards on it: a dark hover state on an already dark
1027
+ panel. KDLS writes the four values below as rgba literals inside Toast.css for want of a
1028
+ token; this is that token, and anything else with an inverted surface can now reach it.
1029
+
1030
+ The dark-theme alphas are lower on purpose, carried from KDLS: a dark veil reads stronger
1031
+ than a light one at the same opacity, so matching the numbers would not match the effect. */
1032
+ :root {
1033
+ --color-opacity-inverse-10: rgba(255, 255, 255, 0.1);
1034
+ --color-opacity-inverse-20: rgba(255, 255, 255, 0.2);
1035
+ }
1036
+
1037
+ [data-theme="dark"] {
1038
+ --color-opacity-inverse-10: rgba(26, 26, 26, 0.08);
1039
+ --color-opacity-inverse-20: rgba(26, 26, 26, 0.16);
1040
+ }
1041
+
1042
+ /* ------------------------------------------------------------------------------ *//* ---------------------------CORNER RADIUS (SOFT)---------------------------- */
1043
+
1044
+ /* Radius: `soft` is the install default.
1045
+ KDLS had a fifth, Kenlo-specific scheme living in :root and named `default`
1046
+ (8 / 8 / 12 / 24 px). SDS removes it and promotes `soft` into :root instead.
1047
+ [data-radius="soft"] still exists below, unchanged in name and value. */
1048
+ :root {
1049
+ --corner-radius-x-small: 4px;
1050
+ --corner-radius-small: 8px;
1051
+ --corner-radius-medium: 16px;
1052
+ --corner-radius-large: 28px;
1053
+ --corner-radius-full: 9999px;
1054
+ --radius-xs: var(--corner-radius-x-small);
1055
+ --radius-sm: var(--corner-radius-small);
1056
+ --radius-md: var(--corner-radius-medium);
1057
+ --radius-lg: var(--corner-radius-large);
1058
+ --radius-full: var(--corner-radius-full);
1059
+ }
1060
+ /* ------------------------------------------------------------------------------ */
1061
+ /* ----------------------------------LAYERING------------------------------------ */
1062
+
1063
+ /* The stacking order, which KDLS has as an implicit scale spread across eight stylesheets
1064
+ as bare numbers: 100, 200, 300, 400, 500, 9900, 9999. The numbers were consistent, which
1065
+ is lucky rather than designed — nothing said what they meant and nothing stopped the next
1066
+ component picking 150.
1067
+
1068
+ Naming them is what makes the order arguable. The gaps are deliberate: something that
1069
+ needs to sit between two of these has room without renumbering the system. */
1070
+ :root {
1071
+ /* Sticks to the page but does not cover it: a header, a bulk action bar. */
1072
+ --z-sticky: 100;
1073
+ /* Anchored to something on the page: menus, popovers, select panels. */
1074
+ --z-floating: 200;
1075
+ /* Covers the page and takes the keyboard: a modal and its veil. */
1076
+ --z-modal: 300;
1077
+ /* Covers the page from an edge: a drawer, a bottom sheet. Above a modal, because a modal
1078
+ can open one. */
1079
+ --z-overlay: 400;
1080
+ /* Said over everything and never reachable any other way: a toast, a tooltip, a
1081
+ fullscreen spinner. Nothing may be hidden behind these. */
1082
+ --z-notice: 9900;
1083
+ }
1084
+
1085
+ /* -----------------------------------SPACING------------------------------------ */
1086
+ :root {
1087
+ --spacing-0-5: 2px;
1088
+ --spacing-1: 4px;
1089
+ /* Half steps. KDLS has only 0-5 and writes the rest as literals — the tooltip's
1090
+ `padding: 6px 10px` is the case that forced these two to exist. Added rather than
1091
+ carried, because a value with no token is a value nobody can theme. */
1092
+ --spacing-1-5: 6px;
1093
+ --spacing-2: 8px;
1094
+ --spacing-2-5: 10px;
1095
+ --spacing-3: 12px;
1096
+ --spacing-4: 16px;
1097
+ --spacing-5: 20px;
1098
+ --spacing-6: 24px;
1099
+ --spacing-7: 28px;
1100
+ --spacing-8: 32px;
1101
+ --spacing-9: 36px;
1102
+ --spacing-10: 40px;
1103
+ --spacing-12: 48px;
1104
+ --spacing-14: 56px;
1105
+ --spacing-16: 64px;
1106
+ }
1107
+
1108
+ /* ------------------------------------------------------------------------------ *//* ----------------------------------TYPOGRAPHY---------------------------------- */
1109
+ :root {
1110
+ --font-family-base: "Manrope", -apple-system, BlinkMacSystemFont, sans-serif;
1111
+ --font-weight-regular: 400;
1112
+ /* KDLS had no token for 500 and components wrote the number — Badge's root is one.
1113
+ The scale needs the step, so the step exists. */
1114
+ --font-weight-medium: 500;
1115
+ --font-weight-semibold: 600;
1116
+ --font-weight-bold: 700;
1117
+ --font-size-display-lg: 56px;
1118
+ --font-size-display-md: 40px;
1119
+ --font-size-display-sm: 32px;
1120
+ --font-size-title-lg: 24px;
1121
+ --font-size-title-md: 20px;
1122
+ --font-size-title-sm: 16px;
1123
+ --font-size-body-md: 16px;
1124
+ --font-size-body-sm: 14px;
1125
+ --font-size-label-sm: 12px;
1126
+ --lh-display-lg: 64px;
1127
+ --lh-display-md: 48px;
1128
+ --lh-display-sm: 40px;
1129
+ --lh-title-lg: 32px;
1130
+ --lh-title-md: 24px;
1131
+ --lh-title-sm: 24px;
1132
+ --lh-body-md: 24px;
1133
+ --lh-body-sm: 20px;
1134
+ --lh-label-sm: 16px;
1135
+ --display-color: var(--color-neutral-90);
1136
+ --title-color: var(--color-neutral-90);
1137
+ --body-color: var(--color-neutral-80);
1138
+ --label-color: var(--color-neutral-50);
1139
+ }
1140
+
1141
+ /* ------------------------------------------------------------------------------ *//* -------------------------------ICON SIZE------------------------------- */
1142
+ :root {
1143
+ /* KDLS drew a few small controls with 12px inline SVG and had no token for it — the
1144
+ Input's incrementer chevrons are one. The step exists now. */
1145
+ --icon-size-xs: 12px;
1146
+ --icon-size-sm: 16px;
1147
+ --icon-size-md: 24px;
1148
+ --icon-size-lg: 32px;
1149
+ }
1150
+
1151
+ /* ------------------------------------------------------------------------------ *//* -----------------------------------SHADOWS------------------------------------ */
1152
+ :root {
1153
+ --shadow-drop-sm: 0 1px 4px 0 rgba(0, 0, 0, 0.12);
1154
+ --shadow-drop-md: 0 4px 12px 0 rgba(0, 0, 0, 0.12);
1155
+ --shadow-drop-lg: 0 8px 24px 0 rgba(0, 0, 0, 0.16);
1156
+ }
1157
+
1158
+ [data-theme="dark"] {
1159
+ --shadow-drop-sm: 0 2px 10px 0 rgba(255, 255, 255, 0.07);
1160
+ --shadow-drop-md: 0 4px 18px 0 rgba(255, 255, 255, 0.09);
1161
+ --shadow-drop-lg: 0 8px 28px 0 rgba(255, 255, 255, 0.11);
1162
+ }
1163
+
1164
+ /* ------------------------------------------------------------------------------ *//* ------------------------------------EASING------------------------------------ */
1165
+ :root {
1166
+ --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
1167
+ --ease-spring: cubic-bezier(0.32, 0.72, 0, 1);
1168
+ }
1169
+
1170
+ /* ------------------------------------------------------------------------------ *//* --------------------------------------SCRIM---------------------------------- */
1171
+ /* The veil behind a fullscreen overlay. Deliberately NOT part of the opacity family:
1172
+ that family inverts with the theme, and a scrim must darken in both — a white veil in
1173
+ dark mode would light the screen up instead of dimming it.
1174
+
1175
+ Derived from --color-black rather than written as rgba(), so no new literal enters the
1176
+ system. This is the token that did not exist when the Spinner's overlay was ported;
1177
+ the rule is that the answer to a missing value is a token, not a literal. */
1178
+ :root {
1179
+ --color-scrim: color-mix(in srgb, var(--color-black) 70%, transparent);
1180
+ }
1181
+
1182
+ /* ------------------------------------------------------------------------------ *//* -----------------------------PAGE BACKGROUND----------------------------- */
1183
+ /* KDLS wrote both of these as literals. They are the palette values they always meant:
1184
+ #f2f2f2 is --color-neutral-10 in the light theme, and #000000 is --color-black. */
1185
+ :root {
1186
+ --page-bg-color: var(--color-neutral-10);
1187
+ }
1188
+
1189
+ [data-theme="dark"] {
1190
+ --page-bg-color: var(--color-black);
1191
+ }
1192
+
1193
+ /* ------------------------------------------------------------------------------ *//* -----------------------------FEEDBACK SURFACES----------------------------- */
1194
+ /* The tinted ground a message sits on — the Alert today, and anything else that tints a
1195
+ whole surface with a feedback family rather than just its text or its border.
1196
+
1197
+ The families invert themselves between the themes: `--color-success-10` reads the pair
1198
+ `10-90`, so in the dark theme it resolves to the palette's tone 90, the darkest step
1199
+ there is. That is right for a line of text and too much for a surface — the message
1200
+ reads as a hole cut in the page, and next to the near-black page background it barely
1201
+ separates at all.
1202
+
1203
+ So the surface takes tone 10 in the light theme and tone 80 in the dark, which is the
1204
+ step above. There is no `10-80` pair and there should not be one: the pairs are the
1205
+ palette's own symmetry and inventing an asymmetric one hides the exception inside a
1206
+ name that promises otherwise. The exception is spelled out here instead, reading the
1207
+ pair that already lands on 80 in the dark — `--color-success-20` is `20-80`.
1208
+
1209
+ No literal enters the system: both sides are the palette's own tokens. */
1210
+ :root {
1211
+ --surface-info: var(--color-primary-10);
1212
+ --surface-success: var(--color-success-10);
1213
+ --surface-alert: var(--color-alert-10);
1214
+ --surface-error: var(--color-error-10);
1215
+ --surface-neutral: var(--color-neutral-10);
1216
+ }
1217
+
1218
+ [data-theme="dark"] {
1219
+ --surface-info: var(--color-primary-20);
1220
+ --surface-success: var(--color-success-20);
1221
+ --surface-alert: var(--color-alert-20);
1222
+ --surface-error: var(--color-error-20);
1223
+ --surface-neutral: var(--color-neutral-20);
1224
+ }
1225
+
1226
+ /* ------------------------------------------------------------------------------ *//* -------------------------------RADIUS VARIANTS-------------------------------- */
1227
+ /* A escada dos cantos é uma crescente, e nos dois degraus pequenos ela não era.
1228
+
1229
+ `--corner-radius-x-small` valia 8px tanto em `medium` quanto em `rounded`, e
1230
+ `--corner-radius-small` valia 16px nos dois. Todo controle pequeno do sistema — o
1231
+ Checkbox, o Switch, as células do calendário — chegava ao seu formato final um esquema
1232
+ antes do fim, e os dois últimos ficavam indistinguíveis.
1233
+
1234
+ Ajustado em 2026-09-14, a pedido do Rafael, depois de ele encontrar o mesmo sintoma em
1235
+ três componentes diferentes. `rounded` não mudou: quem desceu foi o meio, que é o que
1236
+ abre espaço para os quatro passos serem quatro.
1237
+
1238
+ x-small 0 → 4 → 6 → 8
1239
+ small 0 → 8 → 12 → 16
1240
+
1241
+ `medium` e `large` já cresciam e ficaram como estavam. */
1242
+ [data-radius="soft"] {
1243
+ --corner-radius-x-small: 4px;
1244
+ --corner-radius-small: 8px;
1245
+ --corner-radius-medium: 16px;
1246
+ --corner-radius-large: 28px;
1247
+ --corner-radius-full: 9999px;
1248
+ --radius-xs: var(--corner-radius-x-small);
1249
+ --radius-sm: var(--corner-radius-small);
1250
+ --radius-md: var(--corner-radius-medium);
1251
+ --radius-lg: var(--corner-radius-large);
1252
+ --radius-full: var(--corner-radius-full);
1253
+ }
1254
+
1255
+ [data-radius="flat"] {
1256
+ --corner-radius-x-small: 0px;
1257
+ --corner-radius-small: 0px;
1258
+ --corner-radius-medium: 0px;
1259
+ --corner-radius-large: 0px;
1260
+ --corner-radius-full: 9999px;
1261
+ --radius-xs: var(--corner-radius-x-small);
1262
+ --radius-sm: var(--corner-radius-small);
1263
+ --radius-md: var(--corner-radius-medium);
1264
+ --radius-lg: var(--corner-radius-large);
1265
+ --radius-full: var(--corner-radius-full);
1266
+ }
1267
+
1268
+ [data-radius="medium"] {
1269
+ --corner-radius-x-small: 6px;
1270
+ --corner-radius-small: 12px;
1271
+ --corner-radius-medium: 24px;
1272
+ --corner-radius-large: 32px;
1273
+ --corner-radius-full: 9999px;
1274
+ --radius-xs: var(--corner-radius-x-small);
1275
+ --radius-sm: var(--corner-radius-small);
1276
+ --radius-md: var(--corner-radius-medium);
1277
+ --radius-lg: var(--corner-radius-large);
1278
+ --radius-full: var(--corner-radius-full);
1279
+ }
1280
+
1281
+ [data-radius="rounded"] {
1282
+ --corner-radius-x-small: 8px;
1283
+ --corner-radius-small: 16px;
1284
+ --corner-radius-medium: 32px;
1285
+ --corner-radius-large: 40px;
1286
+ --corner-radius-full: 9999px;
1287
+ --radius-xs: var(--corner-radius-x-small);
1288
+ --radius-sm: var(--corner-radius-small);
1289
+ --radius-md: var(--corner-radius-medium);
1290
+ --radius-lg: var(--corner-radius-large);
1291
+ --radius-full: var(--corner-radius-full);
1292
+ }
1293
+
1294
+ /* ------------------------------------------------------------------------------ *//* ----------------------------FONT FAMILY OVERRIDES----------------------------- */
1295
+ [data-font="inter"] {
1296
+ --font-family-base: "Inter", sans-serif;
1297
+ }
1298
+
1299
+ [data-font="helvetica"] {
1300
+ --font-family-base: "Helvetica Neue", Helvetica, Arial, sans-serif;
1301
+ }
1302
+
1303
+ [data-font="source-sans"] {
1304
+ --font-family-base: "Source Sans 3", "Source Sans Pro", sans-serif;
1305
+ }
1306
+
1307
+ [data-font="nunito"] {
1308
+ --font-family-base: "Nunito", sans-serif;
1309
+ }
1310
+
1311
+ [data-font="montserrat"] {
1312
+ --font-family-base: "Montserrat", sans-serif;
1313
+ }
1314
+
1315
+ /* ------------------------------------------------------------------------------ */
1316
+
1317
+ /* >>> generated: label contrast tokens — do not edit by hand <<< */
1318
+
1319
+ /* The colour a label must be to stay readable on each surface.
1320
+ Derived from the palettes above by scripts/gen-contrast-tokens.mjs: the step of the
1321
+ family itself that reads best, falling back to white or black only where the family
1322
+ cannot reach WCAG AA. A component paints its label with these and never picks a step
1323
+ by eye. */
1324
+
1325
+ :root {
1326
+ --color-neutral-10-on: var(--color-neutral-90);
1327
+ --color-neutral-20-on: var(--color-neutral-90);
1328
+ --color-neutral-30-on: var(--color-neutral-90);
1329
+ --color-neutral-40-on: var(--color-neutral-90);
1330
+ --color-neutral-50-on: var(--color-black);
1331
+ --color-neutral-60-on: var(--color-neutral-10);
1332
+ --color-neutral-70-on: var(--color-neutral-10);
1333
+ --color-neutral-80-on: var(--color-neutral-10);
1334
+ --color-neutral-90-on: var(--color-neutral-10);
1335
+ --color-success-10-on: var(--color-success-90);
1336
+ --color-success-20-on: var(--color-success-90);
1337
+ --color-success-30-on: var(--color-success-90);
1338
+ --color-success-40-on: var(--color-success-90);
1339
+ --color-success-50-on: var(--color-success-90);
1340
+ --color-success-60-on: var(--color-black);
1341
+ --color-success-70-on: var(--color-success-10);
1342
+ --color-success-80-on: var(--color-success-10);
1343
+ --color-success-90-on: var(--color-success-10);
1344
+ --color-alert-10-on: var(--color-alert-90);
1345
+ --color-alert-20-on: var(--color-alert-90);
1346
+ --color-alert-30-on: var(--color-alert-90);
1347
+ --color-alert-40-on: var(--color-alert-90);
1348
+ --color-alert-50-on: var(--color-alert-90);
1349
+ --color-alert-60-on: var(--color-alert-90);
1350
+ --color-alert-70-on: var(--color-alert-10);
1351
+ --color-alert-80-on: var(--color-alert-10);
1352
+ --color-alert-90-on: var(--color-alert-10);
1353
+ --color-error-10-on: var(--color-error-90);
1354
+ --color-error-20-on: var(--color-error-90);
1355
+ --color-error-30-on: var(--color-error-90);
1356
+ --color-error-40-on: var(--color-error-90);
1357
+ --color-error-50-on: var(--color-black);
1358
+ --color-error-60-on: var(--color-error-10);
1359
+ --color-error-70-on: var(--color-error-10);
1360
+ --color-error-80-on: var(--color-error-10);
1361
+ --color-error-90-on: var(--color-error-10);
1362
+ --color-leaf-10-on: var(--color-leaf-90);
1363
+ --color-leaf-20-on: var(--color-leaf-90);
1364
+ --color-leaf-30-on: var(--color-leaf-90);
1365
+ --color-leaf-40-on: var(--color-leaf-90);
1366
+ --color-leaf-50-on: var(--color-leaf-90);
1367
+ --color-leaf-60-on: var(--color-leaf-90);
1368
+ --color-leaf-70-on: var(--color-leaf-10);
1369
+ --color-leaf-80-on: var(--color-leaf-10);
1370
+ --color-leaf-90-on: var(--color-leaf-10);
1371
+ --color-sand-10-on: var(--color-sand-90);
1372
+ --color-sand-20-on: var(--color-sand-90);
1373
+ --color-sand-30-on: var(--color-sand-90);
1374
+ --color-sand-40-on: var(--color-sand-90);
1375
+ --color-sand-50-on: var(--color-sand-90);
1376
+ --color-sand-60-on: var(--color-black);
1377
+ --color-sand-70-on: var(--color-sand-10);
1378
+ --color-sand-80-on: var(--color-sand-10);
1379
+ --color-sand-90-on: var(--color-sand-10);
1380
+ --color-wood-10-on: var(--color-wood-90);
1381
+ --color-wood-20-on: var(--color-wood-90);
1382
+ --color-wood-30-on: var(--color-wood-90);
1383
+ --color-wood-40-on: var(--color-wood-90);
1384
+ --color-wood-50-on: var(--color-black);
1385
+ --color-wood-60-on: var(--color-white);
1386
+ --color-wood-70-on: var(--color-wood-10);
1387
+ --color-wood-80-on: var(--color-wood-10);
1388
+ --color-wood-90-on: var(--color-wood-10);
1389
+ --color-clay-10-on: var(--color-clay-90);
1390
+ --color-clay-20-on: var(--color-clay-90);
1391
+ --color-clay-30-on: var(--color-clay-90);
1392
+ --color-clay-40-on: var(--color-clay-90);
1393
+ --color-clay-50-on: var(--color-white);
1394
+ --color-clay-60-on: var(--color-clay-10);
1395
+ --color-clay-70-on: var(--color-clay-10);
1396
+ --color-clay-80-on: var(--color-clay-10);
1397
+ --color-clay-90-on: var(--color-clay-10);
1398
+ --color-flower-10-on: var(--color-flower-90);
1399
+ --color-flower-20-on: var(--color-flower-90);
1400
+ --color-flower-30-on: var(--color-flower-90);
1401
+ --color-flower-40-on: var(--color-flower-90);
1402
+ --color-flower-50-on: var(--color-black);
1403
+ --color-flower-60-on: var(--color-flower-10);
1404
+ --color-flower-70-on: var(--color-flower-10);
1405
+ --color-flower-80-on: var(--color-flower-10);
1406
+ --color-flower-90-on: var(--color-flower-10);
1407
+ --color-dusk-10-on: var(--color-dusk-90);
1408
+ --color-dusk-20-on: var(--color-dusk-90);
1409
+ --color-dusk-30-on: var(--color-dusk-90);
1410
+ --color-dusk-40-on: var(--color-black);
1411
+ --color-dusk-50-on: var(--color-dusk-10);
1412
+ --color-dusk-60-on: var(--color-dusk-10);
1413
+ --color-dusk-70-on: var(--color-dusk-10);
1414
+ --color-dusk-80-on: var(--color-dusk-10);
1415
+ --color-dusk-90-on: var(--color-dusk-10);
1416
+ --color-sky-10-on: var(--color-sky-90);
1417
+ --color-sky-20-on: var(--color-sky-90);
1418
+ --color-sky-30-on: var(--color-sky-90);
1419
+ --color-sky-40-on: var(--color-sky-90);
1420
+ --color-sky-50-on: var(--color-white);
1421
+ --color-sky-60-on: var(--color-sky-10);
1422
+ --color-sky-70-on: var(--color-sky-10);
1423
+ --color-sky-80-on: var(--color-sky-10);
1424
+ --color-sky-90-on: var(--color-sky-10);
1425
+ --color-sea-10-on: var(--color-sea-90);
1426
+ --color-sea-20-on: var(--color-sea-90);
1427
+ --color-sea-30-on: var(--color-sea-90);
1428
+ --color-sea-40-on: var(--color-sea-90);
1429
+ --color-sea-50-on: var(--color-sea-90);
1430
+ --color-sea-60-on: var(--color-white);
1431
+ --color-sea-70-on: var(--color-sea-10);
1432
+ --color-sea-80-on: var(--color-sea-10);
1433
+ --color-sea-90-on: var(--color-sea-10);
1434
+ --color-lake-10-on: var(--color-lake-90);
1435
+ --color-lake-20-on: var(--color-lake-90);
1436
+ --color-lake-30-on: var(--color-lake-90);
1437
+ --color-lake-40-on: var(--color-lake-90);
1438
+ --color-lake-50-on: var(--color-lake-90);
1439
+ --color-lake-60-on: var(--color-lake-90);
1440
+ --color-lake-70-on: var(--color-lake-10);
1441
+ --color-lake-80-on: var(--color-lake-10);
1442
+ --color-lake-90-on: var(--color-lake-10);
1443
+ }
1444
+
1445
+ [data-theme="dark"] {
1446
+ --color-neutral-10-on: var(--color-neutral-90);
1447
+ --color-neutral-20-on: var(--color-neutral-90);
1448
+ --color-neutral-30-on: var(--color-neutral-90);
1449
+ --color-neutral-40-on: var(--color-black);
1450
+ --color-neutral-50-on: var(--color-neutral-10);
1451
+ --color-neutral-60-on: var(--color-neutral-10);
1452
+ --color-neutral-70-on: var(--color-neutral-10);
1453
+ --color-neutral-80-on: var(--color-neutral-10);
1454
+ --color-neutral-90-on: var(--color-neutral-10);
1455
+ --color-success-10-on: var(--color-success-90);
1456
+ --color-success-20-on: var(--color-success-90);
1457
+ --color-success-30-on: var(--color-success-90);
1458
+ --color-success-40-on: var(--color-black);
1459
+ --color-success-50-on: var(--color-success-10);
1460
+ --color-success-60-on: var(--color-success-10);
1461
+ --color-success-70-on: var(--color-success-10);
1462
+ --color-success-80-on: var(--color-success-10);
1463
+ --color-success-90-on: var(--color-success-10);
1464
+ --color-alert-10-on: var(--color-alert-90);
1465
+ --color-alert-20-on: var(--color-alert-90);
1466
+ --color-alert-30-on: var(--color-alert-90);
1467
+ --color-alert-40-on: var(--color-alert-10);
1468
+ --color-alert-50-on: var(--color-alert-10);
1469
+ --color-alert-60-on: var(--color-alert-10);
1470
+ --color-alert-70-on: var(--color-alert-10);
1471
+ --color-alert-80-on: var(--color-alert-10);
1472
+ --color-alert-90-on: var(--color-alert-10);
1473
+ --color-error-10-on: var(--color-error-90);
1474
+ --color-error-20-on: var(--color-error-90);
1475
+ --color-error-30-on: var(--color-error-90);
1476
+ --color-error-40-on: var(--color-error-90);
1477
+ --color-error-50-on: var(--color-black);
1478
+ --color-error-60-on: var(--color-error-10);
1479
+ --color-error-70-on: var(--color-error-10);
1480
+ --color-error-80-on: var(--color-error-10);
1481
+ --color-error-90-on: var(--color-error-10);
1482
+ --color-leaf-10-on: var(--color-leaf-90);
1483
+ --color-leaf-20-on: var(--color-leaf-90);
1484
+ --color-leaf-30-on: var(--color-leaf-90);
1485
+ --color-leaf-40-on: var(--color-leaf-10);
1486
+ --color-leaf-50-on: var(--color-leaf-10);
1487
+ --color-leaf-60-on: var(--color-leaf-10);
1488
+ --color-leaf-70-on: var(--color-leaf-10);
1489
+ --color-leaf-80-on: var(--color-leaf-10);
1490
+ --color-leaf-90-on: var(--color-leaf-10);
1491
+ --color-sand-10-on: var(--color-sand-90);
1492
+ --color-sand-20-on: var(--color-sand-90);
1493
+ --color-sand-30-on: var(--color-sand-90);
1494
+ --color-sand-40-on: var(--color-black);
1495
+ --color-sand-50-on: var(--color-sand-10);
1496
+ --color-sand-60-on: var(--color-sand-10);
1497
+ --color-sand-70-on: var(--color-sand-10);
1498
+ --color-sand-80-on: var(--color-sand-10);
1499
+ --color-sand-90-on: var(--color-sand-10);
1500
+ --color-wood-10-on: var(--color-wood-90);
1501
+ --color-wood-20-on: var(--color-wood-90);
1502
+ --color-wood-30-on: var(--color-wood-90);
1503
+ --color-wood-40-on: var(--color-white);
1504
+ --color-wood-50-on: var(--color-black);
1505
+ --color-wood-60-on: var(--color-wood-10);
1506
+ --color-wood-70-on: var(--color-wood-10);
1507
+ --color-wood-80-on: var(--color-wood-10);
1508
+ --color-wood-90-on: var(--color-wood-10);
1509
+ --color-clay-10-on: var(--color-clay-90);
1510
+ --color-clay-20-on: var(--color-clay-90);
1511
+ --color-clay-30-on: var(--color-clay-90);
1512
+ --color-clay-40-on: var(--color-clay-90);
1513
+ --color-clay-50-on: var(--color-white);
1514
+ --color-clay-60-on: var(--color-clay-10);
1515
+ --color-clay-70-on: var(--color-clay-10);
1516
+ --color-clay-80-on: var(--color-clay-10);
1517
+ --color-clay-90-on: var(--color-clay-10);
1518
+ --color-flower-10-on: var(--color-flower-90);
1519
+ --color-flower-20-on: var(--color-flower-90);
1520
+ --color-flower-30-on: var(--color-flower-90);
1521
+ --color-flower-40-on: var(--color-flower-90);
1522
+ --color-flower-50-on: var(--color-black);
1523
+ --color-flower-60-on: var(--color-flower-10);
1524
+ --color-flower-70-on: var(--color-flower-10);
1525
+ --color-flower-80-on: var(--color-flower-10);
1526
+ --color-flower-90-on: var(--color-flower-10);
1527
+ --color-dusk-10-on: var(--color-dusk-90);
1528
+ --color-dusk-20-on: var(--color-dusk-90);
1529
+ --color-dusk-30-on: var(--color-dusk-90);
1530
+ --color-dusk-40-on: var(--color-dusk-90);
1531
+ --color-dusk-50-on: var(--color-dusk-90);
1532
+ --color-dusk-60-on: var(--color-black);
1533
+ --color-dusk-70-on: var(--color-dusk-10);
1534
+ --color-dusk-80-on: var(--color-dusk-10);
1535
+ --color-dusk-90-on: var(--color-dusk-10);
1536
+ --color-sky-10-on: var(--color-sky-90);
1537
+ --color-sky-20-on: var(--color-sky-90);
1538
+ --color-sky-30-on: var(--color-sky-90);
1539
+ --color-sky-40-on: var(--color-sky-90);
1540
+ --color-sky-50-on: var(--color-white);
1541
+ --color-sky-60-on: var(--color-sky-10);
1542
+ --color-sky-70-on: var(--color-sky-10);
1543
+ --color-sky-80-on: var(--color-sky-10);
1544
+ --color-sky-90-on: var(--color-sky-10);
1545
+ --color-sea-10-on: var(--color-sea-90);
1546
+ --color-sea-20-on: var(--color-sea-90);
1547
+ --color-sea-30-on: var(--color-sea-90);
1548
+ --color-sea-40-on: var(--color-white);
1549
+ --color-sea-50-on: var(--color-sea-10);
1550
+ --color-sea-60-on: var(--color-sea-10);
1551
+ --color-sea-70-on: var(--color-sea-10);
1552
+ --color-sea-80-on: var(--color-sea-10);
1553
+ --color-sea-90-on: var(--color-sea-10);
1554
+ --color-lake-10-on: var(--color-lake-90);
1555
+ --color-lake-20-on: var(--color-lake-90);
1556
+ --color-lake-30-on: var(--color-lake-90);
1557
+ --color-lake-40-on: var(--color-lake-10);
1558
+ --color-lake-50-on: var(--color-lake-10);
1559
+ --color-lake-60-on: var(--color-lake-10);
1560
+ --color-lake-70-on: var(--color-lake-10);
1561
+ --color-lake-80-on: var(--color-lake-10);
1562
+ --color-lake-90-on: var(--color-lake-10);
1563
+ }
1564
+
1565
+ /* The primary slot follows the scheme it is pointed at. applyCustomColor and
1566
+ applyCustomGradient override these at runtime with the same contrast rule. */
1567
+
1568
+ :root {
1569
+ --color-primary-10-on: var(--color-neutral-10-on);
1570
+ --color-primary-20-on: var(--color-neutral-20-on);
1571
+ --color-primary-30-on: var(--color-neutral-30-on);
1572
+ --color-primary-40-on: var(--color-neutral-50-on);
1573
+ --color-primary-50-on: var(--color-neutral-80-on);
1574
+ }
1575
+
1576
+ [data-color-scheme="leaf"] {
1577
+ --color-primary-10-on: var(--color-leaf-10-on);
1578
+ --color-primary-20-on: var(--color-leaf-20-on);
1579
+ --color-primary-30-on: var(--color-leaf-30-on);
1580
+ --color-primary-40-on: var(--color-leaf-40-on);
1581
+ --color-primary-50-on: var(--color-leaf-50-on);
1582
+ }
1583
+
1584
+ [data-color-scheme="sand"] {
1585
+ --color-primary-10-on: var(--color-sand-10-on);
1586
+ --color-primary-20-on: var(--color-sand-20-on);
1587
+ --color-primary-30-on: var(--color-sand-30-on);
1588
+ --color-primary-40-on: var(--color-sand-40-on);
1589
+ --color-primary-50-on: var(--color-sand-50-on);
1590
+ }
1591
+
1592
+ [data-color-scheme="wood"] {
1593
+ --color-primary-10-on: var(--color-wood-10-on);
1594
+ --color-primary-20-on: var(--color-wood-20-on);
1595
+ --color-primary-30-on: var(--color-wood-30-on);
1596
+ --color-primary-40-on: var(--color-wood-40-on);
1597
+ --color-primary-50-on: var(--color-wood-50-on);
1598
+ }
1599
+
1600
+ [data-color-scheme="clay"] {
1601
+ --color-primary-10-on: var(--color-clay-10-on);
1602
+ --color-primary-20-on: var(--color-clay-20-on);
1603
+ --color-primary-30-on: var(--color-clay-30-on);
1604
+ --color-primary-40-on: var(--color-clay-40-on);
1605
+ --color-primary-50-on: var(--color-clay-50-on);
1606
+ }
1607
+
1608
+ [data-color-scheme="flower"] {
1609
+ --color-primary-10-on: var(--color-flower-10-on);
1610
+ --color-primary-20-on: var(--color-flower-20-on);
1611
+ --color-primary-30-on: var(--color-flower-30-on);
1612
+ --color-primary-40-on: var(--color-flower-40-on);
1613
+ --color-primary-50-on: var(--color-flower-50-on);
1614
+ }
1615
+
1616
+ [data-color-scheme="dusk"] {
1617
+ --color-primary-10-on: var(--color-dusk-10-on);
1618
+ --color-primary-20-on: var(--color-dusk-20-on);
1619
+ --color-primary-30-on: var(--color-dusk-30-on);
1620
+ --color-primary-40-on: var(--color-dusk-40-on);
1621
+ --color-primary-50-on: var(--color-dusk-50-on);
1622
+ }
1623
+
1624
+ [data-color-scheme="sky"] {
1625
+ --color-primary-10-on: var(--color-sky-10-on);
1626
+ --color-primary-20-on: var(--color-sky-20-on);
1627
+ --color-primary-30-on: var(--color-sky-30-on);
1628
+ --color-primary-40-on: var(--color-sky-40-on);
1629
+ --color-primary-50-on: var(--color-sky-50-on);
1630
+ }
1631
+
1632
+ [data-color-scheme="sea"] {
1633
+ --color-primary-10-on: var(--color-sea-10-on);
1634
+ --color-primary-20-on: var(--color-sea-20-on);
1635
+ --color-primary-30-on: var(--color-sea-30-on);
1636
+ --color-primary-40-on: var(--color-sea-40-on);
1637
+ --color-primary-50-on: var(--color-sea-50-on);
1638
+ }
1639
+
1640
+ [data-color-scheme="lake"] {
1641
+ --color-primary-10-on: var(--color-lake-10-on);
1642
+ --color-primary-20-on: var(--color-lake-20-on);
1643
+ --color-primary-30-on: var(--color-lake-30-on);
1644
+ --color-primary-40-on: var(--color-lake-40-on);
1645
+ --color-primary-50-on: var(--color-lake-50-on);
1646
+ }
1647
+
1648
+ [data-color-scheme="neutral"] {
1649
+ --color-primary-10-on: var(--color-neutral-10-on);
1650
+ --color-primary-20-on: var(--color-neutral-20-on);
1651
+ --color-primary-30-on: var(--color-neutral-30-on);
1652
+ --color-primary-40-on: var(--color-neutral-50-on);
1653
+ --color-primary-50-on: var(--color-neutral-80-on);
1654
+ }
1655
+
1656
+ /* <<< end generated: label contrast tokens >>> */