clairity.css 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,34 +2,117 @@
2
2
  PALETTE - this is where we define the overall color palette. This file can be
3
3
  entirely replaced to customize the color palette of a site. In doing
4
4
  so, be mindful of defining at least the base hues and the primary,
5
- complementary, and perhaps the secondary colors.
6
-
5
+ complementary, and perhaps the secondary colors.
6
+
7
+ We set variables on :root so other doc types like svg can inherit
8
+ these variables. We'll use HSL by default, and override HSL values
9
+ with okLCH values for browsers that support the newer color space,
10
+ via an @supports query. For why we prefer okLCH where available:
11
+ https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl
12
+
13
+ First we define scales for each color component: hue, lightness, and
14
+ alpha in common, saturation just for HSL, and chroma just for okLCH.
15
+ 15 semantically-named core hues define our color palette, though not
16
+ all need be used. We deliberately name our hue variables with color
17
+ names to preclude their use in the utility style as opposed to the
18
+ semantic style we prefer.
19
+
20
+ HSL and okLCH hues differ, so we override the hues in the okLCH
21
+ section to visually match the HSL hues. You can also change or
22
+ override these hues to suit your own taste and needs.
23
+
24
+ We then map up to 9 of the palette hues (2 is recommended) to ranked
25
+ theme *hue* variables, --1st through --9th, which are in turn used
26
+ to create our theme *color* variables. --1st should map to the
27
+ primary theme *hue* (--blue by default) and will be used to
28
+ programmatically create complementary hues (e.g., --complement,
29
+ --triad, --tetrad). --2nd provides the secondary (accent) theme hue.
30
+
31
+ These hues are used to create 9 semantic color variables, --primary,
32
+ --secondary, etc. as well as 5 complementary color variables,
33
+ --complementary, --triadic, etc. Most sites will only use the
34
+ --primary color, with sparing use of --secondary and/or
35
+ --complementary, if at all. Only complex or extensive sites will
36
+ need more than these three core theme colors (beyond the included
37
+ grayscale and semantic messaging/state colors).
38
+
39
+ Finally, we create color scales for each core theme color. In the
40
+ future, we hope CSS Relative Color syntax will allow us to skip this
41
+ step of creating color scales, and just directly apply color
42
+ component scales on the base color as needed. As noted, we also
43
+ provide a neutral/gray scale and a few semantic color sets (--error,
44
+ --warning, --success, --info, --valid, --invalid, --unknown) too.
45
+
7
46
  \******************************************************************************/
8
47
 
9
- /* we use :root here so other doc types like svg can inherit these variables */
10
48
  :root {
11
- /* Palette Hues - define HSL (eventually okLCH) hues in the following broad
12
- categorical color names that will be used for primary, secondary, & accent
13
- colors. Not all need to be defined or used. range: [0, 360]
14
- okLCH versions of these hues are defined behind an @supports rule below. */
15
-
49
+
50
+ /* -----------------------------------------------------------------------------
51
+ // Color component scales - standardized variations of each color component
52
+ // -------------------------------------------------------------------------- */
53
+
54
+ /* Palette Hues (HSL) - brand-consistent hues - range: [0, 360]
55
+ // .......................................................................... */
16
56
  --red: 4; /* dark red / error color / secondary */
17
- --brown: 20;
18
- --orange: 30;
57
+ --brown: 20;
58
+ --orange: 30;
19
59
  --yellow: 55; /* warning color */
20
- --lime: 80;
60
+ --lime: 80;
21
61
  --green: 100; /* success color */
22
- --aqua: 160;
23
- --cyan: 175;
24
- --azure: 190;
62
+ --aqua: 160;
63
+ --cyan: 175;
64
+ --azure: 190;
25
65
  --blue: 210; /* slate blue / info color / primary */
26
- --indigo: 260;
27
- --purple: 270;
28
- --violet: 280;
29
- --magenta: 300;
30
- --pink: 330;
31
-
66
+ --indigo: 260;
67
+ --purple: 270;
68
+ --violet: 280;
69
+ --magenta: 300;
70
+ --pink: 330;
32
71
 
72
+
73
+ /* Saturation scale (HSL) - range: [0%, 100%]
74
+ // .......................................................................... */
75
+ --s0: 0%;
76
+ --s4: 40%; /* less saturated */
77
+ --s5: 55%; /* default saturation level */
78
+ --s6: 60%;
79
+ --s7: 70%; /* more saturated */
80
+ --s8: 80%;
81
+ --s9: 90%;
82
+ --s10: 100%; /* completely saturated */
83
+
84
+
85
+ /* Lightness scale */
86
+ --l1: 99.9%;
87
+ --l5: 99%;
88
+ --l10: 96%;
89
+ --l15: 92%; /* brighten */
90
+ --l20: 90%;
91
+ --l25: 85%;
92
+ --l30: 80%;
93
+ --l35: 75%;
94
+ --l40: 70%;
95
+ --l45: 67%; /* lighten */
96
+ --l50: 60%; /* default */
97
+ --l54: 53%;
98
+ --l55: 52%; /* darken */
99
+ --l60: 50%;
100
+ --l65: 45%;
101
+ --l70: 40%;
102
+ --l75: 35%;
103
+ --l80: 30%;
104
+ --l85: 25%;
105
+ --l90: 20%;
106
+ --l95: 10%;
107
+ --l99: 5%;
108
+
109
+
110
+ /* Transparency (alpha) scale - range: [0, 1] or [0%, 100%] */
111
+ --a0: 0.05; /* more transparent */
112
+ --a1: 0.1; /* default for nearly transparent bg's */
113
+ --a2: 0.2;
114
+
115
+
33
116
  /* Theme Hues - map the above hues to a palette order here, with primary being
34
117
  first, secondary being second, etc., to palettize your theme. You can pick
35
118
  hues as primary, secondary, etc. or use complementary colors based off the
@@ -43,174 +126,155 @@
43
126
  --7th: var(--purple);
44
127
  --8th: var(--magenta);
45
128
  --9th: var(--pink);
46
-
129
+
47
130
  /* programmatically specified colors based off primary - EXPERIMENTAL */
48
131
  --complement: calc(var(--1st) + 180); /* also a tetrad */
49
132
  --triad: calc(var(--1st) + 120);
50
133
  --cotriad: calc(var(--1st) + 240);
51
134
  --tetrad: calc(var(--1st) + 90);
52
135
  --cotetrad: calc(var(--1st) + 270);
53
-
54
- /* HSL saturations - range: [0%, 100%] */
55
- --s4: 40%; /* less saturated */
56
- --s5: 55%; /* default saturation level */
57
- --s7: 70%; /* more saturated */
58
- --s10: 100%; /* completely saturated */
59
-
60
- /* HSL lightnesses - range: [0%, 100%] */
61
- --l4: 40%; /* darker lightness */
62
- --l5: 45%; /* default lightness level */
63
- --l6: 50%; /* lighter lightness */
64
- --l7: 67%;
65
-
66
- /* Alpha transparency values - range: [0, 1] or [0%, 100%] */
67
- --a0: 0.05; /* more transparent */
68
- --a1: 0.1; /* default for nearly transparent bg's */
69
- --a2: 0.2;
70
-
71
-
72
- /* Named flash/form message colors - highlights are more extreme & lowlights
73
- less extreme versions of the base color, relative to the color scheme */
74
- --error: hsl(var(--red) 100% 43%);
75
- --error-high: hsl(var(--red) 100% 80%);
76
- --error-low: hsl(var(--red) 60% 38%);
77
- --bg-error: hsl(var(--red) 60% 92%);
78
-
79
- --warning: hsl(var(--yellow) 100% 40%);
80
- --warning-high: hsl(var(--yellow) 100% 47%);
81
- --warning-low: hsl(var(--yellow) 60% 40%);
82
- --bg-warning: hsl(var(--yellow) 60% 92%);
83
-
84
- --success: hsl(var(--green) 100% 35%);
85
- --success-high: hsl(var(--green) 100% 45%);
86
- --success-low: hsl(var(--green) 60% 25%);
87
- --bg-success: hsl(var(--green) 60% 92%);
88
-
89
- --info: hsl(var(--blue) 100% 45%);
90
- --info-high: hsl(var(--blue) 100% 65%);
91
- --info-low: hsl(var(--blue) 60% 35%);
92
- --bg-info: hsl(var(--blue) 60% 92%);
93
-
94
- /* Named (icon) state colors - highlights are more extreme & lowlights
95
- less extreme versions of the base color, relative to the color scheme */
96
-
97
- --valid: hsl(var(--green) 70% 30%);
98
- --valid-high: hsl(var(--green) 80% 40%);
99
- --valid-low: hsl(var(--green) 70% 25%);
100
- --bg-valid: hsl(var(--green) 60% 92%);
101
-
102
- --invalid: hsl(var(--red) 80% 35%);
103
- --invalid-high: hsl(var(--red) 90% 42%);
104
- --invalid-low: hsl(var(--red) 70% 30%);
105
- --bg-invalid: hsl(var(--red) 60% 92%);
106
-
107
- --unknown: hsl(var(--yellow) 100% 40%);
108
- --unknown-high: hsl(var(--yellow) 100% 47%);
109
- --unknown-low: hsl(var(--yellow) 60% 40%);
110
- --bg-unknown: hsl(var(--yellow) 60% 92%);
111
-
112
-
113
- /* Neutrals / Grayscale - use the black/white keywords for pure black/white.
114
- we have two extra levels at each of the scale for greater flexibility in
115
- developing shadows and highlights */
116
- --10: hsl(0 0% 99%); /* effectively white */
117
- --50: hsl(0 0% 97%);
118
- --100: hsl(0 0% 95%);
119
- --200: hsl(0 0% 86%);
120
- --300: hsl(0 0% 77%);
121
- --400: hsl(0 0% 68%);
122
- --500: hsl(0 0% 59%);
123
- --neutral: hsl(0 0% 50%);
124
- --600: hsl(0 0% 41%);
125
- --700: hsl(0 0% 32%);
126
- --800: hsl(0 0% 23%);
127
- --900: hsl(0 0% 16%);
128
- --950: hsl(0 0% 10%);
129
- --990: hsl(0 0% 5%); /* effectively black */
130
-
131
- /* Primary colors */
132
- --primary: hsl(var(--1st) var(--s5) var(--l5));
133
- --secondary: hsl(var(--2nd) var(--s5) var(--l5));
134
- --tertiary: hsl(var(--3rd) var(--s5) var(--l5));
135
-
136
- /* Complementary colors */
137
- --complementary: hsl(var(--complement) var(--s5) var(--l5));
138
- --triadic: hsl(var(--triad) var(--s5) var(--l5));
139
- --cotriadic: hsl(var(--cotriad) var(--s5) var(--l5));
140
- --tetradic: hsl(var(--tetrad) var(--s5) var(--l5));
141
- --cotetradic: hsl(var(--cotetrad) var(--s5) var(--l5));
142
-
143
-
136
+
137
+ /* Primary colors (HSL) */
138
+ --primary: hsl(var(--1st) var(--s5) var(--l65));
139
+ --secondary: hsl(var(--2nd) var(--s5) var(--l65));
140
+ --tertiary: hsl(var(--3rd) var(--s5) var(--l65));
141
+ --quaternary: hsl(var(--4th) var(--s5) var(--l65));
142
+ --quinary: hsl(var(--5th) var(--s5) var(--l65));
143
+ --senary: hsl(var(--6th) var(--s5) var(--l65));
144
+ --septenary: hsl(var(--7th) var(--s5) var(--l65));
145
+ --octonary: hsl(var(--8th) var(--s5) var(--l65));
146
+ --nonary: hsl(var(--9th) var(--s5) var(--l65));
147
+
148
+ --complementary: hsl(var(--complement) var(--s5) var(--l65));
149
+ --triadic: hsl(var(--triad) var(--s5) var(--l65));
150
+ --cotriadic: hsl(var(--cotriad) var(--s5) var(--l65));
151
+ --tetradic: hsl(var(--tetrad) var(--s5) var(--l65));
152
+ --cotetradic: hsl(var(--cotetrad) var(--s5) var(--l65));
153
+
154
+
144
155
  /* Color scales */
145
156
  /* HSL is not perceptually uniform, so using the same S & L values won't
146
157
  provide natural cohesiveness to these generated colors as LCH would. */
147
- --primary-100: hsl(var(--1st) var(--s5) 96%);
148
- --primary-200: hsl(var(--1st) var(--s5) 90%);
149
- --primary-300: hsl(var(--1st) var(--s5) 80%);
150
- --primary-400: hsl(var(--1st) var(--s5) 70%);
151
- --primary-500: hsl(var(--1st) var(--s5) 60%);
152
- --primary-600: hsl(var(--1st) var(--s5) 50%);
153
- --primary-700: hsl(var(--1st) var(--s5) 40%);
154
- --primary-800: hsl(var(--1st) var(--s5) 30%);
155
- --primary-900: hsl(var(--1st) var(--s5) 20%);
156
- --primary-950: hsl(var(--1st) var(--s5) 10%);
157
- --primary-bright: hsl(var(--1st) var(--s7) var(--l4));
158
- --primary-transparent: hsl(var(--1st) var(--s5) var(--l5) / var(--a1));
159
-
158
+ --primary-100: hsl(var(--1st) var(--s5) var(--l10));
159
+ --primary-200: hsl(var(--1st) var(--s5) var(--l20));
160
+ --primary-300: hsl(var(--1st) var(--s5) var(--l30));
161
+ --primary-400: hsl(var(--1st) var(--s5) var(--l40));
162
+ --primary-500: hsl(var(--1st) var(--s5) var(--l50));
163
+ --primary-600: hsl(var(--1st) var(--s5) var(--l60));
164
+ --primary-700: hsl(var(--1st) var(--s5) var(--l70));
165
+ --primary-800: hsl(var(--1st) var(--s5) var(--l80));
166
+ --primary-900: hsl(var(--1st) var(--s5) var(--l90));
167
+ --primary-950: hsl(var(--1st) var(--s5) var(--l95));
168
+ --primary-bright: hsl(var(--1st) var(--s7) var(--l70));
169
+ --primary-transparent: hsl(var(--1st) var(--s5) var(--l65) / var(--a1));
170
+
160
171
  /* Complementary color */
161
- --complementary-100: hsl(var(--complement) var(--s5) 96%);
162
- --complementary-200: hsl(var(--complement) var(--s5) 90%);
163
- --complementary-300: hsl(var(--complement) var(--s5) 80%);
164
- --complementary-400: hsl(var(--complement) var(--s5) 70%);
165
- --complementary-500: hsl(var(--complement) var(--s5) 60%);
166
- --complementary-600: hsl(var(--complement) var(--s5) 50%);
167
- --complementary-700: hsl(var(--complement) var(--s5) 40%);
168
- --complementary-800: hsl(var(--complement) var(--s5) 30%);
169
- --complementary-900: hsl(var(--complement) var(--s5) 20%);
172
+ --complementary-100: hsl(var(--complement) var(--s5) var(--l10));
173
+ --complementary-200: hsl(var(--complement) var(--s5) var(--l20));
174
+ --complementary-300: hsl(var(--complement) var(--s5) var(--l30));
175
+ --complementary-400: hsl(var(--complement) var(--s5) var(--l40));
176
+ --complementary-500: hsl(var(--complement) var(--s5) var(--l50));
177
+ --complementary-600: hsl(var(--complement) var(--s5) var(--l60));
178
+ --complementary-700: hsl(var(--complement) var(--s5) var(--l70));
179
+ --complementary-800: hsl(var(--complement) var(--s5) var(--l80));
180
+ --complementary-900: hsl(var(--complement) var(--s5) var(--l90));
170
181
 
171
182
  /* Secondary color */
172
- --secondary-100: hsl(var(--2nd) var(--s5) 96%);
173
- --secondary-200: hsl(var(--2nd) var(--s5) 90%);
174
- --secondary-300: hsl(var(--2nd) var(--s5) 80%);
175
- --secondary-400: hsl(var(--2nd) var(--s5) 70%);
176
- --secondary-500: hsl(var(--2nd) var(--s5) 60%);
177
- --secondary-600: hsl(var(--2nd) var(--s5) 50%);
178
- --secondary-700: hsl(var(--2nd) var(--s5) 40%);
179
- --secondary-800: hsl(var(--2nd) var(--s5) 30%);
180
- --secondary-900: hsl(var(--2nd) var(--s5) 20%);
181
- --secondary-bright: hsl(var(--2nd) var(--s7) var(--l4));
183
+ --secondary-100: hsl(var(--2nd) var(--s5) var(--l10));
184
+ --secondary-200: hsl(var(--2nd) var(--s5) var(--l20));
185
+ --secondary-300: hsl(var(--2nd) var(--s5) var(--l30));
186
+ --secondary-400: hsl(var(--2nd) var(--s5) var(--l40));
187
+ --secondary-500: hsl(var(--2nd) var(--s5) var(--l50));
188
+ --secondary-600: hsl(var(--2nd) var(--s5) var(--l60));
189
+ --secondary-700: hsl(var(--2nd) var(--s5) var(--l70));
190
+ --secondary-800: hsl(var(--2nd) var(--s5) var(--l80));
191
+ --secondary-900: hsl(var(--2nd) var(--s5) var(--l90));
192
+ --secondary-bright: hsl(var(--2nd) var(--s7) var(--l70));
193
+
194
+
195
+ /* Neutrals / Grayscale - use the black/white keywords for pure black/white.
196
+ we have two extra levels at each of the scale for greater flexibility in
197
+ developing shadows and highlights */
198
+ --10: hsl( 0 var(--s0) 99% ); /* effectively white */
199
+ --50: hsl( 0 var(--s0) 97% );
200
+ --100: hsl( 0 var(--s0) 95% );
201
+ --200: hsl( 0 var(--s0) 86% );
202
+ --300: hsl( 0 var(--s0) 77% );
203
+ --400: hsl( 0 var(--s0) 68% );
204
+ --500: hsl( 0 var(--s0) 59% );
205
+ --neutral: hsl( 0 var(--s0) 50% );
206
+ --600: hsl( 0 var(--s0) 41% );
207
+ --700: hsl( 0 var(--s0) 32% );
208
+ --800: hsl( 0 var(--s0) 23% );
209
+ --900: hsl( 0 var(--s0) 16% );
210
+ --950: hsl( 0 var(--s0) 10% );
211
+ --990: hsl( 0 var(--s0) 5% ); /* effectively black */
212
+
213
+
214
+ /* Named flash/form message colors - highlights are more extreme & lowlights
215
+ less extreme versions of the base color, relative to the color scheme */
216
+ --error: hsl(var(--red) var(--s10) var(--l40)); /* 43% */
217
+ --error-high: hsl(var(--red) var(--s10) var(--l80)); /* 80% */
218
+ --error-low: hsl(var(--red) var(--s6) var(--l30)); /* 38% */
219
+ --bg-error: hsl(var(--red) var(--s6) var(--l90)); /* 92% */
220
+
221
+ --warning: hsl(var(--yellow) var(--s10) var(--l40)); /* 40% */
222
+ --warning-high: hsl(var(--yellow) var(--s10) var(--l50)); /* 47% */
223
+ --warning-low: hsl(var(--yellow) var(--s6) var(--l40)); /* 40% */
224
+ --bg-warning: hsl(var(--yellow) var(--s6) var(--l90)); /* 92% */
225
+
226
+ --success: hsl(var(--green) var(--s10) var(--l35)); /* 35% */
227
+ --success-high: hsl(var(--green) var(--s10) var(--l45)); /* 45% */
228
+ --success-low: hsl(var(--green) var(--s6) var(--l25)); /* 25% */
229
+ --bg-success: hsl(var(--green) var(--s6) var(--l90)); /* 92% */
230
+
231
+ --info: hsl(var(--blue) var(--s10) var(--l45)); /* 45% */
232
+ --info-high: hsl(var(--blue) var(--s10) var(--l65)); /* 65% */
233
+ --info-low: hsl(var(--blue) var(--s6) var(--l35)); /* 35% */
234
+ --bg-info: hsl(var(--blue) var(--s6) var(--l90)); /* 92% */
235
+
236
+ /* Named (icon) state colors - highlights are more extreme & lowlights
237
+ less extreme versions of the base color, relative to the color scheme */
238
+
239
+ --valid: hsl(var(--green) var(--s7) var(--l30)); /* 30% */
240
+ --valid-high: hsl(var(--green) var(--s8) var(--l40)); /* 40% */
241
+ --valid-low: hsl(var(--green) var(--s7) var(--l25)); /* 25% */
242
+ --bg-valid: hsl(var(--green) var(--s6) var(--l90)); /* 92% */
243
+
244
+ --invalid: hsl(var(--red) var(--s8) var(--l35)); /* 35% */
245
+ --invalid-high: hsl(var(--red) var(--s9) var(--l40)); /* 42% */
246
+ --invalid-low: hsl(var(--red) var(--s7) var(--l30)); /* 30% */
247
+ --bg-invalid: hsl(var(--red) var(--s6) var(--l90)); /* 92% */
248
+
249
+ --unknown: hsl(var(--yellow) var(--s10) var(--l40)); /* 40% */
250
+ --unknown-high: hsl(var(--yellow) var(--s10) var(--l45)); /* 47% */
251
+ --unknown-low: hsl(var(--yellow) var(--s6) var(--l40)); /* 40% */
252
+ --bg-unknown: hsl(var(--yellow) var(--s6) var(--l90)); /* 92% */
253
+
182
254
  }
183
255
 
184
- /* INCOMPLETE - LCH version for browsers that support it - safari only for now*/
256
+ /* okLCH version for browsers that support it - chrome/safari only for now */
185
257
  @supports (color: oklch(1% 1 1)) {
186
258
  :root {
259
+
260
+ /* okLCH hues */
187
261
  --red: 26; /* dark red / error color */
188
262
  --brown: 45;
189
263
  --orange: 63;
190
264
  --yellow: 104; /* warning color */
191
- --lime: 126;
265
+ --lime: 126;
192
266
  --green: 137; /* success color */
193
- --aqua: 190;
194
- --cyan: 205;
195
- --azure: 214;
267
+ --aqua: 190;
268
+ --cyan: 205;
269
+ --azure: 214;
196
270
  --blue: 251; /* slate blue / info / default primary*/
197
- --indigo: 292;
198
- --purple: 302;
199
- --violet: 312;
200
- --magenta: 328;
201
- --pink: 354;
202
-
203
- /* useful chroma in LCH is ~[0, 150]; in OKLCH, it's ~[0, 0.4] - percentages
204
- would clamp chroma to these ranges, but is not yet implemented in safari */
205
- --dullest: 0.05;
206
- --duller: 0.08;
207
- --dull: 0.10;
208
- --chroma: 0.12; /* default */
209
- --rich: 0.15;
210
- --richer: 0.18;
211
- --richest: 0.23;
212
-
213
- /* chroma scale */
271
+ --indigo: 292;
272
+ --purple: 302;
273
+ --violet: 312;
274
+ --magenta: 328;
275
+ --pink: 354;
276
+
277
+ /* okLCH chroma scale */
214
278
  --c0: 0.010;
215
279
  --c1: 0.030;
216
280
  --c2: 0.050; /* dullest */
@@ -221,41 +285,10 @@
221
285
  --c7: 0.180; /* richer */
222
286
  --c8: 0.190;
223
287
  --c9: 0.230; /* richest */
224
-
225
- /* lightness in LCH ranges [0, 100]; in OKLCH, it's [0, 1.0] - percentages
226
- will clamp lightness to these ranges, and is implemented in safari */
227
- --darken: 52%;
228
- --lightness: 60%; /* default */
229
- --lighten: 67%;
230
- --brighten: 92%;
231
-
232
- /* lightness scale for deriving primary color scales */
233
- --l1: 99.9%;
234
- --l5: 99%;
235
- --l10: 96%;
236
- --l15: 92%; /* brighten */
237
- --l20: 90%;
238
- --l25: 85%;
239
- --l30: 80%;
240
- --l40: 70%;
241
- --l45: 67%; /* lighten */
242
- --l50: 60%; /* default */
243
- --l54: 53%;
244
- --l55: 52%; /* darken */
245
- --l60: 50%;
246
- --l65: 45%;
247
- --l70: 40%;
248
- --l80: 30%;
249
- --l90: 20%;
250
- --l95: 10%;
251
- --l99: 5%;
252
-
253
-
254
- /* Base Color Palette - no need for color scales with okLCH since it's support
255
- implies support for CSS relative colors, so variations can be created on
256
- the fly */
288
+
289
+ /* Primary colors (okLCH) */
257
290
  --primary: oklch(var(--l60) var(--c4) var(--1st));
258
- --secondary: oklch(var(--l54) var(--c7) var(--2nd));
291
+ --secondary: oklch(var(--l54) var(--c6) var(--2nd));
259
292
  --tertiary: oklch(var(--l50) var(--c5) var(--3rd));
260
293
  --quaternary: oklch(var(--l50) var(--c6) var(--4th));
261
294
  --quinary: oklch(var(--l50) var(--c7) var(--5th));
@@ -263,13 +296,16 @@
263
296
  --septenary: oklch(var(--l50) var(--c5) var(--7th));
264
297
  --octonary: oklch(var(--l50) var(--c6) var(--8th));
265
298
  --nonary: oklch(var(--l50) var(--c7) var(--9th));
266
-
299
+
300
+ /* Complementary colors (okLCH) */
267
301
  --complementary: oklch(var(--l50) var(--c7) var(--complement) );
268
302
  --triadic: oklch(var(--l50) var(--c7) var(--triad) );
269
303
  --cotriadic: oklch(var(--l50) var(--c7) var(--cotriad) );
270
304
  --tetradic: oklch(var(--l50) var(--c7) var(--tetrad) );
271
305
  --cotetradic: oklch(var(--l50) var(--c7) var(--cotetrad) );
272
306
 
307
+ /* Color scales - with relative colors, we shouldn't need color scales; just
308
+ apply the desired lightness, chroma, alpha scale value to the base color */
273
309
  --primary-100: oklch(var(--l20) var(--c2) var(--1st));
274
310
  --primary-200: oklch(var(--l25) var(--c4) var(--1st));
275
311
  --primary-300: oklch(var(--l40) var(--c4) var(--1st));
@@ -281,50 +317,97 @@
281
317
  --primary-900: oklch(var(--l90) var(--c4) var(--1st));
282
318
  --primary-bright: oklch(var(--l55) var(--c6) var(--1st));
283
319
  --primary-transparent: oklch(var(--l60) var(--c6) var(--1st) / var(--a2));
284
-
320
+
285
321
  /* CSS Color Level 5 Relative Color Syntax not supported in firefox yet,
286
322
  see: https://bugzilla.mozilla.org/show_bug.cgi?id=1701488 */
287
- /*--primary-transparent: oklch(from var(--primary) l var(--c6) h / var(--a1));*/
288
-
289
-
323
+ /*--primary-transparent: oklch(from var(--primary) l var(--c6) h / var(--a1));*/
324
+
325
+
326
+ /* Secondary color (okLCH) - brand color differentiated from primary */
327
+ --secondary-100: oklch(var(--l10) var(--c4) var(--2nd));
328
+ --secondary-200: oklch(var(--l20) var(--c4) var(--2nd));
329
+ --secondary-300: oklch(var(--l30) var(--c4) var(--2nd));
330
+ --secondary-400: oklch(var(--l40) var(--c4) var(--2nd));
331
+ --secondary-500: oklch(var(--l50) var(--c4) var(--2nd));
332
+ --secondary-600: oklch(var(--l60) var(--c4) var(--2nd));
333
+ --secondary-700: oklch(var(--l70) var(--c4) var(--2nd));
334
+ --secondary-800: oklch(var(--l80) var(--c4) var(--2nd));
335
+ --secondary-900: oklch(var(--l90) var(--c4) var(--2nd));
336
+ --secondary-bright: oklch(var(--l55) var(--c6) var(--2nd));
337
+ --secondary-transparent:oklch(var(--l30) var(--c6) var(--2nd) / var(--a2));
338
+
339
+
340
+ /* Complementary color (okLCH) - meant to be used next to primary */
341
+ --complementary-100: oklch(var(--l20) var(--c2) var(--complement));
342
+ --complementary-200: oklch(var(--l25) var(--c4) var(--complement));
343
+ --complementary-300: oklch(var(--l40) var(--c4) var(--complement));
344
+ --complementary-400: oklch(var(--l50) var(--c4) var(--complement));
345
+ --complementary-500: oklch(var(--l55) var(--c4) var(--complement));
346
+ --complementary-600: oklch(var(--l65) var(--c4) var(--complement));
347
+ --complementary-700: oklch(var(--l70) var(--c4) var(--complement));
348
+ --complementary-800: oklch(var(--l80) var(--c4) var(--complement));
349
+ --complementary-900: oklch(var(--l90) var(--c4) var(--complement));
350
+ --complementary-bright: oklch(var(--l55) var(--c6) var(--complement));
351
+ --complementary-transparent:oklch(var(--l55) var(--c6) var(--complement) / var(--a2));
352
+
353
+
354
+ /* Neutrals / Grayscale */
355
+ --10: oklch(var(--l1) 0 0); /* nearly white */
356
+ --50: oklch(var(--l5) 0 0);
357
+ --100: oklch(var(--l10) 0 0);
358
+ --200: oklch(var(--l20) 0 0);
359
+ --300: oklch(var(--l30) 0 0);
360
+ --400: oklch(var(--l40) 0 0);
361
+ --500: oklch(var(--l50) 0 0);
362
+ --neutral: oklch(var(--l50) 0 0);
363
+ --600: oklch(var(--l60) 0 0);
364
+ --700: oklch(var(--l70) 0 0);
365
+ --800: oklch(var(--l80) 0 0);
366
+ --900: oklch(var(--l90) 0 0);
367
+ --950: oklch(var(--l95) 0 0);
368
+ --990: oklch(var(--l99) 0 0); /* nearly black */
369
+
290
370
  /* Named flash/form message colors - highlights are more extreme & lowlights
291
371
  less extreme versions of the base color, relative to the color scheme */
292
372
  --info: oklch(var(--l50) var(--c5) var(--blue));
293
373
  --info-high: oklch(var(--l45) var(--c5) var(--blue));
294
374
  --info-low: oklch(var(--l55) var(--c6) var(--blue));
295
375
  --bg-info: oklch(var(--l15) var(--c3) var(--blue));
296
-
376
+
297
377
  --success: oklch(var(--l50) var(--c6) var(--green));
298
378
  --success-high: oklch(var(--l45) var(--c6) var(--green));
299
379
  --success-low: oklch(var(--l55) var(--c6) var(--green));
300
380
  --bg-success: oklch(var(--l15) var(--c3) var(--green));
301
-
381
+
302
382
  --warning: oklch(var(--l50) var(--c5) var(--yellow));
303
383
  --warning-high: oklch(var(--l45) var(--c5) var(--yellow));
304
384
  --warning-low: oklch(var(--l55) var(--c5) var(--yellow));
305
385
  --bg-warning: oklch(var(--l15) var(--c3) var(--yellow));
306
-
386
+
307
387
  --error: oklch(var(--l50) var(--c4) var(--red));
308
388
  --error-high: oklch(var(--l45) var(--c5) var(--red));
309
389
  --error-low: oklch(var(--l55) var(--c5) var(--red));
310
390
  --bg-error: oklch(var(--l15) var(--c3) var(--red));
311
-
312
- /* Neutrals / Grayscale */
313
- --10: oklch(var(--l1) 0 0); /* nearly white */
314
- --50: oklch(var(--l5) 0 0);
315
- --100: oklch(var(--l10) 0 0);
316
- --200: oklch(var(--l20) 0 0);
317
- --300: oklch(var(--l30) 0 0);
318
- --400: oklch(var(--l40) 0 0);
319
- --500: oklch(var(--l50) 0 0);
320
- --neutral: oklch(var(--l50) 0 0);
321
- --600: oklch(var(--l60) 0 0);
322
- --700: oklch(var(--l70) 0 0);
323
- --800: oklch(var(--l80) 0 0);
324
- --900: oklch(var(--l90) 0 0);
325
- --950: oklch(var(--l95) 0 0);
326
- --990: oklch(var(--l99) 0 0); /* nearly black */
327
-
391
+
392
+
393
+ /* Named (icon) state colors - highlights are more extreme & lowlights
394
+ less extreme versions of the base color, relative to the color scheme */
395
+
396
+ --valid: oklch(var(--l55) var(--c7) var(--green));
397
+ --valid-high: oklch(var(--l45) var(--c8) var(--green));
398
+ --valid-low: oklch(var(--l55) var(--c6) var(--green));
399
+ --bg-valid: oklch(var(--l65) var(--c9) var(--green));
400
+
401
+ --invalid: oklch(var(--l55) var(--c5) var(--red));
402
+ --invalid-high: oklch(var(--l45) var(--c6) var(--red));
403
+ --invalid-low: oklch(var(--l65) var(--c4) var(--red));
404
+ --bg-invalid: oklch(var(--l75) var(--c8) var(--red));
405
+
406
+ --unknown: oklch(var(--l20) var(--c6) var(--yellow));
407
+ --unknown-high: oklch(var(--l20) var(--c7) var(--yellow));
408
+ --unknown-low: oklch(var(--l60) var(--c5) var(--yellow));
409
+ --bg-unknown: oklch(var(--l60) var(--c9) var(--yellow));
410
+
328
411
  }}
329
412
 
330
413