@dorsk/tsumikit 0.79.0 → 0.80.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.
Files changed (48) hide show
  1. package/dist/components/atoms/Badge.svelte +1 -4
  2. package/dist/components/atoms/Button.svelte +303 -9
  3. package/dist/components/atoms/Button.svelte.d.ts +4 -1
  4. package/dist/components/atoms/Card.svelte +142 -0
  5. package/dist/components/atoms/Checkbox.svelte +177 -1
  6. package/dist/components/atoms/Input.svelte +35 -0
  7. package/dist/components/atoms/Link.svelte +61 -0
  8. package/dist/components/atoms/Progress.svelte +74 -1
  9. package/dist/components/atoms/Progress.svelte.d.ts +1 -0
  10. package/dist/components/atoms/Select.svelte +30 -0
  11. package/dist/components/atoms/Skeleton.svelte +54 -3
  12. package/dist/components/atoms/Skeleton.svelte.d.ts +1 -0
  13. package/dist/components/atoms/Spinner.svelte +152 -3
  14. package/dist/components/atoms/Spinner.svelte.d.ts +1 -1
  15. package/dist/components/atoms/Switch.svelte +135 -0
  16. package/dist/components/atoms/Textarea.svelte +36 -0
  17. package/dist/components/atoms/Thinking.svelte +130 -0
  18. package/dist/components/atoms/Thinking.svelte.d.ts +15 -0
  19. package/dist/components/molecules/CopyButton.svelte +146 -5
  20. package/dist/components/molecules/Field.svelte +55 -1
  21. package/dist/components/molecules/FileButton.svelte +4 -2
  22. package/dist/components/molecules/InputGroup.svelte +1 -1
  23. package/dist/components/molecules/LookPicker.svelte +87 -0
  24. package/dist/components/molecules/LookPicker.svelte.d.ts +17 -0
  25. package/dist/components/molecules/MotionSettings.svelte +166 -0
  26. package/dist/components/molecules/MotionSettings.svelte.d.ts +18 -0
  27. package/dist/components/molecules/RadioGroup.svelte +61 -0
  28. package/dist/components/molecules/Tabs.svelte +157 -4
  29. package/dist/fx.d.ts +149 -0
  30. package/dist/fx.js +111 -0
  31. package/dist/fx.md +58 -0
  32. package/dist/index.d.ts +8 -2
  33. package/dist/index.js +8 -2
  34. package/dist/looks/README.md +101 -0
  35. package/dist/looks/depth.css +939 -0
  36. package/dist/looks/editorial.css +545 -0
  37. package/dist/looks/tactile.css +871 -0
  38. package/dist/pointer.d.ts +3 -0
  39. package/dist/pointer.js +40 -0
  40. package/dist/stores/fx.svelte.d.ts +17 -0
  41. package/dist/stores/fx.svelte.js +64 -0
  42. package/dist/stores/theme.svelte.d.ts +8 -2
  43. package/dist/stores/theme.svelte.js +33 -7
  44. package/dist/styles/themes.css +249 -249
  45. package/dist/styles/tokens.css +4 -3
  46. package/dist/theme-mode.d.ts +31 -0
  47. package/dist/theme-mode.js +19 -0
  48. package/package.json +3 -2
@@ -0,0 +1,939 @@
1
+ /* Depth & glow: layered elevation, top-lit edges, surface gradients, accent glow.
2
+ Every color derives from the active theme: --depth-ink is the shadow base,
3
+ --depth-lit the highlight, --depth-line the edge/divider ink. */
4
+
5
+ :root[data-look="depth"] {
6
+ --depth-ink: oklch(from var(--bg) calc(l * l) c h);
7
+ --depth-lit: var(--text);
8
+ --depth-line: var(--text);
9
+
10
+ --r-sm: 6px;
11
+ --r-md: 8px;
12
+ --r-lg: 10px;
13
+
14
+ --shadow-sm: 0 1px 2px color-mix(in oklab, var(--depth-ink) 50%, transparent);
15
+ --shadow-md: 0 2px 4px color-mix(in oklab, var(--depth-ink) 40%, transparent),
16
+ 0 12px 28px -6px color-mix(in oklab, var(--depth-ink) 60%, transparent);
17
+ --shadow-lg: 0 4px 8px color-mix(in oklab, var(--depth-ink) 45%, transparent),
18
+ 0 32px 72px -16px color-mix(in oklab, var(--depth-ink) 80%, transparent);
19
+
20
+ --depth-aurora:
21
+ radial-gradient(46rem 24rem at 20% -5rem, color-mix(in oklab, var(--accent) 12%, transparent), transparent 70%),
22
+ radial-gradient(40rem 22rem at 80% -7rem, color-mix(in oklab, var(--info) 10%, transparent), transparent 70%),
23
+ radial-gradient(28rem 16rem at 52% 3rem, color-mix(in oklab, var(--accent) 5%, transparent), transparent 70%);
24
+ --depth-fill-1: linear-gradient(180deg, var(--bg-elevated) 0%, color-mix(in oklab, var(--bg-elevated), var(--depth-ink) 22%) 100%);
25
+ --depth-fill-2: linear-gradient(180deg, var(--surface) 0%, color-mix(in oklab, var(--surface), var(--depth-ink) 22%) 100%);
26
+ --depth-edge: color-mix(in oklab, var(--depth-line) 14%, transparent) color-mix(in oklab, var(--depth-line) 6%, transparent)
27
+ color-mix(in oklab, var(--depth-line) 3.5%, transparent);
28
+ --depth-edge-2: color-mix(in oklab, var(--depth-line) 22%, transparent) color-mix(in oklab, var(--depth-line) 10%, transparent)
29
+ color-mix(in oklab, var(--depth-line) 5%, transparent);
30
+ --depth-divider: linear-gradient(
31
+ 90deg,
32
+ transparent,
33
+ color-mix(in oklab, var(--depth-line) 8%, transparent) 12%,
34
+ color-mix(in oklab, var(--depth-line) 8%, transparent) 88%,
35
+ transparent
36
+ );
37
+ --depth-hl: inset 0 1px 0 color-mix(in oklab, var(--depth-lit) 6%, transparent);
38
+ --depth-hl-strong: inset 0 1px 0 color-mix(in oklab, var(--depth-lit) 12%, transparent);
39
+ --depth-ring: 0 0 0 1px color-mix(in oklab, var(--depth-line) 8%, transparent);
40
+
41
+ --depth-well: color-mix(in oklab, var(--bg) 60%, var(--depth-ink));
42
+ --depth-well-edge: var(--border-strong) var(--border-strong) color-mix(in oklab, var(--border-strong), var(--depth-lit) 30%);
43
+ --depth-well-shadow: inset 0 2px 4px color-mix(in oklab, var(--depth-ink) 55%, transparent),
44
+ inset 0 0 0 1px color-mix(in oklab, var(--depth-ink) 30%, transparent);
45
+ --depth-well-edge-sm: var(--border-strong) color-mix(in oklab, var(--border-strong), var(--depth-lit) 15%)
46
+ color-mix(in oklab, var(--border-strong), var(--depth-lit) 30%);
47
+ --depth-well-edge-soft: color-mix(in oklab, var(--depth-ink) 50%, transparent) color-mix(in oklab, var(--depth-line) 6%, transparent)
48
+ color-mix(in oklab, var(--depth-line) 10%, transparent);
49
+ --depth-track: color-mix(in oklab, var(--depth-line) 8%, transparent);
50
+
51
+ --depth-drop-1: 0 1px 1px color-mix(in oklab, var(--depth-ink) 35%, transparent),
52
+ 0 2px 4px -1px color-mix(in oklab, var(--depth-ink) 35%, transparent),
53
+ 0 10px 24px -10px color-mix(in oklab, var(--depth-ink) 70%, transparent);
54
+ --depth-drop-raised: 0 0 0 1px color-mix(in oklab, var(--depth-ink) 45%, transparent),
55
+ 0 2px 4px color-mix(in oklab, var(--depth-ink) 40%, transparent),
56
+ 0 14px 28px -6px color-mix(in oklab, var(--depth-ink) 60%, transparent),
57
+ 0 36px 80px -16px color-mix(in oklab, var(--depth-ink) 85%, transparent);
58
+
59
+ --depth-btn-top: color-mix(in oklab, var(--surface), var(--depth-lit) 6%);
60
+ --depth-btn-bottom: color-mix(in oklab, var(--surface), var(--depth-ink) 4%);
61
+ --depth-btn-fill: linear-gradient(180deg, var(--depth-btn-top) 0%, var(--depth-btn-bottom) 100%);
62
+ --depth-btn-fill-hover: linear-gradient(
63
+ 180deg,
64
+ color-mix(in oklab, var(--surface), var(--depth-lit) 11%) 0%,
65
+ color-mix(in oklab, var(--surface), var(--depth-lit) 3%) 100%
66
+ );
67
+ --depth-btn-shadow: var(--depth-hl-strong), var(--depth-ring), 0 1px 2px color-mix(in oklab, var(--depth-ink) 45%, transparent),
68
+ 0 3px 8px -3px color-mix(in oklab, var(--depth-ink) 50%, transparent);
69
+
70
+ --depth-glow-c: color-mix(in oklab, var(--accent) 55%, transparent);
71
+ --depth-focus: 0 0 0 3px color-mix(in oklab, var(--accent) 40%, transparent), 0 0 20px -2px var(--depth-glow-c);
72
+ --depth-primary-top: color-mix(in oklab, var(--accent), var(--text) 12%);
73
+ --depth-primary-bottom: var(--accent);
74
+ --depth-primary: linear-gradient(180deg, var(--depth-primary-top) 0%, var(--depth-primary-bottom) 100%);
75
+ --depth-primary-edge: inset 0 1px 0 color-mix(in oklab, var(--depth-lit) 32%, transparent),
76
+ inset 0 -1px 0 color-mix(in oklab, var(--depth-ink) 20%, transparent);
77
+ --depth-aura: 0 0 0 1px color-mix(in oklab, var(--accent) 75%, transparent),
78
+ 0 2px 6px -1px color-mix(in oklab, color-mix(in oklab, var(--accent), var(--depth-ink) 50%) 60%, transparent),
79
+ 0 6px 22px -4px color-mix(in oklab, var(--accent) 55%, transparent), 0 0 36px -8px color-mix(in oklab, var(--accent) 60%, transparent);
80
+ --depth-aura-hover: 0 0 0 1px color-mix(in oklab, var(--accent) 90%, transparent),
81
+ 0 2px 6px -1px color-mix(in oklab, color-mix(in oklab, var(--accent), var(--depth-ink) 50%) 60%, transparent),
82
+ 0 10px 32px -4px color-mix(in oklab, var(--accent) 75%, transparent), 0 0 64px -6px color-mix(in oklab, var(--accent) 75%, transparent);
83
+ --depth-pill: linear-gradient(180deg, color-mix(in oklab, var(--accent) 16%, transparent), color-mix(in oklab, var(--accent) 8%, transparent));
84
+ --depth-pill-shadow: inset 0 1px 0 color-mix(in oklab, var(--depth-lit) 18%, transparent),
85
+ 0 0 0 1px color-mix(in oklab, var(--accent) 60%, transparent),
86
+ 0 2px 8px -2px color-mix(in oklab, color-mix(in oklab, var(--accent), var(--depth-ink) 50%) 60%, transparent),
87
+ 0 0 18px -3px color-mix(in oklab, var(--accent) 65%, transparent);
88
+ --depth-knob: linear-gradient(180deg, var(--text), color-mix(in oklab, var(--text) 82%, var(--bg)));
89
+ --depth-knob-on: linear-gradient(180deg, var(--text), color-mix(in oklab, var(--text) 90%, var(--accent)));
90
+ --depth-knob-shadow: 0 1px 2px color-mix(in oklab, var(--depth-ink) 50%, transparent), inset 0 1px 0 var(--depth-lit);
91
+ --depth-scrim: radial-gradient(
92
+ 60% 50% at 50% 40%,
93
+ color-mix(in oklab, color-mix(in oklab, var(--accent) 30%, var(--depth-ink)) 45%, transparent),
94
+ color-mix(in oklab, var(--depth-ink) 75%, transparent)
95
+ );
96
+ --depth-spot-on: radial-gradient(
97
+ 22rem circle at var(--pointer-x, -100rem) var(--pointer-y, -100rem),
98
+ color-mix(in oklab, var(--accent) 8%, transparent),
99
+ transparent 70%
100
+ );
101
+ --depth-spot-tap: radial-gradient(
102
+ 18rem circle at var(--pointer-x, 50%) var(--pointer-y, 0%),
103
+ color-mix(in oklab, var(--accent) 12%, transparent),
104
+ transparent 70%
105
+ );
106
+
107
+ --surface-shadow: var(--depth-hl), var(--depth-drop-1);
108
+ --surface-shadow-hover: var(--depth-hl-strong), var(--depth-drop-1), 0 14px 40px -12px var(--depth-glow-c);
109
+ --raised-edge: color-mix(in oklab, var(--depth-line) 16%, var(--bg-elevated));
110
+ --raised-shadow: var(--depth-hl-strong), var(--depth-drop-raised);
111
+ --overlay-edge: color-mix(in oklab, var(--depth-line) 16%, var(--bg-elevated));
112
+ --overlay-shadow: var(--depth-hl-strong), var(--depth-drop-raised), 0 0 120px -30px var(--depth-glow-c);
113
+ --control-fill: var(--depth-well);
114
+ --control-shadow: var(--depth-well-shadow);
115
+ --track-fill: var(--depth-well);
116
+ --thumb-shadow: 0 0 0 1px color-mix(in oklab, var(--accent) 70%, transparent), 0 2px 4px color-mix(in oklab, var(--depth-ink) 50%, transparent),
117
+ 0 0 16px -1px var(--depth-glow-c);
118
+ --btn-fill: var(--depth-btn-fill) border-box;
119
+ --btn-edge: transparent;
120
+ --btn-shadow: var(--depth-btn-shadow);
121
+ --btn-shadow-hover: var(--depth-btn-shadow), 0 0 0 1px color-mix(in oklab, var(--accent) 35%, transparent), 0 0 18px -4px var(--depth-glow-c);
122
+ --btn-primary-fill: var(--depth-primary) border-box;
123
+ --btn-primary-edge: transparent;
124
+ --btn-primary-shadow: var(--depth-primary-edge), var(--depth-aura);
125
+ --btn-primary-shadow-hover: var(--depth-primary-edge), var(--depth-aura-hover);
126
+ --focus-glow: var(--depth-focus);
127
+ --depth-field-focus: 0 0 0 1px var(--accent), 0 0 0 4px color-mix(in oklab, var(--accent) 25%, transparent), 0 0 20px -2px var(--depth-glow-c);
128
+
129
+ --skeleton: color-mix(in oklab, var(--depth-line) 6%, transparent);
130
+ --skeleton-highlight: color-mix(in oklab, var(--accent) 18%, transparent);
131
+ --attention-bg: color-mix(in oklab, var(--warn) 10%, var(--bg-elevated));
132
+ }
133
+
134
+ :root[data-look="depth"][data-mode="light"] {
135
+ --depth-ink: var(--text);
136
+ --depth-lit: var(--bg-elevated);
137
+
138
+ --shadow-sm: 0 1px 2px color-mix(in oklab, var(--depth-ink) 10%, transparent);
139
+ --shadow-md: 0 2px 4px color-mix(in oklab, var(--depth-ink) 6%, transparent),
140
+ 0 12px 28px -8px color-mix(in oklab, var(--depth-ink) 18%, transparent);
141
+ --shadow-lg: 0 4px 10px color-mix(in oklab, var(--depth-ink) 8%, transparent),
142
+ 0 32px 72px -18px color-mix(in oklab, var(--depth-ink) 32%, transparent);
143
+
144
+ --depth-aurora:
145
+ radial-gradient(46rem 24rem at 20% -5rem, color-mix(in oklab, var(--accent) 8%, transparent), transparent 70%),
146
+ radial-gradient(40rem 22rem at 80% -7rem, color-mix(in oklab, var(--info) 7%, transparent), transparent 70%),
147
+ radial-gradient(28rem 16rem at 52% 3rem, color-mix(in oklab, var(--accent) 3%, transparent), transparent 70%);
148
+ --depth-fill-1: linear-gradient(var(--bg-elevated), var(--bg-elevated));
149
+ --depth-fill-2: linear-gradient(var(--bg-elevated), var(--bg-elevated));
150
+ --depth-edge: color-mix(in oklab, var(--depth-line) 6%, transparent) color-mix(in oklab, var(--depth-line) 9%, transparent)
151
+ color-mix(in oklab, var(--depth-line) 11%, transparent);
152
+ --depth-edge-2: color-mix(in oklab, var(--depth-line) 8%, transparent) color-mix(in oklab, var(--depth-line) 11%, transparent)
153
+ color-mix(in oklab, var(--depth-line) 13%, transparent);
154
+ --depth-hl: inset 0 1px 0 color-mix(in oklab, var(--depth-lit) 90%, transparent);
155
+ --depth-hl-strong: inset 0 1px 0 var(--depth-lit);
156
+
157
+ --depth-well: color-mix(in oklab, var(--bg-elevated) 55%, var(--bg));
158
+ --depth-well-edge: color-mix(in oklab, var(--border-strong), var(--depth-ink) 25%) var(--border-strong) var(--border-strong);
159
+ --depth-well-shadow: inset 0 2px 3px color-mix(in oklab, var(--depth-ink) 8%, transparent);
160
+ --depth-well-edge-sm: color-mix(in oklab, var(--border-strong), var(--depth-ink) 20%)
161
+ color-mix(in oklab, var(--border-strong), var(--depth-ink) 10%) var(--border-strong);
162
+ --depth-well-edge-soft: color-mix(in oklab, var(--depth-line) 16%, transparent) color-mix(in oklab, var(--depth-line) 11%, transparent)
163
+ color-mix(in oklab, var(--depth-line) 6%, transparent);
164
+
165
+ --depth-drop-1: 0 1px 2px color-mix(in oklab, var(--depth-ink) 6%, transparent),
166
+ 0 4px 10px -2px color-mix(in oklab, var(--depth-ink) 6%, transparent),
167
+ 0 14px 30px -14px color-mix(in oklab, var(--depth-ink) 16%, transparent);
168
+ --depth-drop-raised: 0 0 0 1px color-mix(in oklab, var(--depth-ink) 5%, transparent),
169
+ 0 2px 4px color-mix(in oklab, var(--depth-ink) 6%, transparent),
170
+ 0 14px 30px -8px color-mix(in oklab, var(--depth-ink) 16%, transparent),
171
+ 0 40px 80px -20px color-mix(in oklab, var(--depth-ink) 30%, transparent);
172
+
173
+ --depth-btn-top: var(--bg-elevated);
174
+ --depth-btn-bottom: color-mix(in oklab, var(--bg-elevated), var(--depth-ink) 3%);
175
+ --depth-btn-fill-hover: linear-gradient(
176
+ 180deg,
177
+ var(--bg-elevated) 0%,
178
+ color-mix(in oklab, var(--bg-elevated), color-mix(in oklab, var(--depth-ink), var(--accent)) 5%) 100%
179
+ );
180
+ --depth-btn-shadow: var(--depth-ring), 0 1px 2px color-mix(in oklab, var(--depth-ink) 10%, transparent),
181
+ 0 3px 8px -3px color-mix(in oklab, var(--depth-ink) 14%, transparent);
182
+
183
+ --depth-glow-c: color-mix(in oklab, var(--accent) 40%, transparent);
184
+ --depth-primary-top: var(--accent);
185
+ --depth-primary-bottom: color-mix(in oklab, var(--accent), var(--text) 14%);
186
+ --depth-primary-edge: inset 0 1px 0 color-mix(in oklab, var(--depth-lit) 30%, transparent),
187
+ inset 0 -1px 0 color-mix(in oklab, var(--depth-ink) 12%, transparent);
188
+ --depth-aura: 0 0 0 1px color-mix(in oklab, var(--depth-primary-bottom) 80%, transparent),
189
+ 0 2px 5px -1px color-mix(in oklab, var(--depth-primary-bottom) 35%, transparent),
190
+ 0 8px 22px -6px color-mix(in oklab, var(--accent) 50%, transparent), 0 0 30px -8px color-mix(in oklab, var(--accent) 45%, transparent);
191
+ --depth-aura-hover: 0 0 0 1px color-mix(in oklab, var(--depth-primary-bottom) 90%, transparent),
192
+ 0 2px 5px -1px color-mix(in oklab, var(--depth-primary-bottom) 35%, transparent),
193
+ 0 12px 30px -6px color-mix(in oklab, var(--accent) 60%, transparent), 0 0 48px -6px color-mix(in oklab, var(--accent) 60%, transparent);
194
+ --depth-pill: linear-gradient(180deg, color-mix(in oklab, var(--accent) 9%, var(--bg-elevated)), color-mix(in oklab, var(--accent) 18%, var(--bg-elevated)));
195
+ --depth-pill-shadow: inset 0 1px 0 var(--depth-lit), 0 0 0 1px color-mix(in oklab, var(--accent) 45%, transparent),
196
+ 0 2px 6px -2px color-mix(in oklab, var(--accent) 25%, transparent), 0 0 16px -4px color-mix(in oklab, var(--accent) 50%, transparent);
197
+ --depth-knob: linear-gradient(var(--bg-elevated), var(--bg-elevated));
198
+ --depth-knob-on: var(--depth-knob);
199
+ --depth-knob-shadow: 0 0 0 1px var(--border-strong), 0 1px 3px color-mix(in oklab, var(--depth-ink) 35%, transparent);
200
+ --depth-scrim: radial-gradient(
201
+ 60% 50% at 50% 40%,
202
+ color-mix(in oklab, var(--accent) 18%, transparent),
203
+ color-mix(in oklab, var(--depth-ink) 38%, transparent)
204
+ );
205
+ --depth-spot-on: radial-gradient(
206
+ 22rem circle at var(--pointer-x, -100rem) var(--pointer-y, -100rem),
207
+ color-mix(in oklab, var(--accent) 5%, transparent),
208
+ transparent 70%
209
+ );
210
+ --depth-spot-tap: radial-gradient(
211
+ 18rem circle at var(--pointer-x, 50%) var(--pointer-y, 0%),
212
+ color-mix(in oklab, var(--accent) 8%, transparent),
213
+ transparent 70%
214
+ );
215
+
216
+ --skeleton: color-mix(in oklab, var(--depth-line) 6%, transparent);
217
+ --attention-bg: color-mix(in oklab, var(--warn) 8%, var(--bg-elevated));
218
+ }
219
+
220
+ /* ---------- page ---------- */
221
+ :root[data-look="depth"] body {
222
+ background-image: var(--depth-aurora);
223
+ background-repeat: no-repeat;
224
+ }
225
+ :root[data-look="depth"] .heading {
226
+ letter-spacing: -0.015em;
227
+ }
228
+ :root[data-look="depth"] .section-header.sh-divider > .sh-row {
229
+ border-bottom: 1px solid;
230
+ border-image: linear-gradient(90deg, color-mix(in oklab, var(--depth-line) 14%, transparent), transparent 85%) 1;
231
+ }
232
+
233
+ /* ---------- cards ---------- */
234
+ :root[data-look="depth"] .card {
235
+ --depth-spot: linear-gradient(transparent, transparent);
236
+ --depth-card-tint: linear-gradient(transparent, transparent);
237
+ --depth-card-fill: var(--depth-fill-1);
238
+ --depth-card-edge: var(--depth-edge);
239
+ background:
240
+ var(--depth-spot) padding-box,
241
+ var(--depth-card-tint) padding-box,
242
+ var(--depth-card-fill) padding-box;
243
+ border-color: var(--depth-card-edge);
244
+ }
245
+ :root[data-look="depth"] .card .card-head {
246
+ border-bottom: 1px solid;
247
+ border-image: var(--depth-divider) 1;
248
+ }
249
+ :root[data-look="depth"] .card .card-foot {
250
+ border-top: 1px solid;
251
+ border-image: var(--depth-divider) 1;
252
+ background: color-mix(in oklab, var(--bg) 30%, transparent);
253
+ border-radius: 0 0 calc(var(--r-lg) - 1px) calc(var(--r-lg) - 1px);
254
+ }
255
+ :root[data-look="depth"] .card.surface-raised {
256
+ --depth-card-fill: var(--depth-fill-2);
257
+ --depth-card-edge: var(--depth-edge-2);
258
+ --card-shadow-rest: var(--depth-hl-strong), var(--depth-drop-raised);
259
+ }
260
+ :root[data-look="depth"] .card.surface-sunken {
261
+ --depth-card-fill: linear-gradient(var(--depth-well), var(--depth-well));
262
+ --depth-card-edge: var(--depth-well-edge-soft);
263
+ --card-shadow-rest: var(--depth-well-shadow);
264
+ }
265
+ :root[data-look="depth"] .card.border-dashed {
266
+ background: color-mix(in oklab, var(--accent) 6%, transparent);
267
+ border-color: color-mix(in oklab, var(--accent) 45%, transparent);
268
+ --card-shadow-rest: none;
269
+ }
270
+ :root[data-look="depth"] .card:is(.card-ok, .card-warn, .card-danger, .card-info, .card-accent) {
271
+ --depth-card-tint: radial-gradient(120% 100% at 0% 0%, color-mix(in oklab, var(--card-tone) 8%, transparent), transparent 65%);
272
+ --depth-card-edge: color-mix(in oklab, var(--card-tone) 60%, transparent) color-mix(in oklab, var(--card-tone) 30%, transparent)
273
+ color-mix(in oklab, var(--card-tone) 14%, transparent);
274
+ --card-shadow-rest: var(--depth-hl), var(--depth-drop-1), 0 8px 26px -16px color-mix(in oklab, var(--card-tone) 80%, transparent);
275
+ }
276
+ :root[data-look="depth"] .card.card-stacked::before,
277
+ :root[data-look="depth"] .card.card-stacked::after {
278
+ background: var(--depth-fill-1);
279
+ border-color: transparent;
280
+ box-shadow: var(--depth-ring), var(--depth-drop-1);
281
+ }
282
+ :root[data-look="depth"] .card.card-tap:active {
283
+ background:
284
+ var(--depth-spot) padding-box,
285
+ var(--depth-card-tint) padding-box,
286
+ var(--depth-card-fill) padding-box;
287
+ --card-shadow-rest: var(--depth-hl), var(--depth-drop-1);
288
+ }
289
+
290
+ /* ---------- metrics ---------- */
291
+ :root[data-look="depth"] .card.metric {
292
+ --depth-card-edge: color-mix(in oklab, var(--metric-tone) 50%, transparent) color-mix(in oklab, var(--depth-line) 5%, transparent)
293
+ color-mix(in oklab, var(--depth-line) 3%, transparent);
294
+ }
295
+ :root[data-look="depth"][data-mode="light"] .card.metric {
296
+ --depth-card-edge: color-mix(in oklab, var(--metric-tone) 35%, transparent) color-mix(in oklab, var(--depth-line) 7%, transparent)
297
+ color-mix(in oklab, var(--depth-line) 8%, transparent);
298
+ }
299
+ :root[data-look="depth"] .metric .metric-chip {
300
+ width: 2.25rem;
301
+ height: 2.25rem;
302
+ background: linear-gradient(
303
+ 180deg,
304
+ color-mix(in oklab, var(--metric-tone) 34%, transparent),
305
+ color-mix(in oklab, var(--metric-tone) 12%, transparent)
306
+ );
307
+ border-color: transparent;
308
+ box-shadow: var(--depth-hl-strong), 0 0 0 1px color-mix(in oklab, var(--metric-tone) 45%, transparent),
309
+ 0 0 22px -2px color-mix(in oklab, var(--metric-tone) 75%, transparent);
310
+ }
311
+ :root[data-look="depth"] .metric .metric-num {
312
+ font-family: var(--font-sans);
313
+ font-weight: var(--fw-bold);
314
+ letter-spacing: -0.03em;
315
+ }
316
+ :root[data-look="depth"] .metric .metric-unit {
317
+ font-family: var(--font-sans);
318
+ font-weight: var(--fw-medium);
319
+ }
320
+
321
+ /* ---------- buttons ---------- */
322
+ :root[data-look="depth"] .pop-trigger.canonical {
323
+ --pop-trigger-border: transparent;
324
+ box-shadow: var(--depth-btn-shadow);
325
+ }
326
+ :root[data-look="depth"] .btn.btn-ghost,
327
+ :root[data-look="depth"] .btn.btn-link,
328
+ :root[data-look="depth"] .btn.btn-icon-inline {
329
+ --hover-lift: 0px;
330
+ }
331
+ :root[data-look="depth"] .pop-trigger.trigger-ghost {
332
+ --pop-trigger-bg: transparent;
333
+ box-shadow: none;
334
+ }
335
+ :root[data-look="depth"] .btn.btn-primary {
336
+ --btn-count-bg: var(--text-on-accent);
337
+ --btn-count-fg: var(--accent);
338
+ text-shadow: 0 1px 1px color-mix(in oklab, var(--depth-ink) 35%, transparent);
339
+ }
340
+ :root[data-look="depth"] .pop-trigger.trigger-primary {
341
+ box-shadow: var(--depth-primary-edge), var(--depth-aura);
342
+ }
343
+ :root[data-look="depth"] .split-primary .split-caret::before {
344
+ background: color-mix(in oklab, var(--text-on-accent) 30%, transparent);
345
+ }
346
+ :root[data-look="depth"] .btn:is(.btn-danger, .btn-tone-accent, .btn-tone-success, .btn-tone-info, .btn-tone-warn, .btn-tone-danger):not(.btn-primary, .btn-ghost, .btn-link) {
347
+ --depth-tone: var(--btn-tone, var(--danger));
348
+ background: linear-gradient(var(--surface), var(--surface)) border-box;
349
+ border-color: transparent;
350
+ --btn-shadow-rest: var(--depth-hl-strong), 0 0 0 1px color-mix(in oklab, var(--depth-tone) 40%, transparent),
351
+ 0 1px 2px color-mix(in oklab, var(--depth-ink) 40%, transparent), 0 4px 14px -8px color-mix(in oklab, var(--depth-tone) 60%, transparent);
352
+ }
353
+ :root[data-look="depth"] .btn.btn-ghost:is(.btn-tone-accent, .btn-tone-success, .btn-tone-info, .btn-tone-warn, .btn-tone-danger) {
354
+ border-color: transparent;
355
+ }
356
+ :root[data-look="depth"] .btn.btn-primary:is(.btn-tone-accent, .btn-tone-info, .btn-tone-warn, .btn-tone-danger) {
357
+ background: linear-gradient(
358
+ 180deg,
359
+ color-mix(in oklab, var(--btn-tone) 35%, var(--depth-primary-top)),
360
+ color-mix(in oklab, var(--btn-tone) 35%, var(--depth-primary-bottom))
361
+ )
362
+ border-box;
363
+ border-color: transparent;
364
+ }
365
+ :root[data-look="depth"] .btn[aria-pressed="true"] {
366
+ filter: drop-shadow(0 0 6px var(--depth-glow-c));
367
+ }
368
+
369
+ @media (hover: hover) and (pointer: fine) {
370
+ :root[data-look="depth"] .btn:hover:not(:disabled),
371
+ :root[data-look="depth"] .pop-trigger.canonical:hover:not(:disabled) {
372
+ --btn-bg: var(--depth-btn-fill-hover) border-box;
373
+ --pop-trigger-bg: var(--depth-btn-fill-hover) border-box;
374
+ border-color: transparent;
375
+ }
376
+ :root[data-look="depth"] .pop-trigger.canonical:hover:not(:disabled) {
377
+ box-shadow: var(--btn-shadow-hover);
378
+ }
379
+ :root[data-look="depth"] .btn.btn-ghost:hover:not(:disabled),
380
+ :root[data-look="depth"] .pop-trigger.trigger-ghost:hover:not(:disabled) {
381
+ background: color-mix(in oklab, var(--text) 8%, transparent);
382
+ border-color: transparent;
383
+ box-shadow: none;
384
+ }
385
+ :root[data-look="depth"] .btn.btn-primary:hover:not(:disabled),
386
+ :root[data-look="depth"] .pop-trigger.trigger-primary:hover:not(:disabled) {
387
+ --btn-bg: var(--depth-primary) border-box;
388
+ --pop-trigger-bg: var(--depth-primary) border-box;
389
+ border-color: transparent;
390
+ filter: brightness(1.1) saturate(1.05);
391
+ }
392
+ :root[data-look="depth"] .pop-trigger.trigger-primary:hover:not(:disabled) {
393
+ box-shadow: var(--depth-primary-edge), var(--depth-aura-hover);
394
+ }
395
+ :root[data-look="depth"] .btn.btn-primary:is(.btn-tone-accent, .btn-tone-info, .btn-tone-warn, .btn-tone-danger):hover:not(:disabled) {
396
+ background: linear-gradient(
397
+ 180deg,
398
+ color-mix(in oklab, var(--btn-tone) 35%, var(--depth-primary-top)),
399
+ color-mix(in oklab, var(--btn-tone) 35%, var(--depth-primary-bottom))
400
+ )
401
+ border-box;
402
+ border-color: transparent;
403
+ }
404
+ :root[data-look="depth"] .btn:is(.btn-danger, .btn-tone-accent, .btn-tone-success, .btn-tone-info, .btn-tone-warn, .btn-tone-danger):not(.btn-primary, .btn-ghost, .btn-link):hover:not(:disabled) {
405
+ background: linear-gradient(
406
+ 180deg,
407
+ color-mix(in oklab, var(--depth-tone) 12%, var(--surface)),
408
+ color-mix(in oklab, var(--depth-tone) 4%, var(--surface))
409
+ )
410
+ border-box;
411
+ border-color: transparent;
412
+ --btn-shadow-rest: var(--depth-hl-strong), 0 0 0 1px color-mix(in oklab, var(--depth-tone) 65%, transparent),
413
+ 0 0 18px -4px color-mix(in oklab, var(--depth-tone) 55%, transparent);
414
+ }
415
+ :root[data-look="depth"] .btn.btn-link:hover:not(:disabled),
416
+ :root[data-look="depth"] .btn.btn-icon-inline:hover:not(:disabled) {
417
+ background: none;
418
+ box-shadow: none;
419
+ }
420
+ }
421
+ :root[data-look="depth"] .btn:active:not(:disabled, [aria-disabled="true"], .loading, .btn-link, .btn-ghost, .btn-primary),
422
+ :root[data-look="depth"] .pop-trigger.canonical:active:not(:disabled) {
423
+ box-shadow: inset 0 1px 3px color-mix(in oklab, var(--depth-ink) 35%, transparent), var(--depth-ring);
424
+ filter: none;
425
+ }
426
+ :root[data-look="depth"] .btn.btn-primary:active:not(:disabled, [aria-disabled="true"], .loading),
427
+ :root[data-look="depth"] .pop-trigger.trigger-primary:active:not(:disabled) {
428
+ filter: brightness(0.95);
429
+ box-shadow: inset 0 2px 4px color-mix(in oklab, color-mix(in oklab, var(--accent), var(--depth-ink) 70%) 35%, transparent),
430
+ 0 0 0 1px color-mix(in oklab, var(--accent) 60%, transparent);
431
+ }
432
+ :root[data-look="depth"] .btn.btn-primary:focus-visible:not([aria-pressed="true"]) {
433
+ box-shadow: var(--depth-primary-edge), var(--depth-focus);
434
+ }
435
+ :root[data-look="depth"] .pop-trigger:focus-visible {
436
+ box-shadow: var(--depth-hl), var(--depth-focus);
437
+ }
438
+ :root[data-look="depth"] .btn:disabled {
439
+ --btn-shadow-rest: var(--depth-ring);
440
+ filter: saturate(0.5);
441
+ text-shadow: none;
442
+ }
443
+
444
+ :root[data-look="depth"] .ts-mode {
445
+ border-color: var(--border-strong);
446
+ }
447
+
448
+ /* ---------- form controls ---------- */
449
+ :root[data-look="depth"] .input,
450
+ :root[data-look="depth"] .select:not(.ghost),
451
+ :root[data-look="depth"] .textarea,
452
+ :root[data-look="depth"] .rich-select .pop-trigger.rs-trigger {
453
+ background: var(--depth-well) padding-box;
454
+ border-color: var(--depth-well-edge);
455
+ box-shadow: var(--depth-well-shadow);
456
+ transition:
457
+ background var(--dur-fast) var(--ease),
458
+ box-shadow var(--dur-fast) var(--ease-out),
459
+ scale var(--dur-fast) var(--ease-out);
460
+ }
461
+ :root[data-look="depth"] .select.embedded {
462
+ background: color-mix(in oklab, var(--text) 6%, transparent);
463
+ box-shadow: none;
464
+ }
465
+ @media (hover: hover) and (pointer: fine) {
466
+ :root[data-look="depth"] .input:hover:not(:disabled, :focus, [aria-invalid="true"]),
467
+ :root[data-look="depth"] .select:hover:not(:disabled, :focus, [aria-invalid="true"], .ghost, .embedded),
468
+ :root[data-look="depth"] .textarea:hover:not(:disabled, :focus, [aria-invalid="true"]),
469
+ :root[data-look="depth"] .rich-select .pop-trigger.rs-trigger:hover:not(:disabled) {
470
+ border-color: var(--depth-well-edge);
471
+ box-shadow: var(--depth-well-shadow), 0 0 0 1px color-mix(in oklab, var(--accent) 30%, transparent);
472
+ }
473
+ }
474
+ :root[data-look="depth"] .input:focus,
475
+ :root[data-look="depth"] .select:not(.ghost):focus,
476
+ :root[data-look="depth"] .textarea:focus,
477
+ :root[data-look="depth"] .rich-select .pop-trigger.rs-trigger[aria-expanded="true"],
478
+ :root[data-look="depth"] .rich-select .pop-trigger.rs-trigger:focus-visible {
479
+ background: var(--depth-well) padding-box;
480
+ border-color: var(--accent);
481
+ box-shadow: var(--depth-well-shadow), var(--depth-field-focus);
482
+ }
483
+ :root[data-look="depth"] .input:focus-visible,
484
+ :root[data-look="depth"] .select:focus-visible,
485
+ :root[data-look="depth"] .textarea:focus-visible,
486
+ :root[data-look="depth"] .rich-select .pop-trigger.rs-trigger:focus-visible {
487
+ outline: none;
488
+ }
489
+ :root[data-look="depth"] .input[aria-invalid="true"],
490
+ :root[data-look="depth"] .select[aria-invalid="true"],
491
+ :root[data-look="depth"] .textarea[aria-invalid="true"] {
492
+ background: var(--depth-well) padding-box;
493
+ border-color: color-mix(in oklab, var(--danger) 90%, transparent) color-mix(in oklab, var(--danger) 80%, transparent)
494
+ color-mix(in oklab, var(--danger) 70%, transparent);
495
+ box-shadow: var(--depth-well-shadow), 0 0 0 3px color-mix(in oklab, var(--danger) 16%, transparent),
496
+ 0 0 18px -6px color-mix(in oklab, var(--danger) 60%, transparent);
497
+ }
498
+ :root[data-look="depth"] .input[aria-invalid="true"]:focus,
499
+ :root[data-look="depth"] .textarea[aria-invalid="true"]:focus {
500
+ box-shadow: var(--depth-well-shadow), 0 0 0 3px color-mix(in oklab, var(--danger) 32%, transparent),
501
+ 0 0 18px -2px color-mix(in oklab, var(--danger) 45%, transparent);
502
+ }
503
+ :root[data-look="depth"] .field .label {
504
+ color: var(--text);
505
+ }
506
+
507
+ :root[data-look="depth"] .checkbox .box,
508
+ :root[data-look="depth"] .radio .dot-ctl,
509
+ :root[data-look="depth"] .switch {
510
+ background: var(--depth-well) padding-box;
511
+ border-color: var(--depth-well-edge-sm);
512
+ box-shadow: var(--depth-well-shadow);
513
+ transition:
514
+ background var(--dur-fast) var(--ease),
515
+ border-color var(--dur-fast) var(--ease),
516
+ box-shadow var(--dur-fast) var(--ease-out),
517
+ scale var(--dur-fast) var(--ease-out);
518
+ }
519
+ :root[data-look="depth"] .checkbox input:checked + .box,
520
+ :root[data-look="depth"] .checkbox input:indeterminate + .box,
521
+ :root[data-look="depth"] .switch.on {
522
+ background: var(--depth-primary) border-box;
523
+ border-color: transparent;
524
+ box-shadow: var(--depth-primary-edge), 0 0 0 1px color-mix(in oklab, var(--accent) 60%, transparent), 0 0 14px -2px var(--depth-glow-c);
525
+ }
526
+ :root[data-look="depth"] .checkbox .box::after {
527
+ background: var(--text-on-accent);
528
+ }
529
+ :root[data-look="depth"] .radio input:checked + .dot-ctl {
530
+ background: var(--depth-well) padding-box;
531
+ border-color: var(--accent);
532
+ box-shadow: var(--depth-well-shadow), 0 0 14px -2px var(--depth-glow-c);
533
+ }
534
+ :root[data-look="depth"] .radio .dot-ctl::after {
535
+ background: radial-gradient(circle at 50% 35%, color-mix(in oklab, var(--accent), var(--depth-lit) 45%), var(--accent));
536
+ box-shadow: 0 0 8px var(--depth-glow-c);
537
+ }
538
+ :root[data-look="depth"] .checkbox input:focus-visible + .box,
539
+ :root[data-look="depth"] .radio input:focus-visible + .dot-ctl,
540
+ :root[data-look="depth"] .switch:focus-visible {
541
+ box-shadow: var(--depth-focus);
542
+ }
543
+ :root[data-look="depth"] .switch .knob {
544
+ background: var(--depth-knob);
545
+ box-shadow: var(--depth-knob-shadow);
546
+ }
547
+ :root[data-look="depth"] .switch.on .knob {
548
+ background: var(--depth-knob-on);
549
+ }
550
+
551
+ :root[data-look="depth"] .slider input[type="range"]::-webkit-slider-runnable-track {
552
+ background: linear-gradient(
553
+ to right,
554
+ color-mix(in oklab, var(--slider-accent, var(--accent)), var(--depth-ink) 25%) 0%,
555
+ var(--slider-accent, var(--accent)) var(--pct),
556
+ var(--depth-well) var(--pct)
557
+ );
558
+ box-shadow: var(--depth-well-shadow), 0 1px 0 color-mix(in oklab, var(--depth-lit) 10%, transparent);
559
+ }
560
+ :root[data-look="depth"] .slider input[type="range"]::-moz-range-track {
561
+ background: var(--depth-well);
562
+ box-shadow: var(--depth-well-shadow), 0 1px 0 color-mix(in oklab, var(--depth-lit) 10%, transparent);
563
+ }
564
+ :root[data-look="depth"] .slider input[type="range"]::-moz-range-progress {
565
+ background: linear-gradient(90deg, color-mix(in oklab, var(--slider-accent, var(--accent)), var(--depth-ink) 25%), var(--slider-accent, var(--accent)));
566
+ }
567
+ :root[data-look="depth"] .slider input[type="range"]::-webkit-slider-thumb {
568
+ background: var(--depth-knob-on);
569
+ border: 0;
570
+ box-shadow: var(--thumb-shadow);
571
+ }
572
+ :root[data-look="depth"] .slider input[type="range"]::-moz-range-thumb {
573
+ background: var(--depth-knob-on);
574
+ border: 0;
575
+ box-shadow: var(--thumb-shadow);
576
+ }
577
+
578
+ /* ---------- segmented control & tabs ---------- */
579
+ :root[data-look="depth"] .seg {
580
+ background: var(--depth-well) padding-box;
581
+ border-color: var(--depth-well-edge-sm);
582
+ box-shadow: var(--depth-well-shadow);
583
+ }
584
+ :root[data-look="depth"] .seg .seg-thumb,
585
+ :root[data-look="depth"] .seg:not(.placed) .seg-item.selected {
586
+ background: var(--depth-pill), var(--surface);
587
+ box-shadow: var(--depth-pill-shadow);
588
+ }
589
+ :root[data-look="depth"] .seg-item.selected {
590
+ color: var(--text);
591
+ }
592
+ @media (hover: hover) and (pointer: fine) {
593
+ :root[data-look="depth"] .seg-item:hover:not(:disabled):not(.selected) {
594
+ background: color-mix(in oklab, var(--text) 6%, transparent);
595
+ }
596
+ }
597
+
598
+ :root[data-look="depth"] .tablist {
599
+ padding-block: var(--sp-2) var(--sp-2-5, 10px);
600
+ border-bottom: 1px solid;
601
+ border-image: linear-gradient(90deg, color-mix(in oklab, var(--depth-line) 12%, transparent), transparent 90%) 1;
602
+ }
603
+ :root[data-look="depth"] .strip .actions {
604
+ border-bottom-color: transparent;
605
+ }
606
+ :root[data-look="depth"] .tablist .indicator {
607
+ opacity: 0;
608
+ }
609
+ :root[data-look="depth"] .tab {
610
+ min-height: var(--control-sm);
611
+ margin-bottom: 0;
612
+ border-bottom: 0;
613
+ border-radius: var(--r-md);
614
+ transition:
615
+ color var(--dur-fast) var(--ease),
616
+ background var(--dur-fast) var(--ease),
617
+ box-shadow var(--dur-fast) var(--ease-out);
618
+ }
619
+ :root[data-look="depth"] .tab.selected {
620
+ background: var(--depth-pill), var(--surface);
621
+ box-shadow: var(--depth-pill-shadow);
622
+ }
623
+ :root[data-look="depth"] .tab.selected .icon {
624
+ color: color-mix(in oklab, var(--accent) 60%, var(--text));
625
+ }
626
+ :root[data-look="depth"][data-mode="light"] .tab.selected .icon {
627
+ color: var(--accent);
628
+ }
629
+ :root[data-look="depth"] .tab.selected .badge {
630
+ --badge-bg: color-mix(in oklab, var(--bg) 40%, transparent);
631
+ --badge-fg: var(--text);
632
+ }
633
+ @media (hover: hover) and (pointer: fine) {
634
+ :root[data-look="depth"] .tab:hover:not(.selected, :disabled, .disabled) {
635
+ background: color-mix(in oklab, var(--text) 6%, transparent);
636
+ box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent) 25%, transparent);
637
+ }
638
+ }
639
+
640
+ /* ---------- badges, dots, kbd, avatars ---------- */
641
+ :root[data-look="depth"] .badge {
642
+ --badge-bg: var(--bg-elevated-2);
643
+ --badge-border: transparent;
644
+ box-shadow: var(--depth-hl-strong);
645
+ }
646
+ :root[data-look="depth"] .badge.toned {
647
+ --badge-bg: linear-gradient(
648
+ 180deg,
649
+ color-mix(in oklab, var(--badge-tone) 10%, transparent),
650
+ color-mix(in oklab, var(--badge-tone) 5%, transparent)
651
+ );
652
+ --badge-border: transparent;
653
+ background: var(--badge-bg);
654
+ box-shadow: var(--depth-hl), inset 0 0 0 1px color-mix(in oklab, var(--badge-tone) 30%, transparent);
655
+ }
656
+ :root[data-look="depth"][data-mode="light"] .badge.toned {
657
+ --badge-bg: linear-gradient(
658
+ 180deg,
659
+ color-mix(in oklab, var(--badge-tone) 8%, transparent),
660
+ color-mix(in oklab, var(--badge-tone) 4%, transparent)
661
+ );
662
+ }
663
+ :root[data-look="depth"] .badge.text {
664
+ background: none;
665
+ box-shadow: none;
666
+ }
667
+ :root[data-look="depth"] .badge.active {
668
+ background: var(--depth-primary);
669
+ color: var(--text-on-accent);
670
+ box-shadow: var(--depth-primary-edge), 0 0 12px -3px var(--depth-glow-c);
671
+ }
672
+ :root[data-look="depth"] .dot.glow {
673
+ box-shadow: 0 0 0 2px color-mix(in oklab, var(--dot-color) 22%, transparent), 0 0 10px 1px var(--dot-color);
674
+ }
675
+ :root[data-look="depth"] .kbd {
676
+ background: var(--depth-btn-fill) border-box;
677
+ border: 1px solid transparent;
678
+ box-shadow: var(--depth-hl-strong), var(--depth-ring), 0 2px 0 color-mix(in oklab, var(--depth-ink) 55%, transparent),
679
+ 0 3px 4px -1px color-mix(in oklab, var(--depth-ink) 40%, transparent);
680
+ color: var(--text);
681
+ }
682
+ :root[data-look="depth"][data-mode="light"] .kbd {
683
+ box-shadow: var(--depth-ring), 0 1px 0 color-mix(in oklab, var(--depth-ink) 18%, transparent),
684
+ 0 2px 3px -1px color-mix(in oklab, var(--depth-ink) 15%, transparent);
685
+ }
686
+ :root[data-look="depth"] .avatar {
687
+ box-shadow: 0 0 0 1px color-mix(in oklab, var(--depth-line) 10%, transparent), var(--depth-hl),
688
+ 0 2px 6px -2px color-mix(in oklab, var(--depth-ink) 50%, transparent);
689
+ }
690
+ :root[data-look="depth"][data-mode="light"] .avatar {
691
+ box-shadow: 0 0 0 1px color-mix(in oklab, var(--depth-line) 8%, transparent), 0 2px 6px -2px color-mix(in oklab, var(--depth-ink) 20%, transparent);
692
+ }
693
+
694
+ /* ---------- callouts ---------- */
695
+ :root[data-look="depth"] .callout.callout-ok {
696
+ --callout-tone: var(--ok);
697
+ }
698
+ :root[data-look="depth"] .callout.callout-warn {
699
+ --callout-tone: var(--warn);
700
+ }
701
+ :root[data-look="depth"] .callout.callout-danger {
702
+ --callout-tone: var(--danger);
703
+ }
704
+ :root[data-look="depth"] .callout.callout-info {
705
+ --callout-tone: var(--info);
706
+ }
707
+ :root[data-look="depth"] .callout.callout-accent {
708
+ --callout-tone: var(--accent);
709
+ }
710
+ :root[data-look="depth"] .card.callout {
711
+ --depth-card-tint: linear-gradient(100deg, color-mix(in oklab, var(--callout-tone) 8%, transparent), color-mix(in oklab, var(--callout-tone) 2%, transparent) 70%);
712
+ --depth-card-edge: color-mix(in oklab, var(--callout-tone) 55%, transparent) color-mix(in oklab, var(--callout-tone) 28%, transparent)
713
+ color-mix(in oklab, var(--callout-tone) 14%, transparent);
714
+ --card-shadow-rest: var(--depth-hl), var(--depth-drop-1), 0 8px 24px -16px color-mix(in oklab, var(--callout-tone) 80%, transparent);
715
+ }
716
+ :root[data-look="depth"] .callout .callout-icon {
717
+ filter: drop-shadow(0 0 6px color-mix(in oklab, var(--callout-tone) 70%, transparent));
718
+ }
719
+
720
+ /* ---------- lists, tables, accordion ---------- */
721
+ :root[data-look="depth"] .accordion,
722
+ :root[data-look="depth"] .dt-scroll {
723
+ background: var(--depth-fill-1) padding-box;
724
+ border-color: var(--depth-edge);
725
+ box-shadow: var(--depth-hl), var(--depth-drop-1);
726
+ }
727
+ :root[data-look="depth"] .accordion > .acc-item + .acc-item {
728
+ border-top: 1px solid;
729
+ border-image: var(--depth-divider) 1;
730
+ }
731
+ :root[data-look="depth"] .accordion .disclosure--open {
732
+ background: linear-gradient(90deg, color-mix(in oklab, var(--accent) 12%, transparent), transparent 70%);
733
+ box-shadow: inset 2px 0 0 var(--accent);
734
+ }
735
+ :root[data-look="depth"] .accordion .disclosure--open .disclosure__chevron {
736
+ color: var(--accent);
737
+ }
738
+ @media (hover: hover) and (pointer: fine) {
739
+ :root[data-look="depth"] .disclosure__button:hover:not(:disabled) {
740
+ background: color-mix(in oklab, var(--text) 5%, transparent);
741
+ }
742
+ }
743
+ :root[data-look="depth"] .dt {
744
+ background: none;
745
+ }
746
+ :root[data-look="depth"] .dt th {
747
+ background: color-mix(in oklab, var(--text) 4%, transparent);
748
+ letter-spacing: 0.06em;
749
+ }
750
+ :root[data-look="depth"] .dt th,
751
+ :root[data-look="depth"] .dt td,
752
+ :root[data-look="depth"] .dt-scroll[data-stacked] tbody tr {
753
+ border-bottom-color: color-mix(in oklab, var(--text) 6%, transparent);
754
+ }
755
+ @media (hover: hover) and (pointer: fine) {
756
+ :root[data-look="depth"] .dt tr.clickable:hover {
757
+ background: linear-gradient(90deg, color-mix(in oklab, var(--accent) 14%, transparent), transparent 70%);
758
+ }
759
+ }
760
+
761
+ /* ---------- progress & loading ---------- */
762
+ :root[data-look="depth"] .progress,
763
+ :root[data-look="depth"] .gauge {
764
+ background: var(--depth-track);
765
+ border-color: transparent;
766
+ box-shadow: var(--depth-well-shadow), 0 1px 0 color-mix(in oklab, var(--depth-lit) 8%, transparent);
767
+ }
768
+ :root[data-look="depth"][data-mode="light"] .progress,
769
+ :root[data-look="depth"][data-mode="light"] .gauge {
770
+ box-shadow: var(--depth-well-shadow), inset 0 0 0 1px color-mix(in oklab, var(--depth-line) 6%, transparent);
771
+ }
772
+ :root[data-look="depth"] .progress:not(.striped, .gradient) .bar {
773
+ background: linear-gradient(90deg, color-mix(in oklab, var(--fill, var(--accent)), var(--depth-ink) 30%), var(--fill, var(--accent)));
774
+ }
775
+ :root[data-look="depth"] .progress .bar {
776
+ box-shadow: 0 0 12px color-mix(in oklab, var(--fill, var(--accent)) 60%, transparent),
777
+ inset 0 1px 0 color-mix(in oklab, var(--depth-lit) 30%, transparent);
778
+ }
779
+ :root[data-look="depth"] .gauge .fill,
780
+ :root[data-look="depth"] .gauge .segment.lit {
781
+ box-shadow: 0 0 8px color-mix(in oklab, var(--gauge-fill) 60%, transparent);
782
+ }
783
+ :root[data-look="depth"] .gauge .segment {
784
+ background: color-mix(in oklab, var(--text) 7%, transparent);
785
+ }
786
+ :root[data-look="depth"] .spinner {
787
+ color: var(--accent);
788
+ filter: drop-shadow(0 0 4px var(--depth-glow-c));
789
+ }
790
+
791
+ /* ---------- chat ---------- */
792
+ :root[data-look="depth"] .bubble {
793
+ background:
794
+ linear-gradient(180deg, color-mix(in oklab, var(--role) 6%, transparent), color-mix(in oklab, var(--role) 2%, transparent)) padding-box,
795
+ var(--depth-fill-2) padding-box;
796
+ border-color: color-mix(in oklab, var(--role) 45%, transparent) color-mix(in oklab, var(--role) 25%, transparent) color-mix(in oklab, var(--role) 10%, transparent);
797
+ border-inline-start-width: 1px;
798
+ box-shadow: var(--depth-hl), inset 2px 0 0 var(--role), var(--depth-drop-1);
799
+ }
800
+
801
+ /* ---------- raised layer: menus, popovers, modal, toast ---------- */
802
+ :root[data-look="depth"] .pop-panel,
803
+ :root[data-look="depth"] .sheet {
804
+ background: var(--depth-fill-2) padding-box;
805
+ border-color: var(--depth-edge-2);
806
+ }
807
+ :root[data-look="depth"] .toaster .toast {
808
+ --depth-card-fill: var(--depth-fill-2);
809
+ --depth-card-edge: var(--depth-edge-2);
810
+ --card-shadow-rest: var(--depth-hl-strong), var(--depth-drop-raised);
811
+ }
812
+ :root[data-look="depth"] .menu-item {
813
+ border-radius: calc(var(--r-md) - 2px);
814
+ }
815
+ @media (hover: hover) and (pointer: fine) {
816
+ :root[data-look="depth"] .menu-item:hover:not(:disabled) {
817
+ background: color-mix(in oklab, var(--accent) 18%, transparent);
818
+ box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent) 26%, transparent);
819
+ }
820
+ }
821
+ :root[data-look="depth"] .menu-item:focus-visible,
822
+ :root[data-look="depth"] .menu-row:focus-within {
823
+ background: color-mix(in oklab, var(--accent) 18%, transparent);
824
+ box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent) 50%, transparent);
825
+ }
826
+ :root[data-look="depth"] .rs-row[data-active] {
827
+ background: color-mix(in oklab, var(--text) 7%, transparent);
828
+ }
829
+ :root[data-look="depth"] .rs-row[data-selected] {
830
+ background: color-mix(in oklab, var(--accent) 18%, transparent);
831
+ }
832
+ :root[data-look="depth"] .rs-row[data-selected]::before {
833
+ box-shadow: 0 0 8px var(--accent);
834
+ }
835
+ :root[data-look="depth"] .modal::backdrop {
836
+ background: var(--depth-scrim);
837
+ backdrop-filter: blur(6px);
838
+ }
839
+ :root[data-look="depth"] .sheet .sheet-head {
840
+ border-bottom: 1px solid;
841
+ border-image: var(--depth-divider) 1;
842
+ }
843
+ :root[data-look="depth"] .sheet .sheet-foot {
844
+ border-top: 1px solid;
845
+ border-image: var(--depth-divider) 1;
846
+ background: color-mix(in oklab, var(--bg) 30%, transparent);
847
+ }
848
+
849
+ /* ---------- motion ---------- */
850
+ @media (prefers-reduced-motion: no-preference) {
851
+ :root[data-look="depth"] {
852
+ --hover-lift: 1px;
853
+ --dur-press: 70ms;
854
+ --press-scale: 0.97;
855
+ --press-scale-sm: 0.94;
856
+ --press-scale-lg: 0.99;
857
+ }
858
+ :root[data-look="depth"] .card.card-tap {
859
+ --hover-lift: 2px;
860
+ }
861
+ :root[data-look="depth"] .btn,
862
+ :root[data-look="depth"] .pop-trigger {
863
+ transition:
864
+ background var(--dur-fast) var(--ease),
865
+ border-color var(--dur-fast) var(--ease),
866
+ color var(--dur-fast) var(--ease),
867
+ box-shadow var(--dur-fast) var(--ease-out),
868
+ filter var(--dur-fast) var(--ease),
869
+ opacity var(--dur-fast) var(--ease),
870
+ translate var(--dur-fast) var(--ease-out),
871
+ scale var(--btn-scale-dur, var(--dur-fast)) var(--ease-spring);
872
+ }
873
+ :root[data-look="depth"] .btn .icon,
874
+ :root[data-look="depth"] .pop-trigger .icon,
875
+ :root[data-look="depth"] .menu-item .icon,
876
+ :root[data-look="depth"] .tab .icon,
877
+ :root[data-look="depth"] .disclosure__chevron {
878
+ transition:
879
+ translate var(--dur-fast) var(--ease-out),
880
+ scale var(--dur-fast) var(--ease-out),
881
+ rotate var(--dur-fast) var(--ease-out);
882
+ }
883
+ }
884
+ @media (hover: hover) and (pointer: fine) {
885
+ :root[data-look="depth"] .card:hover {
886
+ --depth-spot: var(--depth-spot-on);
887
+ }
888
+ :root[data-look="depth"] .card.card-tap:hover {
889
+ --depth-spot: var(--depth-spot-tap);
890
+ --depth-card-edge: color-mix(in oklab, var(--accent) 75%, transparent) color-mix(in oklab, var(--accent) 45%, transparent)
891
+ color-mix(in oklab, var(--accent) 22%, transparent);
892
+ border-color: var(--depth-card-edge);
893
+ }
894
+ :root[data-look="depth"] .checkbox:hover input:not(:checked, :indeterminate, :disabled) + .box,
895
+ :root[data-look="depth"] .radio:hover input:not(:checked, :disabled) + .dot-ctl,
896
+ :root[data-look="depth"] .switch:hover:not(.on, :disabled) {
897
+ box-shadow: var(--depth-well-shadow), 0 0 0 1px color-mix(in oklab, var(--accent) 45%, transparent), 0 0 12px -2px var(--depth-glow-c);
898
+ }
899
+ :root[data-look="depth"] .crumbs .link,
900
+ :root[data-look="depth"] .btn.btn-link {
901
+ text-decoration: underline transparent;
902
+ text-underline-offset: 0.3em;
903
+ transition:
904
+ color var(--dur-fast) var(--ease),
905
+ text-decoration-color var(--dur-fast) var(--ease-out),
906
+ text-underline-offset var(--dur-fast) var(--ease-out);
907
+ }
908
+ :root[data-look="depth"] .crumbs .link:hover,
909
+ :root[data-look="depth"] .btn.btn-link:hover:not(:disabled) {
910
+ text-decoration-color: currentColor;
911
+ text-underline-offset: 0.18em;
912
+ }
913
+ }
914
+ @media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
915
+ :root[data-look="depth"] .pop-trigger.canonical:hover:not(:disabled),
916
+ :root[data-look="depth"] .pop-trigger.trigger-primary:hover:not(:disabled) {
917
+ translate: 0 -1px;
918
+ }
919
+ :root[data-look="depth"] .btn:hover:not(:disabled) > .icon:first-child,
920
+ :root[data-look="depth"] .btn.btn-icon:hover:not(:disabled) .icon,
921
+ :root[data-look="depth"] .btn.btn-box:hover:not(:disabled) .icon,
922
+ :root[data-look="depth"] .tab:hover:not(:disabled) .icon {
923
+ scale: 1.12;
924
+ }
925
+ :root[data-look="depth"] .pop-trigger:hover:not(:disabled) .caret-glyph .icon,
926
+ :root[data-look="depth"] .split-caret:hover .icon {
927
+ translate: 0 2px;
928
+ }
929
+ :root[data-look="depth"] .menu-item:hover:not(:disabled) .icon {
930
+ translate: 2px 0;
931
+ }
932
+ :root[data-look="depth"] .disclosure__button:hover:not(:disabled) .disclosure__chevron {
933
+ translate: 0 1px;
934
+ }
935
+ :root[data-look="depth"] .btn:active:not(:disabled, [aria-disabled="true"], .loading, .btn-link),
936
+ :root[data-look="depth"] .pop-trigger:active:not(:disabled) {
937
+ translate: 0;
938
+ }
939
+ }