@nonoun/native-tokens 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1981 @@
1
+ @layer colors, tokens, ui;
2
+
3
+ /* ================================================================
4
+ nonoun-css Design Tokens — Color System
5
+
6
+ Naming convention:
7
+ --{family}-* color primitives (elevation, ramp steps, scrims)
8
+ --n-C-*, --n-L-* intermediate color math (chroma, lightness)
9
+
10
+ 11-step scale: 050 100 200 300 400 500 600 700 800 900 950
11
+ Anchor at 500 (peak chroma). Symmetric about anchor.
12
+ Lightness uses an internal 13-step ramp, skipping steps 1 and 13,
13
+ so 050 never reaches pure white and 950 never reaches pure black.
14
+ ================================================================ */
15
+
16
+ @layer colors {
17
+ :root {
18
+ color-scheme: light dark;
19
+
20
+ /* ── Environment parameters (9 knobs) ── */
21
+
22
+ --n-env-lightness-min: 0.1500;
23
+ --n-env-lightness-max: 1.0000;
24
+ --n-env-lightness-delta: 0.0150;
25
+
26
+ --n-env-chroma: 0.2000;
27
+ --n-env-chroma-k-muted: 0.1250;
28
+ --n-env-chroma-k-vivid: 1.0000;
29
+ --n-env-chroma-k-edge: 0.0500;
30
+
31
+ --n-env-alpha: 0.8500;
32
+ --n-env-alpha-delta: 0.0200;
33
+
34
+ /* ── Family definitions ── */
35
+
36
+ --n-env-hue-neutral: 230;
37
+ --n-env-chroma-neutral: 0.125;
38
+ --n-env-lightness-neutral: 0.50;
39
+
40
+ --n-env-hue-accent: 230;
41
+ --n-env-chroma-accent: 1.0;
42
+ --n-env-lightness-accent: 0.60;
43
+
44
+ --n-env-hue-info: 250;
45
+ --n-env-chroma-info: 0.60;
46
+ --n-env-lightness-info: 0.60;
47
+
48
+ --n-env-hue-success: 150;
49
+ --n-env-chroma-success: 0.75;
50
+ --n-env-lightness-success: 0.55;
51
+
52
+ --n-env-hue-warning: 80;
53
+ --n-env-chroma-warning: 0.95;
54
+ --n-env-lightness-warning: 0.75;
55
+
56
+ --n-env-hue-danger: 20;
57
+ --n-env-chroma-danger: 0.85;
58
+ --n-env-lightness-danger: 0.50;
59
+
60
+ /* ── Chroma interpolation coefficients (env-C baked in) ──
61
+ 6 coefficients: t-0 (edge) → t-5 (vivid), linear lerp.
62
+ Symmetric mapping:
63
+ 050,950 = t-0 100,900 = t-1 200,800 = t-2
64
+ 300,700 = t-3 400,600 = t-4 500 = t-5
65
+ */
66
+
67
+ --n-C-t-0: calc(var(--n-env-chroma) * var(--n-env-chroma-k-edge));
68
+ --n-C-t-1: calc(var(--n-env-chroma) * (4 / 5 * var(--n-env-chroma-k-edge) + 1 / 5 * var(--n-env-chroma-k-vivid)));
69
+ --n-C-t-2: calc(var(--n-env-chroma) * (3 / 5 * var(--n-env-chroma-k-edge) + 2 / 5 * var(--n-env-chroma-k-vivid)));
70
+ --n-C-t-3: calc(var(--n-env-chroma) * (2 / 5 * var(--n-env-chroma-k-edge) + 3 / 5 * var(--n-env-chroma-k-vivid)));
71
+ --n-C-t-4: calc(var(--n-env-chroma) * (1 / 5 * var(--n-env-chroma-k-edge) + 4 / 5 * var(--n-env-chroma-k-vivid)));
72
+ --n-C-t-5: calc(var(--n-env-chroma) * var(--n-env-chroma-k-vivid));
73
+
74
+ /* ── Computed chroma: muted (flat, for backgrounds) ── */
75
+
76
+ --n-C-muted: calc(var(--n-env-chroma) * var(--n-env-chroma-k-muted));
77
+
78
+ --n-C-neutral-muted: calc(var(--n-C-muted) * var(--n-env-chroma-neutral));
79
+ --n-C-accent-muted: calc(var(--n-C-muted) * var(--n-env-chroma-accent));
80
+ --n-C-info-muted: calc(var(--n-C-muted) * var(--n-env-chroma-info));
81
+ --n-C-success-muted: calc(var(--n-C-muted) * var(--n-env-chroma-success));
82
+ --n-C-warning-muted: calc(var(--n-C-muted) * var(--n-env-chroma-warning));
83
+ --n-C-danger-muted: calc(var(--n-C-muted) * var(--n-env-chroma-danger));
84
+
85
+ /* ── Per-step chroma for solids (11 steps per family) ──
86
+ C(n) = C-t-{i} × {family}-chroma
87
+ Symmetric: 050,950=t-0 100,900=t-1 200,800=t-2 300,700=t-3 400,600=t-4 500=t-5
88
+ */
89
+
90
+ --n-C-neutral-1: calc(var(--n-C-t-0) * var(--n-env-chroma-neutral));
91
+ --n-C-neutral-2: calc(var(--n-C-t-1) * var(--n-env-chroma-neutral));
92
+ --n-C-neutral-3: calc(var(--n-C-t-2) * var(--n-env-chroma-neutral));
93
+ --n-C-neutral-4: calc(var(--n-C-t-3) * var(--n-env-chroma-neutral));
94
+ --n-C-neutral-5: calc(var(--n-C-t-4) * var(--n-env-chroma-neutral));
95
+ --n-C-neutral-6: calc(var(--n-C-t-5) * var(--n-env-chroma-neutral));
96
+ --n-C-neutral-7: calc(var(--n-C-t-4) * var(--n-env-chroma-neutral));
97
+ --n-C-neutral-8: calc(var(--n-C-t-3) * var(--n-env-chroma-neutral));
98
+ --n-C-neutral-9: calc(var(--n-C-t-2) * var(--n-env-chroma-neutral));
99
+ --n-C-neutral-10: calc(var(--n-C-t-1) * var(--n-env-chroma-neutral));
100
+ --n-C-neutral-11: calc(var(--n-C-t-0) * var(--n-env-chroma-neutral));
101
+
102
+ --n-C-accent-1: calc(var(--n-C-t-0) * var(--n-env-chroma-accent));
103
+ --n-C-accent-2: calc(var(--n-C-t-1) * var(--n-env-chroma-accent));
104
+ --n-C-accent-3: calc(var(--n-C-t-2) * var(--n-env-chroma-accent));
105
+ --n-C-accent-4: calc(var(--n-C-t-3) * var(--n-env-chroma-accent));
106
+ --n-C-accent-5: calc(var(--n-C-t-4) * var(--n-env-chroma-accent));
107
+ --n-C-accent-6: calc(var(--n-C-t-5) * var(--n-env-chroma-accent));
108
+ --n-C-accent-7: calc(var(--n-C-t-4) * var(--n-env-chroma-accent));
109
+ --n-C-accent-8: calc(var(--n-C-t-3) * var(--n-env-chroma-accent));
110
+ --n-C-accent-9: calc(var(--n-C-t-2) * var(--n-env-chroma-accent));
111
+ --n-C-accent-10: calc(var(--n-C-t-1) * var(--n-env-chroma-accent));
112
+ --n-C-accent-11: calc(var(--n-C-t-0) * var(--n-env-chroma-accent));
113
+
114
+ --n-C-info-1: calc(var(--n-C-t-0) * var(--n-env-chroma-info));
115
+ --n-C-info-2: calc(var(--n-C-t-1) * var(--n-env-chroma-info));
116
+ --n-C-info-3: calc(var(--n-C-t-2) * var(--n-env-chroma-info));
117
+ --n-C-info-4: calc(var(--n-C-t-3) * var(--n-env-chroma-info));
118
+ --n-C-info-5: calc(var(--n-C-t-4) * var(--n-env-chroma-info));
119
+ --n-C-info-6: calc(var(--n-C-t-5) * var(--n-env-chroma-info));
120
+ --n-C-info-7: calc(var(--n-C-t-4) * var(--n-env-chroma-info));
121
+ --n-C-info-8: calc(var(--n-C-t-3) * var(--n-env-chroma-info));
122
+ --n-C-info-9: calc(var(--n-C-t-2) * var(--n-env-chroma-info));
123
+ --n-C-info-10: calc(var(--n-C-t-1) * var(--n-env-chroma-info));
124
+ --n-C-info-11: calc(var(--n-C-t-0) * var(--n-env-chroma-info));
125
+
126
+ --n-C-success-1: calc(var(--n-C-t-0) * var(--n-env-chroma-success));
127
+ --n-C-success-2: calc(var(--n-C-t-1) * var(--n-env-chroma-success));
128
+ --n-C-success-3: calc(var(--n-C-t-2) * var(--n-env-chroma-success));
129
+ --n-C-success-4: calc(var(--n-C-t-3) * var(--n-env-chroma-success));
130
+ --n-C-success-5: calc(var(--n-C-t-4) * var(--n-env-chroma-success));
131
+ --n-C-success-6: calc(var(--n-C-t-5) * var(--n-env-chroma-success));
132
+ --n-C-success-7: calc(var(--n-C-t-4) * var(--n-env-chroma-success));
133
+ --n-C-success-8: calc(var(--n-C-t-3) * var(--n-env-chroma-success));
134
+ --n-C-success-9: calc(var(--n-C-t-2) * var(--n-env-chroma-success));
135
+ --n-C-success-10: calc(var(--n-C-t-1) * var(--n-env-chroma-success));
136
+ --n-C-success-11: calc(var(--n-C-t-0) * var(--n-env-chroma-success));
137
+
138
+ --n-C-warning-1: calc(var(--n-C-t-0) * var(--n-env-chroma-warning));
139
+ --n-C-warning-2: calc(var(--n-C-t-1) * var(--n-env-chroma-warning));
140
+ --n-C-warning-3: calc(var(--n-C-t-2) * var(--n-env-chroma-warning));
141
+ --n-C-warning-4: calc(var(--n-C-t-3) * var(--n-env-chroma-warning));
142
+ --n-C-warning-5: calc(var(--n-C-t-4) * var(--n-env-chroma-warning));
143
+ --n-C-warning-6: calc(var(--n-C-t-5) * var(--n-env-chroma-warning));
144
+ --n-C-warning-7: calc(var(--n-C-t-4) * var(--n-env-chroma-warning));
145
+ --n-C-warning-8: calc(var(--n-C-t-3) * var(--n-env-chroma-warning));
146
+ --n-C-warning-9: calc(var(--n-C-t-2) * var(--n-env-chroma-warning));
147
+ --n-C-warning-10: calc(var(--n-C-t-1) * var(--n-env-chroma-warning));
148
+ --n-C-warning-11: calc(var(--n-C-t-0) * var(--n-env-chroma-warning));
149
+
150
+ --n-C-danger-1: calc(var(--n-C-t-0) * var(--n-env-chroma-danger));
151
+ --n-C-danger-2: calc(var(--n-C-t-1) * var(--n-env-chroma-danger));
152
+ --n-C-danger-3: calc(var(--n-C-t-2) * var(--n-env-chroma-danger));
153
+ --n-C-danger-4: calc(var(--n-C-t-3) * var(--n-env-chroma-danger));
154
+ --n-C-danger-5: calc(var(--n-C-t-4) * var(--n-env-chroma-danger));
155
+ --n-C-danger-6: calc(var(--n-C-t-5) * var(--n-env-chroma-danger));
156
+ --n-C-danger-7: calc(var(--n-C-t-4) * var(--n-env-chroma-danger));
157
+ --n-C-danger-8: calc(var(--n-C-t-3) * var(--n-env-chroma-danger));
158
+ --n-C-danger-9: calc(var(--n-C-t-2) * var(--n-env-chroma-danger));
159
+ --n-C-danger-10: calc(var(--n-C-t-1) * var(--n-env-chroma-danger));
160
+ --n-C-danger-11: calc(var(--n-C-t-0) * var(--n-env-chroma-danger));
161
+
162
+ /* ── Solid lightness ramps (11 steps per family) ──
163
+ Internal 13-step ramp from L-max → lightness → L-min in 6 intervals per half.
164
+ 11 public steps map to internal steps 2–12 (skipping 1 and 13),
165
+ so 050 never reaches pure white and 950 never reaches pure black.
166
+ 050=step2 100=step3 200=step4 300=step5 400=step6 500=step7(anchor)
167
+ 600=step8 700=step9 800=step10 900=step11 950=step12
168
+ */
169
+
170
+ --n-L-neutral-1: calc(var(--n-env-lightness-max) - 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-neutral)));
171
+ --n-L-neutral-2: calc(var(--n-env-lightness-max) - 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-neutral)));
172
+ --n-L-neutral-3: calc(var(--n-env-lightness-max) - 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-neutral)));
173
+ --n-L-neutral-4: calc(var(--n-env-lightness-max) - 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-neutral)));
174
+ --n-L-neutral-5: calc(var(--n-env-lightness-max) - 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-neutral)));
175
+ --n-L-neutral-6: var(--n-env-lightness-neutral);
176
+ --n-L-neutral-7: calc(var(--n-env-lightness-neutral) - 1 / 6 * (var(--n-env-lightness-neutral) - var(--n-env-lightness-min)));
177
+ --n-L-neutral-8: calc(var(--n-env-lightness-neutral) - 2 / 6 * (var(--n-env-lightness-neutral) - var(--n-env-lightness-min)));
178
+ --n-L-neutral-9: calc(var(--n-env-lightness-neutral) - 3 / 6 * (var(--n-env-lightness-neutral) - var(--n-env-lightness-min)));
179
+ --n-L-neutral-10: calc(var(--n-env-lightness-neutral) - 4 / 6 * (var(--n-env-lightness-neutral) - var(--n-env-lightness-min)));
180
+ --n-L-neutral-11: calc(var(--n-env-lightness-neutral) - 5 / 6 * (var(--n-env-lightness-neutral) - var(--n-env-lightness-min)));
181
+
182
+ --n-L-accent-1: calc(var(--n-env-lightness-max) - 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-accent)));
183
+ --n-L-accent-2: calc(var(--n-env-lightness-max) - 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-accent)));
184
+ --n-L-accent-3: calc(var(--n-env-lightness-max) - 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-accent)));
185
+ --n-L-accent-4: calc(var(--n-env-lightness-max) - 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-accent)));
186
+ --n-L-accent-5: calc(var(--n-env-lightness-max) - 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-accent)));
187
+ --n-L-accent-6: var(--n-env-lightness-accent);
188
+ --n-L-accent-7: calc(var(--n-env-lightness-accent) - 1 / 6 * (var(--n-env-lightness-accent) - var(--n-env-lightness-min)));
189
+ --n-L-accent-8: calc(var(--n-env-lightness-accent) - 2 / 6 * (var(--n-env-lightness-accent) - var(--n-env-lightness-min)));
190
+ --n-L-accent-9: calc(var(--n-env-lightness-accent) - 3 / 6 * (var(--n-env-lightness-accent) - var(--n-env-lightness-min)));
191
+ --n-L-accent-10: calc(var(--n-env-lightness-accent) - 4 / 6 * (var(--n-env-lightness-accent) - var(--n-env-lightness-min)));
192
+ --n-L-accent-11: calc(var(--n-env-lightness-accent) - 5 / 6 * (var(--n-env-lightness-accent) - var(--n-env-lightness-min)));
193
+
194
+ --n-L-info-1: calc(var(--n-env-lightness-max) - 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-info)));
195
+ --n-L-info-2: calc(var(--n-env-lightness-max) - 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-info)));
196
+ --n-L-info-3: calc(var(--n-env-lightness-max) - 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-info)));
197
+ --n-L-info-4: calc(var(--n-env-lightness-max) - 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-info)));
198
+ --n-L-info-5: calc(var(--n-env-lightness-max) - 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-info)));
199
+ --n-L-info-6: var(--n-env-lightness-info);
200
+ --n-L-info-7: calc(var(--n-env-lightness-info) - 1 / 6 * (var(--n-env-lightness-info) - var(--n-env-lightness-min)));
201
+ --n-L-info-8: calc(var(--n-env-lightness-info) - 2 / 6 * (var(--n-env-lightness-info) - var(--n-env-lightness-min)));
202
+ --n-L-info-9: calc(var(--n-env-lightness-info) - 3 / 6 * (var(--n-env-lightness-info) - var(--n-env-lightness-min)));
203
+ --n-L-info-10: calc(var(--n-env-lightness-info) - 4 / 6 * (var(--n-env-lightness-info) - var(--n-env-lightness-min)));
204
+ --n-L-info-11: calc(var(--n-env-lightness-info) - 5 / 6 * (var(--n-env-lightness-info) - var(--n-env-lightness-min)));
205
+
206
+ --n-L-success-1: calc(var(--n-env-lightness-max) - 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-success)));
207
+ --n-L-success-2: calc(var(--n-env-lightness-max) - 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-success)));
208
+ --n-L-success-3: calc(var(--n-env-lightness-max) - 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-success)));
209
+ --n-L-success-4: calc(var(--n-env-lightness-max) - 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-success)));
210
+ --n-L-success-5: calc(var(--n-env-lightness-max) - 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-success)));
211
+ --n-L-success-6: var(--n-env-lightness-success);
212
+ --n-L-success-7: calc(var(--n-env-lightness-success) - 1 / 6 * (var(--n-env-lightness-success) - var(--n-env-lightness-min)));
213
+ --n-L-success-8: calc(var(--n-env-lightness-success) - 2 / 6 * (var(--n-env-lightness-success) - var(--n-env-lightness-min)));
214
+ --n-L-success-9: calc(var(--n-env-lightness-success) - 3 / 6 * (var(--n-env-lightness-success) - var(--n-env-lightness-min)));
215
+ --n-L-success-10: calc(var(--n-env-lightness-success) - 4 / 6 * (var(--n-env-lightness-success) - var(--n-env-lightness-min)));
216
+ --n-L-success-11: calc(var(--n-env-lightness-success) - 5 / 6 * (var(--n-env-lightness-success) - var(--n-env-lightness-min)));
217
+
218
+ --n-L-warning-1: calc(var(--n-env-lightness-max) - 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-warning)));
219
+ --n-L-warning-2: calc(var(--n-env-lightness-max) - 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-warning)));
220
+ --n-L-warning-3: calc(var(--n-env-lightness-max) - 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-warning)));
221
+ --n-L-warning-4: calc(var(--n-env-lightness-max) - 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-warning)));
222
+ --n-L-warning-5: calc(var(--n-env-lightness-max) - 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-warning)));
223
+ --n-L-warning-6: var(--n-env-lightness-warning);
224
+ --n-L-warning-7: calc(var(--n-env-lightness-warning) - 1 / 6 * (var(--n-env-lightness-warning) - var(--n-env-lightness-min)));
225
+ --n-L-warning-8: calc(var(--n-env-lightness-warning) - 2 / 6 * (var(--n-env-lightness-warning) - var(--n-env-lightness-min)));
226
+ --n-L-warning-9: calc(var(--n-env-lightness-warning) - 3 / 6 * (var(--n-env-lightness-warning) - var(--n-env-lightness-min)));
227
+ --n-L-warning-10: calc(var(--n-env-lightness-warning) - 4 / 6 * (var(--n-env-lightness-warning) - var(--n-env-lightness-min)));
228
+ --n-L-warning-11: calc(var(--n-env-lightness-warning) - 5 / 6 * (var(--n-env-lightness-warning) - var(--n-env-lightness-min)));
229
+
230
+ --n-L-danger-1: calc(var(--n-env-lightness-max) - 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-danger)));
231
+ --n-L-danger-2: calc(var(--n-env-lightness-max) - 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-danger)));
232
+ --n-L-danger-3: calc(var(--n-env-lightness-max) - 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-danger)));
233
+ --n-L-danger-4: calc(var(--n-env-lightness-max) - 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-danger)));
234
+ --n-L-danger-5: calc(var(--n-env-lightness-max) - 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-danger)));
235
+ --n-L-danger-6: var(--n-env-lightness-danger);
236
+ --n-L-danger-7: calc(var(--n-env-lightness-danger) - 1 / 6 * (var(--n-env-lightness-danger) - var(--n-env-lightness-min)));
237
+ --n-L-danger-8: calc(var(--n-env-lightness-danger) - 2 / 6 * (var(--n-env-lightness-danger) - var(--n-env-lightness-min)));
238
+ --n-L-danger-9: calc(var(--n-env-lightness-danger) - 3 / 6 * (var(--n-env-lightness-danger) - var(--n-env-lightness-min)));
239
+ --n-L-danger-10: calc(var(--n-env-lightness-danger) - 4 / 6 * (var(--n-env-lightness-danger) - var(--n-env-lightness-min)));
240
+ --n-L-danger-11: calc(var(--n-env-lightness-danger) - 5 / 6 * (var(--n-env-lightness-danger) - var(--n-env-lightness-min)));
241
+
242
+ /* ── Background lightness ramps (shared across families) ── */
243
+
244
+ --n-L-light-1: var(--n-env-lightness-max);
245
+ --n-L-light-2: calc(var(--n-env-lightness-max) - 1 * var(--n-env-lightness-delta));
246
+ --n-L-light-3: calc(var(--n-env-lightness-max) - 2 * var(--n-env-lightness-delta));
247
+ --n-L-light-4: calc(var(--n-env-lightness-max) - 3 * var(--n-env-lightness-delta));
248
+ --n-L-light-5: calc(var(--n-env-lightness-max) - 4 * var(--n-env-lightness-delta));
249
+ --n-L-light-6: calc(var(--n-env-lightness-max) - 5 * var(--n-env-lightness-delta));
250
+ --n-L-light-7: calc(var(--n-env-lightness-max) - 6 * var(--n-env-lightness-delta));
251
+
252
+ --n-L-dark-1: var(--n-env-lightness-min);
253
+ --n-L-dark-2: calc(var(--n-env-lightness-min) + 1 * var(--n-env-lightness-delta));
254
+ --n-L-dark-3: calc(var(--n-env-lightness-min) + 2 * var(--n-env-lightness-delta));
255
+ --n-L-dark-4: calc(var(--n-env-lightness-min) + 3 * var(--n-env-lightness-delta));
256
+ --n-L-dark-5: calc(var(--n-env-lightness-min) + 4 * var(--n-env-lightness-delta));
257
+ --n-L-dark-6: calc(var(--n-env-lightness-min) + 5 * var(--n-env-lightness-delta));
258
+ --n-L-dark-7: calc(var(--n-env-lightness-min) + 6 * var(--n-env-lightness-delta));
259
+
260
+ /* ── Color ramp — Raw (1–11, mode-independent) ──
261
+ 1 = L-max (lightest), 6 = anchor (peak chroma), 11 = L-min (darkest).
262
+ Chroma lerps C-k-edge → C-k-vivid → C-k-edge (peak at anchor).
263
+ These are the raw oklch values; use the semantic 050–950 tokens below for light-dark awareness.
264
+ */
265
+
266
+ --n-color-neutral-1: oklch(var(--n-L-neutral-1) var(--n-C-neutral-1) var(--n-env-hue-neutral));
267
+ --n-color-neutral-2: oklch(var(--n-L-neutral-2) var(--n-C-neutral-2) var(--n-env-hue-neutral));
268
+ --n-color-neutral-3: oklch(var(--n-L-neutral-3) var(--n-C-neutral-3) var(--n-env-hue-neutral));
269
+ --n-color-neutral-4: oklch(var(--n-L-neutral-4) var(--n-C-neutral-4) var(--n-env-hue-neutral));
270
+ --n-color-neutral-5: oklch(var(--n-L-neutral-5) var(--n-C-neutral-5) var(--n-env-hue-neutral));
271
+ --n-color-neutral-6: oklch(var(--n-L-neutral-6) var(--n-C-neutral-6) var(--n-env-hue-neutral));
272
+ --n-color-neutral-7: oklch(var(--n-L-neutral-7) var(--n-C-neutral-7) var(--n-env-hue-neutral));
273
+ --n-color-neutral-8: oklch(var(--n-L-neutral-8) var(--n-C-neutral-8) var(--n-env-hue-neutral));
274
+ --n-color-neutral-9: oklch(var(--n-L-neutral-9) var(--n-C-neutral-9) var(--n-env-hue-neutral));
275
+ --n-color-neutral-10: oklch(var(--n-L-neutral-10) var(--n-C-neutral-10) var(--n-env-hue-neutral));
276
+ --n-color-neutral-11: oklch(var(--n-L-neutral-11) var(--n-C-neutral-11) var(--n-env-hue-neutral));
277
+
278
+ --n-color-accent-1: oklch(var(--n-L-accent-1) var(--n-C-accent-1) var(--n-env-hue-accent));
279
+ --n-color-accent-2: oklch(var(--n-L-accent-2) var(--n-C-accent-2) var(--n-env-hue-accent));
280
+ --n-color-accent-3: oklch(var(--n-L-accent-3) var(--n-C-accent-3) var(--n-env-hue-accent));
281
+ --n-color-accent-4: oklch(var(--n-L-accent-4) var(--n-C-accent-4) var(--n-env-hue-accent));
282
+ --n-color-accent-5: oklch(var(--n-L-accent-5) var(--n-C-accent-5) var(--n-env-hue-accent));
283
+ --n-color-accent-6: oklch(var(--n-L-accent-6) var(--n-C-accent-6) var(--n-env-hue-accent));
284
+ --n-color-accent-7: oklch(var(--n-L-accent-7) var(--n-C-accent-7) var(--n-env-hue-accent));
285
+ --n-color-accent-8: oklch(var(--n-L-accent-8) var(--n-C-accent-8) var(--n-env-hue-accent));
286
+ --n-color-accent-9: oklch(var(--n-L-accent-9) var(--n-C-accent-9) var(--n-env-hue-accent));
287
+ --n-color-accent-10: oklch(var(--n-L-accent-10) var(--n-C-accent-10) var(--n-env-hue-accent));
288
+ --n-color-accent-11: oklch(var(--n-L-accent-11) var(--n-C-accent-11) var(--n-env-hue-accent));
289
+
290
+ --n-color-info-1: oklch(var(--n-L-info-1) var(--n-C-info-1) var(--n-env-hue-info));
291
+ --n-color-info-2: oklch(var(--n-L-info-2) var(--n-C-info-2) var(--n-env-hue-info));
292
+ --n-color-info-3: oklch(var(--n-L-info-3) var(--n-C-info-3) var(--n-env-hue-info));
293
+ --n-color-info-4: oklch(var(--n-L-info-4) var(--n-C-info-4) var(--n-env-hue-info));
294
+ --n-color-info-5: oklch(var(--n-L-info-5) var(--n-C-info-5) var(--n-env-hue-info));
295
+ --n-color-info-6: oklch(var(--n-L-info-6) var(--n-C-info-6) var(--n-env-hue-info));
296
+ --n-color-info-7: oklch(var(--n-L-info-7) var(--n-C-info-7) var(--n-env-hue-info));
297
+ --n-color-info-8: oklch(var(--n-L-info-8) var(--n-C-info-8) var(--n-env-hue-info));
298
+ --n-color-info-9: oklch(var(--n-L-info-9) var(--n-C-info-9) var(--n-env-hue-info));
299
+ --n-color-info-10: oklch(var(--n-L-info-10) var(--n-C-info-10) var(--n-env-hue-info));
300
+ --n-color-info-11: oklch(var(--n-L-info-11) var(--n-C-info-11) var(--n-env-hue-info));
301
+
302
+ --n-color-success-1: oklch(var(--n-L-success-1) var(--n-C-success-1) var(--n-env-hue-success));
303
+ --n-color-success-2: oklch(var(--n-L-success-2) var(--n-C-success-2) var(--n-env-hue-success));
304
+ --n-color-success-3: oklch(var(--n-L-success-3) var(--n-C-success-3) var(--n-env-hue-success));
305
+ --n-color-success-4: oklch(var(--n-L-success-4) var(--n-C-success-4) var(--n-env-hue-success));
306
+ --n-color-success-5: oklch(var(--n-L-success-5) var(--n-C-success-5) var(--n-env-hue-success));
307
+ --n-color-success-6: oklch(var(--n-L-success-6) var(--n-C-success-6) var(--n-env-hue-success));
308
+ --n-color-success-7: oklch(var(--n-L-success-7) var(--n-C-success-7) var(--n-env-hue-success));
309
+ --n-color-success-8: oklch(var(--n-L-success-8) var(--n-C-success-8) var(--n-env-hue-success));
310
+ --n-color-success-9: oklch(var(--n-L-success-9) var(--n-C-success-9) var(--n-env-hue-success));
311
+ --n-color-success-10: oklch(var(--n-L-success-10) var(--n-C-success-10) var(--n-env-hue-success));
312
+ --n-color-success-11: oklch(var(--n-L-success-11) var(--n-C-success-11) var(--n-env-hue-success));
313
+
314
+ --n-color-warning-1: oklch(var(--n-L-warning-1) var(--n-C-warning-1) var(--n-env-hue-warning));
315
+ --n-color-warning-2: oklch(var(--n-L-warning-2) var(--n-C-warning-2) var(--n-env-hue-warning));
316
+ --n-color-warning-3: oklch(var(--n-L-warning-3) var(--n-C-warning-3) var(--n-env-hue-warning));
317
+ --n-color-warning-4: oklch(var(--n-L-warning-4) var(--n-C-warning-4) var(--n-env-hue-warning));
318
+ --n-color-warning-5: oklch(var(--n-L-warning-5) var(--n-C-warning-5) var(--n-env-hue-warning));
319
+ --n-color-warning-6: oklch(var(--n-L-warning-6) var(--n-C-warning-6) var(--n-env-hue-warning));
320
+ --n-color-warning-7: oklch(var(--n-L-warning-7) var(--n-C-warning-7) var(--n-env-hue-warning));
321
+ --n-color-warning-8: oklch(var(--n-L-warning-8) var(--n-C-warning-8) var(--n-env-hue-warning));
322
+ --n-color-warning-9: oklch(var(--n-L-warning-9) var(--n-C-warning-9) var(--n-env-hue-warning));
323
+ --n-color-warning-10: oklch(var(--n-L-warning-10) var(--n-C-warning-10) var(--n-env-hue-warning));
324
+ --n-color-warning-11: oklch(var(--n-L-warning-11) var(--n-C-warning-11) var(--n-env-hue-warning));
325
+
326
+ --n-color-danger-1: oklch(var(--n-L-danger-1) var(--n-C-danger-1) var(--n-env-hue-danger));
327
+ --n-color-danger-2: oklch(var(--n-L-danger-2) var(--n-C-danger-2) var(--n-env-hue-danger));
328
+ --n-color-danger-3: oklch(var(--n-L-danger-3) var(--n-C-danger-3) var(--n-env-hue-danger));
329
+ --n-color-danger-4: oklch(var(--n-L-danger-4) var(--n-C-danger-4) var(--n-env-hue-danger));
330
+ --n-color-danger-5: oklch(var(--n-L-danger-5) var(--n-C-danger-5) var(--n-env-hue-danger));
331
+ --n-color-danger-6: oklch(var(--n-L-danger-6) var(--n-C-danger-6) var(--n-env-hue-danger));
332
+ --n-color-danger-7: oklch(var(--n-L-danger-7) var(--n-C-danger-7) var(--n-env-hue-danger));
333
+ --n-color-danger-8: oklch(var(--n-L-danger-8) var(--n-C-danger-8) var(--n-env-hue-danger));
334
+ --n-color-danger-9: oklch(var(--n-L-danger-9) var(--n-C-danger-9) var(--n-env-hue-danger));
335
+ --n-color-danger-10: oklch(var(--n-L-danger-10) var(--n-C-danger-10) var(--n-env-hue-danger));
336
+ --n-color-danger-11: oklch(var(--n-L-danger-11) var(--n-C-danger-11) var(--n-env-hue-danger));
337
+
338
+ /* ── Color ramp — Semantic (light-dark aware) ──
339
+ 050 = lightest in light mode / darkest in dark mode.
340
+ 950 = darkest in light mode / lightest in dark mode.
341
+ 500 = anchor (same raw tone in both modes).
342
+ */
343
+
344
+ --n-color-neutral-050: light-dark(var(--n-color-neutral-1), var(--n-color-neutral-11));
345
+ --n-color-neutral-100: light-dark(var(--n-color-neutral-2), var(--n-color-neutral-10));
346
+ --n-color-neutral-200: light-dark(var(--n-color-neutral-3), var(--n-color-neutral-9));
347
+ --n-color-neutral-300: light-dark(var(--n-color-neutral-4), var(--n-color-neutral-8));
348
+ --n-color-neutral-400: light-dark(var(--n-color-neutral-5), var(--n-color-neutral-7));
349
+ --n-color-neutral-500: light-dark(var(--n-color-neutral-6), var(--n-color-neutral-6));
350
+ --n-color-neutral-600: light-dark(var(--n-color-neutral-7), var(--n-color-neutral-5));
351
+ --n-color-neutral-700: light-dark(var(--n-color-neutral-8), var(--n-color-neutral-4));
352
+ --n-color-neutral-800: light-dark(var(--n-color-neutral-9), var(--n-color-neutral-3));
353
+ --n-color-neutral-900: light-dark(var(--n-color-neutral-10), var(--n-color-neutral-2));
354
+ --n-color-neutral-950: light-dark(var(--n-color-neutral-11), var(--n-color-neutral-1));
355
+
356
+ --n-color-accent-050: light-dark(var(--n-color-accent-1), var(--n-color-accent-11));
357
+ --n-color-accent-100: light-dark(var(--n-color-accent-2), var(--n-color-accent-10));
358
+ --n-color-accent-200: light-dark(var(--n-color-accent-3), var(--n-color-accent-9));
359
+ --n-color-accent-300: light-dark(var(--n-color-accent-4), var(--n-color-accent-8));
360
+ --n-color-accent-400: light-dark(var(--n-color-accent-5), var(--n-color-accent-7));
361
+ --n-color-accent-500: light-dark(var(--n-color-accent-6), var(--n-color-accent-6));
362
+ --n-color-accent-600: light-dark(var(--n-color-accent-7), var(--n-color-accent-5));
363
+ --n-color-accent-700: light-dark(var(--n-color-accent-8), var(--n-color-accent-4));
364
+ --n-color-accent-800: light-dark(var(--n-color-accent-9), var(--n-color-accent-3));
365
+ --n-color-accent-900: light-dark(var(--n-color-accent-10), var(--n-color-accent-2));
366
+ --n-color-accent-950: light-dark(var(--n-color-accent-11), var(--n-color-accent-1));
367
+
368
+ --n-color-info-050: light-dark(var(--n-color-info-1), var(--n-color-info-11));
369
+ --n-color-info-100: light-dark(var(--n-color-info-2), var(--n-color-info-10));
370
+ --n-color-info-200: light-dark(var(--n-color-info-3), var(--n-color-info-9));
371
+ --n-color-info-300: light-dark(var(--n-color-info-4), var(--n-color-info-8));
372
+ --n-color-info-400: light-dark(var(--n-color-info-5), var(--n-color-info-7));
373
+ --n-color-info-500: light-dark(var(--n-color-info-6), var(--n-color-info-6));
374
+ --n-color-info-600: light-dark(var(--n-color-info-7), var(--n-color-info-5));
375
+ --n-color-info-700: light-dark(var(--n-color-info-8), var(--n-color-info-4));
376
+ --n-color-info-800: light-dark(var(--n-color-info-9), var(--n-color-info-3));
377
+ --n-color-info-900: light-dark(var(--n-color-info-10), var(--n-color-info-2));
378
+ --n-color-info-950: light-dark(var(--n-color-info-11), var(--n-color-info-1));
379
+
380
+ --n-color-success-050: light-dark(var(--n-color-success-1), var(--n-color-success-11));
381
+ --n-color-success-100: light-dark(var(--n-color-success-2), var(--n-color-success-10));
382
+ --n-color-success-200: light-dark(var(--n-color-success-3), var(--n-color-success-9));
383
+ --n-color-success-300: light-dark(var(--n-color-success-4), var(--n-color-success-8));
384
+ --n-color-success-400: light-dark(var(--n-color-success-5), var(--n-color-success-7));
385
+ --n-color-success-500: light-dark(var(--n-color-success-6), var(--n-color-success-6));
386
+ --n-color-success-600: light-dark(var(--n-color-success-7), var(--n-color-success-5));
387
+ --n-color-success-700: light-dark(var(--n-color-success-8), var(--n-color-success-4));
388
+ --n-color-success-800: light-dark(var(--n-color-success-9), var(--n-color-success-3));
389
+ --n-color-success-900: light-dark(var(--n-color-success-10), var(--n-color-success-2));
390
+ --n-color-success-950: light-dark(var(--n-color-success-11), var(--n-color-success-1));
391
+
392
+ --n-color-warning-050: light-dark(var(--n-color-warning-1), var(--n-color-warning-11));
393
+ --n-color-warning-100: light-dark(var(--n-color-warning-2), var(--n-color-warning-10));
394
+ --n-color-warning-200: light-dark(var(--n-color-warning-3), var(--n-color-warning-9));
395
+ --n-color-warning-300: light-dark(var(--n-color-warning-4), var(--n-color-warning-8));
396
+ --n-color-warning-400: light-dark(var(--n-color-warning-5), var(--n-color-warning-7));
397
+ --n-color-warning-500: light-dark(var(--n-color-warning-6), var(--n-color-warning-6));
398
+ --n-color-warning-600: light-dark(var(--n-color-warning-7), var(--n-color-warning-5));
399
+ --n-color-warning-700: light-dark(var(--n-color-warning-8), var(--n-color-warning-4));
400
+ --n-color-warning-800: light-dark(var(--n-color-warning-9), var(--n-color-warning-3));
401
+ --n-color-warning-900: light-dark(var(--n-color-warning-10), var(--n-color-warning-2));
402
+ --n-color-warning-950: light-dark(var(--n-color-warning-11), var(--n-color-warning-1));
403
+
404
+ --n-color-danger-050: light-dark(var(--n-color-danger-1), var(--n-color-danger-11));
405
+ --n-color-danger-100: light-dark(var(--n-color-danger-2), var(--n-color-danger-10));
406
+ --n-color-danger-200: light-dark(var(--n-color-danger-3), var(--n-color-danger-9));
407
+ --n-color-danger-300: light-dark(var(--n-color-danger-4), var(--n-color-danger-8));
408
+ --n-color-danger-400: light-dark(var(--n-color-danger-5), var(--n-color-danger-7));
409
+ --n-color-danger-500: light-dark(var(--n-color-danger-6), var(--n-color-danger-6));
410
+ --n-color-danger-600: light-dark(var(--n-color-danger-7), var(--n-color-danger-5));
411
+ --n-color-danger-700: light-dark(var(--n-color-danger-8), var(--n-color-danger-4));
412
+ --n-color-danger-800: light-dark(var(--n-color-danger-9), var(--n-color-danger-3));
413
+ --n-color-danger-900: light-dark(var(--n-color-danger-10), var(--n-color-danger-2));
414
+ --n-color-danger-950: light-dark(var(--n-color-danger-11), var(--n-color-danger-1));
415
+
416
+ /* ── Anchor aliases (bare name = step 500) ── */
417
+
418
+ --n-color-neutral: var(--n-color-neutral-500);
419
+ --n-color-accent: var(--n-color-accent-500);
420
+ --n-color-info: var(--n-color-info-500);
421
+ --n-color-success: var(--n-color-success-500);
422
+ --n-color-warning: var(--n-color-warning-500);
423
+ --n-color-danger: var(--n-color-danger-500);
424
+
425
+ /* ── Scrim ramp — Raw (1–11, mode-independent, alpha = env-A) ──
426
+ Same L/C/H as solid raw ramp, at env-A opacity.
427
+ */
428
+
429
+ --n-color-neutral-1-scrim: oklch(var(--n-L-neutral-1) var(--n-C-neutral-1) var(--n-env-hue-neutral) / var(--n-env-alpha));
430
+ --n-color-neutral-2-scrim: oklch(var(--n-L-neutral-2) var(--n-C-neutral-2) var(--n-env-hue-neutral) / var(--n-env-alpha));
431
+ --n-color-neutral-3-scrim: oklch(var(--n-L-neutral-3) var(--n-C-neutral-3) var(--n-env-hue-neutral) / var(--n-env-alpha));
432
+ --n-color-neutral-4-scrim: oklch(var(--n-L-neutral-4) var(--n-C-neutral-4) var(--n-env-hue-neutral) / var(--n-env-alpha));
433
+ --n-color-neutral-5-scrim: oklch(var(--n-L-neutral-5) var(--n-C-neutral-5) var(--n-env-hue-neutral) / var(--n-env-alpha));
434
+ --n-color-neutral-6-scrim: oklch(var(--n-L-neutral-6) var(--n-C-neutral-6) var(--n-env-hue-neutral) / var(--n-env-alpha));
435
+ --n-color-neutral-7-scrim: oklch(var(--n-L-neutral-7) var(--n-C-neutral-7) var(--n-env-hue-neutral) / var(--n-env-alpha));
436
+ --n-color-neutral-8-scrim: oklch(var(--n-L-neutral-8) var(--n-C-neutral-8) var(--n-env-hue-neutral) / var(--n-env-alpha));
437
+ --n-color-neutral-9-scrim: oklch(var(--n-L-neutral-9) var(--n-C-neutral-9) var(--n-env-hue-neutral) / var(--n-env-alpha));
438
+ --n-color-neutral-10-scrim: oklch(var(--n-L-neutral-10) var(--n-C-neutral-10) var(--n-env-hue-neutral) / var(--n-env-alpha));
439
+ --n-color-neutral-11-scrim: oklch(var(--n-L-neutral-11) var(--n-C-neutral-11) var(--n-env-hue-neutral) / var(--n-env-alpha));
440
+
441
+ --n-color-accent-1-scrim: oklch(var(--n-L-accent-1) var(--n-C-accent-1) var(--n-env-hue-accent) / var(--n-env-alpha));
442
+ --n-color-accent-2-scrim: oklch(var(--n-L-accent-2) var(--n-C-accent-2) var(--n-env-hue-accent) / var(--n-env-alpha));
443
+ --n-color-accent-3-scrim: oklch(var(--n-L-accent-3) var(--n-C-accent-3) var(--n-env-hue-accent) / var(--n-env-alpha));
444
+ --n-color-accent-4-scrim: oklch(var(--n-L-accent-4) var(--n-C-accent-4) var(--n-env-hue-accent) / var(--n-env-alpha));
445
+ --n-color-accent-5-scrim: oklch(var(--n-L-accent-5) var(--n-C-accent-5) var(--n-env-hue-accent) / var(--n-env-alpha));
446
+ --n-color-accent-6-scrim: oklch(var(--n-L-accent-6) var(--n-C-accent-6) var(--n-env-hue-accent) / var(--n-env-alpha));
447
+ --n-color-accent-7-scrim: oklch(var(--n-L-accent-7) var(--n-C-accent-7) var(--n-env-hue-accent) / var(--n-env-alpha));
448
+ --n-color-accent-8-scrim: oklch(var(--n-L-accent-8) var(--n-C-accent-8) var(--n-env-hue-accent) / var(--n-env-alpha));
449
+ --n-color-accent-9-scrim: oklch(var(--n-L-accent-9) var(--n-C-accent-9) var(--n-env-hue-accent) / var(--n-env-alpha));
450
+ --n-color-accent-10-scrim: oklch(var(--n-L-accent-10) var(--n-C-accent-10) var(--n-env-hue-accent) / var(--n-env-alpha));
451
+ --n-color-accent-11-scrim: oklch(var(--n-L-accent-11) var(--n-C-accent-11) var(--n-env-hue-accent) / var(--n-env-alpha));
452
+
453
+ --n-color-info-1-scrim: oklch(var(--n-L-info-1) var(--n-C-info-1) var(--n-env-hue-info) / var(--n-env-alpha));
454
+ --n-color-info-2-scrim: oklch(var(--n-L-info-2) var(--n-C-info-2) var(--n-env-hue-info) / var(--n-env-alpha));
455
+ --n-color-info-3-scrim: oklch(var(--n-L-info-3) var(--n-C-info-3) var(--n-env-hue-info) / var(--n-env-alpha));
456
+ --n-color-info-4-scrim: oklch(var(--n-L-info-4) var(--n-C-info-4) var(--n-env-hue-info) / var(--n-env-alpha));
457
+ --n-color-info-5-scrim: oklch(var(--n-L-info-5) var(--n-C-info-5) var(--n-env-hue-info) / var(--n-env-alpha));
458
+ --n-color-info-6-scrim: oklch(var(--n-L-info-6) var(--n-C-info-6) var(--n-env-hue-info) / var(--n-env-alpha));
459
+ --n-color-info-7-scrim: oklch(var(--n-L-info-7) var(--n-C-info-7) var(--n-env-hue-info) / var(--n-env-alpha));
460
+ --n-color-info-8-scrim: oklch(var(--n-L-info-8) var(--n-C-info-8) var(--n-env-hue-info) / var(--n-env-alpha));
461
+ --n-color-info-9-scrim: oklch(var(--n-L-info-9) var(--n-C-info-9) var(--n-env-hue-info) / var(--n-env-alpha));
462
+ --n-color-info-10-scrim: oklch(var(--n-L-info-10) var(--n-C-info-10) var(--n-env-hue-info) / var(--n-env-alpha));
463
+ --n-color-info-11-scrim: oklch(var(--n-L-info-11) var(--n-C-info-11) var(--n-env-hue-info) / var(--n-env-alpha));
464
+
465
+ --n-color-success-1-scrim: oklch(var(--n-L-success-1) var(--n-C-success-1) var(--n-env-hue-success) / var(--n-env-alpha));
466
+ --n-color-success-2-scrim: oklch(var(--n-L-success-2) var(--n-C-success-2) var(--n-env-hue-success) / var(--n-env-alpha));
467
+ --n-color-success-3-scrim: oklch(var(--n-L-success-3) var(--n-C-success-3) var(--n-env-hue-success) / var(--n-env-alpha));
468
+ --n-color-success-4-scrim: oklch(var(--n-L-success-4) var(--n-C-success-4) var(--n-env-hue-success) / var(--n-env-alpha));
469
+ --n-color-success-5-scrim: oklch(var(--n-L-success-5) var(--n-C-success-5) var(--n-env-hue-success) / var(--n-env-alpha));
470
+ --n-color-success-6-scrim: oklch(var(--n-L-success-6) var(--n-C-success-6) var(--n-env-hue-success) / var(--n-env-alpha));
471
+ --n-color-success-7-scrim: oklch(var(--n-L-success-7) var(--n-C-success-7) var(--n-env-hue-success) / var(--n-env-alpha));
472
+ --n-color-success-8-scrim: oklch(var(--n-L-success-8) var(--n-C-success-8) var(--n-env-hue-success) / var(--n-env-alpha));
473
+ --n-color-success-9-scrim: oklch(var(--n-L-success-9) var(--n-C-success-9) var(--n-env-hue-success) / var(--n-env-alpha));
474
+ --n-color-success-10-scrim: oklch(var(--n-L-success-10) var(--n-C-success-10) var(--n-env-hue-success) / var(--n-env-alpha));
475
+ --n-color-success-11-scrim: oklch(var(--n-L-success-11) var(--n-C-success-11) var(--n-env-hue-success) / var(--n-env-alpha));
476
+
477
+ --n-color-warning-1-scrim: oklch(var(--n-L-warning-1) var(--n-C-warning-1) var(--n-env-hue-warning) / var(--n-env-alpha));
478
+ --n-color-warning-2-scrim: oklch(var(--n-L-warning-2) var(--n-C-warning-2) var(--n-env-hue-warning) / var(--n-env-alpha));
479
+ --n-color-warning-3-scrim: oklch(var(--n-L-warning-3) var(--n-C-warning-3) var(--n-env-hue-warning) / var(--n-env-alpha));
480
+ --n-color-warning-4-scrim: oklch(var(--n-L-warning-4) var(--n-C-warning-4) var(--n-env-hue-warning) / var(--n-env-alpha));
481
+ --n-color-warning-5-scrim: oklch(var(--n-L-warning-5) var(--n-C-warning-5) var(--n-env-hue-warning) / var(--n-env-alpha));
482
+ --n-color-warning-6-scrim: oklch(var(--n-L-warning-6) var(--n-C-warning-6) var(--n-env-hue-warning) / var(--n-env-alpha));
483
+ --n-color-warning-7-scrim: oklch(var(--n-L-warning-7) var(--n-C-warning-7) var(--n-env-hue-warning) / var(--n-env-alpha));
484
+ --n-color-warning-8-scrim: oklch(var(--n-L-warning-8) var(--n-C-warning-8) var(--n-env-hue-warning) / var(--n-env-alpha));
485
+ --n-color-warning-9-scrim: oklch(var(--n-L-warning-9) var(--n-C-warning-9) var(--n-env-hue-warning) / var(--n-env-alpha));
486
+ --n-color-warning-10-scrim: oklch(var(--n-L-warning-10) var(--n-C-warning-10) var(--n-env-hue-warning) / var(--n-env-alpha));
487
+ --n-color-warning-11-scrim: oklch(var(--n-L-warning-11) var(--n-C-warning-11) var(--n-env-hue-warning) / var(--n-env-alpha));
488
+
489
+ --n-color-danger-1-scrim: oklch(var(--n-L-danger-1) var(--n-C-danger-1) var(--n-env-hue-danger) / var(--n-env-alpha));
490
+ --n-color-danger-2-scrim: oklch(var(--n-L-danger-2) var(--n-C-danger-2) var(--n-env-hue-danger) / var(--n-env-alpha));
491
+ --n-color-danger-3-scrim: oklch(var(--n-L-danger-3) var(--n-C-danger-3) var(--n-env-hue-danger) / var(--n-env-alpha));
492
+ --n-color-danger-4-scrim: oklch(var(--n-L-danger-4) var(--n-C-danger-4) var(--n-env-hue-danger) / var(--n-env-alpha));
493
+ --n-color-danger-5-scrim: oklch(var(--n-L-danger-5) var(--n-C-danger-5) var(--n-env-hue-danger) / var(--n-env-alpha));
494
+ --n-color-danger-6-scrim: oklch(var(--n-L-danger-6) var(--n-C-danger-6) var(--n-env-hue-danger) / var(--n-env-alpha));
495
+ --n-color-danger-7-scrim: oklch(var(--n-L-danger-7) var(--n-C-danger-7) var(--n-env-hue-danger) / var(--n-env-alpha));
496
+ --n-color-danger-8-scrim: oklch(var(--n-L-danger-8) var(--n-C-danger-8) var(--n-env-hue-danger) / var(--n-env-alpha));
497
+ --n-color-danger-9-scrim: oklch(var(--n-L-danger-9) var(--n-C-danger-9) var(--n-env-hue-danger) / var(--n-env-alpha));
498
+ --n-color-danger-10-scrim: oklch(var(--n-L-danger-10) var(--n-C-danger-10) var(--n-env-hue-danger) / var(--n-env-alpha));
499
+ --n-color-danger-11-scrim: oklch(var(--n-L-danger-11) var(--n-C-danger-11) var(--n-env-hue-danger) / var(--n-env-alpha));
500
+
501
+ /* ── Scrim ramp — Semantic (light-dark aware) ── */
502
+
503
+ --n-color-neutral-050-scrim: light-dark(var(--n-color-neutral-1-scrim), var(--n-color-neutral-11-scrim));
504
+ --n-color-neutral-100-scrim: light-dark(var(--n-color-neutral-2-scrim), var(--n-color-neutral-10-scrim));
505
+ --n-color-neutral-200-scrim: light-dark(var(--n-color-neutral-3-scrim), var(--n-color-neutral-9-scrim));
506
+ --n-color-neutral-300-scrim: light-dark(var(--n-color-neutral-4-scrim), var(--n-color-neutral-8-scrim));
507
+ --n-color-neutral-400-scrim: light-dark(var(--n-color-neutral-5-scrim), var(--n-color-neutral-7-scrim));
508
+ --n-color-neutral-500-scrim: light-dark(var(--n-color-neutral-6-scrim), var(--n-color-neutral-6-scrim));
509
+ --n-color-neutral-600-scrim: light-dark(var(--n-color-neutral-7-scrim), var(--n-color-neutral-5-scrim));
510
+ --n-color-neutral-700-scrim: light-dark(var(--n-color-neutral-8-scrim), var(--n-color-neutral-4-scrim));
511
+ --n-color-neutral-800-scrim: light-dark(var(--n-color-neutral-9-scrim), var(--n-color-neutral-3-scrim));
512
+ --n-color-neutral-900-scrim: light-dark(var(--n-color-neutral-10-scrim), var(--n-color-neutral-2-scrim));
513
+ --n-color-neutral-950-scrim: light-dark(var(--n-color-neutral-11-scrim), var(--n-color-neutral-1-scrim));
514
+
515
+ --n-color-accent-050-scrim: light-dark(var(--n-color-accent-1-scrim), var(--n-color-accent-11-scrim));
516
+ --n-color-accent-100-scrim: light-dark(var(--n-color-accent-2-scrim), var(--n-color-accent-10-scrim));
517
+ --n-color-accent-200-scrim: light-dark(var(--n-color-accent-3-scrim), var(--n-color-accent-9-scrim));
518
+ --n-color-accent-300-scrim: light-dark(var(--n-color-accent-4-scrim), var(--n-color-accent-8-scrim));
519
+ --n-color-accent-400-scrim: light-dark(var(--n-color-accent-5-scrim), var(--n-color-accent-7-scrim));
520
+ --n-color-accent-500-scrim: light-dark(var(--n-color-accent-6-scrim), var(--n-color-accent-6-scrim));
521
+ --n-color-accent-600-scrim: light-dark(var(--n-color-accent-7-scrim), var(--n-color-accent-5-scrim));
522
+ --n-color-accent-700-scrim: light-dark(var(--n-color-accent-8-scrim), var(--n-color-accent-4-scrim));
523
+ --n-color-accent-800-scrim: light-dark(var(--n-color-accent-9-scrim), var(--n-color-accent-3-scrim));
524
+ --n-color-accent-900-scrim: light-dark(var(--n-color-accent-10-scrim), var(--n-color-accent-2-scrim));
525
+ --n-color-accent-950-scrim: light-dark(var(--n-color-accent-11-scrim), var(--n-color-accent-1-scrim));
526
+
527
+ --n-color-info-050-scrim: light-dark(var(--n-color-info-1-scrim), var(--n-color-info-11-scrim));
528
+ --n-color-info-100-scrim: light-dark(var(--n-color-info-2-scrim), var(--n-color-info-10-scrim));
529
+ --n-color-info-200-scrim: light-dark(var(--n-color-info-3-scrim), var(--n-color-info-9-scrim));
530
+ --n-color-info-300-scrim: light-dark(var(--n-color-info-4-scrim), var(--n-color-info-8-scrim));
531
+ --n-color-info-400-scrim: light-dark(var(--n-color-info-5-scrim), var(--n-color-info-7-scrim));
532
+ --n-color-info-500-scrim: light-dark(var(--n-color-info-6-scrim), var(--n-color-info-6-scrim));
533
+ --n-color-info-600-scrim: light-dark(var(--n-color-info-7-scrim), var(--n-color-info-5-scrim));
534
+ --n-color-info-700-scrim: light-dark(var(--n-color-info-8-scrim), var(--n-color-info-4-scrim));
535
+ --n-color-info-800-scrim: light-dark(var(--n-color-info-9-scrim), var(--n-color-info-3-scrim));
536
+ --n-color-info-900-scrim: light-dark(var(--n-color-info-10-scrim), var(--n-color-info-2-scrim));
537
+ --n-color-info-950-scrim: light-dark(var(--n-color-info-11-scrim), var(--n-color-info-1-scrim));
538
+
539
+ --n-color-success-050-scrim: light-dark(var(--n-color-success-1-scrim), var(--n-color-success-11-scrim));
540
+ --n-color-success-100-scrim: light-dark(var(--n-color-success-2-scrim), var(--n-color-success-10-scrim));
541
+ --n-color-success-200-scrim: light-dark(var(--n-color-success-3-scrim), var(--n-color-success-9-scrim));
542
+ --n-color-success-300-scrim: light-dark(var(--n-color-success-4-scrim), var(--n-color-success-8-scrim));
543
+ --n-color-success-400-scrim: light-dark(var(--n-color-success-5-scrim), var(--n-color-success-7-scrim));
544
+ --n-color-success-500-scrim: light-dark(var(--n-color-success-6-scrim), var(--n-color-success-6-scrim));
545
+ --n-color-success-600-scrim: light-dark(var(--n-color-success-7-scrim), var(--n-color-success-5-scrim));
546
+ --n-color-success-700-scrim: light-dark(var(--n-color-success-8-scrim), var(--n-color-success-4-scrim));
547
+ --n-color-success-800-scrim: light-dark(var(--n-color-success-9-scrim), var(--n-color-success-3-scrim));
548
+ --n-color-success-900-scrim: light-dark(var(--n-color-success-10-scrim), var(--n-color-success-2-scrim));
549
+ --n-color-success-950-scrim: light-dark(var(--n-color-success-11-scrim), var(--n-color-success-1-scrim));
550
+
551
+ --n-color-warning-050-scrim: light-dark(var(--n-color-warning-1-scrim), var(--n-color-warning-11-scrim));
552
+ --n-color-warning-100-scrim: light-dark(var(--n-color-warning-2-scrim), var(--n-color-warning-10-scrim));
553
+ --n-color-warning-200-scrim: light-dark(var(--n-color-warning-3-scrim), var(--n-color-warning-9-scrim));
554
+ --n-color-warning-300-scrim: light-dark(var(--n-color-warning-4-scrim), var(--n-color-warning-8-scrim));
555
+ --n-color-warning-400-scrim: light-dark(var(--n-color-warning-5-scrim), var(--n-color-warning-7-scrim));
556
+ --n-color-warning-500-scrim: light-dark(var(--n-color-warning-6-scrim), var(--n-color-warning-6-scrim));
557
+ --n-color-warning-600-scrim: light-dark(var(--n-color-warning-7-scrim), var(--n-color-warning-5-scrim));
558
+ --n-color-warning-700-scrim: light-dark(var(--n-color-warning-8-scrim), var(--n-color-warning-4-scrim));
559
+ --n-color-warning-800-scrim: light-dark(var(--n-color-warning-9-scrim), var(--n-color-warning-3-scrim));
560
+ --n-color-warning-900-scrim: light-dark(var(--n-color-warning-10-scrim), var(--n-color-warning-2-scrim));
561
+ --n-color-warning-950-scrim: light-dark(var(--n-color-warning-11-scrim), var(--n-color-warning-1-scrim));
562
+
563
+ --n-color-danger-050-scrim: light-dark(var(--n-color-danger-1-scrim), var(--n-color-danger-11-scrim));
564
+ --n-color-danger-100-scrim: light-dark(var(--n-color-danger-2-scrim), var(--n-color-danger-10-scrim));
565
+ --n-color-danger-200-scrim: light-dark(var(--n-color-danger-3-scrim), var(--n-color-danger-9-scrim));
566
+ --n-color-danger-300-scrim: light-dark(var(--n-color-danger-4-scrim), var(--n-color-danger-8-scrim));
567
+ --n-color-danger-400-scrim: light-dark(var(--n-color-danger-5-scrim), var(--n-color-danger-7-scrim));
568
+ --n-color-danger-500-scrim: light-dark(var(--n-color-danger-6-scrim), var(--n-color-danger-6-scrim));
569
+ --n-color-danger-600-scrim: light-dark(var(--n-color-danger-7-scrim), var(--n-color-danger-5-scrim));
570
+ --n-color-danger-700-scrim: light-dark(var(--n-color-danger-8-scrim), var(--n-color-danger-4-scrim));
571
+ --n-color-danger-800-scrim: light-dark(var(--n-color-danger-9-scrim), var(--n-color-danger-3-scrim));
572
+ --n-color-danger-900-scrim: light-dark(var(--n-color-danger-10-scrim), var(--n-color-danger-2-scrim));
573
+ --n-color-danger-950-scrim: light-dark(var(--n-color-danger-11-scrim), var(--n-color-danger-1-scrim));
574
+
575
+ /* ── Scrim palette — Tint & Shade (L + alpha stepped, mode-independent) ──
576
+ Both start from the family anchor (step-500 L/C/H).
577
+ Strongest = anchor color at full alpha. Weakest = L-extreme at minimal alpha.
578
+ L: strongest = anchor, weakest = L-max (tint) or L-min (shade), 6 intervals.
579
+ Alpha: strongest = 7/7, weakest = 1/7 of n-env-alpha.
580
+ Chroma = anchor chroma (--n-C-{fam}-6) throughout.
581
+ */
582
+
583
+ --n-color-neutral-scrim-tint-strongest: oklch(var(--n-env-lightness-neutral) var(--n-C-neutral-6) var(--n-env-hue-neutral) / var(--n-env-alpha));
584
+ --n-color-neutral-scrim-tint-stronger: oklch(calc(var(--n-env-lightness-neutral) + 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-neutral))) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(6 / 7 * var(--n-env-alpha)));
585
+ --n-color-neutral-scrim-tint-strong: oklch(calc(var(--n-env-lightness-neutral) + 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-neutral))) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(5 / 7 * var(--n-env-alpha)));
586
+ --n-color-neutral-scrim-tint-base: oklch(calc(var(--n-env-lightness-neutral) + 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-neutral))) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(4 / 7 * var(--n-env-alpha)));
587
+ --n-color-neutral-scrim-tint-weak: oklch(calc(var(--n-env-lightness-neutral) + 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-neutral))) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(3 / 7 * var(--n-env-alpha)));
588
+ --n-color-neutral-scrim-tint-weaker: oklch(calc(var(--n-env-lightness-neutral) + 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-neutral))) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(2 / 7 * var(--n-env-alpha)));
589
+ --n-color-neutral-scrim-tint-weakest: oklch(var(--n-env-lightness-max) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(1 / 7 * var(--n-env-alpha)));
590
+
591
+ --n-color-neutral-scrim-shade-strongest: oklch(var(--n-env-lightness-neutral) var(--n-C-neutral-6) var(--n-env-hue-neutral) / var(--n-env-alpha));
592
+ --n-color-neutral-scrim-shade-stronger: oklch(calc(var(--n-env-lightness-neutral) - 1 / 6 * (var(--n-env-lightness-neutral) - var(--n-env-lightness-min))) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(6 / 7 * var(--n-env-alpha)));
593
+ --n-color-neutral-scrim-shade-strong: oklch(calc(var(--n-env-lightness-neutral) - 2 / 6 * (var(--n-env-lightness-neutral) - var(--n-env-lightness-min))) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(5 / 7 * var(--n-env-alpha)));
594
+ --n-color-neutral-scrim-shade-base: oklch(calc(var(--n-env-lightness-neutral) - 3 / 6 * (var(--n-env-lightness-neutral) - var(--n-env-lightness-min))) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(4 / 7 * var(--n-env-alpha)));
595
+ --n-color-neutral-scrim-shade-weak: oklch(calc(var(--n-env-lightness-neutral) - 4 / 6 * (var(--n-env-lightness-neutral) - var(--n-env-lightness-min))) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(3 / 7 * var(--n-env-alpha)));
596
+ --n-color-neutral-scrim-shade-weaker: oklch(calc(var(--n-env-lightness-neutral) - 5 / 6 * (var(--n-env-lightness-neutral) - var(--n-env-lightness-min))) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(2 / 7 * var(--n-env-alpha)));
597
+ --n-color-neutral-scrim-shade-weakest: oklch(var(--n-env-lightness-min) var(--n-C-neutral-6) var(--n-env-hue-neutral) / calc(1 / 7 * var(--n-env-alpha)));
598
+
599
+ --n-color-accent-scrim-tint-strongest: oklch(var(--n-env-lightness-accent) var(--n-C-accent-6) var(--n-env-hue-accent) / var(--n-env-alpha));
600
+ --n-color-accent-scrim-tint-stronger: oklch(calc(var(--n-env-lightness-accent) + 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-accent))) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(6 / 7 * var(--n-env-alpha)));
601
+ --n-color-accent-scrim-tint-strong: oklch(calc(var(--n-env-lightness-accent) + 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-accent))) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(5 / 7 * var(--n-env-alpha)));
602
+ --n-color-accent-scrim-tint-base: oklch(calc(var(--n-env-lightness-accent) + 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-accent))) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(4 / 7 * var(--n-env-alpha)));
603
+ --n-color-accent-scrim-tint-weak: oklch(calc(var(--n-env-lightness-accent) + 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-accent))) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(3 / 7 * var(--n-env-alpha)));
604
+ --n-color-accent-scrim-tint-weaker: oklch(calc(var(--n-env-lightness-accent) + 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-accent))) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(2 / 7 * var(--n-env-alpha)));
605
+ --n-color-accent-scrim-tint-weakest: oklch(var(--n-env-lightness-max) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(1 / 7 * var(--n-env-alpha)));
606
+
607
+ --n-color-accent-scrim-shade-strongest: oklch(var(--n-env-lightness-accent) var(--n-C-accent-6) var(--n-env-hue-accent) / var(--n-env-alpha));
608
+ --n-color-accent-scrim-shade-stronger: oklch(calc(var(--n-env-lightness-accent) - 1 / 6 * (var(--n-env-lightness-accent) - var(--n-env-lightness-min))) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(6 / 7 * var(--n-env-alpha)));
609
+ --n-color-accent-scrim-shade-strong: oklch(calc(var(--n-env-lightness-accent) - 2 / 6 * (var(--n-env-lightness-accent) - var(--n-env-lightness-min))) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(5 / 7 * var(--n-env-alpha)));
610
+ --n-color-accent-scrim-shade-base: oklch(calc(var(--n-env-lightness-accent) - 3 / 6 * (var(--n-env-lightness-accent) - var(--n-env-lightness-min))) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(4 / 7 * var(--n-env-alpha)));
611
+ --n-color-accent-scrim-shade-weak: oklch(calc(var(--n-env-lightness-accent) - 4 / 6 * (var(--n-env-lightness-accent) - var(--n-env-lightness-min))) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(3 / 7 * var(--n-env-alpha)));
612
+ --n-color-accent-scrim-shade-weaker: oklch(calc(var(--n-env-lightness-accent) - 5 / 6 * (var(--n-env-lightness-accent) - var(--n-env-lightness-min))) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(2 / 7 * var(--n-env-alpha)));
613
+ --n-color-accent-scrim-shade-weakest: oklch(var(--n-env-lightness-min) var(--n-C-accent-6) var(--n-env-hue-accent) / calc(1 / 7 * var(--n-env-alpha)));
614
+
615
+ --n-color-info-scrim-tint-strongest: oklch(var(--n-env-lightness-info) var(--n-C-info-6) var(--n-env-hue-info) / var(--n-env-alpha));
616
+ --n-color-info-scrim-tint-stronger: oklch(calc(var(--n-env-lightness-info) + 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-info))) var(--n-C-info-6) var(--n-env-hue-info) / calc(6 / 7 * var(--n-env-alpha)));
617
+ --n-color-info-scrim-tint-strong: oklch(calc(var(--n-env-lightness-info) + 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-info))) var(--n-C-info-6) var(--n-env-hue-info) / calc(5 / 7 * var(--n-env-alpha)));
618
+ --n-color-info-scrim-tint-base: oklch(calc(var(--n-env-lightness-info) + 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-info))) var(--n-C-info-6) var(--n-env-hue-info) / calc(4 / 7 * var(--n-env-alpha)));
619
+ --n-color-info-scrim-tint-weak: oklch(calc(var(--n-env-lightness-info) + 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-info))) var(--n-C-info-6) var(--n-env-hue-info) / calc(3 / 7 * var(--n-env-alpha)));
620
+ --n-color-info-scrim-tint-weaker: oklch(calc(var(--n-env-lightness-info) + 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-info))) var(--n-C-info-6) var(--n-env-hue-info) / calc(2 / 7 * var(--n-env-alpha)));
621
+ --n-color-info-scrim-tint-weakest: oklch(var(--n-env-lightness-max) var(--n-C-info-6) var(--n-env-hue-info) / calc(1 / 7 * var(--n-env-alpha)));
622
+
623
+ --n-color-info-scrim-shade-strongest: oklch(var(--n-env-lightness-info) var(--n-C-info-6) var(--n-env-hue-info) / var(--n-env-alpha));
624
+ --n-color-info-scrim-shade-stronger: oklch(calc(var(--n-env-lightness-info) - 1 / 6 * (var(--n-env-lightness-info) - var(--n-env-lightness-min))) var(--n-C-info-6) var(--n-env-hue-info) / calc(6 / 7 * var(--n-env-alpha)));
625
+ --n-color-info-scrim-shade-strong: oklch(calc(var(--n-env-lightness-info) - 2 / 6 * (var(--n-env-lightness-info) - var(--n-env-lightness-min))) var(--n-C-info-6) var(--n-env-hue-info) / calc(5 / 7 * var(--n-env-alpha)));
626
+ --n-color-info-scrim-shade-base: oklch(calc(var(--n-env-lightness-info) - 3 / 6 * (var(--n-env-lightness-info) - var(--n-env-lightness-min))) var(--n-C-info-6) var(--n-env-hue-info) / calc(4 / 7 * var(--n-env-alpha)));
627
+ --n-color-info-scrim-shade-weak: oklch(calc(var(--n-env-lightness-info) - 4 / 6 * (var(--n-env-lightness-info) - var(--n-env-lightness-min))) var(--n-C-info-6) var(--n-env-hue-info) / calc(3 / 7 * var(--n-env-alpha)));
628
+ --n-color-info-scrim-shade-weaker: oklch(calc(var(--n-env-lightness-info) - 5 / 6 * (var(--n-env-lightness-info) - var(--n-env-lightness-min))) var(--n-C-info-6) var(--n-env-hue-info) / calc(2 / 7 * var(--n-env-alpha)));
629
+ --n-color-info-scrim-shade-weakest: oklch(var(--n-env-lightness-min) var(--n-C-info-6) var(--n-env-hue-info) / calc(1 / 7 * var(--n-env-alpha)));
630
+
631
+ --n-color-success-scrim-tint-strongest: oklch(var(--n-env-lightness-success) var(--n-C-success-6) var(--n-env-hue-success) / var(--n-env-alpha));
632
+ --n-color-success-scrim-tint-stronger: oklch(calc(var(--n-env-lightness-success) + 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-success))) var(--n-C-success-6) var(--n-env-hue-success) / calc(6 / 7 * var(--n-env-alpha)));
633
+ --n-color-success-scrim-tint-strong: oklch(calc(var(--n-env-lightness-success) + 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-success))) var(--n-C-success-6) var(--n-env-hue-success) / calc(5 / 7 * var(--n-env-alpha)));
634
+ --n-color-success-scrim-tint-base: oklch(calc(var(--n-env-lightness-success) + 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-success))) var(--n-C-success-6) var(--n-env-hue-success) / calc(4 / 7 * var(--n-env-alpha)));
635
+ --n-color-success-scrim-tint-weak: oklch(calc(var(--n-env-lightness-success) + 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-success))) var(--n-C-success-6) var(--n-env-hue-success) / calc(3 / 7 * var(--n-env-alpha)));
636
+ --n-color-success-scrim-tint-weaker: oklch(calc(var(--n-env-lightness-success) + 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-success))) var(--n-C-success-6) var(--n-env-hue-success) / calc(2 / 7 * var(--n-env-alpha)));
637
+ --n-color-success-scrim-tint-weakest: oklch(var(--n-env-lightness-max) var(--n-C-success-6) var(--n-env-hue-success) / calc(1 / 7 * var(--n-env-alpha)));
638
+
639
+ --n-color-success-scrim-shade-strongest: oklch(var(--n-env-lightness-success) var(--n-C-success-6) var(--n-env-hue-success) / var(--n-env-alpha));
640
+ --n-color-success-scrim-shade-stronger: oklch(calc(var(--n-env-lightness-success) - 1 / 6 * (var(--n-env-lightness-success) - var(--n-env-lightness-min))) var(--n-C-success-6) var(--n-env-hue-success) / calc(6 / 7 * var(--n-env-alpha)));
641
+ --n-color-success-scrim-shade-strong: oklch(calc(var(--n-env-lightness-success) - 2 / 6 * (var(--n-env-lightness-success) - var(--n-env-lightness-min))) var(--n-C-success-6) var(--n-env-hue-success) / calc(5 / 7 * var(--n-env-alpha)));
642
+ --n-color-success-scrim-shade-base: oklch(calc(var(--n-env-lightness-success) - 3 / 6 * (var(--n-env-lightness-success) - var(--n-env-lightness-min))) var(--n-C-success-6) var(--n-env-hue-success) / calc(4 / 7 * var(--n-env-alpha)));
643
+ --n-color-success-scrim-shade-weak: oklch(calc(var(--n-env-lightness-success) - 4 / 6 * (var(--n-env-lightness-success) - var(--n-env-lightness-min))) var(--n-C-success-6) var(--n-env-hue-success) / calc(3 / 7 * var(--n-env-alpha)));
644
+ --n-color-success-scrim-shade-weaker: oklch(calc(var(--n-env-lightness-success) - 5 / 6 * (var(--n-env-lightness-success) - var(--n-env-lightness-min))) var(--n-C-success-6) var(--n-env-hue-success) / calc(2 / 7 * var(--n-env-alpha)));
645
+ --n-color-success-scrim-shade-weakest: oklch(var(--n-env-lightness-min) var(--n-C-success-6) var(--n-env-hue-success) / calc(1 / 7 * var(--n-env-alpha)));
646
+
647
+ --n-color-warning-scrim-tint-strongest: oklch(var(--n-env-lightness-warning) var(--n-C-warning-6) var(--n-env-hue-warning) / var(--n-env-alpha));
648
+ --n-color-warning-scrim-tint-stronger: oklch(calc(var(--n-env-lightness-warning) + 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-warning))) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(6 / 7 * var(--n-env-alpha)));
649
+ --n-color-warning-scrim-tint-strong: oklch(calc(var(--n-env-lightness-warning) + 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-warning))) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(5 / 7 * var(--n-env-alpha)));
650
+ --n-color-warning-scrim-tint-base: oklch(calc(var(--n-env-lightness-warning) + 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-warning))) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(4 / 7 * var(--n-env-alpha)));
651
+ --n-color-warning-scrim-tint-weak: oklch(calc(var(--n-env-lightness-warning) + 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-warning))) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(3 / 7 * var(--n-env-alpha)));
652
+ --n-color-warning-scrim-tint-weaker: oklch(calc(var(--n-env-lightness-warning) + 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-warning))) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(2 / 7 * var(--n-env-alpha)));
653
+ --n-color-warning-scrim-tint-weakest: oklch(var(--n-env-lightness-max) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(1 / 7 * var(--n-env-alpha)));
654
+
655
+ --n-color-warning-scrim-shade-strongest: oklch(var(--n-env-lightness-warning) var(--n-C-warning-6) var(--n-env-hue-warning) / var(--n-env-alpha));
656
+ --n-color-warning-scrim-shade-stronger: oklch(calc(var(--n-env-lightness-warning) - 1 / 6 * (var(--n-env-lightness-warning) - var(--n-env-lightness-min))) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(6 / 7 * var(--n-env-alpha)));
657
+ --n-color-warning-scrim-shade-strong: oklch(calc(var(--n-env-lightness-warning) - 2 / 6 * (var(--n-env-lightness-warning) - var(--n-env-lightness-min))) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(5 / 7 * var(--n-env-alpha)));
658
+ --n-color-warning-scrim-shade-base: oklch(calc(var(--n-env-lightness-warning) - 3 / 6 * (var(--n-env-lightness-warning) - var(--n-env-lightness-min))) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(4 / 7 * var(--n-env-alpha)));
659
+ --n-color-warning-scrim-shade-weak: oklch(calc(var(--n-env-lightness-warning) - 4 / 6 * (var(--n-env-lightness-warning) - var(--n-env-lightness-min))) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(3 / 7 * var(--n-env-alpha)));
660
+ --n-color-warning-scrim-shade-weaker: oklch(calc(var(--n-env-lightness-warning) - 5 / 6 * (var(--n-env-lightness-warning) - var(--n-env-lightness-min))) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(2 / 7 * var(--n-env-alpha)));
661
+ --n-color-warning-scrim-shade-weakest: oklch(var(--n-env-lightness-min) var(--n-C-warning-6) var(--n-env-hue-warning) / calc(1 / 7 * var(--n-env-alpha)));
662
+
663
+ --n-color-danger-scrim-tint-strongest: oklch(var(--n-env-lightness-danger) var(--n-C-danger-6) var(--n-env-hue-danger) / var(--n-env-alpha));
664
+ --n-color-danger-scrim-tint-stronger: oklch(calc(var(--n-env-lightness-danger) + 1 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-danger))) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(6 / 7 * var(--n-env-alpha)));
665
+ --n-color-danger-scrim-tint-strong: oklch(calc(var(--n-env-lightness-danger) + 2 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-danger))) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(5 / 7 * var(--n-env-alpha)));
666
+ --n-color-danger-scrim-tint-base: oklch(calc(var(--n-env-lightness-danger) + 3 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-danger))) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(4 / 7 * var(--n-env-alpha)));
667
+ --n-color-danger-scrim-tint-weak: oklch(calc(var(--n-env-lightness-danger) + 4 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-danger))) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(3 / 7 * var(--n-env-alpha)));
668
+ --n-color-danger-scrim-tint-weaker: oklch(calc(var(--n-env-lightness-danger) + 5 / 6 * (var(--n-env-lightness-max) - var(--n-env-lightness-danger))) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(2 / 7 * var(--n-env-alpha)));
669
+ --n-color-danger-scrim-tint-weakest: oklch(var(--n-env-lightness-max) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(1 / 7 * var(--n-env-alpha)));
670
+
671
+ --n-color-danger-scrim-shade-strongest: oklch(var(--n-env-lightness-danger) var(--n-C-danger-6) var(--n-env-hue-danger) / var(--n-env-alpha));
672
+ --n-color-danger-scrim-shade-stronger: oklch(calc(var(--n-env-lightness-danger) - 1 / 6 * (var(--n-env-lightness-danger) - var(--n-env-lightness-min))) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(6 / 7 * var(--n-env-alpha)));
673
+ --n-color-danger-scrim-shade-strong: oklch(calc(var(--n-env-lightness-danger) - 2 / 6 * (var(--n-env-lightness-danger) - var(--n-env-lightness-min))) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(5 / 7 * var(--n-env-alpha)));
674
+ --n-color-danger-scrim-shade-base: oklch(calc(var(--n-env-lightness-danger) - 3 / 6 * (var(--n-env-lightness-danger) - var(--n-env-lightness-min))) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(4 / 7 * var(--n-env-alpha)));
675
+ --n-color-danger-scrim-shade-weak: oklch(calc(var(--n-env-lightness-danger) - 4 / 6 * (var(--n-env-lightness-danger) - var(--n-env-lightness-min))) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(3 / 7 * var(--n-env-alpha)));
676
+ --n-color-danger-scrim-shade-weaker: oklch(calc(var(--n-env-lightness-danger) - 5 / 6 * (var(--n-env-lightness-danger) - var(--n-env-lightness-min))) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(2 / 7 * var(--n-env-alpha)));
677
+ --n-color-danger-scrim-shade-weakest: oklch(var(--n-env-lightness-min) var(--n-C-danger-6) var(--n-env-hue-danger) / calc(1 / 7 * var(--n-env-alpha)));
678
+
679
+ /* ── Scrim anchor aliases (bare name = step 500) ── */
680
+
681
+ --n-color-neutral-scrim: var(--n-color-neutral-500-scrim);
682
+ --n-color-accent-scrim: var(--n-color-accent-500-scrim);
683
+ --n-color-info-scrim: var(--n-color-info-500-scrim);
684
+ --n-color-success-scrim: var(--n-color-success-500-scrim);
685
+ --n-color-warning-scrim: var(--n-color-warning-500-scrim);
686
+ --n-color-danger-scrim: var(--n-color-danger-500-scrim);
687
+
688
+ /* ── Background — Elevation aliases ──
689
+ Same step in both modes → visual layer stays consistent.
690
+ */
691
+
692
+ --n-color-neutral-lowest: light-dark(oklch(var(--n-L-light-1) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-1) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
693
+ --n-color-neutral-lower: light-dark(oklch(var(--n-L-light-2) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-2) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
694
+ --n-color-neutral-low: light-dark(oklch(var(--n-L-light-3) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-3) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
695
+ --n-color-neutral-base: light-dark(oklch(var(--n-L-light-4) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-4) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
696
+ --n-color-neutral-high: light-dark(oklch(var(--n-L-light-5) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-5) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
697
+ --n-color-neutral-higher: light-dark(oklch(var(--n-L-light-6) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-6) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
698
+ --n-color-neutral-highest: light-dark(oklch(var(--n-L-light-7) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-7) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
699
+
700
+ --n-color-accent-lowest: light-dark(oklch(var(--n-L-light-1) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-1) var(--n-C-accent-muted) var(--n-env-hue-accent)));
701
+ --n-color-accent-lower: light-dark(oklch(var(--n-L-light-2) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-2) var(--n-C-accent-muted) var(--n-env-hue-accent)));
702
+ --n-color-accent-low: light-dark(oklch(var(--n-L-light-3) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-3) var(--n-C-accent-muted) var(--n-env-hue-accent)));
703
+ --n-color-accent-base: light-dark(oklch(var(--n-L-light-4) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-4) var(--n-C-accent-muted) var(--n-env-hue-accent)));
704
+ --n-color-accent-high: light-dark(oklch(var(--n-L-light-5) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-5) var(--n-C-accent-muted) var(--n-env-hue-accent)));
705
+ --n-color-accent-higher: light-dark(oklch(var(--n-L-light-6) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-6) var(--n-C-accent-muted) var(--n-env-hue-accent)));
706
+ --n-color-accent-highest: light-dark(oklch(var(--n-L-light-7) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-7) var(--n-C-accent-muted) var(--n-env-hue-accent)));
707
+
708
+ --n-color-info-lowest: light-dark(oklch(var(--n-L-light-1) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-1) var(--n-C-info-muted) var(--n-env-hue-info)));
709
+ --n-color-info-lower: light-dark(oklch(var(--n-L-light-2) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-2) var(--n-C-info-muted) var(--n-env-hue-info)));
710
+ --n-color-info-low: light-dark(oklch(var(--n-L-light-3) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-3) var(--n-C-info-muted) var(--n-env-hue-info)));
711
+ --n-color-info-base: light-dark(oklch(var(--n-L-light-4) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-4) var(--n-C-info-muted) var(--n-env-hue-info)));
712
+ --n-color-info-high: light-dark(oklch(var(--n-L-light-5) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-5) var(--n-C-info-muted) var(--n-env-hue-info)));
713
+ --n-color-info-higher: light-dark(oklch(var(--n-L-light-6) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-6) var(--n-C-info-muted) var(--n-env-hue-info)));
714
+ --n-color-info-highest: light-dark(oklch(var(--n-L-light-7) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-7) var(--n-C-info-muted) var(--n-env-hue-info)));
715
+
716
+ --n-color-success-lowest: light-dark(oklch(var(--n-L-light-1) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-1) var(--n-C-success-muted) var(--n-env-hue-success)));
717
+ --n-color-success-lower: light-dark(oklch(var(--n-L-light-2) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-2) var(--n-C-success-muted) var(--n-env-hue-success)));
718
+ --n-color-success-low: light-dark(oklch(var(--n-L-light-3) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-3) var(--n-C-success-muted) var(--n-env-hue-success)));
719
+ --n-color-success-base: light-dark(oklch(var(--n-L-light-4) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-4) var(--n-C-success-muted) var(--n-env-hue-success)));
720
+ --n-color-success-high: light-dark(oklch(var(--n-L-light-5) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-5) var(--n-C-success-muted) var(--n-env-hue-success)));
721
+ --n-color-success-higher: light-dark(oklch(var(--n-L-light-6) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-6) var(--n-C-success-muted) var(--n-env-hue-success)));
722
+ --n-color-success-highest: light-dark(oklch(var(--n-L-light-7) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-7) var(--n-C-success-muted) var(--n-env-hue-success)));
723
+
724
+ --n-color-warning-lowest: light-dark(oklch(var(--n-L-light-1) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-1) var(--n-C-warning-muted) var(--n-env-hue-warning)));
725
+ --n-color-warning-lower: light-dark(oklch(var(--n-L-light-2) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-2) var(--n-C-warning-muted) var(--n-env-hue-warning)));
726
+ --n-color-warning-low: light-dark(oklch(var(--n-L-light-3) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-3) var(--n-C-warning-muted) var(--n-env-hue-warning)));
727
+ --n-color-warning-base: light-dark(oklch(var(--n-L-light-4) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-4) var(--n-C-warning-muted) var(--n-env-hue-warning)));
728
+ --n-color-warning-high: light-dark(oklch(var(--n-L-light-5) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-5) var(--n-C-warning-muted) var(--n-env-hue-warning)));
729
+ --n-color-warning-higher: light-dark(oklch(var(--n-L-light-6) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-6) var(--n-C-warning-muted) var(--n-env-hue-warning)));
730
+ --n-color-warning-highest: light-dark(oklch(var(--n-L-light-7) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-7) var(--n-C-warning-muted) var(--n-env-hue-warning)));
731
+
732
+ --n-color-danger-lowest: light-dark(oklch(var(--n-L-light-1) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-1) var(--n-C-danger-muted) var(--n-env-hue-danger)));
733
+ --n-color-danger-lower: light-dark(oklch(var(--n-L-light-2) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-2) var(--n-C-danger-muted) var(--n-env-hue-danger)));
734
+ --n-color-danger-low: light-dark(oklch(var(--n-L-light-3) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-3) var(--n-C-danger-muted) var(--n-env-hue-danger)));
735
+ --n-color-danger-base: light-dark(oklch(var(--n-L-light-4) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-4) var(--n-C-danger-muted) var(--n-env-hue-danger)));
736
+ --n-color-danger-high: light-dark(oklch(var(--n-L-light-5) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-5) var(--n-C-danger-muted) var(--n-env-hue-danger)));
737
+ --n-color-danger-higher: light-dark(oklch(var(--n-L-light-6) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-6) var(--n-C-danger-muted) var(--n-env-hue-danger)));
738
+ --n-color-danger-highest: light-dark(oklch(var(--n-L-light-7) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-7) var(--n-C-danger-muted) var(--n-env-hue-danger)));
739
+
740
+ /* ── Background — Brightness aliases ──
741
+ Flipped step mapping across modes → "brightest" is always brightest.
742
+ */
743
+
744
+ --n-color-neutral-brightest: light-dark(oklch(var(--n-L-light-1) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-7) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
745
+ --n-color-neutral-brighter: light-dark(oklch(var(--n-L-light-2) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-6) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
746
+ --n-color-neutral-bright: light-dark(oklch(var(--n-L-light-3) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-5) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
747
+ --n-color-neutral-dim: light-dark(oklch(var(--n-L-light-5) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-3) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
748
+ --n-color-neutral-dimmer: light-dark(oklch(var(--n-L-light-6) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-2) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
749
+ --n-color-neutral-dimmest: light-dark(oklch(var(--n-L-light-7) var(--n-C-neutral-muted) var(--n-env-hue-neutral)), oklch(var(--n-L-dark-1) var(--n-C-neutral-muted) var(--n-env-hue-neutral)));
750
+
751
+ --n-color-accent-brightest: light-dark(oklch(var(--n-L-light-1) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-7) var(--n-C-accent-muted) var(--n-env-hue-accent)));
752
+ --n-color-accent-brighter: light-dark(oklch(var(--n-L-light-2) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-6) var(--n-C-accent-muted) var(--n-env-hue-accent)));
753
+ --n-color-accent-bright: light-dark(oklch(var(--n-L-light-3) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-5) var(--n-C-accent-muted) var(--n-env-hue-accent)));
754
+ --n-color-accent-dim: light-dark(oklch(var(--n-L-light-5) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-3) var(--n-C-accent-muted) var(--n-env-hue-accent)));
755
+ --n-color-accent-dimmer: light-dark(oklch(var(--n-L-light-6) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-2) var(--n-C-accent-muted) var(--n-env-hue-accent)));
756
+ --n-color-accent-dimmest: light-dark(oklch(var(--n-L-light-7) var(--n-C-accent-muted) var(--n-env-hue-accent)), oklch(var(--n-L-dark-1) var(--n-C-accent-muted) var(--n-env-hue-accent)));
757
+
758
+ --n-color-info-brightest: light-dark(oklch(var(--n-L-light-1) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-7) var(--n-C-info-muted) var(--n-env-hue-info)));
759
+ --n-color-info-brighter: light-dark(oklch(var(--n-L-light-2) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-6) var(--n-C-info-muted) var(--n-env-hue-info)));
760
+ --n-color-info-bright: light-dark(oklch(var(--n-L-light-3) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-5) var(--n-C-info-muted) var(--n-env-hue-info)));
761
+ --n-color-info-dim: light-dark(oklch(var(--n-L-light-5) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-3) var(--n-C-info-muted) var(--n-env-hue-info)));
762
+ --n-color-info-dimmer: light-dark(oklch(var(--n-L-light-6) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-2) var(--n-C-info-muted) var(--n-env-hue-info)));
763
+ --n-color-info-dimmest: light-dark(oklch(var(--n-L-light-7) var(--n-C-info-muted) var(--n-env-hue-info)), oklch(var(--n-L-dark-1) var(--n-C-info-muted) var(--n-env-hue-info)));
764
+
765
+ --n-color-success-brightest: light-dark(oklch(var(--n-L-light-1) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-7) var(--n-C-success-muted) var(--n-env-hue-success)));
766
+ --n-color-success-brighter: light-dark(oklch(var(--n-L-light-2) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-6) var(--n-C-success-muted) var(--n-env-hue-success)));
767
+ --n-color-success-bright: light-dark(oklch(var(--n-L-light-3) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-5) var(--n-C-success-muted) var(--n-env-hue-success)));
768
+ --n-color-success-dim: light-dark(oklch(var(--n-L-light-5) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-3) var(--n-C-success-muted) var(--n-env-hue-success)));
769
+ --n-color-success-dimmer: light-dark(oklch(var(--n-L-light-6) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-2) var(--n-C-success-muted) var(--n-env-hue-success)));
770
+ --n-color-success-dimmest: light-dark(oklch(var(--n-L-light-7) var(--n-C-success-muted) var(--n-env-hue-success)), oklch(var(--n-L-dark-1) var(--n-C-success-muted) var(--n-env-hue-success)));
771
+
772
+ --n-color-warning-brightest: light-dark(oklch(var(--n-L-light-1) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-7) var(--n-C-warning-muted) var(--n-env-hue-warning)));
773
+ --n-color-warning-brighter: light-dark(oklch(var(--n-L-light-2) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-6) var(--n-C-warning-muted) var(--n-env-hue-warning)));
774
+ --n-color-warning-bright: light-dark(oklch(var(--n-L-light-3) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-5) var(--n-C-warning-muted) var(--n-env-hue-warning)));
775
+ --n-color-warning-dim: light-dark(oklch(var(--n-L-light-5) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-3) var(--n-C-warning-muted) var(--n-env-hue-warning)));
776
+ --n-color-warning-dimmer: light-dark(oklch(var(--n-L-light-6) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-2) var(--n-C-warning-muted) var(--n-env-hue-warning)));
777
+ --n-color-warning-dimmest: light-dark(oklch(var(--n-L-light-7) var(--n-C-warning-muted) var(--n-env-hue-warning)), oklch(var(--n-L-dark-1) var(--n-C-warning-muted) var(--n-env-hue-warning)));
778
+
779
+ --n-color-danger-brightest: light-dark(oklch(var(--n-L-light-1) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-7) var(--n-C-danger-muted) var(--n-env-hue-danger)));
780
+ --n-color-danger-brighter: light-dark(oklch(var(--n-L-light-2) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-6) var(--n-C-danger-muted) var(--n-env-hue-danger)));
781
+ --n-color-danger-bright: light-dark(oklch(var(--n-L-light-3) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-5) var(--n-C-danger-muted) var(--n-env-hue-danger)));
782
+ --n-color-danger-dim: light-dark(oklch(var(--n-L-light-5) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-3) var(--n-C-danger-muted) var(--n-env-hue-danger)));
783
+ --n-color-danger-dimmer: light-dark(oklch(var(--n-L-light-6) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-2) var(--n-C-danger-muted) var(--n-env-hue-danger)));
784
+ --n-color-danger-dimmest: light-dark(oklch(var(--n-L-light-7) var(--n-C-danger-muted) var(--n-env-hue-danger)), oklch(var(--n-L-dark-1) var(--n-C-danger-muted) var(--n-env-hue-danger)));
785
+
786
+ }
787
+ }
788
+
789
+ /* ================================================================
790
+ nonoun-css Semantic Color Tokens
791
+
792
+ Maps color primitives to UI roles:
793
+ Grounds — backgrounds by elevation (doc → body → panel → control → card → modal)
794
+ Ink — text/icons on grounds
795
+ Stroke — borders/dividers on grounds (muted scrims)
796
+ Surface — interactive element fills (buttons, badges)
797
+ Surface Ink — text/icons on surfaces
798
+ Outline — borders on surfaces (higher contrast scrims)
799
+ ================================================================ */
800
+
801
+ @layer tokens {
802
+ :root {
803
+ /* ── Neutral ── */
804
+
805
+ /* Grounds */
806
+ --n-doc-neutral: var(--n-color-neutral-dimmer);
807
+ --n-doc-hover-neutral: var(--n-color-neutral-lower);
808
+ --n-doc-active-neutral: var(--n-color-neutral-low);
809
+ --n-doc-disabled-neutral: var(--n-color-neutral-base);
810
+
811
+ --n-body-neutral: var(--n-color-neutral-low);
812
+ --n-body-hover-neutral: var(--n-color-neutral-bright);
813
+ --n-body-active-neutral: var(--n-color-neutral-brighter);
814
+ --n-body-disabled-neutral: var(--n-color-neutral-base);
815
+
816
+ --n-panel-neutral: var(--n-color-neutral-bright);
817
+ --n-panel-hover-neutral: var(--n-color-neutral-brighter);
818
+ --n-panel-active-neutral: var(--n-color-neutral-brightest);
819
+ --n-panel-disabled-neutral: var(--n-color-neutral-base);
820
+
821
+ --n-control-neutral: var(--n-color-neutral-base);
822
+ --n-control-hover-neutral: var(--n-color-neutral-bright);
823
+ --n-control-active-neutral: var(--n-color-neutral-brighter);
824
+ --n-control-disabled-neutral: var(--n-color-neutral-base);
825
+
826
+ --n-button-neutral: var(--n-color-neutral-higher);
827
+ --n-button-hover-neutral: var(--n-color-neutral-highest);
828
+ --n-button-active-neutral: var(--n-color-neutral-highest);
829
+ --n-button-disabled-neutral: var(--n-color-neutral-base);
830
+
831
+ --n-card-neutral: var(--n-color-neutral-brighter);
832
+ --n-card-hover-neutral: var(--n-color-neutral-brightest);
833
+ --n-card-active-neutral: var(--n-color-neutral-brightest);
834
+ --n-card-disabled-neutral: var(--n-color-neutral-base);
835
+
836
+ --n-modal-neutral: var(--n-color-neutral-brightest);
837
+ --n-modal-hover-neutral: var(--n-color-neutral-brightest);
838
+ --n-modal-active-neutral: var(--n-color-neutral-brightest);
839
+ --n-modal-disabled-neutral: var(--n-color-neutral-base);
840
+
841
+ /* Ink */
842
+ --n-ink-neutral: var(--n-color-neutral-700);
843
+ --n-ink-strong-neutral: var(--n-color-neutral-950);
844
+ --n-ink-inverse-neutral: var(--n-color-neutral-11);
845
+ --n-ink-muted-neutral: var(--n-color-neutral-600);
846
+ --n-ink-placeholder-neutral: var(--n-color-neutral-400);
847
+ --n-ink-hover-neutral: var(--n-color-neutral-950);
848
+ --n-ink-active-neutral: var(--n-color-neutral-500);
849
+ --n-ink-disabled-neutral: var(--n-color-neutral-scrim-tint-weaker);
850
+
851
+ /* Border */
852
+ --n-border-neutral: var(--n-color-neutral-200-scrim);
853
+ --n-border-muted-neutral: var(--n-color-neutral-100-scrim);
854
+ --n-border-hover-neutral: var(--n-color-neutral-300-scrim);
855
+ --n-border-active-neutral: var(--n-color-neutral-400-scrim);
856
+ --n-border-disabled-neutral: var(--n-color-neutral-scrim-tint-weaker);
857
+
858
+ /* Surface */
859
+ --n-surface-neutral: var(--n-color-neutral-500);
860
+ --n-surface-hover-neutral: var(--n-color-neutral-400);
861
+ --n-surface-active-neutral: var(--n-color-neutral-600);
862
+ --n-surface-disabled-neutral: var(--n-color-neutral-scrim-tint-weaker);
863
+
864
+ /* Surface Ink */
865
+ --n-surface-ink-neutral: white;
866
+ --n-surface-ink-hover-neutral: white;
867
+ --n-surface-ink-active-neutral: var(--n-color-neutral-950);
868
+ --n-surface-ink-disabled-neutral: var(--n-color-neutral-scrim-tint-weaker);
869
+
870
+ /* ── Accent ── */
871
+
872
+ /* Grounds */
873
+ --n-doc-accent: var(--n-color-accent-lowest);
874
+ --n-doc-hover-accent: var(--n-color-accent-lower);
875
+ --n-doc-active-accent: var(--n-color-accent-low);
876
+ --n-doc-disabled-accent: var(--n-color-accent-base);
877
+
878
+ --n-body-accent: var(--n-color-accent-low);
879
+ --n-body-hover-accent: var(--n-color-accent-bright);
880
+ --n-body-active-accent: var(--n-color-accent-brighter);
881
+ --n-body-disabled-accent: var(--n-color-accent-base);
882
+
883
+ --n-panel-accent: var(--n-color-accent-bright);
884
+ --n-panel-hover-accent: var(--n-color-accent-brighter);
885
+ --n-panel-active-accent: var(--n-color-accent-brightest);
886
+ --n-panel-disabled-accent: var(--n-color-accent-base);
887
+
888
+ --n-control-accent: var(--n-color-accent-base);
889
+ --n-control-hover-accent: var(--n-color-accent-bright);
890
+ --n-control-active-accent: var(--n-color-accent-brighter);
891
+ --n-control-disabled-accent: var(--n-color-accent-base);
892
+
893
+ --n-button-accent: var(--n-color-accent-higher);
894
+ --n-button-hover-accent: var(--n-color-accent-highest);
895
+ --n-button-active-accent: var(--n-color-accent-highest);
896
+ --n-button-disabled-accent: var(--n-color-accent-base);
897
+
898
+ --n-card-accent: var(--n-color-accent-brighter);
899
+ --n-card-hover-accent: var(--n-color-accent-brightest);
900
+ --n-card-active-accent: var(--n-color-accent-brightest);
901
+ --n-card-disabled-accent: var(--n-color-accent-base);
902
+
903
+ --n-modal-accent: var(--n-color-accent-brightest);
904
+ --n-modal-hover-accent: var(--n-color-accent-brightest);
905
+ --n-modal-active-accent: var(--n-color-accent-brightest);
906
+ --n-modal-disabled-accent: var(--n-color-accent-base);
907
+
908
+ /* Ink */
909
+ --n-ink-accent: var(--n-color-accent-700);
910
+ --n-ink-strong-accent: var(--n-color-accent-950);
911
+ --n-ink-inverse-accent: var(--n-color-accent-11);
912
+ --n-ink-muted-accent: var(--n-color-accent-600);
913
+ --n-ink-placeholder-accent: var(--n-color-accent-400);
914
+ --n-ink-hover-accent: var(--n-color-accent-950);
915
+ --n-ink-active-accent: var(--n-color-accent-500);
916
+ --n-ink-disabled-accent: var(--n-color-accent-scrim-tint-weaker);
917
+
918
+ /* Border */
919
+ --n-border-accent: var(--n-color-accent-200-scrim);
920
+ --n-border-muted-accent: var(--n-color-accent-100-scrim);
921
+ --n-border-hover-accent: var(--n-color-accent-300-scrim);
922
+ --n-border-active-accent: var(--n-color-accent-400-scrim);
923
+ --n-border-disabled-accent: var(--n-color-accent-scrim-tint-weaker);
924
+
925
+ /* Surface */
926
+ --n-surface-accent: var(--n-color-accent-500);
927
+ --n-surface-hover-accent: var(--n-color-accent-400);
928
+ --n-surface-active-accent: var(--n-color-accent-600);
929
+ --n-surface-disabled-accent: var(--n-color-accent-scrim-tint-weaker);
930
+
931
+ /* Surface Ink */
932
+ --n-surface-ink-accent: white;
933
+ --n-surface-ink-hover-accent: white;
934
+ --n-surface-ink-active-accent: var(--n-color-accent-950);
935
+ --n-surface-ink-disabled-accent: var(--n-color-accent-scrim-tint-weaker);
936
+
937
+ /* ── Info ── */
938
+
939
+ /* Grounds */
940
+ --n-doc-info: var(--n-color-info-lowest);
941
+ --n-doc-hover-info: var(--n-color-info-lower);
942
+ --n-doc-active-info: var(--n-color-info-low);
943
+ --n-doc-disabled-info: var(--n-color-info-base);
944
+
945
+ --n-body-info: var(--n-color-info-low);
946
+ --n-body-hover-info: var(--n-color-info-bright);
947
+ --n-body-active-info: var(--n-color-info-brighter);
948
+ --n-body-disabled-info: var(--n-color-info-base);
949
+
950
+ --n-panel-info: var(--n-color-info-bright);
951
+ --n-panel-hover-info: var(--n-color-info-brighter);
952
+ --n-panel-active-info: var(--n-color-info-brightest);
953
+ --n-panel-disabled-info: var(--n-color-info-base);
954
+
955
+ --n-control-info: var(--n-color-info-base);
956
+ --n-control-hover-info: var(--n-color-info-bright);
957
+ --n-control-active-info: var(--n-color-info-brighter);
958
+ --n-control-disabled-info: var(--n-color-info-base);
959
+
960
+ --n-button-info: var(--n-color-info-higher);
961
+ --n-button-hover-info: var(--n-color-info-highest);
962
+ --n-button-active-info: var(--n-color-info-highest);
963
+ --n-button-disabled-info: var(--n-color-info-base);
964
+
965
+ --n-card-info: var(--n-color-info-brighter);
966
+ --n-card-hover-info: var(--n-color-info-brightest);
967
+ --n-card-active-info: var(--n-color-info-brightest);
968
+ --n-card-disabled-info: var(--n-color-info-base);
969
+
970
+ --n-modal-info: var(--n-color-info-brightest);
971
+ --n-modal-hover-info: var(--n-color-info-brightest);
972
+ --n-modal-active-info: var(--n-color-info-brightest);
973
+ --n-modal-disabled-info: var(--n-color-info-base);
974
+
975
+ /* Ink */
976
+ --n-ink-info: var(--n-color-info-700);
977
+ --n-ink-strong-info: var(--n-color-info-950);
978
+ --n-ink-inverse-info: var(--n-color-info-11);
979
+ --n-ink-muted-info: var(--n-color-info-600);
980
+ --n-ink-placeholder-info: var(--n-color-info-400);
981
+ --n-ink-hover-info: var(--n-color-info-950);
982
+ --n-ink-active-info: var(--n-color-info-500);
983
+ --n-ink-disabled-info: var(--n-color-info-scrim-tint-weaker);
984
+
985
+ /* Border */
986
+ --n-border-info: var(--n-color-info-200-scrim);
987
+ --n-border-muted-info: var(--n-color-info-100-scrim);
988
+ --n-border-hover-info: var(--n-color-info-300-scrim);
989
+ --n-border-active-info: var(--n-color-info-400-scrim);
990
+ --n-border-disabled-info: var(--n-color-info-scrim-tint-weaker);
991
+
992
+ /* Surface */
993
+ --n-surface-info: var(--n-color-info-500);
994
+ --n-surface-hover-info: var(--n-color-info-400);
995
+ --n-surface-active-info: var(--n-color-info-600);
996
+ --n-surface-disabled-info: var(--n-color-info-scrim-tint-weaker);
997
+
998
+ /* Surface Ink */
999
+ --n-surface-ink-info: white;
1000
+ --n-surface-ink-hover-info: white;
1001
+ --n-surface-ink-active-info: var(--n-color-info-950);
1002
+ --n-surface-ink-disabled-info: var(--n-color-info-scrim-tint-weaker);
1003
+
1004
+ /* ── Success ── */
1005
+
1006
+ /* Grounds */
1007
+ --n-doc-success: var(--n-color-success-lowest);
1008
+ --n-doc-hover-success: var(--n-color-success-lower);
1009
+ --n-doc-active-success: var(--n-color-success-low);
1010
+ --n-doc-disabled-success: var(--n-color-success-base);
1011
+
1012
+ --n-body-success: var(--n-color-success-low);
1013
+ --n-body-hover-success: var(--n-color-success-bright);
1014
+ --n-body-active-success: var(--n-color-success-brighter);
1015
+ --n-body-disabled-success: var(--n-color-success-base);
1016
+
1017
+ --n-panel-success: var(--n-color-success-bright);
1018
+ --n-panel-hover-success: var(--n-color-success-brighter);
1019
+ --n-panel-active-success: var(--n-color-success-brightest);
1020
+ --n-panel-disabled-success: var(--n-color-success-base);
1021
+
1022
+ --n-control-success: var(--n-color-success-base);
1023
+ --n-control-hover-success: var(--n-color-success-bright);
1024
+ --n-control-active-success: var(--n-color-success-brighter);
1025
+ --n-control-disabled-success: var(--n-color-success-base);
1026
+
1027
+ --n-button-success: var(--n-color-success-higher);
1028
+ --n-button-hover-success: var(--n-color-success-highest);
1029
+ --n-button-active-success: var(--n-color-success-highest);
1030
+ --n-button-disabled-success: var(--n-color-success-base);
1031
+
1032
+ --n-card-success: var(--n-color-success-brighter);
1033
+ --n-card-hover-success: var(--n-color-success-brightest);
1034
+ --n-card-active-success: var(--n-color-success-brightest);
1035
+ --n-card-disabled-success: var(--n-color-success-base);
1036
+
1037
+ --n-modal-success: var(--n-color-success-brightest);
1038
+ --n-modal-hover-success: var(--n-color-success-brightest);
1039
+ --n-modal-active-success: var(--n-color-success-brightest);
1040
+ --n-modal-disabled-success: var(--n-color-success-base);
1041
+
1042
+ /* Ink */
1043
+ --n-ink-success: var(--n-color-success-700);
1044
+ --n-ink-strong-success: var(--n-color-success-950);
1045
+ --n-ink-inverse-success: var(--n-color-success-11);
1046
+ --n-ink-muted-success: var(--n-color-success-600);
1047
+ --n-ink-placeholder-success: var(--n-color-success-400);
1048
+ --n-ink-hover-success: var(--n-color-success-950);
1049
+ --n-ink-active-success: var(--n-color-success-500);
1050
+ --n-ink-disabled-success: var(--n-color-success-scrim-tint-weaker);
1051
+
1052
+ /* Border */
1053
+ --n-border-success: var(--n-color-success-200-scrim);
1054
+ --n-border-muted-success: var(--n-color-success-100-scrim);
1055
+ --n-border-hover-success: var(--n-color-success-300-scrim);
1056
+ --n-border-active-success: var(--n-color-success-400-scrim);
1057
+ --n-border-disabled-success: var(--n-color-success-scrim-tint-weaker);
1058
+
1059
+ /* Surface */
1060
+ --n-surface-success: var(--n-color-success-500);
1061
+ --n-surface-hover-success: var(--n-color-success-400);
1062
+ --n-surface-active-success: var(--n-color-success-600);
1063
+ --n-surface-disabled-success: var(--n-color-success-scrim-tint-weaker);
1064
+
1065
+ /* Surface Ink */
1066
+ --n-surface-ink-success: white;
1067
+ --n-surface-ink-hover-success: white;
1068
+ --n-surface-ink-active-success: var(--n-color-success-950);
1069
+ --n-surface-ink-disabled-success: var(--n-color-success-scrim-tint-weaker);
1070
+
1071
+ /* ── Warning ── */
1072
+
1073
+ /* Grounds */
1074
+ --n-doc-warning: var(--n-color-warning-lowest);
1075
+ --n-doc-hover-warning: var(--n-color-warning-lower);
1076
+ --n-doc-active-warning: var(--n-color-warning-low);
1077
+ --n-doc-disabled-warning: var(--n-color-warning-base);
1078
+
1079
+ --n-body-warning: var(--n-color-warning-low);
1080
+ --n-body-hover-warning: var(--n-color-warning-bright);
1081
+ --n-body-active-warning: var(--n-color-warning-brighter);
1082
+ --n-body-disabled-warning: var(--n-color-warning-base);
1083
+
1084
+ --n-panel-warning: var(--n-color-warning-bright);
1085
+ --n-panel-hover-warning: var(--n-color-warning-brighter);
1086
+ --n-panel-active-warning: var(--n-color-warning-brightest);
1087
+ --n-panel-disabled-warning: var(--n-color-warning-base);
1088
+
1089
+ --n-control-warning: var(--n-color-warning-base);
1090
+ --n-control-hover-warning: var(--n-color-warning-bright);
1091
+ --n-control-active-warning: var(--n-color-warning-brighter);
1092
+ --n-control-disabled-warning: var(--n-color-warning-base);
1093
+
1094
+ --n-button-warning: var(--n-color-warning-higher);
1095
+ --n-button-hover-warning: var(--n-color-warning-highest);
1096
+ --n-button-active-warning: var(--n-color-warning-highest);
1097
+ --n-button-disabled-warning: var(--n-color-warning-base);
1098
+
1099
+ --n-card-warning: var(--n-color-warning-brighter);
1100
+ --n-card-hover-warning: var(--n-color-warning-brightest);
1101
+ --n-card-active-warning: var(--n-color-warning-brightest);
1102
+ --n-card-disabled-warning: var(--n-color-warning-base);
1103
+
1104
+ --n-modal-warning: var(--n-color-warning-brightest);
1105
+ --n-modal-hover-warning: var(--n-color-warning-brightest);
1106
+ --n-modal-active-warning: var(--n-color-warning-brightest);
1107
+ --n-modal-disabled-warning: var(--n-color-warning-base);
1108
+
1109
+ /* Ink */
1110
+ --n-ink-warning: var(--n-color-warning-700);
1111
+ --n-ink-strong-warning: var(--n-color-warning-950);
1112
+ --n-ink-inverse-warning: var(--n-color-warning-11);
1113
+ --n-ink-muted-warning: var(--n-color-warning-600);
1114
+ --n-ink-placeholder-warning: var(--n-color-warning-400);
1115
+ --n-ink-hover-warning: var(--n-color-warning-950);
1116
+ --n-ink-active-warning: var(--n-color-warning-500);
1117
+ --n-ink-disabled-warning: var(--n-color-warning-scrim-tint-weaker);
1118
+
1119
+ /* Border */
1120
+ --n-border-warning: var(--n-color-warning-200-scrim);
1121
+ --n-border-muted-warning: var(--n-color-warning-100-scrim);
1122
+ --n-border-hover-warning: var(--n-color-warning-300-scrim);
1123
+ --n-border-active-warning: var(--n-color-warning-400-scrim);
1124
+ --n-border-disabled-warning: var(--n-color-warning-scrim-tint-weaker);
1125
+
1126
+ /* Surface */
1127
+ --n-surface-warning: var(--n-color-warning-500);
1128
+ --n-surface-hover-warning: var(--n-color-warning-400);
1129
+ --n-surface-active-warning: var(--n-color-warning-600);
1130
+ --n-surface-disabled-warning: var(--n-color-warning-scrim-tint-weaker);
1131
+
1132
+ /* Surface Ink */
1133
+ --n-surface-ink-warning: white;
1134
+ --n-surface-ink-hover-warning: white;
1135
+ --n-surface-ink-active-warning: var(--n-color-warning-950);
1136
+ --n-surface-ink-disabled-warning: var(--n-color-warning-scrim-tint-weaker);
1137
+
1138
+ /* ── Danger ── */
1139
+
1140
+ /* Grounds */
1141
+ --n-doc-danger: var(--n-color-danger-lowest);
1142
+ --n-doc-hover-danger: var(--n-color-danger-lower);
1143
+ --n-doc-active-danger: var(--n-color-danger-low);
1144
+ --n-doc-disabled-danger: var(--n-color-danger-base);
1145
+
1146
+ --n-body-danger: var(--n-color-danger-low);
1147
+ --n-body-hover-danger: var(--n-color-danger-bright);
1148
+ --n-body-active-danger: var(--n-color-danger-brighter);
1149
+ --n-body-disabled-danger: var(--n-color-danger-base);
1150
+
1151
+ --n-panel-danger: var(--n-color-danger-bright);
1152
+ --n-panel-hover-danger: var(--n-color-danger-brighter);
1153
+ --n-panel-active-danger: var(--n-color-danger-brightest);
1154
+ --n-panel-disabled-danger: var(--n-color-danger-base);
1155
+
1156
+ --n-control-danger: var(--n-color-danger-base);
1157
+ --n-control-hover-danger: var(--n-color-danger-bright);
1158
+ --n-control-active-danger: var(--n-color-danger-brighter);
1159
+ --n-control-disabled-danger: var(--n-color-danger-base);
1160
+
1161
+ --n-button-danger: var(--n-color-danger-higher);
1162
+ --n-button-hover-danger: var(--n-color-danger-highest);
1163
+ --n-button-active-danger: var(--n-color-danger-highest);
1164
+ --n-button-disabled-danger: var(--n-color-danger-base);
1165
+
1166
+ --n-card-danger: var(--n-color-danger-brighter);
1167
+ --n-card-hover-danger: var(--n-color-danger-brightest);
1168
+ --n-card-active-danger: var(--n-color-danger-brightest);
1169
+ --n-card-disabled-danger: var(--n-color-danger-base);
1170
+
1171
+ --n-modal-danger: var(--n-color-danger-brightest);
1172
+ --n-modal-hover-danger: var(--n-color-danger-brightest);
1173
+ --n-modal-active-danger: var(--n-color-danger-brightest);
1174
+ --n-modal-disabled-danger: var(--n-color-danger-base);
1175
+
1176
+ /* Ink */
1177
+ --n-ink-danger: var(--n-color-danger-700);
1178
+ --n-ink-strong-danger: var(--n-color-danger-950);
1179
+ --n-ink-inverse-danger: var(--n-color-danger-11);
1180
+ --n-ink-muted-danger: var(--n-color-danger-600);
1181
+ --n-ink-placeholder-danger: var(--n-color-danger-400);
1182
+ --n-ink-hover-danger: var(--n-color-danger-950);
1183
+ --n-ink-active-danger: var(--n-color-danger-500);
1184
+ --n-ink-disabled-danger: var(--n-color-danger-scrim-tint-weaker);
1185
+
1186
+ /* Border */
1187
+ --n-border-danger: var(--n-color-danger-200-scrim);
1188
+ --n-border-muted-danger: var(--n-color-danger-100-scrim);
1189
+ --n-border-hover-danger: var(--n-color-danger-300-scrim);
1190
+ --n-border-active-danger: var(--n-color-danger-400-scrim);
1191
+ --n-border-disabled-danger: var(--n-color-danger-scrim-tint-weaker);
1192
+
1193
+ /* Surface */
1194
+ --n-surface-danger: var(--n-color-danger-500);
1195
+ --n-surface-hover-danger: var(--n-color-danger-400);
1196
+ --n-surface-active-danger: var(--n-color-danger-600);
1197
+ --n-surface-disabled-danger: var(--n-color-danger-scrim-tint-weaker);
1198
+
1199
+ /* Surface Ink */
1200
+ --n-surface-ink-danger: white;
1201
+ --n-surface-ink-hover-danger: white;
1202
+ --n-surface-ink-active-danger: var(--n-color-danger-950);
1203
+ --n-surface-ink-disabled-danger: var(--n-color-danger-scrim-tint-weaker);
1204
+ }
1205
+ }
1206
+
1207
+ /* ================================================================
1208
+ nonoun-css Theme Presets
1209
+
1210
+ Override family params and env params per theme.
1211
+ Apply via attribute: <html theme="forest">
1212
+ Uses :where() for zero specificity — easy to override.
1213
+
1214
+ Requires colors.css to be loaded first.
1215
+ ================================================================ */
1216
+
1217
+ :where([theme="forest"]) {
1218
+ --n-env-hue-neutral: 155;
1219
+ --n-env-chroma-neutral: 0.25;
1220
+ --n-env-hue-accent: 155;
1221
+ --n-env-chroma-accent: 1.0;
1222
+ }
1223
+
1224
+ :where([theme="rose"]) {
1225
+ --n-env-hue-neutral: 350;
1226
+ --n-env-chroma-neutral: 0.35;
1227
+ --n-env-hue-accent: 350;
1228
+ --n-env-chroma-accent: 1.0;
1229
+ }
1230
+
1231
+ :where([theme="zinc"]) {
1232
+ --n-env-hue-neutral: 240;
1233
+ --n-env-chroma-neutral: 0.15;
1234
+ --n-env-hue-accent: 240;
1235
+ --n-env-chroma-accent: 1.0;
1236
+ --n-env-chroma: 0.18;
1237
+ }
1238
+
1239
+ /* ================================================================
1240
+ nonoun-css Base Reset & Document Defaults
1241
+
1242
+ Universal reset uses real specificity to override UA defaults.
1243
+ Document defaults use :where() for zero specificity so consumers
1244
+ can override font-family, background, etc. without fighting.
1245
+ ================================================================ */
1246
+
1247
+ @layer ui {
1248
+
1249
+ /* ── Universal Reset ── */
1250
+
1251
+ *,
1252
+ *::before,
1253
+ *::after {
1254
+ box-sizing: border-box;
1255
+ }
1256
+
1257
+ body {
1258
+ margin: 0;
1259
+ }
1260
+
1261
+ /* WHY: UA [hidden]{display:none} loses to author-layer :where() display values.
1262
+ Real specificity (0,1,0) ensures [hidden] always wins over :where() components. */
1263
+ [hidden] {
1264
+ display: none;
1265
+ }
1266
+
1267
+ /* ── Document Defaults ── */
1268
+
1269
+ :where(native-app),
1270
+ :where(n-sidebar) {
1271
+ -webkit-font-smoothing: antialiased;
1272
+ -moz-osx-font-smoothing: grayscale;
1273
+ text-rendering: optimizeLegibility;
1274
+
1275
+ font-family: var(--n-font-family);
1276
+ line-height: var(--n-text-line-height);
1277
+ background: var(--n-doc-neutral);
1278
+ color: var(--n-ink-neutral);
1279
+ min-height: 100dvh;
1280
+ }
1281
+
1282
+ /* ── Container Headings ── */
1283
+ /* WHY: Reset h1–h3 inside containers so page-level heading styles
1284
+ (large sizes, margins, text-transform) don't bleed in.
1285
+ Uses the container's --n-font-* scale for sizing. */
1286
+
1287
+ :where(n-card, n-panel, n-section) :where(h1, h2, h3) {
1288
+ margin: 0;
1289
+ font-weight: var(--n-button-font-weight);
1290
+ line-height: var(--n-control-line-height-relaxed);
1291
+ letter-spacing: 0;
1292
+ text-transform: none;
1293
+ color: var(--n-ink-strong);
1294
+ }
1295
+
1296
+ :where(n-card, n-panel, n-section) :where(h1) { font-size: var(--n-font-xl); }
1297
+ :where(n-card, n-panel, n-section) :where(h2) { font-size: var(--n-font-lg); }
1298
+ :where(n-card, n-panel, n-section) :where(h3) { font-size: var(--n-font-md); }
1299
+
1300
+ /* ── Reduced Motion ── */
1301
+
1302
+ @media (prefers-reduced-motion: reduce) {
1303
+ :root {
1304
+ --n-duration: 0s;
1305
+ }
1306
+ }
1307
+ }
1308
+
1309
+ /* ================================================================
1310
+ nonoun-css UI Primitives
1311
+
1312
+ Two-tier token architecture:
1313
+ 1. Definitions (--n-*-{scale}) — scale tables, constants, named tokens on :root
1314
+ 2. Resolved (--n-*) — intent/variant resolved, public API
1315
+
1316
+ Specificity hierarchy:
1317
+ - Component CSS: :where(n-*) at (0,0,0) — zero specificity
1318
+ - Attribute selectors: [attr="val"] at (0,1,0) — beats component defaults
1319
+
1320
+ All tokens use the --n-* namespace (no --_* prefix).
1321
+ ================================================================ */
1322
+
1323
+ @layer ui {
1324
+
1325
+ :root {
1326
+
1327
+ --n-font-family: system-ui, -apple-system, sans-serif;
1328
+ --n-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", "Menlo", "Consolas", "Liberation Mono", monospace;
1329
+
1330
+
1331
+ /* ═══════════════════════════════════════════
1332
+ SCALES
1333
+ Definition + resolved default per family
1334
+ ═══════════════════════════════════════════ */
1335
+
1336
+ /* ─── Size (min-height) ─── */
1337
+
1338
+ --n-size-xs: 1.5rem;
1339
+ --n-size-sm: 1.75rem;
1340
+ --n-size-md: 2.25rem;
1341
+ --n-size-lg: 2.75rem;
1342
+ --n-size-xl: 3.25rem;
1343
+ --n-size: var(--n-size-md);
1344
+
1345
+ /* ─── Font Size ─── */
1346
+
1347
+ --n-font-xs: 0.75rem;
1348
+ --n-font-sm: 0.8125rem;
1349
+ --n-font-md: 0.875rem;
1350
+ --n-font-lg: 0.9375rem;
1351
+ --n-font-xl: 1rem;
1352
+ --n-font-size: var(--n-font-md);
1353
+
1354
+ /* ─── Letter Spacing ─── */
1355
+
1356
+ --n-tracking-xs: 0.01em;
1357
+ --n-tracking-sm: 0.005em;
1358
+ --n-tracking-md: 0em;
1359
+ --n-tracking-lg: -0.005em;
1360
+ --n-tracking-xl: -0.01em;
1361
+ --n-letter-spacing: var(--n-tracking-md);
1362
+
1363
+ /* ─── Space ─── */
1364
+
1365
+ --n-space-xs: 0.125rem;
1366
+ --n-space-sm: 0.1875rem;
1367
+ --n-space-md: 0.25rem;
1368
+ --n-space-lg: 0.25rem;
1369
+ --n-space-xl: 0.25rem;
1370
+ --n-space: var(--n-space-md);
1371
+ --n-space-k: 4;
1372
+
1373
+ /* ─── Icon ─── */
1374
+
1375
+ --n-icon-xs: 0.75rem;
1376
+ --n-icon-sm: 0.875rem;
1377
+ --n-icon-md: 1rem;
1378
+ --n-icon-lg: 1.125rem;
1379
+ --n-icon-xl: 1.25rem;
1380
+ --n-icon-size: var(--n-icon-md);
1381
+
1382
+ /* ─── Widget (checkbox, radio, switch, range, badge, kbd) ─── */
1383
+
1384
+ --n-widget-xs: 0.75rem;
1385
+ --n-widget-sm: 1rem;
1386
+ --n-widget-md: 1.25rem;
1387
+ --n-widget-lg: 1.5rem;
1388
+ --n-widget-xl: 1.75rem;
1389
+ --n-widget-size: var(--n-widget-md);
1390
+
1391
+ --n-widget-font-xs: 0.5625rem;
1392
+ --n-widget-font-sm: 0.625rem;
1393
+ --n-widget-font-md: 0.625rem;
1394
+ --n-widget-font-lg: 0.625rem;
1395
+ --n-widget-font-xl: 0.75rem;
1396
+ --n-widget-font: var(--n-widget-font-md);
1397
+
1398
+ /* ─── Radius ─── */
1399
+
1400
+ --n-radius-sharp: 0.125rem;
1401
+ --n-radius-md: 0.75rem;
1402
+ --n-radius-round: 1.125rem;
1403
+ --n-radius: min(calc(var(--n-size) / 2), var(--n-radius-round));
1404
+
1405
+ /* ─── Shadow ─── */
1406
+
1407
+ --n-shadow-xs: 0 1px 2px oklch(0% 0 0 / 0.06), 0 1px 3px oklch(0% 0 0 / 0.1);
1408
+ --n-shadow-sm: 0 1px 3px oklch(0% 0 0 / 0.12);
1409
+ --n-shadow-md: 0 2px 4px oklch(0% 0 0 / 0.08), 0 4px 12px oklch(0% 0 0 / 0.12);
1410
+ --n-shadow-lg: 0 8px 32px oklch(0% 0 0 / 0.15);
1411
+ --n-shadow-xl: 0 16px 48px oklch(0% 0 0 / 0.15);
1412
+
1413
+ /* ═══════════════════════════════════════════
1414
+ TYPOGRAPHY
1415
+ ═══════════════════════════════════════════ */
1416
+
1417
+ --n-button-font-weight: 500;
1418
+ --n-input-font-weight: 400;
1419
+ --n-text-font-weight: 400;
1420
+ --n-font-weight: var(--n-text-font-weight);
1421
+
1422
+ --n-control-line-height: 1;
1423
+ --n-control-line-height-dense: 1.25;
1424
+ --n-control-line-height-relaxed: 1.5;
1425
+ --n-control-line-height-spacious: 1.75;
1426
+ --n-text-line-height: 1.5;
1427
+ --n-line-height: var(--n-text-line-height);
1428
+
1429
+ /* ═══════════════════════════════════════════
1430
+ ANIMATION
1431
+ ═══════════════════════════════════════════ */
1432
+
1433
+ --n-duration: 0.225s;
1434
+ --n-easing: cubic-bezier(0.2, 0, 0, 1);
1435
+
1436
+ /* ═══════════════════════════════════════════
1437
+ FOCUS & BACKDROP
1438
+ ═══════════════════════════════════════════ */
1439
+
1440
+ --n-focus-ring: var(--n-color-accent-600-scrim);
1441
+ --n-backdrop-color: oklch(0% 0 0);
1442
+ --n-backdrop-opacity: 0.3;
1443
+
1444
+ /* ═══════════════════════════════════════════
1445
+ COMPONENT CONSTANTS
1446
+ ═══════════════════════════════════════════ */
1447
+
1448
+ /* ─── Tooltip ─── */
1449
+ --n-tooltip-max-width: 20rem;
1450
+
1451
+ /* ─── Popover ─── */
1452
+ --n-popover-max-height: calc(100dvh - 2rem);
1453
+ --n-popover-gap: 0.25rem;
1454
+ --n-popover-viewport-margin: 0.5rem;
1455
+
1456
+ /* ─── Drawer ─── */
1457
+ --n-drawer-width: 24rem;
1458
+ --n-drawer-height: 24rem;
1459
+
1460
+ /* ─── Layout ─── */
1461
+ --n-sidebar-width: 240px;
1462
+ --n-sidebar-item-height: 3.5rem;
1463
+
1464
+ /* ─── Badge ─── */
1465
+ --n-badge-dot: 0.5rem;
1466
+
1467
+ /* ─── Group Header ─── */
1468
+ --n-group-header-font: 0.625rem;
1469
+
1470
+ /* ─── Tabs ─── */
1471
+ --n-tabs-indicator: 2px;
1472
+
1473
+ /* ─── Color → neutral ─── */
1474
+
1475
+ --n-body: var(--n-body-neutral);
1476
+ --n-ground: var(--n-body);
1477
+
1478
+ --n-card: var(--n-card-neutral);
1479
+ --n-card-hover: var(--n-card-hover-neutral);
1480
+
1481
+ --n-panel: var(--n-panel-neutral);
1482
+ --n-panel-hover: var(--n-panel-hover-neutral);
1483
+ --n-panel-active: var(--n-panel-active-neutral);
1484
+ --n-panel-disabled: var(--n-panel-disabled-neutral);
1485
+
1486
+ --n-button: var(--n-button-neutral);
1487
+ --n-button-hover: var(--n-button-hover-neutral);
1488
+ --n-button-active: var(--n-button-active-neutral);
1489
+ --n-button-disabled: var(--n-button-disabled-neutral);
1490
+
1491
+ --n-control: var(--n-control-neutral);
1492
+ --n-control-hover: var(--n-control-hover-neutral);
1493
+ --n-control-active: var(--n-control-active-neutral);
1494
+ --n-control-disabled: var(--n-control-disabled-neutral);
1495
+
1496
+ --n-widget: var(--n-color-neutral-higher);
1497
+ --n-widget-hover: var(--n-control-hover-neutral);
1498
+ --n-widget-active: var(--n-control-active-neutral);
1499
+ --n-widget-disabled: var(--n-control-disabled-neutral);
1500
+
1501
+ --n-surface: var(--n-surface-neutral);
1502
+ --n-surface-hover: var(--n-surface-hover-neutral);
1503
+ --n-surface-active: var(--n-surface-active-neutral);
1504
+ --n-surface-disabled: var(--n-surface-disabled-neutral);
1505
+
1506
+ --n-surface-ink: var(--n-surface-ink-neutral);
1507
+ --n-surface-ink-hover: var(--n-surface-ink-hover-neutral);
1508
+ --n-surface-ink-active: var(--n-surface-ink-active-neutral);
1509
+ --n-surface-ink-disabled: var(--n-surface-ink-disabled-neutral);
1510
+
1511
+ --n-border: var(--n-border-neutral);
1512
+ --n-border-hover: var(--n-border-hover-neutral);
1513
+ --n-border-active: var(--n-border-active-neutral);
1514
+ --n-border-disabled: var(--n-color-neutral-highest);
1515
+ --n-border-muted: var(--n-border-muted-neutral);
1516
+ --n-border-rest: var(--n-color-neutral-highest);
1517
+
1518
+ --n-ink: var(--n-ink-neutral);
1519
+ --n-ink-strong: var(--n-ink-strong-neutral);
1520
+ --n-ink-inverse: var(--n-ink-inverse-neutral);
1521
+ --n-ink-muted: var(--n-ink-muted-neutral);
1522
+ --n-ink-placeholder: var(--n-ink-placeholder-neutral);
1523
+ --n-ink-hover: var(--n-ink-hover-neutral);
1524
+ --n-ink-active: var(--n-ink-active-neutral);
1525
+ --n-ink-disabled: var(--n-ink-disabled-neutral);
1526
+ }
1527
+
1528
+ /* ═══════════════════════════════════════════
1529
+ ATTRIBUTE SELECTORS
1530
+ Resolve tokens based on HTML attributes
1531
+ ═══════════════════════════════════════════ */
1532
+
1533
+ /* ─── Size ─── */
1534
+
1535
+ [size="xs"] {
1536
+ --n-size: var(--n-size-xs);
1537
+ --n-font-size: var(--n-font-xs);
1538
+ --n-letter-spacing: var(--n-tracking-xs);
1539
+ --n-space: var(--n-space-xs);
1540
+ --n-icon-size: var(--n-icon-xs);
1541
+ --n-widget-size: var(--n-widget-xs);
1542
+ --n-widget-font: var(--n-widget-font-xs);
1543
+ }
1544
+
1545
+ [size="sm"] {
1546
+ --n-size: var(--n-size-sm);
1547
+ --n-font-size: var(--n-font-sm);
1548
+ --n-letter-spacing: var(--n-tracking-sm);
1549
+ --n-space: var(--n-space-sm);
1550
+ --n-icon-size: var(--n-icon-sm);
1551
+ --n-widget-size: var(--n-widget-sm);
1552
+ --n-widget-font: var(--n-widget-font-sm);
1553
+ }
1554
+
1555
+ [size="md"] {
1556
+ --n-size: var(--n-size-md);
1557
+ --n-font-size: var(--n-font-md);
1558
+ --n-letter-spacing: var(--n-tracking-md);
1559
+ --n-space: var(--n-space-md);
1560
+ --n-icon-size: var(--n-icon-md);
1561
+ --n-widget-size: var(--n-widget-md);
1562
+ --n-widget-font: var(--n-widget-font-md);
1563
+ }
1564
+
1565
+ [size="lg"] {
1566
+ --n-size: var(--n-size-lg);
1567
+ --n-font-size: var(--n-font-lg);
1568
+ --n-letter-spacing: var(--n-tracking-lg);
1569
+ --n-space: var(--n-space-lg);
1570
+ --n-icon-size: var(--n-icon-lg);
1571
+ --n-widget-size: var(--n-widget-lg);
1572
+ --n-widget-font: var(--n-widget-font-lg);
1573
+ }
1574
+
1575
+ [size="xl"] {
1576
+ --n-size: var(--n-size-xl);
1577
+ --n-font-size: var(--n-font-xl);
1578
+ --n-letter-spacing: var(--n-tracking-xl);
1579
+ --n-space: var(--n-space-xl);
1580
+ --n-icon-size: var(--n-icon-xl);
1581
+ --n-widget-size: var(--n-widget-xl);
1582
+ --n-widget-font: var(--n-widget-font-xl);
1583
+ }
1584
+
1585
+ /* ─── Density ─── */
1586
+
1587
+ [density="compact"] { --n-space-k: 2; }
1588
+ [density="default"] { --n-space-k: 4; }
1589
+ [density="loose"] { --n-space-k: 6; }
1590
+
1591
+ /* ─── Radius ─── */
1592
+
1593
+ [radius="round"] {
1594
+ --n-radius: min(calc(var(--n-size) / 2), var(--n-radius-round));
1595
+ }
1596
+ [radius="rounded"] {
1597
+ --n-radius: calc(var(--n-space) * 2);
1598
+ }
1599
+ [radius="sharp"] {
1600
+ --n-radius: var(--n-radius-sharp);
1601
+ }
1602
+
1603
+ /* ─── Toggle Control Defaults ─── */
1604
+ /* Checkboxes, radios, switches, range sliders, and calendars use
1605
+ accent-colored surface fills for their checked/active states.
1606
+ [intent] selectors below override --n-surface when explicit. */
1607
+
1608
+ :where(n-checkbox, n-radio, n-switch, n-range, n-calendar) {
1609
+ --n-surface: var(--n-surface-accent);
1610
+ --n-surface-hover: var(--n-surface-hover-accent);
1611
+ --n-surface-active: var(--n-surface-active-accent);
1612
+ --n-surface-disabled: var(--n-surface-disabled-accent);
1613
+ --n-surface-ink: var(--n-surface-ink-accent);
1614
+ --n-surface-ink-hover: var(--n-surface-ink-hover-accent);
1615
+ --n-surface-ink-active: var(--n-surface-ink-active-accent);
1616
+ --n-surface-ink-disabled: var(--n-surface-ink-disabled-accent);
1617
+ }
1618
+
1619
+ /* ─── Intent ─── */
1620
+
1621
+ [intent="neutral"] {
1622
+ --n-card: var(--n-card-neutral);
1623
+ --n-card-hover: var(--n-card-hover-neutral);
1624
+ --n-panel: var(--n-panel-neutral);
1625
+ --n-panel-hover: var(--n-panel-hover-neutral);
1626
+ --n-panel-active: var(--n-panel-active-neutral);
1627
+ --n-panel-disabled: var(--n-panel-disabled-neutral);
1628
+ --n-button: var(--n-button-neutral);
1629
+ --n-button-hover: var(--n-button-hover-neutral);
1630
+ --n-button-active: var(--n-button-active-neutral);
1631
+ --n-button-disabled: var(--n-button-disabled-neutral);
1632
+ --n-control: var(--n-control-neutral);
1633
+ --n-control-hover: var(--n-control-hover-neutral);
1634
+ --n-control-active: var(--n-control-active-neutral);
1635
+ --n-control-disabled: var(--n-control-disabled-neutral);
1636
+ --n-widget: var(--n-color-neutral-higher);
1637
+ --n-widget-hover: var(--n-control-hover-neutral);
1638
+ --n-widget-active: var(--n-control-active-neutral);
1639
+ --n-widget-disabled: var(--n-control-disabled-neutral);
1640
+ --n-surface: var(--n-surface-neutral);
1641
+ --n-surface-hover: var(--n-surface-hover-neutral);
1642
+ --n-surface-active: var(--n-surface-active-neutral);
1643
+ --n-surface-disabled: var(--n-surface-disabled-neutral);
1644
+ --n-surface-ink: var(--n-surface-ink-neutral);
1645
+ --n-surface-ink-hover: var(--n-surface-ink-hover-neutral);
1646
+ --n-surface-ink-active: var(--n-surface-ink-active-neutral);
1647
+ --n-surface-ink-disabled: var(--n-surface-ink-disabled-neutral);
1648
+ --n-border: var(--n-border-neutral);
1649
+ --n-border-hover: var(--n-border-hover-neutral);
1650
+ --n-border-active: var(--n-border-active-neutral);
1651
+ --n-border-disabled: var(--n-color-neutral-highest);
1652
+ --n-border-muted: var(--n-border-muted-neutral);
1653
+ --n-ink: var(--n-ink-neutral);
1654
+ --n-ink-strong: var(--n-ink-strong-neutral);
1655
+ --n-ink-inverse: var(--n-ink-inverse-neutral);
1656
+ --n-ink-muted: var(--n-ink-muted-neutral);
1657
+ --n-ink-placeholder: var(--n-ink-placeholder-neutral);
1658
+ --n-ink-hover: var(--n-ink-hover-neutral);
1659
+ --n-ink-active: var(--n-ink-active-neutral);
1660
+ --n-ink-disabled: var(--n-ink-disabled-neutral);
1661
+ }
1662
+
1663
+ [intent="accent"] {
1664
+ --n-card: var(--n-card-accent);
1665
+ --n-card-hover: var(--n-card-hover-accent);
1666
+ --n-panel: var(--n-panel-accent);
1667
+ --n-panel-hover: var(--n-panel-hover-accent);
1668
+ --n-panel-active: var(--n-panel-active-accent);
1669
+ --n-panel-disabled: var(--n-panel-disabled-accent);
1670
+ --n-button: var(--n-button-accent);
1671
+ --n-button-hover: var(--n-button-hover-accent);
1672
+ --n-button-active: var(--n-button-active-accent);
1673
+ --n-button-disabled: var(--n-button-disabled-accent);
1674
+ --n-control: var(--n-control-accent);
1675
+ --n-control-hover: var(--n-control-hover-accent);
1676
+ --n-control-active: var(--n-control-active-accent);
1677
+ --n-control-disabled: var(--n-control-disabled-accent);
1678
+ --n-widget: var(--n-color-accent-higher);
1679
+ --n-widget-hover: var(--n-control-hover-accent);
1680
+ --n-widget-active: var(--n-control-active-accent);
1681
+ --n-widget-disabled: var(--n-control-disabled-accent);
1682
+ --n-surface: var(--n-surface-accent);
1683
+ --n-surface-hover: var(--n-surface-hover-accent);
1684
+ --n-surface-active: var(--n-surface-active-accent);
1685
+ --n-surface-disabled: var(--n-surface-disabled-accent);
1686
+ --n-surface-ink: var(--n-surface-ink-accent);
1687
+ --n-surface-ink-hover: var(--n-surface-ink-hover-accent);
1688
+ --n-surface-ink-active: var(--n-surface-ink-active-accent);
1689
+ --n-surface-ink-disabled: var(--n-surface-ink-disabled-accent);
1690
+ --n-border: var(--n-border-accent);
1691
+ --n-border-hover: var(--n-border-hover-accent);
1692
+ --n-border-active: var(--n-border-active-accent);
1693
+ --n-border-disabled: var(--n-color-neutral-highest);
1694
+ --n-border-muted: var(--n-border-muted-accent);
1695
+ --n-ink: var(--n-ink-accent);
1696
+ --n-ink-strong: var(--n-ink-strong-accent);
1697
+ --n-ink-inverse: var(--n-ink-inverse-accent);
1698
+ --n-ink-muted: var(--n-ink-muted-accent);
1699
+ --n-ink-placeholder: var(--n-ink-placeholder-accent);
1700
+ --n-ink-hover: var(--n-ink-hover-accent);
1701
+ --n-ink-active: var(--n-ink-active-accent);
1702
+ --n-ink-disabled: var(--n-ink-disabled-accent);
1703
+ }
1704
+
1705
+ [intent="info"] {
1706
+ --n-card: var(--n-card-info);
1707
+ --n-card-hover: var(--n-card-hover-info);
1708
+ --n-panel: var(--n-panel-info);
1709
+ --n-panel-hover: var(--n-panel-hover-info);
1710
+ --n-panel-active: var(--n-panel-active-info);
1711
+ --n-panel-disabled: var(--n-panel-disabled-info);
1712
+ --n-button: var(--n-button-info);
1713
+ --n-button-hover: var(--n-button-hover-info);
1714
+ --n-button-active: var(--n-button-active-info);
1715
+ --n-button-disabled: var(--n-button-disabled-info);
1716
+ --n-control: var(--n-control-info);
1717
+ --n-control-hover: var(--n-control-hover-info);
1718
+ --n-control-active: var(--n-control-active-info);
1719
+ --n-control-disabled: var(--n-control-disabled-info);
1720
+ --n-widget: var(--n-color-info-higher);
1721
+ --n-widget-hover: var(--n-control-hover-info);
1722
+ --n-widget-active: var(--n-control-active-info);
1723
+ --n-widget-disabled: var(--n-control-disabled-info);
1724
+ --n-surface: var(--n-surface-info);
1725
+ --n-surface-hover: var(--n-surface-hover-info);
1726
+ --n-surface-active: var(--n-surface-active-info);
1727
+ --n-surface-disabled: var(--n-surface-disabled-info);
1728
+ --n-surface-ink: var(--n-surface-ink-info);
1729
+ --n-surface-ink-hover: var(--n-surface-ink-hover-info);
1730
+ --n-surface-ink-active: var(--n-surface-ink-active-info);
1731
+ --n-surface-ink-disabled: var(--n-surface-ink-disabled-info);
1732
+ --n-border: var(--n-border-info);
1733
+ --n-border-hover: var(--n-border-hover-info);
1734
+ --n-border-active: var(--n-border-active-info);
1735
+ --n-border-disabled: var(--n-color-neutral-highest);
1736
+ --n-border-muted: var(--n-border-muted-info);
1737
+ --n-ink: var(--n-ink-info);
1738
+ --n-ink-strong: var(--n-ink-strong-info);
1739
+ --n-ink-inverse: var(--n-ink-inverse-info);
1740
+ --n-ink-muted: var(--n-ink-muted-info);
1741
+ --n-ink-placeholder: var(--n-ink-placeholder-info);
1742
+ --n-ink-hover: var(--n-ink-hover-info);
1743
+ --n-ink-active: var(--n-ink-active-info);
1744
+ --n-ink-disabled: var(--n-ink-disabled-info);
1745
+ }
1746
+
1747
+ [intent="success"] {
1748
+ --n-card: var(--n-card-success);
1749
+ --n-card-hover: var(--n-card-hover-success);
1750
+ --n-panel: var(--n-panel-success);
1751
+ --n-panel-hover: var(--n-panel-hover-success);
1752
+ --n-panel-active: var(--n-panel-active-success);
1753
+ --n-panel-disabled: var(--n-panel-disabled-success);
1754
+ --n-button: var(--n-button-success);
1755
+ --n-button-hover: var(--n-button-hover-success);
1756
+ --n-button-active: var(--n-button-active-success);
1757
+ --n-button-disabled: var(--n-button-disabled-success);
1758
+ --n-control: var(--n-control-success);
1759
+ --n-control-hover: var(--n-control-hover-success);
1760
+ --n-control-active: var(--n-control-active-success);
1761
+ --n-control-disabled: var(--n-control-disabled-success);
1762
+ --n-widget: var(--n-color-success-higher);
1763
+ --n-widget-hover: var(--n-control-hover-success);
1764
+ --n-widget-active: var(--n-control-active-success);
1765
+ --n-widget-disabled: var(--n-control-disabled-success);
1766
+ --n-surface: var(--n-surface-success);
1767
+ --n-surface-hover: var(--n-surface-hover-success);
1768
+ --n-surface-active: var(--n-surface-active-success);
1769
+ --n-surface-disabled: var(--n-surface-disabled-success);
1770
+ --n-surface-ink: var(--n-surface-ink-success);
1771
+ --n-surface-ink-hover: var(--n-surface-ink-hover-success);
1772
+ --n-surface-ink-active: var(--n-surface-ink-active-success);
1773
+ --n-surface-ink-disabled: var(--n-surface-ink-disabled-success);
1774
+ --n-border: var(--n-border-success);
1775
+ --n-border-hover: var(--n-border-hover-success);
1776
+ --n-border-active: var(--n-border-active-success);
1777
+ --n-border-disabled: var(--n-color-neutral-highest);
1778
+ --n-border-muted: var(--n-border-muted-success);
1779
+ --n-ink: var(--n-ink-success);
1780
+ --n-ink-strong: var(--n-ink-strong-success);
1781
+ --n-ink-inverse: var(--n-ink-inverse-success);
1782
+ --n-ink-muted: var(--n-ink-muted-success);
1783
+ --n-ink-placeholder: var(--n-ink-placeholder-success);
1784
+ --n-ink-hover: var(--n-ink-hover-success);
1785
+ --n-ink-active: var(--n-ink-active-success);
1786
+ --n-ink-disabled: var(--n-ink-disabled-success);
1787
+ }
1788
+
1789
+ [intent="warning"] {
1790
+ --n-card: var(--n-card-warning);
1791
+ --n-card-hover: var(--n-card-hover-warning);
1792
+ --n-panel: var(--n-panel-warning);
1793
+ --n-panel-hover: var(--n-panel-hover-warning);
1794
+ --n-panel-active: var(--n-panel-active-warning);
1795
+ --n-panel-disabled: var(--n-panel-disabled-warning);
1796
+ --n-button: var(--n-button-warning);
1797
+ --n-button-hover: var(--n-button-hover-warning);
1798
+ --n-button-active: var(--n-button-active-warning);
1799
+ --n-button-disabled: var(--n-button-disabled-warning);
1800
+ --n-control: var(--n-control-warning);
1801
+ --n-control-hover: var(--n-control-hover-warning);
1802
+ --n-control-active: var(--n-control-active-warning);
1803
+ --n-control-disabled: var(--n-control-disabled-warning);
1804
+ --n-widget: var(--n-color-warning-higher);
1805
+ --n-widget-hover: var(--n-control-hover-warning);
1806
+ --n-widget-active: var(--n-control-active-warning);
1807
+ --n-widget-disabled: var(--n-control-disabled-warning);
1808
+ --n-surface: var(--n-surface-warning);
1809
+ --n-surface-hover: var(--n-surface-hover-warning);
1810
+ --n-surface-active: var(--n-surface-active-warning);
1811
+ --n-surface-disabled: var(--n-surface-disabled-warning);
1812
+ --n-surface-ink: var(--n-surface-ink-warning);
1813
+ --n-surface-ink-hover: var(--n-surface-ink-hover-warning);
1814
+ --n-surface-ink-active: var(--n-surface-ink-active-warning);
1815
+ --n-surface-ink-disabled: var(--n-surface-ink-disabled-warning);
1816
+ --n-border: var(--n-border-warning);
1817
+ --n-border-hover: var(--n-border-hover-warning);
1818
+ --n-border-active: var(--n-border-active-warning);
1819
+ --n-border-disabled: var(--n-color-neutral-highest);
1820
+ --n-border-muted: var(--n-border-muted-warning);
1821
+ --n-ink: var(--n-ink-warning);
1822
+ --n-ink-strong: var(--n-ink-strong-warning);
1823
+ --n-ink-inverse: var(--n-ink-inverse-warning);
1824
+ --n-ink-muted: var(--n-ink-muted-warning);
1825
+ --n-ink-placeholder: var(--n-ink-placeholder-warning);
1826
+ --n-ink-hover: var(--n-ink-hover-warning);
1827
+ --n-ink-active: var(--n-ink-active-warning);
1828
+ --n-ink-disabled: var(--n-ink-disabled-warning);
1829
+ }
1830
+
1831
+ [intent="danger"] {
1832
+ --n-card: var(--n-card-danger);
1833
+ --n-card-hover: var(--n-card-hover-danger);
1834
+ --n-panel: var(--n-panel-danger);
1835
+ --n-panel-hover: var(--n-panel-hover-danger);
1836
+ --n-panel-active: var(--n-panel-active-danger);
1837
+ --n-panel-disabled: var(--n-panel-disabled-danger);
1838
+ --n-button: var(--n-button-danger);
1839
+ --n-button-hover: var(--n-button-hover-danger);
1840
+ --n-button-active: var(--n-button-active-danger);
1841
+ --n-button-disabled: var(--n-button-disabled-danger);
1842
+ --n-control: var(--n-control-danger);
1843
+ --n-control-hover: var(--n-control-hover-danger);
1844
+ --n-control-active: var(--n-control-active-danger);
1845
+ --n-control-disabled: var(--n-control-disabled-danger);
1846
+ --n-widget: var(--n-color-danger-higher);
1847
+ --n-widget-hover: var(--n-control-hover-danger);
1848
+ --n-widget-active: var(--n-control-active-danger);
1849
+ --n-widget-disabled: var(--n-control-disabled-danger);
1850
+ --n-surface: var(--n-surface-danger);
1851
+ --n-surface-hover: var(--n-surface-hover-danger);
1852
+ --n-surface-active: var(--n-surface-active-danger);
1853
+ --n-surface-disabled: var(--n-surface-disabled-danger);
1854
+ --n-surface-ink: var(--n-surface-ink-danger);
1855
+ --n-surface-ink-hover: var(--n-surface-ink-hover-danger);
1856
+ --n-surface-ink-active: var(--n-surface-ink-active-danger);
1857
+ --n-surface-ink-disabled: var(--n-surface-ink-disabled-danger);
1858
+ --n-border: var(--n-border-danger);
1859
+ --n-border-hover: var(--n-border-hover-danger);
1860
+ --n-border-active: var(--n-border-active-danger);
1861
+ --n-border-disabled: var(--n-color-neutral-highest);
1862
+ --n-border-muted: var(--n-border-muted-danger);
1863
+ --n-ink: var(--n-ink-danger);
1864
+ --n-ink-strong: var(--n-ink-strong-danger);
1865
+ --n-ink-inverse: var(--n-ink-inverse-danger);
1866
+ --n-ink-muted: var(--n-ink-muted-danger);
1867
+ --n-ink-placeholder: var(--n-ink-placeholder-danger);
1868
+ --n-ink-hover: var(--n-ink-hover-danger);
1869
+ --n-ink-active: var(--n-ink-active-danger);
1870
+ --n-ink-disabled: var(--n-ink-disabled-danger);
1871
+ }
1872
+
1873
+ /* ─── Variant ─── */
1874
+
1875
+ [variant="primary"] {
1876
+ --n-background: var(--n-surface);
1877
+ --n-background-hover: var(--n-surface-hover);
1878
+ --n-background-active: var(--n-surface-active);
1879
+ --n-background-disabled: var(--n-surface-disabled);
1880
+ --n-color: var(--n-surface-ink);
1881
+ --n-color-hover: var(--n-surface-ink-hover);
1882
+ --n-color-active: var(--n-surface-ink-active);
1883
+ --n-color-disabled: var(--n-surface-ink-disabled);
1884
+ --n-border-color: transparent;
1885
+ --n-border-color-hover: transparent;
1886
+ --n-border-color-active: transparent;
1887
+ --n-border-color-disabled: transparent;
1888
+ }
1889
+
1890
+ [variant="secondary"] {
1891
+ --n-background: var(--n-button);
1892
+ --n-background-hover: var(--n-button-hover);
1893
+ --n-background-active: var(--n-button-active);
1894
+ --n-background-disabled: var(--n-button-disabled);
1895
+ --n-color: var(--n-ink);
1896
+ --n-color-hover: var(--n-ink-hover);
1897
+ --n-color-active: var(--n-ink-active);
1898
+ --n-color-disabled: var(--n-ink-disabled);
1899
+ --n-border-color: var(--n-border-muted);
1900
+ --n-border-color-hover: var(--n-border-hover);
1901
+ --n-border-color-active: var(--n-border-active);
1902
+ --n-border-color-disabled: transparent;
1903
+ }
1904
+
1905
+ [variant="default"] {
1906
+ --n-background: var(--n-button-neutral);
1907
+ --n-background-hover: var(--n-button-hover-neutral);
1908
+ --n-background-active: var(--n-button-active-neutral);
1909
+ --n-background-disabled: var(--n-button-disabled-neutral);
1910
+ --n-color: var(--n-ink);
1911
+ --n-color-hover: var(--n-ink-hover);
1912
+ --n-color-active: var(--n-ink-active);
1913
+ --n-color-disabled: var(--n-ink-disabled);
1914
+ --n-border-color: var(--n-border-muted-neutral);
1915
+ --n-border-color-hover: var(--n-border-hover-neutral);
1916
+ --n-border-color-active: var(--n-border-active-neutral);
1917
+ --n-border-color-disabled: transparent;
1918
+ }
1919
+
1920
+ [variant="ghost"] {
1921
+ --n-background: transparent;
1922
+ --n-background-hover: transparent;
1923
+ --n-background-active: transparent;
1924
+ --n-background-disabled: transparent;
1925
+ --n-color: var(--n-ink);
1926
+ --n-color-hover: var(--n-ink-hover);
1927
+ --n-color-active: var(--n-ink-active);
1928
+ --n-color-disabled: var(--n-ink-disabled);
1929
+ --n-border-color: transparent;
1930
+ --n-border-color-hover: transparent;
1931
+ --n-border-color-active: transparent;
1932
+ --n-border-color-disabled: transparent;
1933
+ }
1934
+
1935
+ [variant="outline"] {
1936
+ --n-background: transparent;
1937
+ --n-background-hover: var(--n-panel-hover);
1938
+ --n-background-active: var(--n-panel-active);
1939
+ --n-background-disabled: transparent;
1940
+ --n-color: var(--n-ink);
1941
+ --n-color-hover: var(--n-ink-hover);
1942
+ --n-color-active: var(--n-ink-active);
1943
+ --n-color-disabled: var(--n-ink-disabled);
1944
+ --n-border-color: var(--n-border);
1945
+ --n-border-color-hover: var(--n-border-hover);
1946
+ --n-border-color-active: var(--n-border-active);
1947
+ --n-border-color-disabled: transparent;
1948
+ }
1949
+
1950
+ [variant="selected"] {
1951
+ --n-background: white;
1952
+ --n-background-hover: var(--n-panel-hover);
1953
+ --n-background-active: var(--n-panel-active);
1954
+ --n-background-disabled: var(--n-panel-disabled);
1955
+ --n-color: var(--n-ink-inverse);
1956
+ --n-color-hover: var(--n-ink-hover);
1957
+ --n-color-active: var(--n-ink-active);
1958
+ --n-color-disabled: var(--n-ink-disabled);
1959
+ --n-border-color: transparent;
1960
+ --n-border-color-hover: var(--n-border-hover);
1961
+ --n-border-color-active: var(--n-border-active);
1962
+ --n-border-color-disabled: transparent;
1963
+ }
1964
+
1965
+ [variant="plain"] {
1966
+ --n-background: transparent;
1967
+ --n-background-hover: transparent;
1968
+ --n-background-active: transparent;
1969
+ --n-background-disabled: transparent;
1970
+ --n-color: var(--n-ink);
1971
+ --n-color-hover: var(--n-ink-hover);
1972
+ --n-color-active: var(--n-ink-active);
1973
+ --n-color-disabled: var(--n-ink-disabled);
1974
+ --n-border-color: transparent;
1975
+ --n-border-color-hover: transparent;
1976
+ --n-border-color-active: transparent;
1977
+ --n-border-color-disabled: transparent;
1978
+ --n-border-radius: 0;
1979
+ }
1980
+
1981
+ }