@dixy-ui/themes 0.1.0-beta.3 → 0.1.0-beta.5

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 (92) hide show
  1. package/README.md +3 -3
  2. package/dist/ansi-panes.css +75 -8
  3. package/dist/arcade/ornament.d.ts +3 -0
  4. package/dist/arcade/ornament.js +8 -0
  5. package/dist/arcade-cabinet.css +1084 -0
  6. package/dist/art-deco.css +75 -8
  7. package/dist/atomic-lounge.css +79 -8
  8. package/dist/authoring.d.ts +8 -8
  9. package/dist/azulejo-tile.css +79 -8
  10. package/dist/blueprint.css +75 -8
  11. package/dist/brutalist-concrete.css +80 -9
  12. package/dist/bytes.json +97 -62
  13. package/dist/candy-clay.css +81 -8
  14. package/dist/catalog.d.ts +294 -0
  15. package/dist/catalog.js +301 -0
  16. package/dist/character.d.ts +1 -1
  17. package/dist/character.js +6 -0
  18. package/dist/chrome.js +13 -3
  19. package/dist/compile-css.js +27 -7
  20. package/dist/dispatch.css +729 -0
  21. package/dist/diwali-lights.css +79 -8
  22. package/dist/documents.d.ts +115 -7
  23. package/dist/documents.js +10 -2
  24. package/dist/foundations.d.ts +8 -0
  25. package/dist/foundations.js +10 -0
  26. package/dist/frame-styles.d.ts +3 -0
  27. package/dist/frame-styles.js +6 -0
  28. package/dist/freighter.css +141 -18
  29. package/dist/glass-ui.css +75 -8
  30. package/dist/holi-colours.css +79 -8
  31. package/dist/ledger.css +564 -0
  32. package/dist/living-forest.css +81 -8
  33. package/dist/mainframe.css +762 -0
  34. package/dist/manifests.d.ts +144 -144
  35. package/dist/material-light.css +79 -8
  36. package/dist/neon-night-market.css +79 -8
  37. package/dist/ocean-depths.css +81 -8
  38. package/dist/orbital-hud.css +141 -18
  39. package/dist/organic-paint-launch.d.ts +9 -0
  40. package/dist/organic-paint-launch.js +121 -46
  41. package/dist/organic-paint.d.ts +1 -1
  42. package/dist/organic-settings.d.ts +109 -25
  43. package/dist/organic-settings.js +49 -0
  44. package/dist/papel-picado.css +79 -8
  45. package/dist/phosphor-terminal.css +79 -8
  46. package/dist/prism-glass.css +75 -8
  47. package/dist/recipes.d.ts +162 -0
  48. package/dist/recipes.js +164 -0
  49. package/dist/resolve.d.ts +18 -2
  50. package/dist/retro-os.css +75 -8
  51. package/dist/riso-zine.css +75 -8
  52. package/dist/save-point.css +946 -0
  53. package/dist/savepoint/ornament.d.ts +3 -0
  54. package/dist/savepoint/ornament.js +8 -0
  55. package/dist/scrapbook.css +75 -8
  56. package/dist/signal.css +561 -0
  57. package/dist/skins/arcade-cabinet.d.ts +68 -0
  58. package/dist/skins/arcade-cabinet.js +68 -0
  59. package/dist/skins/dispatch.d.ts +57 -0
  60. package/dist/skins/dispatch.js +57 -0
  61. package/dist/skins/ledger.d.ts +57 -0
  62. package/dist/skins/ledger.js +57 -0
  63. package/dist/skins/mainframe.d.ts +57 -0
  64. package/dist/skins/mainframe.js +57 -0
  65. package/dist/skins/save-point.d.ts +68 -0
  66. package/dist/skins/save-point.js +68 -0
  67. package/dist/skins/signal.d.ts +57 -0
  68. package/dist/skins/signal.js +57 -0
  69. package/dist/skins/sunset-drive.d.ts +68 -0
  70. package/dist/skins/sunset-drive.js +68 -0
  71. package/dist/solar-sail.css +75 -8
  72. package/dist/starters-launch.d.ts +24 -0
  73. package/dist/starters-launch.js +343 -0
  74. package/dist/studio-hardware.css +79 -8
  75. package/dist/sumi-ink.css +75 -8
  76. package/dist/sunset/ornament.d.ts +3 -0
  77. package/dist/sunset/ornament.js +8 -0
  78. package/dist/sunset-drive.css +1022 -0
  79. package/dist/swiss-poster.css +145 -18
  80. package/dist/tactile-atelier.css +81 -8
  81. package/dist/theme-document.schema.json +34 -6
  82. package/dist/theme-fix.d.ts +11 -0
  83. package/dist/theme-fix.js +32 -0
  84. package/dist/theme-fixes.d.ts +2 -0
  85. package/dist/theme-fixes.js +1 -0
  86. package/dist/theme-schema.d.ts +6 -6
  87. package/dist/theme-schema.js +2 -0
  88. package/dist/tokyo-transit.css +79 -8
  89. package/dist/winamp-signal.css +79 -8
  90. package/dist/y2k-titanium.css +147 -18
  91. package/dist/yule-knit.css +75 -8
  92. package/package.json +50 -3
@@ -33,6 +33,11 @@
33
33
  --dixy-font-title-sm-family:
34
34
  "Figtree Variable", "Figtree", ui-sans-serif, system-ui, sans-serif;
35
35
  --dixy-skin-edge: #e0e4ee;
36
+ --dixy-skin-field-edge: color-mix(
37
+ in oklab,
38
+ var(--dixy-color-base-9) 50%,
39
+ var(--dixy-color-base-8)
40
+ );
36
41
 
37
42
  --dixy-skin-surface: color-mix(
38
43
  in srgb,
@@ -104,7 +109,6 @@
104
109
  --dixy-font-title-sm-letter-spacing: -0.035em;
105
110
  }
106
111
  .dixy-theme[data-dixy-skin="dixy/material-light"][data-appearance="dark"] {
107
- --dixy-skin-selected: var(--dixy-skin-finish);
108
112
  --dixy-skin-edge: #262a35;
109
113
  --dixy-skin-surface: color-mix(
110
114
  in srgb,
@@ -117,6 +121,7 @@
117
121
  #1b1e26
118
122
  );
119
123
  }
124
+
120
125
  .dixy-theme[data-dixy-skin="dixy/material-light"][data-relief="2"] {
121
126
  --dixy-skin-shadow:
122
127
  var(--dixy-skin-depth-shadow, var(--dixy-skin-authored-shadow)),
@@ -142,11 +147,9 @@
142
147
  }
143
148
  }
144
149
  @layer dixy.components {
145
- .dixy-theme[data-dixy-skin="dixy/material-light"] {
150
+ .dixy-theme[data-dixy-skin="dixy/material-light"]:not(.dixy-portal-scope) {
146
151
  position: relative;
147
152
  isolation: isolate;
148
- }
149
- .dixy-theme[data-dixy-skin="dixy/material-light"]:not(.dixy-portal-scope) {
150
153
  background-color: var(--dixy-skin-ground);
151
154
  background-image: var(--dixy-skin-canvas);
152
155
  }
@@ -252,6 +255,30 @@
252
255
  ):not([data-variant="soft"]) {
253
256
  background-color: var(--dixy-skin-surface);
254
257
  }
258
+ :is(
259
+ .dixy-dialog-popup,
260
+ .dixy-alert-dialog-popup,
261
+ .dixy-drawer-popup,
262
+ .dixy-popover-popup,
263
+ .dixy-preview-card-popup,
264
+ .dixy-tooltip-popup,
265
+ .dixy-select-popup,
266
+ .dixy-combobox-popup,
267
+ .dixy-autocomplete-popup,
268
+ .dixy-menu-popup,
269
+ .dixy-context-menu-popup,
270
+ .dixy-navigation-menu-popup
271
+ )[data-dixy-skin="dixy/material-light"]:not(
272
+ [data-dixy-material-override]
273
+ ):not(:where([data-dixy-material-override]) *):not(
274
+ [data-variant="solid"]
275
+ ):not([data-variant="soft"]) {
276
+ background-color: color-mix(
277
+ in srgb,
278
+ var(--dixy-color-background-surface-raised) 94%,
279
+ var(--dixy-skin-surface)
280
+ );
281
+ }
255
282
  :is(
256
283
  .dixy-input,
257
284
  .dixy-textarea,
@@ -284,7 +311,7 @@
284
311
  [data-dixy-material-override]
285
312
  ):not(:where([data-dixy-material-override]) *) {
286
313
  border-width: var(--dixy-input-border-width);
287
- border-color: var(--dixy-skin-edge);
314
+ border-color: var(--dixy-skin-field-edge);
288
315
  background-image: var(--dixy-skin-paint);
289
316
  background-color: var(--dixy-color-background-canvas);
290
317
  background-size:
@@ -294,6 +321,45 @@
294
321
  100% 100%;
295
322
  box-shadow: var(--dixy-skin-inset);
296
323
  }
324
+ /* materials.css styles [data-dixy-visual] surfaces at 0,5,0. Match the
325
+ skin's paint to that so its image and grain size always land together;
326
+ otherwise the material image is tiled at the grain size (stripes). */
327
+ :is(
328
+ .dixy-card,
329
+ .dixy-box,
330
+ .dixy-dialog-popup,
331
+ .dixy-alert-dialog-popup,
332
+ .dixy-drawer-popup,
333
+ .dixy-popover-popup,
334
+ .dixy-preview-card-popup,
335
+ .dixy-tooltip-popup,
336
+ .dixy-select-popup,
337
+ .dixy-combobox-popup,
338
+ .dixy-autocomplete-popup,
339
+ .dixy-menu-popup,
340
+ .dixy-context-menu-popup,
341
+ .dixy-navigation-menu-popup,
342
+ .dixy-toast-root,
343
+ .dixy-alert,
344
+ .dixy-list-box,
345
+ .dixy-calendar,
346
+ .dixy-range-calendar,
347
+ .dixy-input,
348
+ .dixy-textarea,
349
+ .dixy-native-select,
350
+ .dixy-select-trigger,
351
+ .dixy-input-group,
352
+ .dixy-combobox-input-group,
353
+ .dixy-autocomplete-input-group,
354
+ .dixy-number-field-group,
355
+ .dixy-otp-field-input
356
+ )[data-dixy-skin="dixy/material-light"]:not(
357
+ [data-dixy-material-override]
358
+ ):not(
359
+ :where([data-dixy-material-override]) *
360
+ )[data-dixy-visual][data-material]:not([data-disabled]) {
361
+ background-image: var(--dixy-skin-paint);
362
+ }
297
363
  :is(.dixy-button)[data-dixy-skin="dixy/material-light"]:not(
298
364
  [data-dixy-material-override]
299
365
  ):not(:where([data-dixy-material-override]) *):is(
@@ -324,14 +390,19 @@
324
390
  border: 1px solid var(--dixy-skin-edge);
325
391
  box-shadow: var(--dixy-skin-inset);
326
392
  }
393
+ /* Selected tabs and toggles are one flat colour, lifted by edge and relief only. A gradient behind the label (thumb art, sheen, material image) splits it across two colours. :not([data-variant="line"]) also outranks materials.css (0,3,0). */
327
394
  :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/material-light"]:not(
328
395
  [data-dixy-material-override]
329
396
  ):not(:where([data-dixy-material-override]) *) {
330
- background-image: var(--dixy-skin-finish);
331
397
  box-shadow: var(--dixy-skin-control-relief);
332
398
  border: 1px solid var(--dixy-skin-edge);
333
399
  }
334
- /* Toggle groups read like tabs: a sunken track, the selected toggle a raised thumb (slider-knob paint in light, the raised finish in dark so its label stays readable). */
400
+ :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/material-light"]:not(
401
+ [data-dixy-material-override]
402
+ ):not(:where([data-dixy-material-override]) *):not([data-variant="line"]) {
403
+ background-image: none;
404
+ }
405
+ /* Toggle groups read like tabs: a sunken track, the selected toggle a raised, flat thumb. */
335
406
  .dixy-theme[data-dixy-skin="dixy/material-light"]
336
407
  .dixy-toggle-group:is([data-attached], [data-segmented]):not(
337
408
  [data-dixy-material-override]
@@ -346,7 +417,7 @@
346
417
  [data-variant="solid"]
347
418
  )[data-pressed]:not([data-disabled]) {
348
419
  background-color: var(--dixy-color-background-surface-raised);
349
- background-image: var(--dixy-skin-selected, var(--dixy-skin-thumb));
420
+ background-image: none;
350
421
  box-shadow: var(--dixy-skin-control-relief);
351
422
  border-color: var(--dixy-skin-edge);
352
423
  color: var(--dixy-color-text-primary);
@@ -31,6 +31,11 @@
31
31
  --dixy-font-title-sm-family:
32
32
  "Tilt Neon", "Fredoka Variable", ui-rounded, sans-serif;
33
33
  --dixy-skin-edge: #4a3f57;
34
+ --dixy-skin-field-edge: color-mix(
35
+ in oklab,
36
+ var(--dixy-color-base-9) 50%,
37
+ var(--dixy-color-base-8)
38
+ );
34
39
  --dixy-organic-density: 45;
35
40
  --dixy-organic-cornerDensity: 60;
36
41
  --dixy-organic-canopyDepth: 55;
@@ -123,7 +128,6 @@
123
128
  --dixy-organic-b: #3ff2ff;
124
129
  --dixy-organic-c: #ffd166;
125
130
  --dixy-organic-d: #2a2233;
126
- --dixy-skin-selected: var(--dixy-skin-finish);
127
131
  --dixy-skin-edge: #5b4c6b;
128
132
  --dixy-skin-surface: color-mix(
129
133
  in srgb,
@@ -136,6 +140,7 @@
136
140
  #17121e
137
141
  );
138
142
  }
143
+
139
144
  .dixy-theme[data-dixy-skin="dixy/neon-night-market"][data-relief="2"] {
140
145
  --dixy-skin-shadow:
141
146
  var(--dixy-skin-depth-shadow, var(--dixy-skin-authored-shadow)),
@@ -161,11 +166,9 @@
161
166
  }
162
167
  }
163
168
  @layer dixy.components {
164
- .dixy-theme[data-dixy-skin="dixy/neon-night-market"] {
169
+ .dixy-theme[data-dixy-skin="dixy/neon-night-market"]:not(.dixy-portal-scope) {
165
170
  position: relative;
166
171
  isolation: isolate;
167
- }
168
- .dixy-theme[data-dixy-skin="dixy/neon-night-market"]:not(.dixy-portal-scope) {
169
172
  background-color: var(--dixy-skin-ground);
170
173
  background-image: var(--dixy-skin-canvas);
171
174
  }
@@ -271,6 +274,30 @@
271
274
  ):not([data-variant="soft"]) {
272
275
  background-color: var(--dixy-skin-surface);
273
276
  }
277
+ :is(
278
+ .dixy-dialog-popup,
279
+ .dixy-alert-dialog-popup,
280
+ .dixy-drawer-popup,
281
+ .dixy-popover-popup,
282
+ .dixy-preview-card-popup,
283
+ .dixy-tooltip-popup,
284
+ .dixy-select-popup,
285
+ .dixy-combobox-popup,
286
+ .dixy-autocomplete-popup,
287
+ .dixy-menu-popup,
288
+ .dixy-context-menu-popup,
289
+ .dixy-navigation-menu-popup
290
+ )[data-dixy-skin="dixy/neon-night-market"]:not(
291
+ [data-dixy-material-override]
292
+ ):not(:where([data-dixy-material-override]) *):not(
293
+ [data-variant="solid"]
294
+ ):not([data-variant="soft"]) {
295
+ background-color: color-mix(
296
+ in srgb,
297
+ var(--dixy-color-background-surface-raised) 94%,
298
+ var(--dixy-skin-surface)
299
+ );
300
+ }
274
301
  :is(
275
302
  .dixy-input,
276
303
  .dixy-textarea,
@@ -303,7 +330,7 @@
303
330
  [data-dixy-material-override]
304
331
  ):not(:where([data-dixy-material-override]) *) {
305
332
  border-width: var(--dixy-input-border-width);
306
- border-color: var(--dixy-skin-edge);
333
+ border-color: var(--dixy-skin-field-edge);
307
334
  background-image: var(--dixy-skin-paint);
308
335
  background-color: var(--dixy-color-background-canvas);
309
336
  background-size:
@@ -313,6 +340,45 @@
313
340
  100% 100%;
314
341
  box-shadow: var(--dixy-skin-inset);
315
342
  }
343
+ /* materials.css styles [data-dixy-visual] surfaces at 0,5,0. Match the
344
+ skin's paint to that so its image and grain size always land together;
345
+ otherwise the material image is tiled at the grain size (stripes). */
346
+ :is(
347
+ .dixy-card,
348
+ .dixy-box,
349
+ .dixy-dialog-popup,
350
+ .dixy-alert-dialog-popup,
351
+ .dixy-drawer-popup,
352
+ .dixy-popover-popup,
353
+ .dixy-preview-card-popup,
354
+ .dixy-tooltip-popup,
355
+ .dixy-select-popup,
356
+ .dixy-combobox-popup,
357
+ .dixy-autocomplete-popup,
358
+ .dixy-menu-popup,
359
+ .dixy-context-menu-popup,
360
+ .dixy-navigation-menu-popup,
361
+ .dixy-toast-root,
362
+ .dixy-alert,
363
+ .dixy-list-box,
364
+ .dixy-calendar,
365
+ .dixy-range-calendar,
366
+ .dixy-input,
367
+ .dixy-textarea,
368
+ .dixy-native-select,
369
+ .dixy-select-trigger,
370
+ .dixy-input-group,
371
+ .dixy-combobox-input-group,
372
+ .dixy-autocomplete-input-group,
373
+ .dixy-number-field-group,
374
+ .dixy-otp-field-input
375
+ )[data-dixy-skin="dixy/neon-night-market"]:not(
376
+ [data-dixy-material-override]
377
+ ):not(
378
+ :where([data-dixy-material-override]) *
379
+ )[data-dixy-visual][data-material]:not([data-disabled]) {
380
+ background-image: var(--dixy-skin-paint);
381
+ }
316
382
  :is(.dixy-button)[data-dixy-skin="dixy/neon-night-market"]:not(
317
383
  [data-dixy-material-override]
318
384
  ):not(:where([data-dixy-material-override]) *):is(
@@ -343,14 +409,19 @@
343
409
  border: 1px solid var(--dixy-skin-edge);
344
410
  box-shadow: var(--dixy-skin-inset);
345
411
  }
412
+ /* Selected tabs and toggles are one flat colour, lifted by edge and relief only. A gradient behind the label (thumb art, sheen, material image) splits it across two colours. :not([data-variant="line"]) also outranks materials.css (0,3,0). */
346
413
  :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/neon-night-market"]:not(
347
414
  [data-dixy-material-override]
348
415
  ):not(:where([data-dixy-material-override]) *) {
349
- background-image: var(--dixy-skin-finish);
350
416
  box-shadow: var(--dixy-skin-control-relief);
351
417
  border: 1px solid var(--dixy-skin-edge);
352
418
  }
353
- /* Toggle groups read like tabs: a sunken track, the selected toggle a raised thumb (slider-knob paint in light, the raised finish in dark so its label stays readable). */
419
+ :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/neon-night-market"]:not(
420
+ [data-dixy-material-override]
421
+ ):not(:where([data-dixy-material-override]) *):not([data-variant="line"]) {
422
+ background-image: none;
423
+ }
424
+ /* Toggle groups read like tabs: a sunken track, the selected toggle a raised, flat thumb. */
354
425
  .dixy-theme[data-dixy-skin="dixy/neon-night-market"]
355
426
  .dixy-toggle-group:is([data-attached], [data-segmented]):not(
356
427
  [data-dixy-material-override]
@@ -365,7 +436,7 @@
365
436
  [data-variant="solid"]
366
437
  )[data-pressed]:not([data-disabled]) {
367
438
  background-color: var(--dixy-color-background-surface-raised);
368
- background-image: var(--dixy-skin-selected, var(--dixy-skin-thumb));
439
+ background-image: none;
369
440
  box-shadow: var(--dixy-skin-control-relief);
370
441
  border-color: var(--dixy-skin-edge);
371
442
  color: var(--dixy-color-text-primary);
@@ -33,6 +33,11 @@
33
33
  --dixy-font-title-sm-family:
34
34
  "Fraunces Variable", "Fraunces", ui-serif, Georgia, serif;
35
35
  --dixy-skin-edge: rgb(255 255 255 / 0.8);
36
+ --dixy-skin-field-edge: color-mix(
37
+ in oklab,
38
+ var(--dixy-color-base-9) 50%,
39
+ var(--dixy-color-base-8)
40
+ );
36
41
 
37
42
  --dixy-skin-surface: color-mix(
38
43
  in srgb,
@@ -112,7 +117,6 @@
112
117
  --dixy-font-title-sm-letter-spacing: -0.02em;
113
118
  }
114
119
  .dixy-theme[data-dixy-skin="dixy/ocean-depths"][data-appearance="dark"] {
115
- --dixy-skin-selected: var(--dixy-skin-finish);
116
120
  --dixy-skin-edge: #2a5a68;
117
121
  --dixy-skin-canvas:
118
122
  radial-gradient(
@@ -132,6 +136,7 @@
132
136
  #0e2c38b3
133
137
  );
134
138
  }
139
+
135
140
  .dixy-theme[data-dixy-skin="dixy/ocean-depths"][data-relief="2"] {
136
141
  --dixy-skin-shadow:
137
142
  var(--dixy-skin-depth-shadow, var(--dixy-skin-authored-shadow)),
@@ -170,6 +175,7 @@
170
175
  --dixy-color-brand-12: oklch(0.255 0.044035 190);
171
176
  --dixy-color-brand-pressed: oklch(0.655 0.113104 190);
172
177
  --dixy-color-brand-on-solid: oklch(0.13 0.005 270);
178
+ --dixy-color-brand-focus: oklch(0.5375 0.092815 190);
173
179
  }
174
180
  .dixy-theme[data-dixy-skin="dixy/ocean-depths"][data-appearance="dark"] {
175
181
  --dixy-color-brand-1: oklch(0.155 0.012 190);
@@ -186,14 +192,13 @@
186
192
  --dixy-color-brand-12: oklch(0.94 0.014919 190);
187
193
  --dixy-color-brand-pressed: oklch(0.825 0.09449 190);
188
194
  --dixy-color-brand-on-solid: oklch(0.13 0.005 270);
195
+ --dixy-color-brand-focus: oklch(0.585 0.099463 190);
189
196
  }
190
197
  }
191
198
  @layer dixy.components {
192
- .dixy-theme[data-dixy-skin="dixy/ocean-depths"] {
199
+ .dixy-theme[data-dixy-skin="dixy/ocean-depths"]:not(.dixy-portal-scope) {
193
200
  position: relative;
194
201
  isolation: isolate;
195
- }
196
- .dixy-theme[data-dixy-skin="dixy/ocean-depths"]:not(.dixy-portal-scope) {
197
202
  background-color: var(--dixy-skin-ground);
198
203
  background-image: var(--dixy-skin-canvas);
199
204
  }
@@ -299,6 +304,30 @@
299
304
  ):not([data-variant="soft"]) {
300
305
  background-color: var(--dixy-skin-surface);
301
306
  }
307
+ :is(
308
+ .dixy-dialog-popup,
309
+ .dixy-alert-dialog-popup,
310
+ .dixy-drawer-popup,
311
+ .dixy-popover-popup,
312
+ .dixy-preview-card-popup,
313
+ .dixy-tooltip-popup,
314
+ .dixy-select-popup,
315
+ .dixy-combobox-popup,
316
+ .dixy-autocomplete-popup,
317
+ .dixy-menu-popup,
318
+ .dixy-context-menu-popup,
319
+ .dixy-navigation-menu-popup
320
+ )[data-dixy-skin="dixy/ocean-depths"]:not(
321
+ [data-dixy-material-override]
322
+ ):not(:where([data-dixy-material-override]) *):not(
323
+ [data-variant="solid"]
324
+ ):not([data-variant="soft"]) {
325
+ background-color: color-mix(
326
+ in srgb,
327
+ var(--dixy-color-background-surface-raised) 72%,
328
+ var(--dixy-skin-surface)
329
+ );
330
+ }
302
331
  :is(
303
332
  .dixy-input,
304
333
  .dixy-textarea,
@@ -331,7 +360,7 @@
331
360
  [data-dixy-material-override]
332
361
  ):not(:where([data-dixy-material-override]) *) {
333
362
  border-width: var(--dixy-input-border-width);
334
- border-color: var(--dixy-skin-edge);
363
+ border-color: var(--dixy-skin-field-edge);
335
364
  background-image: var(--dixy-skin-paint);
336
365
  background-color: var(--dixy-color-background-canvas);
337
366
  background-size:
@@ -341,6 +370,45 @@
341
370
  100% 100%;
342
371
  box-shadow: var(--dixy-skin-inset);
343
372
  }
373
+ /* materials.css styles [data-dixy-visual] surfaces at 0,5,0. Match the
374
+ skin's paint to that so its image and grain size always land together;
375
+ otherwise the material image is tiled at the grain size (stripes). */
376
+ :is(
377
+ .dixy-card,
378
+ .dixy-box,
379
+ .dixy-dialog-popup,
380
+ .dixy-alert-dialog-popup,
381
+ .dixy-drawer-popup,
382
+ .dixy-popover-popup,
383
+ .dixy-preview-card-popup,
384
+ .dixy-tooltip-popup,
385
+ .dixy-select-popup,
386
+ .dixy-combobox-popup,
387
+ .dixy-autocomplete-popup,
388
+ .dixy-menu-popup,
389
+ .dixy-context-menu-popup,
390
+ .dixy-navigation-menu-popup,
391
+ .dixy-toast-root,
392
+ .dixy-alert,
393
+ .dixy-list-box,
394
+ .dixy-calendar,
395
+ .dixy-range-calendar,
396
+ .dixy-input,
397
+ .dixy-textarea,
398
+ .dixy-native-select,
399
+ .dixy-select-trigger,
400
+ .dixy-input-group,
401
+ .dixy-combobox-input-group,
402
+ .dixy-autocomplete-input-group,
403
+ .dixy-number-field-group,
404
+ .dixy-otp-field-input
405
+ )[data-dixy-skin="dixy/ocean-depths"]:not(
406
+ [data-dixy-material-override]
407
+ ):not(
408
+ :where([data-dixy-material-override]) *
409
+ )[data-dixy-visual][data-material]:not([data-disabled]) {
410
+ background-image: var(--dixy-skin-paint);
411
+ }
344
412
  :is(.dixy-button)[data-dixy-skin="dixy/ocean-depths"]:not(
345
413
  [data-dixy-material-override]
346
414
  ):not(:where([data-dixy-material-override]) *):is(
@@ -371,14 +439,19 @@
371
439
  border: 1px solid var(--dixy-skin-edge);
372
440
  box-shadow: var(--dixy-skin-inset);
373
441
  }
442
+ /* Selected tabs and toggles are one flat colour, lifted by edge and relief only. A gradient behind the label (thumb art, sheen, material image) splits it across two colours. :not([data-variant="line"]) also outranks materials.css (0,3,0). */
374
443
  :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/ocean-depths"]:not(
375
444
  [data-dixy-material-override]
376
445
  ):not(:where([data-dixy-material-override]) *) {
377
- background-image: var(--dixy-skin-finish);
378
446
  box-shadow: var(--dixy-skin-control-relief);
379
447
  border: 1px solid var(--dixy-skin-edge);
380
448
  }
381
- /* Toggle groups read like tabs: a sunken track, the selected toggle a raised thumb (slider-knob paint in light, the raised finish in dark so its label stays readable). */
449
+ :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/ocean-depths"]:not(
450
+ [data-dixy-material-override]
451
+ ):not(:where([data-dixy-material-override]) *):not([data-variant="line"]) {
452
+ background-image: none;
453
+ }
454
+ /* Toggle groups read like tabs: a sunken track, the selected toggle a raised, flat thumb. */
382
455
  .dixy-theme[data-dixy-skin="dixy/ocean-depths"]
383
456
  .dixy-toggle-group:is([data-attached], [data-segmented]):not(
384
457
  [data-dixy-material-override]
@@ -393,7 +466,7 @@
393
466
  [data-variant="solid"]
394
467
  )[data-pressed]:not([data-disabled]) {
395
468
  background-color: var(--dixy-color-background-surface-raised);
396
- background-image: var(--dixy-skin-selected, var(--dixy-skin-thumb));
469
+ background-image: none;
397
470
  box-shadow: var(--dixy-skin-control-relief);
398
471
  border-color: var(--dixy-skin-edge);
399
472
  color: var(--dixy-color-text-primary);