actual-css 0.3.1 → 0.4.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 (223) hide show
  1. package/CHANGELOG.md +109 -3
  2. package/README.md +35 -30
  3. package/dist/actual.css +66 -4958
  4. package/dist/actual.full.css +7548 -0
  5. package/dist/actual.full.js +1 -0
  6. package/dist/actual.full.min.css +1 -0
  7. package/dist/actual.js +1 -1
  8. package/dist/actual.min.css +1 -1
  9. package/docs/design-notes/app-ui.md +33 -0
  10. package/docs/design-notes/cascade-layer.md +34 -13
  11. package/docs/design-notes/column-layout.md +677 -0
  12. package/docs/design-notes/enhancement-contract.md +25 -0
  13. package/docs/design-notes/forced-colors.md +3 -0
  14. package/docs/design-notes/grid.md +785 -0
  15. package/docs/design-notes/naming.md +15 -0
  16. package/docs/design-notes/references.md +1 -1
  17. package/docs/design-notes/widget-primitives.md +1 -0
  18. package/docs/navigation.json +12 -2
  19. package/docs/pages/components/alert.md +21 -14
  20. package/docs/pages/components/app-navigation.md +34 -0
  21. package/docs/pages/components/aura.md +1 -1
  22. package/docs/pages/components/avatar.md +16 -6
  23. package/docs/pages/components/badge.md +9 -7
  24. package/docs/pages/components/button.md +46 -16
  25. package/docs/pages/components/card.md +17 -9
  26. package/docs/pages/components/chat.md +8 -8
  27. package/docs/pages/components/dialog.md +7 -7
  28. package/docs/pages/components/drawer.md +3 -3
  29. package/docs/pages/components/fab.md +9 -7
  30. package/docs/pages/components/indicator.md +52 -0
  31. package/docs/pages/components/list.md +62 -0
  32. package/docs/pages/components/navbar.md +15 -8
  33. package/docs/pages/components/pagination.md +4 -3
  34. package/docs/pages/components/rating.md +68 -0
  35. package/docs/pages/components/skeleton.md +4 -4
  36. package/docs/pages/components/spinner.md +5 -5
  37. package/docs/pages/components/steps.md +57 -0
  38. package/docs/pages/components/table.md +30 -5
  39. package/docs/pages/enhancements/flyout.md +15 -15
  40. package/docs/pages/enhancements/overview.md +1 -1
  41. package/docs/pages/enhancements/scrollspy.md +6 -6
  42. package/docs/pages/enhancements/status-bar.md +5 -1
  43. package/docs/pages/enhancements/tabs.md +7 -8
  44. package/docs/pages/enhancements/tooltip.md +1 -1
  45. package/docs/pages/examples/overview.md +47 -22
  46. package/docs/pages/forms/choice-cards.md +11 -6
  47. package/docs/pages/forms/controls.md +1 -1
  48. package/docs/pages/forms/detached-actions.md +1 -1
  49. package/docs/pages/forms/floating-field.md +10 -5
  50. package/docs/pages/forms/form-actions.md +1 -1
  51. package/docs/pages/forms/input-policy.md +1 -1
  52. package/docs/pages/forms/joined-controls.md +4 -4
  53. package/docs/pages/forms/labels.md +6 -6
  54. package/docs/pages/forms/otp.md +33 -1
  55. package/docs/pages/forms/overview.md +19 -19
  56. package/docs/pages/forms/password.md +1 -1
  57. package/docs/pages/forms/range.md +1 -1
  58. package/docs/pages/forms/states-and-sizes.md +44 -48
  59. package/docs/pages/forms/sticky-actions.md +3 -3
  60. package/docs/pages/forms/switch.md +110 -2
  61. package/docs/pages/forms/validation.md +9 -9
  62. package/docs/pages/foundations/philosophy.md +1 -1
  63. package/docs/pages/foundations/theming.md +17 -2
  64. package/docs/pages/foundations/tokens.md +22 -10
  65. package/docs/pages/foundations/typography.md +50 -20
  66. package/docs/pages/guides/bootstrap.md +11 -11
  67. package/docs/pages/guides/integrating-actual-css.md +192 -0
  68. package/docs/pages/guides/introduction.md +23 -26
  69. package/docs/pages/guides/modular-import.md +173 -0
  70. package/docs/pages/guides/progressive-enhancement.md +81 -78
  71. package/docs/pages/guides/tailwind.md +6 -8
  72. package/docs/pages/layout/app-layout.md +57 -0
  73. package/docs/pages/layout/app-shell.md +28 -7
  74. package/docs/pages/layout/center.md +12 -1
  75. package/docs/pages/layout/choosing.md +54 -0
  76. package/docs/pages/layout/column-layout.md +206 -0
  77. package/docs/pages/layout/frame.md +6 -1
  78. package/docs/pages/layout/grid.md +133 -102
  79. package/docs/pages/layout/media.md +1 -1
  80. package/docs/pages/layout/overview.md +15 -2
  81. package/docs/pages/layout/scroll-snap.md +2 -2
  82. package/docs/pages/layout/scroll-target.md +45 -0
  83. package/docs/pages/layout/sidebar-layout.md +38 -18
  84. package/docs/pages/layout/stack.md +70 -1
  85. package/docs/pages/layout/switcher.md +10 -26
  86. package/docs/pages/layout/topbar.md +2 -2
  87. package/docs/pages/patterns/actions.md +1 -1
  88. package/docs/pages/patterns/code-block.md +1 -1
  89. package/docs/pages/patterns/exclusive-accordion.md +1 -1
  90. package/docs/pages/patterns/hierarchical-nav.md +1 -1
  91. package/docs/pages/patterns/icon-input.md +1 -1
  92. package/docs/pages/patterns/icon-slot.md +61 -0
  93. package/docs/pages/patterns/intent-nesting.md +1 -1
  94. package/docs/pages/patterns/navigation-list.md +1 -1
  95. package/docs/pages/patterns/overview.md +1 -1
  96. package/docs/pages/patterns/structured-lists.md +38 -40
  97. package/docs/pages/utilities/accessibility.md +3 -3
  98. package/docs/pages/utilities/flex.md +15 -15
  99. package/docs/pages/utilities/links.md +4 -4
  100. package/docs/pages/utilities/list.md +8 -8
  101. package/docs/pages/utilities/overflow.md +8 -8
  102. package/docs/pages/utilities/overview.md +1 -1
  103. package/docs/pages/utilities/shape.md +3 -3
  104. package/docs/pages/utilities/sizing-wrapping.md +23 -16
  105. package/docs/pages/utilities/spacing.md +20 -20
  106. package/docs/pages/utilities/text.md +10 -10
  107. package/llms.txt +46 -4
  108. package/package.json +43 -13
  109. package/scripts/reserved-classes.json +278 -0
  110. package/src/cli/actual-css.js +133 -0
  111. package/src/css/actual.css +1 -31
  112. package/src/css/actual.full.css +11 -2
  113. package/src/css/components/alert.css +17 -4
  114. package/src/css/components/app-nav.css +76 -0
  115. package/src/css/components/avatar.css +4 -0
  116. package/src/css/components/badge.css +19 -19
  117. package/src/css/components/breadcrumb.css +1 -1
  118. package/src/css/components/button.css +20 -32
  119. package/src/css/components/card.css +34 -9
  120. package/src/css/{optional → components}/chat.css +0 -6
  121. package/src/css/components/drawer.css +24 -5
  122. package/src/css/{optional → components}/fab.css +1 -7
  123. package/src/css/components/flyout.css +5 -0
  124. package/src/css/components/index.css +37 -27
  125. package/src/css/components/indicator.css +47 -0
  126. package/src/css/components/join.css +8 -1
  127. package/src/css/components/key.css +2 -0
  128. package/src/css/components/list.css +83 -0
  129. package/src/css/components/menu.css +11 -8
  130. package/src/css/components/meter.css +4 -1
  131. package/src/css/components/modal.css +5 -17
  132. package/src/css/components/navbar.css +6 -15
  133. package/src/css/components/pagination.css +11 -0
  134. package/src/css/components/rating.css +101 -0
  135. package/src/css/components/spinner.css +5 -0
  136. package/src/css/components/status-bar.css +5 -0
  137. package/src/css/components/steps.css +122 -0
  138. package/src/css/components/surface.css +5 -0
  139. package/src/css/components/tab.css +20 -22
  140. package/src/css/components/table.css +6 -0
  141. package/src/css/components/tooltip.css +3 -7
  142. package/src/css/{focus.css → core/focus.css} +0 -8
  143. package/src/css/core/index.css +9 -0
  144. package/src/css/core/print.css +18 -0
  145. package/src/css/{theme.css → core/theme.css} +19 -19
  146. package/src/css/{tokens.css → core/tokens.css} +16 -4
  147. package/src/css/{variants.css → core/variants.css} +3 -2
  148. package/src/css/{optional → effects}/aura.css +1 -10
  149. package/src/css/effects/index.css +2 -0
  150. package/src/css/forms/base.css +8 -0
  151. package/src/css/forms/choice-card.css +7 -15
  152. package/src/css/forms/choice.css +49 -37
  153. package/src/css/forms/control.css +4 -1
  154. package/src/css/forms/custom-select.css +2 -0
  155. package/src/css/{optional → forms}/floating-field.css +25 -7
  156. package/src/css/forms/index.css +10 -13
  157. package/src/css/forms/native.css +15 -2
  158. package/src/css/{optional → forms}/otp.css +25 -16
  159. package/src/css/forms/range.css +14 -4
  160. package/src/css/forms/switch.css +31 -29
  161. package/src/css/layout/app-layout.css +102 -0
  162. package/src/css/layout/app-shell.css +6 -0
  163. package/src/css/layout/center.css +14 -0
  164. package/src/css/layout/cluster.css +21 -0
  165. package/src/css/layout/column-layout.css +144 -0
  166. package/src/css/layout/container-query.css +15 -0
  167. package/src/css/layout/frame.css +19 -0
  168. package/src/css/layout/grid.css +155 -0
  169. package/src/css/layout/index.css +44 -0
  170. package/src/css/layout/measure.css +9 -0
  171. package/src/css/layout/media.css +10 -0
  172. package/src/css/layout/scroll-target.css +15 -0
  173. package/src/css/layout/scroller.css +41 -0
  174. package/src/css/layout/sidebar-layout.css +52 -0
  175. package/src/css/layout/stack.css +21 -0
  176. package/src/css/layout/switcher.css +23 -0
  177. package/src/css/{optional/layout-extra.css → layout/topbar.css} +0 -20
  178. package/src/css/typography/index.css +5 -0
  179. package/src/css/typography/lead.css +7 -0
  180. package/src/css/{components → typography}/overline.css +2 -2
  181. package/src/css/{prose.css → typography/prose.css} +57 -38
  182. package/src/css/{utilities.css → utilities/base.css} +2 -0
  183. package/src/css/utilities/index.css +3 -0
  184. package/src/js/escape.js +36 -0
  185. package/src/js/flyout.js +22 -12
  186. package/src/js/full.js +26 -0
  187. package/src/js/index.js +5 -21
  188. package/src/js/surface.js +1 -31
  189. package/src/js/tooltip.js +48 -19
  190. package/src/js/validation.js +1 -1
  191. package/src/tooling/css-bundle.js +308 -0
  192. package/dist/actual-themes.min.css +0 -1
  193. package/dist/optional.css +0 -1048
  194. package/dist/optional.min.css +0 -1
  195. package/docs/pages/guides/optional-components.md +0 -33
  196. package/docs/pages/layout/list.md +0 -41
  197. package/src/css/grid.css +0 -109
  198. package/src/css/layout.css +0 -123
  199. package/src/css/optional/index.css +0 -10
  200. package/src/css/optional/scroller.css +0 -63
  201. package/src/css/print.css +0 -47
  202. package/src/css/themes/corporate.css +0 -60
  203. package/src/css/themes/cyberpunk.css +0 -60
  204. package/src/css/themes/dim.css +0 -33
  205. package/src/css/themes/edge.css +0 -117
  206. package/src/css/themes/forest.css +0 -65
  207. package/src/css/themes/gradient.css +0 -97
  208. package/src/css/themes/index.css +0 -47
  209. package/src/css/themes/indigo.css +0 -33
  210. package/src/css/themes/lavender.css +0 -66
  211. package/src/css/themes/mono.css +0 -60
  212. package/src/css/themes/neon.css +0 -66
  213. package/src/css/themes/ocean.css +0 -60
  214. package/src/css/themes/petrol.css +0 -64
  215. package/src/css/themes/spruce.css +0 -64
  216. package/src/css/themes/square.css +0 -65
  217. package/src/css/themes/sunset.css +0 -66
  218. /package/src/css/{base.css → core/base.css} +0 -0
  219. /package/src/css/{intents.css → core/intents.css} +0 -0
  220. /package/src/css/{reset.css → core/reset.css} +0 -0
  221. /package/src/css/{optional → layout}/scroll-snap.css +0 -0
  222. /package/src/css/{optional/typography-fluid.css → typography/fluid.css} +0 -0
  223. /package/src/css/{optional/utilities-extra.css → utilities/extra.css} +0 -0
@@ -1,117 +0,0 @@
1
- /* Edge - paired light/dark theme that demonstrates component-local
2
- * border-accent tokens. Buttons become surface controls with an
3
- * intent-colored lower edge (.solid remains available when an action needs a
4
- * filled treatment), text controls (input/textarea/select) pick up the same
5
- * lower-edge accent via --control-border-block-end-*, alerts get an
6
- * intent-colored leading flag via --alert-border-inline-start-*. The focus
7
- * ring keeps the shared width — edge only drops the border-color flip so the
8
- * intent-colored lower edge stays dominant. */
9
- [data-theme="edge"] {
10
- color-scheme: light dark;
11
-
12
- --primary: hsl(224 72% 42%);
13
- --primary-fg: white;
14
- --secondary: hsl(166 54% 30%);
15
- --secondary-fg: white;
16
- --success: hsl(145 46% 32%);
17
- --success-fg: white;
18
- --warning: hsl(36 80% 38%);
19
- --warning-fg: hsl(34 35% 10%);
20
- --danger: hsl(354 62% 46%);
21
- --danger-fg: white;
22
- --neutral: hsl(228 9% 42%);
23
- --neutral-fg: white;
24
-
25
- --surface: hsl(40 20% 99%);
26
- --surface-raised: hsl(0 0% 100%);
27
- --surface-subtle: hsl(220 24% 95%);
28
- --surface-solid: hsl(228 26% 12%);
29
-
30
- --text: hsl(228 24% 12%);
31
- --text-muted: hsl(228 9% 42%);
32
- --text-subtle: hsl(228 7% 56%);
33
-
34
- --border: hsl(220 14% 86%);
35
- --focus: var(--primary);
36
- --focus-ring: hsl(224 72% 42% / 0.22);
37
- --hover-overlay: hsl(228 30% 10% / 0.04);
38
-
39
- --radius: 0.375rem;
40
- --radius-sm: 0.25rem;
41
- --radius-lg: 0.625rem;
42
-
43
- --btn-default-bg: var(--surface-subtle);
44
- --btn-default-border: transparent;
45
- --btn-border-color: transparent;
46
- --btn-border-block-end-width: 2px;
47
-
48
- --control-border-block-end-color: var(--primary);
49
- --control-border-block-end-width: 2px;
50
- }
51
-
52
- /* Intent-dependent button tokens must resolve on the button itself. If these
53
- live on [data-theme], var(--intent) computes before local intent classes
54
- apply and every button keeps the same primary edge. */
55
- [data-theme="edge"] .btn:not(.link) {
56
- --btn-border-block-end-color: var(--intent, var(--primary));
57
- }
58
-
59
- [data-theme="edge"] .btn:not(:where(.solid, .soft, .outline, .ghost, .link)) {
60
- --btn-default-fg: var(--intent, var(--text));
61
- --ui-hover-bg: var(--surface-raised);
62
- }
63
-
64
- [data-theme="edge"]
65
- .btn:not(
66
- :where(:disabled, [aria-disabled="true"], .solid, .soft, .outline, .ghost, .link)
67
- ):hover {
68
- box-shadow: none;
69
- }
70
-
71
- /* Intent-dependent alert token, same reasoning as the button rule above:
72
- must resolve on the alert itself so local intent classes (.danger, etc.)
73
- win over the bare --primary fallback. */
74
- [data-theme="edge"] .alert {
75
- --alert-border-inline-start-color: var(--intent, var(--primary));
76
- --alert-border-inline-start-width: 4px;
77
- }
78
-
79
- /* Focus recipe override — the base recipe (control.css) flips --control-border
80
- to --focus and draws a box-shadow ring. Edge drops the border-color flip and
81
- thickens the accent edge instead so the intent-coloured lower edge stays
82
- dominant; the focus ring and its 3px width remain the same as the default. */
83
- [data-theme="edge"] :is(.input, .textarea, .select):focus-visible {
84
- --control-border: var(--border);
85
- --control-border-block-end-width: 3px;
86
- }
87
-
88
- @supports (color: light-dark(red, blue)) {
89
- [data-theme="edge"] {
90
- --primary: light-dark(hsl(224 72% 42%), hsl(220 80% 76%));
91
- --primary-fg: light-dark(white, hsl(224 35% 10%));
92
- --secondary: light-dark(hsl(166 54% 30%), hsl(166 58% 70%));
93
- --secondary-fg: light-dark(white, hsl(166 35% 9%));
94
- --success: light-dark(hsl(145 46% 32%), hsl(145 48% 64%));
95
- --success-fg: light-dark(white, hsl(145 35% 8%));
96
- --warning: light-dark(hsl(36 80% 38%), hsl(40 72% 66%));
97
- --warning-fg: light-dark(hsl(34 35% 10%), hsl(38 35% 10%));
98
- --danger: light-dark(hsl(354 62% 46%), hsl(354 66% 72%));
99
- --danger-fg: light-dark(white, hsl(354 35% 10%));
100
- --neutral: light-dark(hsl(228 9% 42%), hsl(228 12% 72%));
101
- --neutral-fg: light-dark(white, hsl(228 24% 10%));
102
-
103
- --surface: light-dark(hsl(40 20% 99%), hsl(228 20% 8%));
104
- --surface-raised: light-dark(hsl(0 0% 100%), hsl(228 17% 11%));
105
- --surface-subtle: light-dark(hsl(220 24% 95%), hsl(228 14% 16%));
106
- --surface-solid: light-dark(hsl(228 26% 12%), hsl(0 0% 96%));
107
-
108
- --text: light-dark(hsl(228 24% 12%), hsl(0 0% 96%));
109
- --text-muted: light-dark(hsl(228 9% 42%), hsl(228 8% 68%));
110
- --text-subtle: light-dark(hsl(228 7% 56%), hsl(228 7% 55%));
111
-
112
- --border: light-dark(hsl(220 14% 86%), hsl(228 12% 24%));
113
- --focus-ring: light-dark(hsl(224 72% 42% / 0.22), hsl(220 80% 76% / 0.28));
114
- --hover-overlay: light-dark(hsl(228 30% 10% / 0.04), hsl(0 0% 100% / 0.06));
115
- --shadow-color: light-dark(hsl(228 30% 10%), hsl(0 0% 0%));
116
- }
117
- }
@@ -1,65 +0,0 @@
1
- [data-theme="forest"] {
2
- color-scheme: light dark;
3
-
4
- --primary: hsl(175 48% 26%);
5
- --primary-fg: white;
6
- --secondary: hsl(82 42% 34%);
7
- --secondary-fg: white;
8
- --success: hsl(148 58% 32%);
9
- --success-fg: white;
10
- --warning: hsl(42 88% 48%);
11
- --warning-fg: hsl(35 35% 12%);
12
- --danger: hsl(4 62% 48%);
13
- --danger-fg: white;
14
- --neutral: hsl(120 10% 34%);
15
- --neutral-fg: white;
16
-
17
- --surface: hsl(48 36% 96%);
18
- --surface-raised: hsl(45 36% 98%);
19
- --surface-subtle: hsl(112 26% 91%);
20
- --surface-solid: hsl(130 22% 15%);
21
-
22
- --text: hsl(130 20% 14%);
23
- --text-muted: hsl(125 10% 38%);
24
- --text-subtle: hsl(125 8% 50%);
25
-
26
- --border: hsl(105 18% 78%);
27
- --focus: var(--primary);
28
- --focus-ring: hsl(175 48% 26% / 0.22);
29
-
30
- /* Organic rounding — demonstrates scaling the radius tokens up. */
31
- --radius: 0.75rem;
32
- --radius-sm: 0.5rem;
33
- --radius-lg: 1.25rem;
34
- }
35
-
36
- @supports (color: light-dark(red, blue)) {
37
- [data-theme="forest"] {
38
- --primary: light-dark(hsl(175 48% 26%), hsl(175 45% 76%));
39
- --primary-fg: light-dark(white, hsl(175 30% 12%));
40
- --secondary: light-dark(hsl(82 42% 34%), hsl(82 50% 80%));
41
- --secondary-fg: light-dark(white, hsl(82 30% 12%));
42
- --success: light-dark(hsl(148 58% 32%), hsl(148 66% 80%));
43
- --success-fg: light-dark(white, hsl(148 30% 12%));
44
- --warning: light-dark(hsl(42 88% 48%), hsl(42 75% 80%));
45
- --warning-fg: light-dark(hsl(35 35% 12%), hsl(42 30% 12%));
46
- --danger: light-dark(hsl(4 62% 48%), hsl(4 70% 80%));
47
- --danger-fg: light-dark(white, hsl(4 30% 12%));
48
- --neutral: light-dark(hsl(120 10% 34%), hsl(120 18% 80%));
49
- --neutral-fg: light-dark(white, hsl(120 30% 12%));
50
-
51
- --surface: light-dark(hsl(48 36% 96%), hsl(130 18% 8%));
52
- --surface-raised: light-dark(hsl(45 36% 98%), hsl(130 16% 11%));
53
- --surface-subtle: light-dark(hsl(112 26% 91%), hsl(130 14% 16%));
54
- --surface-solid: light-dark(hsl(130 22% 15%), hsl(0 0% 96%));
55
-
56
- --text: light-dark(hsl(130 20% 14%), hsl(0 0% 96%));
57
- --text-muted: light-dark(hsl(125 10% 38%), hsl(130 8% 68%));
58
- --text-subtle: light-dark(hsl(125 8% 50%), hsl(130 7% 55%));
59
-
60
- --border: light-dark(hsl(105 18% 78%), hsl(130 12% 24%));
61
- --focus-ring: light-dark(hsl(175 48% 26% / 0.22), hsl(175 45% 76% / 0.28));
62
- --hover-overlay: light-dark(hsl(220 30% 10% / 0.04), hsl(0 0% 100% / 0.06));
63
- --shadow-color: light-dark(hsl(220 30% 10%), hsl(0 0% 0%));
64
- }
65
- }
@@ -1,97 +0,0 @@
1
- /* Gradient — paired light/dark theme, palette inspired by Bootstrap 4's
2
- * defaults. Demonstrates that a solid button can be given the classic
3
- * Bootstrap 4 gradient treatment (a 15%-white-lightened top fading to the
4
- * flat intent color) purely through token overrides, without touching
5
- * button.css. Only bare/.solid buttons are targeted — .soft/.outline/.ghost/
6
- * .link stay flat, matching Bootstrap 4's own gradient mixin, which only
7
- * wraps its filled button variant. */
8
- [data-theme="gradient"] {
9
- color-scheme: light dark;
10
-
11
- --primary: hsl(211 100% 50%);
12
- --primary-fg: white;
13
- --secondary: hsl(208 7% 46%);
14
- --secondary-fg: white;
15
- --success: hsl(134 61% 41%);
16
- --success-fg: white;
17
- --warning: hsl(45 100% 51%);
18
- --warning-fg: hsl(45 100% 10%);
19
- --danger: hsl(354 70% 54%);
20
- --danger-fg: white;
21
- --neutral: hsl(210 10% 23%);
22
- --neutral-fg: white;
23
-
24
- --surface: hsl(0 0% 100%);
25
- --surface-raised: hsl(0 0% 100%);
26
- --surface-subtle: hsl(210 17% 95%);
27
- --surface-solid: hsl(210 10% 15%);
28
-
29
- --text: hsl(210 11% 15%);
30
- --text-muted: hsl(208 7% 46%);
31
- --text-subtle: hsl(210 9% 62%);
32
-
33
- --border: hsl(210 14% 89%);
34
- --focus: var(--primary);
35
- --focus-ring: hsl(211 100% 50% / 0.25);
36
- --hover-overlay: hsl(210 30% 10% / 0.04);
37
-
38
- --radius: 0.25rem;
39
- --radius-sm: 0.2rem;
40
- --radius-lg: 0.3rem;
41
- }
42
-
43
- @supports (color: light-dark(red, blue)) {
44
- [data-theme="gradient"] {
45
- --primary: light-dark(hsl(211 100% 50%), hsl(211 90% 72%));
46
- --primary-fg: light-dark(white, hsl(211 40% 10%));
47
- --secondary: light-dark(hsl(208 7% 46%), hsl(208 10% 72%));
48
- --secondary-fg: light-dark(white, hsl(208 15% 10%));
49
- --success: light-dark(hsl(134 61% 41%), hsl(134 55% 65%));
50
- --success-fg: light-dark(white, hsl(134 40% 8%));
51
- --warning: light-dark(hsl(45 100% 51%), hsl(45 90% 70%));
52
- --warning-fg: light-dark(hsl(45 100% 10%), hsl(45 100% 10%));
53
- --danger: light-dark(hsl(354 70% 54%), hsl(354 75% 74%));
54
- --danger-fg: light-dark(white, hsl(354 40% 10%));
55
- --neutral: light-dark(hsl(210 10% 23%), hsl(210 12% 75%));
56
- --neutral-fg: light-dark(white, hsl(210 15% 10%));
57
-
58
- --surface: light-dark(hsl(0 0% 100%), hsl(210 15% 8%));
59
- --surface-raised: light-dark(hsl(0 0% 100%), hsl(210 13% 11%));
60
- --surface-subtle: light-dark(hsl(210 17% 95%), hsl(210 12% 16%));
61
- --surface-solid: light-dark(hsl(210 10% 15%), hsl(0 0% 96%));
62
-
63
- --text: light-dark(hsl(210 11% 15%), hsl(0 0% 96%));
64
- --text-muted: light-dark(hsl(208 7% 46%), hsl(210 8% 68%));
65
- --text-subtle: light-dark(hsl(210 9% 62%), hsl(210 7% 55%));
66
-
67
- --border: light-dark(hsl(210 14% 89%), hsl(210 12% 24%));
68
- --focus-ring: light-dark(hsl(211 100% 50% / 0.25), hsl(211 90% 72% / 0.3));
69
- --hover-overlay: light-dark(hsl(210 30% 10% / 0.04), hsl(0 0% 100% / 0.06));
70
- --shadow-color: light-dark(hsl(210 30% 10%), hsl(0 0% 0%));
71
- }
72
- }
73
-
74
- @supports (color: color-mix(in oklch, red, white)) {
75
- /* Bootstrap 4 gradient recipe (linear-gradient(180deg, mix(white, $color,
76
- 15%), $color)) ported to the token contract. --ui-bg covers explicit
77
- .solid; --btn-default-bg covers the bare/no-variant default. Bootstrap 4
78
- still darkens the button on hover even with gradients enabled, so
79
- --ui-hover-bg reruns the same recipe over a darkened base color instead
80
- of reusing --ui-bg verbatim — the resting gradient shape survives, just
81
- shifted darker, same as the flat color-mix darken variants.css uses for
82
- hover on ungradiented themes. */
83
- [data-theme="gradient"] .btn:not(:where(.soft, .outline, .ghost, .link)) {
84
- --gradient-hover-color: color-mix(in oklch, var(--intent, var(--neutral)) 88%, black);
85
- --ui-bg: linear-gradient(
86
- 180deg,
87
- color-mix(in oklch, white 15%, var(--intent, var(--neutral))),
88
- var(--intent, var(--neutral))
89
- );
90
- --btn-default-bg: var(--ui-bg);
91
- --ui-hover-bg: linear-gradient(
92
- 180deg,
93
- color-mix(in oklch, white 15%, var(--gradient-hover-color)),
94
- var(--gradient-hover-color)
95
- );
96
- }
97
- }
@@ -1,47 +0,0 @@
1
- /*
2
- * Reference theme presets. Shipped for inspection and copying; not public
3
- * package entry points (package.json blocks ./css/themes exports).
4
- *
5
- * Opt-in theme bundle. Importing this file pulls in every theme below, each
6
- * gated by [data-theme="…"]. The light baseline is :root in src/css/theme.css —
7
- * there is no light.css here.
8
- *
9
- * The themes are illustrative: each one demonstrates a different set of knobs
10
- * the token contract exposes, beyond recoloring.
11
- *
12
- * indigo — deep blue/violet dark palette (single block)
13
- * dim — dark variant with lifted surface tones
14
- * corporate — reference paired light/dark recolor via light-dark()
15
- * forest — paired recolor + scaled-up radius tokens
16
- * ocean — reference paired recolor
17
- * spruce — deep spruce-green primary + copper secondary
18
- * petrol — desaturated petrol-blue primary + apricot secondary
19
- * sunset — paired recolor + selection and shadow-color theming
20
- * lavender — paired recolor + soft-variant tuning, tinted shadows
21
- * mono — grayscale palette, colored status intents only
22
- * square — paired recolor + full radius scale forced to 0
23
- * edge — paired recolor + intent-colored button lower edge
24
- * cyberpunk — light-only stress test: yellow canvas, dark-on-bright
25
- * intents, 2px borders, hard offset shadows
26
- * neon — dark-only + wide-gamut P3 upgrade via oklch(), glow
27
- * shadows, soft-variant tuning
28
- * gradient — paired recolor + Bootstrap 4 style gradient on solid buttons
29
- * via component-local button tokens
30
- *
31
- * Single-block themes (indigo, dim, cyberpunk, neon) pin one color-scheme and
32
- * cannot adapt to prefers-color-scheme; the paired ones follow the OS. */
33
- @import "./indigo.css";
34
- @import "./dim.css";
35
- @import "./corporate.css";
36
- @import "./forest.css";
37
- @import "./ocean.css";
38
- @import "./spruce.css";
39
- @import "./petrol.css";
40
- @import "./sunset.css";
41
- @import "./lavender.css";
42
- @import "./mono.css";
43
- @import "./square.css";
44
- @import "./edge.css";
45
- @import "./cyberpunk.css";
46
- @import "./neon.css";
47
- @import "./gradient.css";
@@ -1,33 +0,0 @@
1
- /* Indigo — deep blue/violet palette, dark-only. Single-block shape
2
- * (color-scheme: dark only) — it does not adapt to prefers-color-scheme;
3
- * opt in via [data-theme="indigo"]. dim.css is a darker variant with
4
- * lifted surface tones. */
5
- [data-theme="indigo"] {
6
- color-scheme: dark;
7
-
8
- --primary: hsl(220 90% 66%);
9
- --primary-fg: hsl(222 30% 8%);
10
- --secondary: hsl(270 65% 70%);
11
- --secondary-fg: hsl(270 30% 10%);
12
- --success: hsl(145 55% 54%);
13
- --success-fg: hsl(145 40% 8%);
14
- --warning: hsl(38 92% 62%);
15
- --warning-fg: hsl(35 35% 10%);
16
- --danger: hsl(0 75% 66%);
17
- --danger-fg: hsl(0 35% 10%);
18
- --neutral: hsl(220 10% 72%);
19
- --neutral-fg: hsl(222 24% 8%);
20
-
21
- --surface: hsl(222 24% 8%);
22
- --surface-raised: hsl(222 22% 11%);
23
- --surface-subtle: hsl(222 18% 15%);
24
- --surface-solid: hsl(0 0% 96%);
25
-
26
- --text: hsl(0 0% 96%);
27
- --text-muted: hsl(220 10% 68%);
28
- --text-subtle: hsl(220 8% 55%);
29
- --border: hsl(222 14% 24%);
30
- --focus: var(--primary);
31
- --focus-ring: hsl(220 90% 66% / 0.28);
32
- --hover-overlay: hsl(0 0% 100% / 0.06);
33
- }
@@ -1,66 +0,0 @@
1
- [data-theme="lavender"] {
2
- color-scheme: light dark;
3
-
4
- --primary: hsl(258 70% 58%);
5
- --primary-fg: white;
6
- --secondary: hsl(305 45% 48%);
7
- --secondary-fg: white;
8
- --success: hsl(150 50% 33%);
9
- --success-fg: white;
10
- --warning: hsl(42 90% 52%);
11
- --warning-fg: hsl(35 35% 12%);
12
- --danger: hsl(350 68% 52%);
13
- --danger-fg: white;
14
- --neutral: hsl(260 10% 42%);
15
- --neutral-fg: white;
16
-
17
- --surface: hsl(260 45% 98%);
18
- --surface-raised: hsl(0 0% 100%);
19
- --surface-subtle: hsl(260 35% 94%);
20
- --surface-solid: hsl(260 30% 18%);
21
-
22
- --text: hsl(260 28% 15%);
23
- --text-muted: hsl(260 12% 43%);
24
- --text-subtle: hsl(260 10% 57%);
25
-
26
- --border: hsl(260 28% 85%);
27
- --focus: var(--primary);
28
- --focus-ring: hsl(258 70% 58% / 0.22);
29
-
30
- /* Pastel tuning — demonstrates the soft-variant knobs (paler tints, gentler
31
- hovers) and violet-tinted shadows. */
32
- --soft-bg-mix: 92%;
33
- --soft-hover-alpha: 8%;
34
- --shadow-color: hsl(260 45% 20%);
35
- }
36
-
37
- @supports (color: light-dark(red, blue)) {
38
- [data-theme="lavender"] {
39
- --primary: light-dark(hsl(258 70% 58%), hsl(258 75% 80%));
40
- --primary-fg: light-dark(white, hsl(258 30% 12%));
41
- --secondary: light-dark(hsl(305 45% 48%), hsl(305 53% 80%));
42
- --secondary-fg: light-dark(white, hsl(305 30% 12%));
43
- --success: light-dark(hsl(150 50% 33%), hsl(150 58% 80%));
44
- --success-fg: light-dark(white, hsl(150 30% 12%));
45
- --warning: light-dark(hsl(42 90% 52%), hsl(42 75% 80%));
46
- --warning-fg: light-dark(hsl(35 35% 12%), hsl(42 30% 12%));
47
- --danger: light-dark(hsl(350 68% 52%), hsl(350 75% 80%));
48
- --danger-fg: light-dark(white, hsl(350 30% 12%));
49
- --neutral: light-dark(hsl(260 10% 42%), hsl(260 18% 80%));
50
- --neutral-fg: light-dark(white, hsl(260 30% 12%));
51
-
52
- --surface: light-dark(hsl(260 45% 98%), hsl(260 18% 8%));
53
- --surface-raised: light-dark(hsl(0 0% 100%), hsl(260 16% 11%));
54
- --surface-subtle: light-dark(hsl(260 35% 94%), hsl(260 14% 16%));
55
- --surface-solid: light-dark(hsl(260 30% 18%), hsl(0 0% 96%));
56
-
57
- --text: light-dark(hsl(260 28% 15%), hsl(0 0% 96%));
58
- --text-muted: light-dark(hsl(260 12% 43%), hsl(260 8% 68%));
59
- --text-subtle: light-dark(hsl(260 10% 57%), hsl(260 7% 55%));
60
-
61
- --border: light-dark(hsl(260 28% 85%), hsl(260 12% 24%));
62
- --focus-ring: light-dark(hsl(258 70% 58% / 0.22), hsl(258 75% 80% / 0.28));
63
- --hover-overlay: light-dark(hsl(220 30% 10% / 0.04), hsl(0 0% 100% / 0.06));
64
- --shadow-color: light-dark(hsl(260 45% 20%), hsl(260 40% 2%));
65
- }
66
- }
@@ -1,60 +0,0 @@
1
- [data-theme="mono"] {
2
- color-scheme: light dark;
3
-
4
- --primary: hsl(220 8% 18%);
5
- --primary-fg: white;
6
- --secondary: hsl(220 7% 34%);
7
- --secondary-fg: white;
8
- --success: hsl(145 42% 32%);
9
- --success-fg: white;
10
- --warning: hsl(40 70% 44%);
11
- --warning-fg: hsl(35 35% 10%);
12
- --danger: hsl(0 56% 46%);
13
- --danger-fg: white;
14
- --neutral: hsl(220 6% 45%);
15
- --neutral-fg: white;
16
-
17
- --surface: hsl(0 0% 99%);
18
- --surface-raised: hsl(0 0% 100%);
19
- --surface-subtle: hsl(220 8% 94%);
20
- --surface-solid: hsl(220 8% 15%);
21
-
22
- --text: hsl(220 8% 12%);
23
- --text-muted: hsl(220 6% 42%);
24
- --text-subtle: hsl(220 5% 58%);
25
-
26
- --border: hsl(220 8% 84%);
27
- --focus: var(--primary);
28
- --focus-ring: hsl(220 8% 18% / 0.22);
29
- }
30
-
31
- @supports (color: light-dark(red, blue)) {
32
- [data-theme="mono"] {
33
- --primary: light-dark(hsl(220 8% 18%), hsl(220 16% 80%));
34
- --primary-fg: light-dark(white, hsl(220 30% 12%));
35
- --secondary: light-dark(hsl(220 7% 34%), hsl(220 15% 80%));
36
- --secondary-fg: light-dark(white, hsl(220 30% 12%));
37
- --success: light-dark(hsl(145 42% 32%), hsl(145 50% 80%));
38
- --success-fg: light-dark(white, hsl(145 30% 12%));
39
- --warning: light-dark(hsl(40 70% 44%), hsl(40 75% 80%));
40
- --warning-fg: light-dark(hsl(35 35% 10%), hsl(40 30% 12%));
41
- --danger: light-dark(hsl(0 56% 46%), hsl(0 64% 80%));
42
- --danger-fg: light-dark(white, hsl(0 30% 12%));
43
- --neutral: light-dark(hsl(220 6% 45%), hsl(220 14% 80%));
44
- --neutral-fg: light-dark(white, hsl(220 30% 12%));
45
-
46
- --surface: light-dark(hsl(0 0% 99%), hsl(0 0% 8%));
47
- --surface-raised: light-dark(hsl(0 0% 100%), hsl(0 0% 11%));
48
- --surface-subtle: light-dark(hsl(220 8% 94%), hsl(0 0% 16%));
49
- --surface-solid: light-dark(hsl(220 8% 15%), hsl(0 0% 96%));
50
-
51
- --text: light-dark(hsl(220 8% 12%), hsl(0 0% 96%));
52
- --text-muted: light-dark(hsl(220 6% 42%), hsl(0 0% 68%));
53
- --text-subtle: light-dark(hsl(220 5% 58%), hsl(0 0% 55%));
54
-
55
- --border: light-dark(hsl(220 8% 84%), hsl(0 0% 24%));
56
- --focus-ring: light-dark(hsl(220 8% 18% / 0.22), hsl(220 16% 80% / 0.28));
57
- --hover-overlay: light-dark(hsl(220 30% 10% / 0.04), hsl(0 0% 100% / 0.06));
58
- --shadow-color: light-dark(hsl(220 30% 10%), hsl(0 0% 0%));
59
- }
60
- }
@@ -1,66 +0,0 @@
1
- /* Neon — dark-only theme (single block, color-scheme: dark, same shape as
2
- * indigo.css) that demonstrates wide-gamut progressive enhancement. The
3
- * baseline block uses sRGB-safe hsl() and works everywhere indigo.css works;
4
- * on P3 displays with oklch() support the intents are re-declared with chroma
5
- * beyond sRGB. This is the pattern for shipping colors sRGB cannot express
6
- * without breaking older screens or browsers. Also demonstrates the soft-variant
7
- * tuning knobs and glow shadows on popovers. */
8
- [data-theme="neon"] {
9
- color-scheme: dark;
10
-
11
- /* Electric intents over near-black: bright hues carry dark ink so solid
12
- chips read as lit signs rather than white-on-color buttons. */
13
- --primary: hsl(315 95% 62%);
14
- --primary-fg: hsl(315 100% 8%);
15
- --secondary: hsl(182 100% 46%);
16
- --secondary-fg: hsl(182 100% 7%);
17
- --success: hsl(135 85% 52%);
18
- --success-fg: hsl(135 100% 6%);
19
- --warning: hsl(55 95% 55%);
20
- --warning-fg: hsl(55 100% 7%);
21
- --danger: hsl(350 100% 64%);
22
- --danger-fg: hsl(350 100% 8%);
23
- --neutral: hsl(260 12% 76%);
24
- --neutral-fg: hsl(260 25% 8%);
25
-
26
- --surface: hsl(260 25% 6%);
27
- --surface-raised: hsl(260 22% 9%);
28
- --surface-subtle: hsl(260 20% 13%);
29
- --surface-solid: hsl(0 0% 96%);
30
-
31
- --text: hsl(0 0% 97%);
32
- --text-muted: hsl(260 12% 70%);
33
- --text-subtle: hsl(260 8% 55%);
34
-
35
- --border: hsl(260 18% 24%);
36
- --focus: var(--secondary);
37
- --focus-ring: hsl(182 100% 46% / 0.35);
38
- --hover-overlay: hsl(0 0% 100% / 0.07);
39
- --shadow-color: hsl(260 60% 3%);
40
-
41
- /* Neon tints: stronger soft surfaces and hovers than the default recipe,
42
- so tinted chips glow against the near-black canvas. */
43
- --soft-bg-mix: 80%;
44
- --soft-border-mix: 45%;
45
- --soft-hover-alpha: 20%;
46
-
47
- /* Popovers and tooltips glow instead of dropping a shadow. */
48
- --shadow-popout: 0 0 1rem hsl(315 95% 62% / 0.25);
49
- }
50
-
51
- /* Wide-gamut upgrade: chroma beyond sRGB on P3-capable displays. Both gates
52
- are required — a P3 screen driven by an older browser keeps the hsl()
53
- baseline above; -fg inks stay unchanged (near-black is gamut-safe). */
54
- @media (color-gamut: p3) {
55
- @supports (color: oklch(0% 0 0)) {
56
- [data-theme="neon"] {
57
- --primary: oklch(70% 0.32 340);
58
- --secondary: oklch(85% 0.17 195);
59
- --success: oklch(85% 0.28 148);
60
- --warning: oklch(92% 0.2 105);
61
- --danger: oklch(68% 0.26 15);
62
- --focus-ring: oklch(85% 0.17 195 / 0.35);
63
- --shadow-popout: 0 0 1rem oklch(70% 0.32 340 / 0.3);
64
- }
65
- }
66
- }
@@ -1,60 +0,0 @@
1
- [data-theme="ocean"] {
2
- color-scheme: light dark;
3
-
4
- --primary: hsl(198 82% 35%);
5
- --primary-fg: white;
6
- --secondary: hsl(174 58% 30%);
7
- --secondary-fg: white;
8
- --success: hsl(160 62% 30%);
9
- --success-fg: white;
10
- --warning: hsl(36 90% 50%);
11
- --warning-fg: hsl(35 35% 12%);
12
- --danger: hsl(350 70% 52%);
13
- --danger-fg: white;
14
- --neutral: hsl(205 12% 38%);
15
- --neutral-fg: white;
16
-
17
- --surface: hsl(200 50% 98%);
18
- --surface-raised: hsl(0 0% 100%);
19
- --surface-subtle: hsl(198 42% 94%);
20
- --surface-solid: hsl(204 38% 16%);
21
-
22
- --text: hsl(205 34% 14%);
23
- --text-muted: hsl(205 12% 42%);
24
- --text-subtle: hsl(205 10% 56%);
25
-
26
- --border: hsl(198 30% 84%);
27
- --focus: var(--primary);
28
- --focus-ring: hsl(198 82% 35% / 0.22);
29
- }
30
-
31
- @supports (color: light-dark(red, blue)) {
32
- [data-theme="ocean"] {
33
- --primary: light-dark(hsl(198 82% 35%), hsl(198 75% 80%));
34
- --primary-fg: light-dark(white, hsl(198 30% 12%));
35
- --secondary: light-dark(hsl(174 58% 30%), hsl(174 66% 80%));
36
- --secondary-fg: light-dark(white, hsl(174 30% 12%));
37
- --success: light-dark(hsl(160 62% 30%), hsl(160 70% 80%));
38
- --success-fg: light-dark(white, hsl(160 30% 12%));
39
- --warning: light-dark(hsl(36 90% 50%), hsl(36 75% 80%));
40
- --warning-fg: light-dark(hsl(35 35% 12%), hsl(36 30% 12%));
41
- --danger: light-dark(hsl(350 70% 52%), hsl(350 75% 80%));
42
- --danger-fg: light-dark(white, hsl(350 30% 12%));
43
- --neutral: light-dark(hsl(205 12% 38%), hsl(205 20% 80%));
44
- --neutral-fg: light-dark(white, hsl(205 30% 12%));
45
-
46
- --surface: light-dark(hsl(200 50% 98%), hsl(200 18% 8%));
47
- --surface-raised: light-dark(hsl(0 0% 100%), hsl(200 16% 11%));
48
- --surface-subtle: light-dark(hsl(198 42% 94%), hsl(200 14% 16%));
49
- --surface-solid: light-dark(hsl(204 38% 16%), hsl(0 0% 96%));
50
-
51
- --text: light-dark(hsl(205 34% 14%), hsl(0 0% 96%));
52
- --text-muted: light-dark(hsl(205 12% 42%), hsl(200 8% 68%));
53
- --text-subtle: light-dark(hsl(205 10% 56%), hsl(200 7% 55%));
54
-
55
- --border: light-dark(hsl(198 30% 84%), hsl(200 12% 24%));
56
- --focus-ring: light-dark(hsl(198 82% 35% / 0.22), hsl(198 75% 80% / 0.28));
57
- --hover-overlay: light-dark(hsl(220 30% 10% / 0.04), hsl(0 0% 100% / 0.06));
58
- --shadow-color: light-dark(hsl(220 30% 10%), hsl(0 0% 0%));
59
- }
60
- }
@@ -1,64 +0,0 @@
1
- /* Petrol — desaturated petrol-blue primary with apricot secondary over cool
2
- * blue-tinted neutrals. Paired light/dark via light-dark(). The most
3
- * conventional of the bundled palettes: warm, highly legible, no semantic
4
- * hue collisions. */
5
- [data-theme="petrol"] {
6
- color-scheme: light dark;
7
-
8
- --primary: hsl(203 55% 30%);
9
- --primary-fg: hsl(0 0% 98%);
10
- --secondary: hsl(22 55% 47%);
11
- --secondary-fg: hsl(0 0% 98%);
12
- --success: hsl(155 45% 32%);
13
- --success-fg: hsl(0 0% 98%);
14
- --warning: hsl(38 70% 36%);
15
- --warning-fg: hsl(0 0% 98%);
16
- --danger: hsl(357 55% 45%);
17
- --danger-fg: hsl(0 0% 98%);
18
- --neutral: hsl(210 8% 43%);
19
- --neutral-fg: hsl(0 0% 98%);
20
-
21
- --surface: hsl(0 0% 100%);
22
- --surface-raised: hsl(204 30% 98%);
23
- --surface-subtle: hsl(204 25% 96%);
24
- --surface-solid: hsl(207 25% 12%);
25
-
26
- --text: hsl(207 25% 12%);
27
- --text-muted: hsl(206 9% 42%);
28
- --text-subtle: hsl(205 7% 57%);
29
-
30
- --border: hsl(205 15% 87%);
31
- --focus: var(--primary);
32
- --focus-ring: hsl(203 55% 30% / 0.22);
33
- }
34
-
35
- @supports (color: light-dark(red, blue)) {
36
- [data-theme="petrol"] {
37
- --primary: light-dark(hsl(203 55% 30%), hsl(202 55% 72%));
38
- --primary-fg: light-dark(hsl(0 0% 98%), hsl(204 40% 10%));
39
- --secondary: light-dark(hsl(22 55% 47%), hsl(24 55% 70%));
40
- --secondary-fg: light-dark(hsl(0 0% 98%), hsl(24 35% 11%));
41
- --success: light-dark(hsl(155 45% 32%), hsl(155 40% 60%));
42
- --success-fg: light-dark(hsl(0 0% 98%), hsl(155 35% 8%));
43
- --warning: light-dark(hsl(38 70% 36%), hsl(40 62% 63%));
44
- --warning-fg: light-dark(hsl(0 0% 98%), hsl(38 35% 10%));
45
- --danger: light-dark(hsl(357 55% 45%), hsl(357 58% 70%));
46
- --danger-fg: light-dark(hsl(0 0% 98%), hsl(357 35% 10%));
47
- --neutral: light-dark(hsl(210 8% 43%), hsl(208 10% 71%));
48
- --neutral-fg: light-dark(hsl(0 0% 98%), hsl(208 18% 10%));
49
-
50
- --surface: light-dark(hsl(0 0% 100%), hsl(206 22% 9%));
51
- --surface-raised: light-dark(hsl(204 30% 98%), hsl(206 19% 12%));
52
- --surface-subtle: light-dark(hsl(204 25% 96%), hsl(206 15% 16%));
53
- --surface-solid: light-dark(hsl(207 25% 12%), hsl(0 0% 96%));
54
-
55
- --text: light-dark(hsl(207 25% 12%), hsl(205 12% 95%));
56
- --text-muted: light-dark(hsl(206 9% 42%), hsl(205 8% 67%));
57
- --text-subtle: light-dark(hsl(205 7% 57%), hsl(205 7% 53%));
58
-
59
- --border: light-dark(hsl(205 15% 87%), hsl(206 12% 24%));
60
- --focus-ring: light-dark(hsl(203 55% 30% / 0.22), hsl(202 55% 72% / 0.28));
61
- --hover-overlay: light-dark(hsl(207 30% 10% / 0.04), hsl(0 0% 100% / 0.06));
62
- --shadow-color: light-dark(hsl(207 30% 10%), hsl(0 0% 0%));
63
- }
64
- }