@threadlabs/looma 0.41.2 → 0.42.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 (97) hide show
  1. package/components/ui-button/ui-button.html +33 -12
  2. package/components/ui-button/ui-button.js +2 -2
  3. package/components/ui-callout/ui-callout.html +1 -1
  4. package/components/ui-card/ui-card.html +7 -7
  5. package/components/ui-checkbox/ui-checkbox.html +1 -1
  6. package/components/ui-dialog/ui-dialog.html +8 -10
  7. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +1 -1
  8. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +1 -1
  9. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +1 -1
  10. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +2 -2
  11. package/components/ui-icon-button/ui-icon-button.html +45 -10
  12. package/components/ui-light-editor/ui-light-editor.html +1 -1
  13. package/components/ui-menu/ui-menu.html +8 -10
  14. package/components/ui-menu-item/ui-menu-item.html +1 -1
  15. package/components/ui-popover/ui-popover.html +9 -11
  16. package/components/ui-radio/ui-radio.html +53 -1
  17. package/components/ui-section/ui-section.html +1 -1
  18. package/components/ui-status-message/ui-status-message.html +1 -1
  19. package/components/ui-switch/ui-switch.html +5 -2
  20. package/components/ui-tabs/ui-tabs.html +3 -3
  21. package/components/ui-text/ui-text.html +2 -2
  22. package/components/ui-tooltip/ui-tooltip.html +8 -10
  23. package/dist/index.js +1 -1
  24. package/docs/README.md +5 -1
  25. package/docs/catalog.json +405 -33
  26. package/docs/customizer-render.mjs +9 -5
  27. package/docs/customizer.js +2 -0
  28. package/docs/fonts.mjs +1 -1
  29. package/docs/theme.mjs +136 -35
  30. package/package.json +1 -1
  31. package/styles/ui-button.css +33 -12
  32. package/styles/ui-callout.css +1 -1
  33. package/styles/ui-card.css +6 -6
  34. package/styles/ui-checkbox.css +1 -1
  35. package/styles/ui-dialog.css +17 -21
  36. package/styles/ui-editor-mention-menu-item.css +1 -1
  37. package/styles/ui-editor-mention-menu.css +1 -1
  38. package/styles/ui-editor-table-context-menu.css +1 -1
  39. package/styles/ui-editor-table-toolbar.css +2 -2
  40. package/styles/ui-icon-button.css +45 -10
  41. package/styles/ui-light-editor.css +2 -2
  42. package/styles/ui-menu-item.css +1 -1
  43. package/styles/ui-menu.css +9 -11
  44. package/styles/ui-popover.css +10 -12
  45. package/styles/ui-radio.css +62 -1
  46. package/styles/ui-section.css +1 -1
  47. package/styles/ui-status-message.css +1 -1
  48. package/styles/ui-switch.css +5 -2
  49. package/styles/ui-tabs.css +3 -3
  50. package/styles/ui-text.css +2 -2
  51. package/styles/ui-tooltip.css +9 -11
  52. package/theme-system.css +10 -8
  53. package/tokens.css +23 -0
  54. package/vue/UiButton.vue +45 -12
  55. package/vue/UiCallout.vue +1 -1
  56. package/vue/UiCard.vue +7 -13
  57. package/vue/UiCheckbox.vue +1 -1
  58. package/vue/UiDialog.vue +21 -45
  59. package/vue/UiEditorMentionMenu.vue +1 -1
  60. package/vue/UiEditorMentionMenuItem.vue +1 -1
  61. package/vue/UiEditorTableContextMenu.vue +1 -1
  62. package/vue/UiEditorTableToolbar.vue +2 -2
  63. package/vue/UiIconButton.vue +45 -10
  64. package/vue/UiLightEditor.vue +2 -2
  65. package/vue/UiMenu.vue +11 -21
  66. package/vue/UiMenuItem.vue +1 -1
  67. package/vue/UiPopover.vue +12 -22
  68. package/vue/UiRadio.vue +57 -1
  69. package/vue/UiSection.vue +1 -1
  70. package/vue/UiStatusMessage.vue +1 -1
  71. package/vue/UiSwitch.vue +5 -2
  72. package/vue/UiTabs.vue +3 -3
  73. package/vue/UiText.vue +2 -2
  74. package/vue/UiTooltip.vue +11 -21
  75. package/vue/chunks/UiButton.js +1 -1
  76. package/vue/chunks/UiCallout.js +1 -1
  77. package/vue/chunks/UiCard.js +2 -2
  78. package/vue/chunks/UiCheckbox.js +1 -1
  79. package/vue/chunks/UiDialog.js +1 -1
  80. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  81. package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
  82. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  83. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  84. package/vue/chunks/UiIconButton.js +1 -1
  85. package/vue/chunks/UiLightEditor.js +1 -1
  86. package/vue/chunks/UiMenu.js +1 -1
  87. package/vue/chunks/UiMenuItem.js +1 -1
  88. package/vue/chunks/UiPopover.js +1 -1
  89. package/vue/chunks/UiRadio.js +1 -1
  90. package/vue/chunks/UiSection.js +1 -1
  91. package/vue/chunks/UiStatusMessage.js +1 -1
  92. package/vue/chunks/UiSwitch.js +1 -1
  93. package/vue/chunks/UiTabs.js +1 -1
  94. package/vue/chunks/UiText.js +1 -1
  95. package/vue/chunks/UiTooltip.js +1 -1
  96. package/vue/components.css +342 -233
  97. package/vue/editor/index.js +1 -1
@@ -1172,12 +1172,15 @@ svg,.arc {
1172
1172
  --_ui-action-shadow:
1173
1173
  var(--_ui-action-edge),
1174
1174
  0 1px 2px light-dark(rgb(0 0 0 / 0.10), rgb(0 0 0 / 0.20));
1175
+ --_tone-border: var(--ui-accent-border, var(--ui-accent));
1176
+ --_tone-hover-border: var(--ui-accent-hover-border, var(--ui-accent-hover));
1177
+ --_tone-active-border: var(--ui-accent-active-border, var(--ui-accent-active));
1175
1178
  --_tone-highlight: var(--ui-accent-highlight, none);
1176
1179
  --_tone-glow: var(--ui-accent-glow, 0 0 transparent);
1177
1180
  --_hue: var(--ui-accent);
1178
1181
  --_hue-hover: var(--ui-accent-hover);
1179
1182
  --_hue-active: var(--ui-accent-active);
1180
- --_hue-text: var(--ui-accent-active);
1183
+ --_hue-text: var(--ui-accent-subtle-text);
1181
1184
  --_on-hue: var(--ui-on-accent);
1182
1185
 
1183
1186
  --_tone: var(--_hue);
@@ -1211,9 +1214,12 @@ svg,.arc {
1211
1214
  min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
1212
1215
  border-style: solid;
1213
1216
  border-width: var(--ui-border-width);
1214
- border-color: var(--ui-button-border, var(--_tone));
1217
+ border-color: var(--ui-button-border, var(--_tone-text));
1215
1218
  border-radius: var(--ui-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
1216
- background-color: var(--ui-button-surface, oklch(from var(--_tone) l c h / 5%));
1219
+ background-color: var(
1220
+ --ui-button-surface,
1221
+ oklch(from var(--_tone) l c h / calc(5% * var(--ui-tonal-opacity, 1)))
1222
+ );
1217
1223
  color: var(--ui-button-text, var(--_tone-text));
1218
1224
  font: inherit;
1219
1225
  font-weight: var(--ui-font-medium);
@@ -1335,8 +1341,11 @@ svg,.arc {
1335
1341
  align-self: center;
1336
1342
  }
1337
1343
  :scope:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
1338
- border-color: var(--ui-button-hover-border, var(--_tone-hover));
1339
- background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
1344
+ border-color: var(--ui-button-hover-border, var(--_tone-text));
1345
+ background-color: var(
1346
+ --ui-button-hover-surface,
1347
+ oklch(from var(--_tone) l c h / calc(12% * var(--ui-tonal-opacity, 1)))
1348
+ );
1340
1349
  }
1341
1350
  :scope[data-appearance="card"][data-tone="neutral"]:where([data-hn-ui-button]) {
1342
1351
  border-color: var(--ui-button-border, var(--ui-border));
@@ -1351,12 +1360,15 @@ svg,.arc {
1351
1360
  }
1352
1361
  :scope:active:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
1353
1362
  scale: var(--ui-press-scale, 1);
1354
- background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
1363
+ background-color: var(
1364
+ --ui-button-active-surface,
1365
+ oklch(from var(--_tone) l c h / calc(18% * var(--ui-tonal-opacity, 1)))
1366
+ );
1355
1367
  background-image: none;
1356
1368
  box-shadow: var(--ui-pressed);
1357
1369
  }
1358
1370
  :scope[data-appearance="solid"]:where([data-hn-ui-button]),:scope[data-appearance="danger"]:where([data-hn-ui-button]) {
1359
- border-color: var(--_tone);
1371
+ border-color: var(--ui-button-border, var(--_tone-border));
1360
1372
  background-color: var(--_tone);
1361
1373
  color: var(--_on-tone);
1362
1374
  background-image: var(--_tone-highlight);
@@ -1364,17 +1376,20 @@ svg,.arc {
1364
1376
  var(--ui-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
1365
1377
  var(--_tone-glow);
1366
1378
  }
1367
- :is(:scope[data-appearance="solid"], :scope[data-appearance="danger"]):hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
1379
+ :scope[data-appearance="solid"]:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]),:scope[data-appearance="danger"]:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
1368
1380
  background-color: var(--_tone-hover);
1369
- border-color: var(--_tone-hover);
1381
+ border-color: var(--ui-button-hover-border, var(--_tone-hover-border));
1370
1382
  }
1371
1383
  :is(:scope[data-appearance="solid"], :scope[data-appearance="danger"]):active:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
1372
1384
  background-color: var(--_tone-active);
1373
- border-color: var(--_tone-active);
1385
+ border-color: var(--_tone-active-border);
1374
1386
  background-image: none;
1375
1387
  box-shadow: var(--ui-pressed);
1376
1388
  }
1377
1389
  :scope[data-tone="neutral"]:where([data-hn-ui-button]) {
1390
+ --_tone-border: var(--ui-neutral-border, var(--ui-neutral-surface));
1391
+ --_tone-hover-border: var(--ui-neutral-hover-border, var(--ui-neutral-hover));
1392
+ --_tone-active-border: var(--ui-neutral-active-border, var(--ui-neutral-active));
1378
1393
  --_tone-highlight: var(--ui-neutral-highlight, none);
1379
1394
  --_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
1380
1395
  --_hue: var(--ui-text);
@@ -1384,7 +1399,7 @@ svg,.arc {
1384
1399
  --_on-hue: var(--ui-surface);
1385
1400
  }
1386
1401
  :scope[data-tone="neutral"][data-appearance="solid"]:where([data-hn-ui-button]) {
1387
- border-color: var(--ui-button-border, var(--ui-control-border));
1402
+ border-color: var(--ui-button-border, var(--_tone-border));
1388
1403
  background-color: var(--ui-button-surface, var(--ui-neutral-surface));
1389
1404
  color: var(--ui-button-text, var(--ui-text));
1390
1405
  }
@@ -1407,12 +1422,17 @@ svg,.arc {
1407
1422
  background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
1408
1423
  }
1409
1424
  :scope[data-tone="neutral"][data-appearance="solid"]:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
1425
+ border-color: var(--ui-button-hover-border, var(--_tone-hover-border));
1410
1426
  background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
1411
1427
  }
1412
1428
  :scope[data-tone="neutral"][data-appearance="solid"]:active:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
1429
+ border-color: var(--_tone-active-border);
1413
1430
  background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
1414
1431
  }
1415
1432
  :scope[data-tone="danger"]:where([data-hn-ui-button]),:scope[data-appearance="danger"]:where([data-hn-ui-button]) {
1433
+ --_tone-border: var(--ui-danger-border, var(--ui-danger));
1434
+ --_tone-hover-border: var(--ui-danger-hover-border, var(--ui-danger-hover));
1435
+ --_tone-active-border: var(--ui-danger-active-border, var(--ui-danger-active));
1416
1436
  --_tone-highlight: var(--ui-danger-highlight, none);
1417
1437
  --_tone-glow: var(--ui-danger-glow, 0 0 transparent);
1418
1438
  --_hue: var(--ui-danger);
@@ -1422,6 +1442,9 @@ svg,.arc {
1422
1442
  --_on-hue: var(--ui-on-danger);
1423
1443
  }
1424
1444
  :scope[data-tone="success"]:where([data-hn-ui-button]) {
1445
+ --_tone-border: var(--ui-success-border, var(--ui-success));
1446
+ --_tone-hover-border: var(--ui-success-hover-border, var(--ui-success-hover));
1447
+ --_tone-active-border: var(--ui-success-active-border, var(--ui-success-active));
1425
1448
  --_tone-highlight: var(--ui-success-highlight, none);
1426
1449
  --_tone-glow: var(--ui-success-glow, 0 0 transparent);
1427
1450
  --_hue: var(--ui-success);
@@ -1431,6 +1454,9 @@ svg,.arc {
1431
1454
  --_on-hue: var(--ui-success-on-strong);
1432
1455
  }
1433
1456
  :scope[data-tone="warning"]:where([data-hn-ui-button]) {
1457
+ --_tone-border: var(--ui-warning-border, var(--ui-warning));
1458
+ --_tone-hover-border: var(--ui-warning-hover-border, var(--ui-warning-hover));
1459
+ --_tone-active-border: var(--ui-warning-active-border, var(--ui-warning-active));
1434
1460
  --_tone-highlight: var(--ui-warning-highlight, none);
1435
1461
  --_tone-glow: var(--ui-warning-glow, 0 0 transparent);
1436
1462
  --_hue: var(--ui-warning);
@@ -1440,6 +1466,9 @@ svg,.arc {
1440
1466
  --_on-hue: var(--ui-warning-on-strong);
1441
1467
  }
1442
1468
  :scope[data-tone="info"]:where([data-hn-ui-button]) {
1469
+ --_tone-border: var(--ui-info-border, var(--ui-info));
1470
+ --_tone-hover-border: var(--ui-info-hover-border, var(--ui-info-hover));
1471
+ --_tone-active-border: var(--ui-info-active-border, var(--ui-info-active));
1443
1472
  --_tone-highlight: var(--ui-info-highlight, none);
1444
1473
  --_tone-glow: var(--ui-info-glow, 0 0 transparent);
1445
1474
  --_hue: var(--ui-info);
@@ -1486,7 +1515,10 @@ svg,.arc {
1486
1515
  color: var(--ui-button-ghost-text, var(--_tone-text));
1487
1516
  }
1488
1517
  :scope[data-appearance="ghost"]:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
1489
- background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / 10%));
1518
+ background-color: var(
1519
+ --ui-button-ghost-hover-surface,
1520
+ oklch(from var(--_tone) l c h / calc(10% * var(--ui-tonal-opacity, 1)))
1521
+ );
1490
1522
  border-color: transparent;
1491
1523
  }
1492
1524
  :scope[data-appearance="ghost"]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
@@ -1758,7 +1790,7 @@ html[data-ui-input-modality="touch"]
1758
1790
  --_callout-icon: var(--ui-danger-solid);
1759
1791
  }
1760
1792
  .content :where(:not([data-hn-ui-callout])):is(a) {
1761
- color: var(--ui-accent-active);
1793
+ color: var(--ui-accent-subtle-text);
1762
1794
  text-decoration: underline;
1763
1795
  text-decoration-thickness: 0.06em;
1764
1796
  text-underline-offset: 0.18em;
@@ -1813,13 +1845,9 @@ html[data-ui-input-modality="touch"]
1813
1845
  box-shadow: var(--ui-shadow-lg);
1814
1846
  }
1815
1847
  :scope[data-ui-card-state~="treatment=expressive"]:where([data-hn-ui-card]) {
1816
- --_ui-panel-glass: calc(
1817
- clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4)
1818
- );
1848
+ --_ui-panel-glass: clamp(0, var(--ui-glassiness, 0), 1);
1819
1849
  --_ui-panel-separation: clamp(0, var(--ui-surface-separation, 0), 1);
1820
- --_ui-panel-rim: calc(
1821
- (var(--_ui-panel-separation) + var(--_ui-panel-glass) * 0.25) * 0.65 * 8px
1822
- );
1850
+ --_ui-panel-rim: calc(var(--_ui-panel-separation) * 8px);
1823
1851
  border-width: calc(var(--ui-border-width) + var(--_ui-panel-rim));
1824
1852
  border-color: transparent;
1825
1853
  background:
@@ -1834,10 +1862,8 @@ html[data-ui-input-modality="touch"]
1834
1862
  var(--_ui-card-elevation),
1835
1863
  var(--ui-material-glow, 0 0 transparent),
1836
1864
  inset 0 0 0 var(--ui-border-width) var(--ui-material-edge, var(--ui-border-strong));
1837
- backdrop-filter: blur(calc(var(--_ui-panel-glass) * 0.65 * 18px))
1838
- saturate(calc(1 + var(--_ui-panel-glass) * 0.65 * 0.18));
1839
- -webkit-backdrop-filter: blur(calc(var(--_ui-panel-glass) * 0.65 * 18px))
1840
- saturate(calc(1 + var(--_ui-panel-glass) * 0.65 * 0.18));
1865
+ -webkit-backdrop-filter: blur(calc(var(--_ui-panel-glass) * 32px));
1866
+ backdrop-filter: blur(calc(var(--_ui-panel-glass) * 32px));
1841
1867
  }
1842
1868
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
1843
1869
  :scope[data-ui-card-state~="treatment=expressive"]:where([data-hn-ui-card]) {
@@ -1849,8 +1875,8 @@ html[data-ui-input-modality="touch"]
1849
1875
  background: var(--_ui-card-surface);
1850
1876
  border-width: var(--ui-border-width);
1851
1877
  border-color: var(--ui-border-strong);
1852
- backdrop-filter: none;
1853
1878
  -webkit-backdrop-filter: none;
1879
+ backdrop-filter: none;
1854
1880
  }
1855
1881
  }
1856
1882
  @media (forced-colors: active) {
@@ -1859,8 +1885,8 @@ html[data-ui-input-modality="touch"]
1859
1885
  color: CanvasText;
1860
1886
  border: var(--ui-border-width) solid CanvasText;
1861
1887
  box-shadow: none;
1862
- backdrop-filter: none;
1863
1888
  -webkit-backdrop-filter: none;
1889
+ backdrop-filter: none;
1864
1890
  }
1865
1891
  }
1866
1892
  :scope[data-ui-card-state~="tone=accent"]:where([data-hn-ui-card]) {
@@ -1932,7 +1958,7 @@ html[data-ui-input-modality="touch"]
1932
1958
 
1933
1959
  /* The SVG's painted bounds are centred in its viewBox, including its round stroke.
1934
1960
  Centre that box directly; rotated border boxes do not centre the visible check. */
1935
- @keyframes ui-checkbox-check-570a9f0b {
1961
+ @keyframes ui-checkbox-check-36f1c10d {
1936
1962
  from {
1937
1963
  opacity: 0;
1938
1964
  scale: 0.55;
@@ -2040,7 +2066,7 @@ input:checked:where([data-hn-ui-checkbox]),input:indeterminate:where([data-hn-ui
2040
2066
  border-color: var(--ui-accent-solid);
2041
2067
  background-color: var(--ui-accent-solid);
2042
2068
  background-image: var(--ui-accent-highlight, none);
2043
- box-shadow: var(--ui-control-inset);
2069
+ box-shadow: none;
2044
2070
  }
2045
2071
  input:checked:where([data-hn-ui-checkbox])::after {
2046
2072
  inset: 50% auto auto 50% !important;
@@ -2051,7 +2077,7 @@ input:checked:where([data-hn-ui-checkbox])::after {
2051
2077
  center / contain no-repeat;
2052
2078
  opacity: 1;
2053
2079
  translate: -50% -50% !important;
2054
- animation: ui-checkbox-check-570a9f0b var(--ui-motion-base) var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
2080
+ animation: ui-checkbox-check-36f1c10d var(--ui-motion-base) var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
2055
2081
  }
2056
2082
  input:indeterminate:where([data-hn-ui-checkbox])::after {
2057
2083
  mask: none;
@@ -2594,7 +2620,7 @@ input[type="range"] {
2594
2620
  /* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
2595
2621
 
2596
2622
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
2597
- transparency, saturation and edge light belong to the surrounding decorative material. */
2623
+ transparency, frosting and edge light belong to the surrounding decorative material. */
2598
2624
 
2599
2625
  /* A keyboard shortcut follows the label after a thin divider, smaller and quieter, as menus show
2600
2626
  it. The label stays first in the description, so a screen reader hears the name, then the keys. */
@@ -2659,21 +2685,11 @@ input[type="range"] {
2659
2685
  );
2660
2686
  }
2661
2687
  .surface:where([data-hn-ui-tooltip]) {
2662
- --_ui-material-glassiness: calc(
2663
- clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4)
2664
- );
2688
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
2665
2689
  --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
2666
- --_ui-material-active: clamp(
2667
- 0,
2668
- calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000),
2669
- 1
2670
- );
2690
+ --_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
2671
2691
  --_ui-material-rim: calc(
2672
- (
2673
- var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25
2674
- ) *
2675
- var(--_ui-material-scale, 0.08) *
2676
- 8px
2692
+ var(--_ui-material-separation) * var(--_ui-material-scale, 0.08) * 8px
2677
2693
  );
2678
2694
  --_ui-material-content-color: var(
2679
2695
  --_ui-tooltip-surface,
@@ -2714,12 +2730,12 @@ input[type="range"] {
2714
2730
  var(--ui-elevation-tooltip, var(--ui-shadow-md))
2715
2731
  )
2716
2732
  );
2717
- backdrop-filter: blur(
2718
- calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 18px)
2719
- ) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 0.18));
2720
2733
  -webkit-backdrop-filter: blur(
2721
- calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 18px)
2722
- ) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 0.18));
2734
+ calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 32px)
2735
+ );
2736
+ backdrop-filter: blur(
2737
+ calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 32px)
2738
+ );
2723
2739
  }
2724
2740
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
2725
2741
  .surface:where([data-hn-ui-tooltip]) {
@@ -2729,8 +2745,8 @@ input[type="range"] {
2729
2745
  @media (prefers-reduced-transparency: reduce) {
2730
2746
  .surface:where([data-hn-ui-tooltip]) {
2731
2747
  background: var(--_ui-material-content-color);
2732
- backdrop-filter: none;
2733
2748
  -webkit-backdrop-filter: none;
2749
+ backdrop-filter: none;
2734
2750
  }
2735
2751
  }
2736
2752
  @media (forced-colors: active) {
@@ -2738,8 +2754,8 @@ input[type="range"] {
2738
2754
  background: Canvas;
2739
2755
  border-color: CanvasText;
2740
2756
  box-shadow: none;
2741
- backdrop-filter: none;
2742
2757
  -webkit-backdrop-filter: none;
2758
+ backdrop-filter: none;
2743
2759
  }
2744
2760
  }
2745
2761
  .shortcut:where([data-hn-ui-tooltip]) {
@@ -3904,6 +3920,10 @@ input:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]),button:disab
3904
3920
  /* Optional inherited action-group values keep text and icon actions under the same light.
3905
3921
  One fine top/start highlight follows the bottom/end lowlight at a joined action seam.
3906
3922
  The shared theme supplies reflections and glow independently of the resting lift. */
3923
+ --_solid-border: var(--ui-accent-border, var(--ui-accent-solid));
3924
+ --_solid-hover-border: var(--ui-accent-hover-border, var(--ui-accent-hover));
3925
+ --_solid-active-border: var(--ui-accent-active-border, var(--ui-accent-active));
3926
+ --_solid-active-surface: var(--ui-accent-active, var(--ui-accent-hover));
3907
3927
  --_tone-highlight: var(--ui-accent-highlight, none);
3908
3928
  --_tone-glow: var(--ui-accent-glow, 0 0 transparent);
3909
3929
  --_ui-action-start: 1px;
@@ -3932,10 +3952,14 @@ input:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]),button:disab
3932
3952
  --_ui-action-start: -1px;
3933
3953
  }
3934
3954
  :scope[data-tone="accent"]:where([data-hn-ui-icon-button]) {
3955
+ --_solid-border: var(--ui-accent-border, var(--ui-accent));
3956
+ --_solid-hover-border: var(--ui-accent-hover-border, var(--ui-accent-hover));
3957
+ --_solid-active-border: var(--ui-accent-active-border, var(--ui-accent-active));
3958
+ --_solid-active-surface: var(--ui-accent-active, var(--ui-accent-hover));
3935
3959
  --_tone-highlight: var(--ui-accent-highlight, none);
3936
3960
  --_tone-glow: var(--ui-accent-glow, 0 0 transparent);
3937
- --_icon-button-border: var(--ui-accent-solid);
3938
- --_icon-button-hover-border: var(--ui-accent-hover);
3961
+ --_icon-button-border: var(--ui-accent-subtle-text);
3962
+ --_icon-button-hover-border: var(--ui-accent-subtle-text);
3939
3963
  --_icon-button-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
3940
3964
  --_icon-button-outline-surface: color-mix(
3941
3965
  in srgb,
@@ -3945,10 +3969,14 @@ input:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]),button:disab
3945
3969
  color: var(--_icon-button-text);
3946
3970
  }
3947
3971
  :scope[data-tone="danger"]:where([data-hn-ui-icon-button]) {
3972
+ --_solid-border: var(--ui-danger-border, var(--ui-danger));
3973
+ --_solid-hover-border: var(--ui-danger-hover-border, var(--ui-danger-hover));
3974
+ --_solid-active-border: var(--ui-danger-active-border, var(--ui-danger-active));
3975
+ --_solid-active-surface: var(--ui-danger-active, var(--ui-danger-hover));
3948
3976
  --_tone-highlight: var(--ui-danger-highlight, none);
3949
3977
  --_tone-glow: var(--ui-danger-glow, 0 0 transparent);
3950
- --_icon-button-border: var(--ui-danger);
3951
- --_icon-button-hover-border: var(--ui-danger-hover);
3978
+ --_icon-button-border: var(--ui-danger-subtle-text);
3979
+ --_icon-button-hover-border: var(--ui-danger-subtle-text);
3952
3980
  --_icon-button-text: var(--ui-danger-subtle-text);
3953
3981
  --_icon-button-outline-surface: color-mix(
3954
3982
  in srgb,
@@ -3961,10 +3989,14 @@ input:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]),button:disab
3961
3989
  color: var(--_icon-button-text);
3962
3990
  }
3963
3991
  :scope[data-tone="success"]:where([data-hn-ui-icon-button]) {
3992
+ --_solid-border: var(--ui-success-border, var(--ui-success));
3993
+ --_solid-hover-border: var(--ui-success-hover-border, var(--ui-success-hover));
3994
+ --_solid-active-border: var(--ui-success-active-border, var(--ui-success-active));
3995
+ --_solid-active-surface: var(--ui-success-active, var(--ui-success-hover));
3964
3996
  --_tone-highlight: var(--ui-success-highlight, none);
3965
3997
  --_tone-glow: var(--ui-success-glow, 0 0 transparent);
3966
- --_icon-button-border: var(--ui-success);
3967
- --_icon-button-hover-border: var(--ui-success-hover);
3998
+ --_icon-button-border: var(--ui-success-subtle-text);
3999
+ --_icon-button-hover-border: var(--ui-success-subtle-text);
3968
4000
  --_icon-button-text: var(--ui-success-subtle-text);
3969
4001
  --_icon-button-outline-surface: color-mix(
3970
4002
  in srgb,
@@ -3977,10 +4009,14 @@ input:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]),button:disab
3977
4009
  color: var(--_icon-button-text);
3978
4010
  }
3979
4011
  :scope[data-tone="warning"]:where([data-hn-ui-icon-button]) {
4012
+ --_solid-border: var(--ui-warning-border, var(--ui-warning));
4013
+ --_solid-hover-border: var(--ui-warning-hover-border, var(--ui-warning-hover));
4014
+ --_solid-active-border: var(--ui-warning-active-border, var(--ui-warning-active));
4015
+ --_solid-active-surface: var(--ui-warning-active, var(--ui-warning-hover));
3980
4016
  --_tone-highlight: var(--ui-warning-highlight, none);
3981
4017
  --_tone-glow: var(--ui-warning-glow, 0 0 transparent);
3982
- --_icon-button-border: var(--ui-warning);
3983
- --_icon-button-hover-border: var(--ui-warning-hover);
4018
+ --_icon-button-border: var(--ui-warning-subtle-text);
4019
+ --_icon-button-hover-border: var(--ui-warning-subtle-text);
3984
4020
  --_icon-button-text: var(--ui-warning-subtle-text);
3985
4021
  --_icon-button-outline-surface: color-mix(
3986
4022
  in srgb,
@@ -3993,10 +4029,14 @@ input:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]),button:disab
3993
4029
  color: var(--_icon-button-text);
3994
4030
  }
3995
4031
  :scope[data-tone="info"]:where([data-hn-ui-icon-button]) {
4032
+ --_solid-border: var(--ui-info-border, var(--ui-info));
4033
+ --_solid-hover-border: var(--ui-info-hover-border, var(--ui-info-hover));
4034
+ --_solid-active-border: var(--ui-info-active-border, var(--ui-info-active));
4035
+ --_solid-active-surface: var(--ui-info-active, var(--ui-info-hover));
3996
4036
  --_tone-highlight: var(--ui-info-highlight, none);
3997
4037
  --_tone-glow: var(--ui-info-glow, 0 0 transparent);
3998
- --_icon-button-border: var(--ui-info);
3999
- --_icon-button-hover-border: var(--ui-info-hover);
4038
+ --_icon-button-border: var(--ui-info-subtle-text);
4039
+ --_icon-button-hover-border: var(--ui-info-subtle-text);
4000
4040
  --_icon-button-text: var(--ui-info-subtle-text);
4001
4041
  --_icon-button-outline-surface: color-mix(
4002
4042
  in srgb,
@@ -4009,6 +4049,10 @@ input:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]),button:disab
4009
4049
  color: var(--_icon-button-text);
4010
4050
  }
4011
4051
  :scope[data-tone="neutral"]:where([data-hn-ui-icon-button]) {
4052
+ --_solid-border: var(--ui-neutral-border, var(--ui-neutral-surface));
4053
+ --_solid-hover-border: var(--ui-neutral-hover-border, var(--ui-neutral-hover));
4054
+ --_solid-active-border: var(--ui-neutral-active-border, var(--ui-neutral-active));
4055
+ --_solid-active-surface: var(--ui-neutral-active, var(--ui-neutral-hover));
4012
4056
  --_tone-highlight: var(--ui-neutral-highlight, none);
4013
4057
  --_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
4014
4058
  --_icon-button-outline-surface: transparent;
@@ -4167,6 +4211,7 @@ html[data-ui-input-modality="touch"] :scope:where([data-hn-ui-icon-button])::aft
4167
4211
  var(--_tone-glow);
4168
4212
  }
4169
4213
  :scope[data-appearance="solid"]:where([data-hn-ui-icon-button]) {
4214
+ border-color: var(--ui-icon-button-border, var(--_solid-border));
4170
4215
  background-color: var(
4171
4216
  --ui-icon-button-solid-surface,
4172
4217
  var(--_icon-button-solid-surface, var(--ui-accent-solid))
@@ -4201,6 +4246,7 @@ html[data-ui-input-modality="touch"] :scope:where([data-hn-ui-icon-button])::aft
4201
4246
  background-color: var(--ui-icon-button-active-surface, var(--ui-neutral-active));
4202
4247
  }
4203
4248
  :scope[data-appearance="solid"]:hover:enabled:not([aria-disabled="true"]):where([data-hn-ui-icon-button]) {
4249
+ border-color: var(--ui-icon-button-hover-border, var(--_solid-hover-border));
4204
4250
  background-color: var(
4205
4251
  --ui-icon-button-solid-hover-surface,
4206
4252
  var(--_icon-button-solid-hover-surface, var(--ui-accent-hover))
@@ -4263,6 +4309,10 @@ html[data-ui-input-modality="touch"] :scope:where([data-hn-ui-icon-button])::aft
4263
4309
  var(--ui-icon-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
4264
4310
  var(--ui-focus-halo);
4265
4311
  }
4312
+ :scope[data-appearance="solid"]:active:enabled:not([aria-disabled="true"]):where([data-hn-ui-icon-button]) {
4313
+ background-color: var(--ui-icon-button-active-surface, var(--_solid-active-surface));
4314
+ border-color: var(--_solid-active-border);
4315
+ }
4266
4316
  :scope:is(:scope[data-appearance="outline"], :scope[data-appearance="solid"]):active:enabled:not([aria-disabled="true"]):where([data-hn-ui-icon-button]) {
4267
4317
  background-image: none;
4268
4318
  box-shadow: var(--ui-pressed);
@@ -4686,20 +4736,20 @@ dd:where([data-hn-ui-description-item]) {
4686
4736
  }
4687
4737
 
4688
4738
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
4689
- transparency, saturation and edge light belong to the surrounding decorative material. */
4739
+ transparency, frosting and edge light belong to the surrounding decorative material. */
4690
4740
 
4691
4741
  /* Own the layout wrapper; nested component roots are outside these scoped rules. */
4692
4742
 
4693
4743
  /* Alerts have no close target to add height above the title. */
4694
4744
 
4695
4745
  /* :host-qualified so page heading rules that reach in cannot outrank the dialog chrome. */
4696
- @keyframes ui-dialog-enter-45428506 {
4746
+ @keyframes ui-dialog-enter-d8d3c50b {
4697
4747
  from {
4698
4748
  opacity: 0;
4699
4749
  transform: scale(0.96);
4700
4750
  }
4701
4751
  }
4702
- @keyframes ui-dialog-backdrop-enter-45428506 {
4752
+ @keyframes ui-dialog-backdrop-enter-d8d3c50b {
4703
4753
  from {
4704
4754
  background-color: transparent;
4705
4755
  }
@@ -4743,22 +4793,10 @@ from {
4743
4793
  overlay var(--ui-dialog-duration, var(--ui-motion-base)) var(--ui-motion-ease) allow-discrete;
4744
4794
  }
4745
4795
  :scope:where([data-hn-ui-dialog]) {
4746
- --_ui-material-glassiness: calc(
4747
- clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4)
4748
- );
4796
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
4749
4797
  --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
4750
- --_ui-material-active: clamp(
4751
- 0,
4752
- calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000),
4753
- 1
4754
- );
4755
- --_ui-material-rim: calc(
4756
- (
4757
- var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25
4758
- ) *
4759
- var(--_ui-material-scale, 1) *
4760
- 8px
4761
- );
4798
+ --_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
4799
+ --_ui-material-rim: calc(var(--_ui-material-separation) * var(--_ui-material-scale, 1) * 8px);
4762
4800
  --_ui-material-content-color: var(
4763
4801
  --ui-dialog-surface,
4764
4802
  var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated)))
@@ -4800,12 +4838,12 @@ from {
4800
4838
  var(--ui-elevation-dialog, var(--ui-shadow-xl))
4801
4839
  )
4802
4840
  );
4803
- backdrop-filter: blur(
4804
- calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 18px)
4805
- ) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 0.18));
4806
4841
  -webkit-backdrop-filter: blur(
4807
- calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 18px)
4808
- ) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 0.18));
4842
+ calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 32px)
4843
+ );
4844
+ backdrop-filter: blur(
4845
+ calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 32px)
4846
+ );
4809
4847
  }
4810
4848
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
4811
4849
  :scope:where([data-hn-ui-dialog]) {
@@ -4815,8 +4853,8 @@ from {
4815
4853
  @media (prefers-reduced-transparency: reduce) {
4816
4854
  :scope:where([data-hn-ui-dialog]) {
4817
4855
  background: var(--_ui-material-content-color);
4818
- backdrop-filter: none;
4819
4856
  -webkit-backdrop-filter: none;
4857
+ backdrop-filter: none;
4820
4858
  }
4821
4859
  }
4822
4860
  @media (forced-colors: active) {
@@ -4824,8 +4862,8 @@ from {
4824
4862
  background: Canvas;
4825
4863
  border-color: CanvasText;
4826
4864
  box-shadow: none;
4827
- backdrop-filter: none;
4828
4865
  -webkit-backdrop-filter: none;
4866
+ backdrop-filter: none;
4829
4867
  }
4830
4868
  }
4831
4869
  :scope[open]:where([data-hn-ui-dialog]) {
@@ -4834,7 +4872,7 @@ from {
4834
4872
  pointer-events: auto;
4835
4873
  opacity: 1;
4836
4874
  transform: scale(1);
4837
- animation: ui-dialog-enter-45428506 var(--ui-dialog-duration, var(--ui-motion-base))
4875
+ animation: ui-dialog-enter-d8d3c50b var(--ui-dialog-duration, var(--ui-motion-base))
4838
4876
  var(--ui-motion-ease);
4839
4877
  }
4840
4878
  :scope[data-ui-dialog-state~="size=sm"]:where([data-hn-ui-dialog]) {
@@ -4914,7 +4952,7 @@ footer:empty:where([data-hn-ui-dialog]) {
4914
4952
  }
4915
4953
  :scope[open]:modal:where([data-hn-ui-dialog])::backdrop {
4916
4954
  background-color: var(--ui-overlay-backdrop);
4917
- animation: ui-dialog-backdrop-enter-45428506 var(--_ui-dialog-duration, var(--ui-motion-base))
4955
+ animation: ui-dialog-backdrop-enter-d8d3c50b var(--_ui-dialog-duration, var(--ui-motion-base))
4918
4956
  var(--ui-motion-ease);
4919
4957
  }
4920
4958
  :scope[open][data-ui-backdrop-hidden]:where([data-hn-ui-dialog])::backdrop {
@@ -4962,22 +5000,10 @@ footer:empty:where([data-hn-ui-dialog]) {
4962
5000
  overlay var(--ui-dialog-duration, var(--ui-motion-base)) var(--ui-motion-ease) allow-discrete;
4963
5001
  }
4964
5002
  :where(.ui-dialog):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
4965
- --_ui-material-glassiness: calc(
4966
- clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4)
4967
- );
5003
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
4968
5004
  --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
4969
- --_ui-material-active: clamp(
4970
- 0,
4971
- calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000),
4972
- 1
4973
- );
4974
- --_ui-material-rim: calc(
4975
- (
4976
- var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25
4977
- ) *
4978
- var(--_ui-material-scale, 1) *
4979
- 8px
4980
- );
5005
+ --_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
5006
+ --_ui-material-rim: calc(var(--_ui-material-separation) * var(--_ui-material-scale, 1) * 8px);
4981
5007
  --_ui-material-content-color: var(
4982
5008
  --ui-dialog-surface,
4983
5009
  var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated)))
@@ -5019,12 +5045,12 @@ footer:empty:where([data-hn-ui-dialog]) {
5019
5045
  var(--ui-elevation-dialog, var(--ui-shadow-xl))
5020
5046
  )
5021
5047
  );
5022
- backdrop-filter: blur(
5023
- calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 18px)
5024
- ) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 0.18));
5025
5048
  -webkit-backdrop-filter: blur(
5026
- calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 18px)
5027
- ) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 0.18));
5049
+ calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 32px)
5050
+ );
5051
+ backdrop-filter: blur(
5052
+ calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 32px)
5053
+ );
5028
5054
  }
5029
5055
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
5030
5056
  :where(.ui-dialog):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
@@ -5034,8 +5060,8 @@ footer:empty:where([data-hn-ui-dialog]) {
5034
5060
  @media (prefers-reduced-transparency: reduce) {
5035
5061
  :where(.ui-dialog):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
5036
5062
  background: var(--_ui-material-content-color);
5037
- backdrop-filter: none;
5038
5063
  -webkit-backdrop-filter: none;
5064
+ backdrop-filter: none;
5039
5065
  }
5040
5066
  }
5041
5067
  @media (forced-colors: active) {
@@ -5043,8 +5069,8 @@ footer:empty:where([data-hn-ui-dialog]) {
5043
5069
  background: Canvas;
5044
5070
  border-color: CanvasText;
5045
5071
  box-shadow: none;
5046
- backdrop-filter: none;
5047
5072
  -webkit-backdrop-filter: none;
5073
+ backdrop-filter: none;
5048
5074
  }
5049
5075
  }
5050
5076
  :where(.ui-dialog)[open]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
@@ -5053,7 +5079,7 @@ footer:empty:where([data-hn-ui-dialog]) {
5053
5079
  pointer-events: auto;
5054
5080
  opacity: 1;
5055
5081
  transform: scale(1);
5056
- animation: ui-dialog-enter-45428506 var(--ui-dialog-duration, var(--ui-motion-base))
5082
+ animation: ui-dialog-enter-d8d3c50b var(--ui-dialog-duration, var(--ui-motion-base))
5057
5083
  var(--ui-motion-ease);
5058
5084
  }
5059
5085
  :where(.ui-dialog)[data-ui-dialog-state~="size=sm"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
@@ -5136,7 +5162,7 @@ footer:empty:where(:scope, :scope *):where([data-hn-ui-dialog]) {
5136
5162
  }
5137
5163
  :where(.ui-dialog)[open]:modal:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog])::backdrop {
5138
5164
  background-color: var(--ui-overlay-backdrop);
5139
- animation: ui-dialog-backdrop-enter-45428506 var(--_ui-dialog-duration, var(--ui-motion-base))
5165
+ animation: ui-dialog-backdrop-enter-d8d3c50b var(--_ui-dialog-duration, var(--ui-motion-base))
5140
5166
  var(--ui-motion-ease);
5141
5167
  }
5142
5168
  :where(.ui-dialog)[open][data-ui-backdrop-hidden]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog])::backdrop {
@@ -5487,7 +5513,7 @@ footer:empty:where(:scope, :scope *):where([data-hn-ui-dialog]) {
5487
5513
  /* Small follows its trigger down: an item's own hooks still win. */
5488
5514
 
5489
5515
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
5490
- transparency, saturation and edge light belong to the surrounding decorative material. */
5516
+ transparency, frosting and edge light belong to the surrounding decorative material. */
5491
5517
  @scope (.ui-menu) to ([data-hn]) {
5492
5518
  :scope[data-ui-menu-state~="density=compact"]:where([data-hn-ui-menu]) {
5493
5519
  --_ui-default-menu-item-padding-block: var(--ui-space-1);
@@ -5557,21 +5583,11 @@ footer:empty:where(:scope, :scope *):where([data-hn-ui-dialog]) {
5557
5583
  overflow: auto;
5558
5584
  }
5559
5585
  :scope:not([inline]) .surface:where([data-hn-ui-menu]) {
5560
- --_ui-material-glassiness: calc(
5561
- clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4)
5562
- );
5586
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
5563
5587
  --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
5564
- --_ui-material-active: clamp(
5565
- 0,
5566
- calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000),
5567
- 1
5568
- );
5588
+ --_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
5569
5589
  --_ui-material-rim: calc(
5570
- (
5571
- var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25
5572
- ) *
5573
- var(--_ui-material-scale, 0.28) *
5574
- 8px
5590
+ var(--_ui-material-separation) * var(--_ui-material-scale, 0.28) * 8px
5575
5591
  );
5576
5592
  --_ui-material-content-color: var(
5577
5593
  --_ui-menu-surface,
@@ -5614,12 +5630,12 @@ footer:empty:where(:scope, :scope *):where([data-hn-ui-dialog]) {
5614
5630
  var(--ui-elevation-overlay, var(--ui-shadow-lg))
5615
5631
  )
5616
5632
  );
5617
- backdrop-filter: blur(
5618
- calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 18px)
5619
- ) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 0.18));
5620
5633
  -webkit-backdrop-filter: blur(
5621
- calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 18px)
5622
- ) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 0.18));
5634
+ calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 32px)
5635
+ );
5636
+ backdrop-filter: blur(
5637
+ calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 32px)
5638
+ );
5623
5639
  }
5624
5640
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
5625
5641
  :scope:not([inline]) .surface:where([data-hn-ui-menu]) {
@@ -5629,8 +5645,8 @@ footer:empty:where(:scope, :scope *):where([data-hn-ui-dialog]) {
5629
5645
  @media (prefers-reduced-transparency: reduce) {
5630
5646
  :scope:not([inline]) .surface:where([data-hn-ui-menu]) {
5631
5647
  background: var(--_ui-material-content-color);
5632
- backdrop-filter: none;
5633
5648
  -webkit-backdrop-filter: none;
5649
+ backdrop-filter: none;
5634
5650
  }
5635
5651
  }
5636
5652
  @media (forced-colors: active) {
@@ -5638,8 +5654,8 @@ footer:empty:where(:scope, :scope *):where([data-hn-ui-dialog]) {
5638
5654
  background: Canvas;
5639
5655
  border-color: CanvasText;
5640
5656
  box-shadow: none;
5641
- backdrop-filter: none;
5642
5657
  -webkit-backdrop-filter: none;
5658
+ backdrop-filter: none;
5643
5659
  }
5644
5660
  }
5645
5661
  .surface hr:where([data-hn-ui-menu]) {
@@ -5771,7 +5787,7 @@ footer:empty:where(:scope, :scope *):where([data-hn-ui-dialog]) {
5771
5787
  block-size: 100%;
5772
5788
  }
5773
5789
  :scope[data-ui-menu-item-state~="tone=danger"]:where([data-hn-ui-menu-item]) {
5774
- color: var(--ui-danger);
5790
+ color: var(--ui-danger-subtle-text);
5775
5791
  }
5776
5792
  .label:where([data-hn-ui-menu-item]) {
5777
5793
  display: flex !important;
@@ -6741,7 +6757,7 @@ legend.sr-only:where([data-hn-ui-radio-group]) {
6741
6757
  }
6742
6758
 
6743
6759
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
6744
- transparency, saturation and edge light belong to the surrounding decorative material. */
6760
+ transparency, frosting and edge light belong to the surrounding decorative material. */
6745
6761
 
6746
6762
  /* A toolbar or card can supply its own surface, including an unclipped shadow. */
6747
6763
  @scope (.ui-popover) to ([data-hn]) {
@@ -6782,21 +6798,11 @@ legend.sr-only:where([data-hn-ui-radio-group]) {
6782
6798
  );
6783
6799
  }
6784
6800
  .surface:where([data-hn-ui-popover]) {
6785
- --_ui-material-glassiness: calc(
6786
- clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4)
6787
- );
6801
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
6788
6802
  --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
6789
- --_ui-material-active: clamp(
6790
- 0,
6791
- calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000),
6792
- 1
6793
- );
6803
+ --_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
6794
6804
  --_ui-material-rim: calc(
6795
- (
6796
- var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25
6797
- ) *
6798
- var(--_ui-material-scale, 0.55) *
6799
- 8px
6805
+ var(--_ui-material-separation) * var(--_ui-material-scale, 0.55) * 8px
6800
6806
  );
6801
6807
  --_ui-material-content-color: var(
6802
6808
  --_ui-popover-surface,
@@ -6839,12 +6845,12 @@ legend.sr-only:where([data-hn-ui-radio-group]) {
6839
6845
  var(--ui-elevation-overlay, var(--ui-shadow-lg))
6840
6846
  )
6841
6847
  );
6842
- backdrop-filter: blur(
6843
- calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 18px)
6844
- ) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 0.18));
6845
6848
  -webkit-backdrop-filter: blur(
6846
- calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 18px)
6847
- ) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 0.18));
6849
+ calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 32px)
6850
+ );
6851
+ backdrop-filter: blur(
6852
+ calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 32px)
6853
+ );
6848
6854
  }
6849
6855
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
6850
6856
  .surface:where([data-hn-ui-popover]) {
@@ -6854,8 +6860,8 @@ legend.sr-only:where([data-hn-ui-radio-group]) {
6854
6860
  @media (prefers-reduced-transparency: reduce) {
6855
6861
  .surface:where([data-hn-ui-popover]) {
6856
6862
  background: var(--_ui-material-content-color);
6857
- backdrop-filter: none;
6858
6863
  -webkit-backdrop-filter: none;
6864
+ backdrop-filter: none;
6859
6865
  }
6860
6866
  }
6861
6867
  @media (forced-colors: active) {
@@ -6863,8 +6869,8 @@ legend.sr-only:where([data-hn-ui-radio-group]) {
6863
6869
  background: Canvas;
6864
6870
  border-color: CanvasText;
6865
6871
  box-shadow: none;
6866
- backdrop-filter: none;
6867
6872
  -webkit-backdrop-filter: none;
6873
+ backdrop-filter: none;
6868
6874
  }
6869
6875
  }
6870
6876
  :scope[data-ui-popover-state~="bare"] .surface:where([data-hn-ui-popover]) {
@@ -6873,8 +6879,8 @@ legend.sr-only:where([data-hn-ui-radio-group]) {
6873
6879
  border: 0;
6874
6880
  background: transparent;
6875
6881
  box-shadow: none;
6876
- backdrop-filter: none;
6877
6882
  -webkit-backdrop-filter: none;
6883
+ backdrop-filter: none;
6878
6884
  }
6879
6885
  :scope:not([data-ui-popover-state~="internalOpen"]):where([data-hn-ui-popover]) {
6880
6886
  display: none !important;
@@ -6982,7 +6988,7 @@ legend.sr-only:where([data-hn-ui-radio-group]) {
6982
6988
  color: var(--ui-text-muted);
6983
6989
  }
6984
6990
  :scope[data-ui-text-state~="tone=accent"]:where([data-hn-ui-text]) {
6985
- color: var(--ui-accent-active);
6991
+ color: var(--ui-accent-subtle-text);
6986
6992
  }
6987
6993
  :scope[data-ui-text-state~="tone=danger"]:where([data-hn-ui-text]) {
6988
6994
  color: var(--ui-danger-subtle-text);
@@ -7036,7 +7042,7 @@ legend.sr-only:where([data-hn-ui-radio-group]) {
7036
7042
  font-family: var(--ui-font-family-mono);
7037
7043
  }
7038
7044
  :scope :where(:not([data-hn-ui-text])):is(a) {
7039
- color: var(--ui-accent-active);
7045
+ color: var(--ui-accent-subtle-text);
7040
7046
  text-decoration: underline;
7041
7047
  text-decoration-thickness: 0.06em;
7042
7048
  text-underline-offset: 0.18em;
@@ -7380,7 +7386,7 @@ legend.sr-only:where([data-hn-ui-radio-group]) {
7380
7386
  width: 32px;
7381
7387
  height: 32px;
7382
7388
  flex: 0 0 auto;
7383
- color: var(--ui-accent-active, var(--ui-accent-solid));
7389
+ color: var(--ui-accent-subtle-text);
7384
7390
  background: var(--ui-accent-soft, var(--ui-accent-subtle));
7385
7391
  border-radius: var(--ui-radius-round);
7386
7392
  font-size: var(--ui-font-size-xs);
@@ -7457,7 +7463,7 @@ legend.sr-only:where([data-hn-ui-radio-group]) {
7457
7463
  inline-size: 32px;
7458
7464
  block-size: 32px;
7459
7465
  flex: 0 0 auto;
7460
- color: var(--ui-accent-active);
7466
+ color: var(--ui-accent-subtle-text);
7461
7467
  background: var(--ui-accent-soft);
7462
7468
  border-radius: var(--ui-radius-round);
7463
7469
  font-size: var(--ui-font-size-xs);
@@ -7809,7 +7815,7 @@ ul:where([data-hn-ui-editor-slash-menu-group]) {
7809
7815
  background: var(--ui-accent-subtle, rgb(59 130 246 / 0.1));
7810
7816
  }
7811
7817
  :scope button.danger {
7812
- color: var(--ui-danger);
7818
+ color: var(--ui-danger-subtle-text);
7813
7819
  }
7814
7820
  .swatches {
7815
7821
  display: flex !important;
@@ -8223,7 +8229,7 @@ ul:where([data-hn-ui-editor-slash-menu-group]) {
8223
8229
  }
8224
8230
  :scope button.active {
8225
8231
  background: var(--ui-accent-soft, var(--ui-accent-subtle));
8226
- color: var(--ui-accent-active);
8232
+ color: var(--ui-accent-subtle-text);
8227
8233
  }
8228
8234
  .group button {
8229
8235
  border-radius: var(--ui-radius-sm);
@@ -8236,7 +8242,7 @@ ul:where([data-hn-ui-editor-slash-menu-group]) {
8236
8242
  border-radius: var(--ui-radius-sm);
8237
8243
  }
8238
8244
  :scope button.danger {
8239
- color: var(--ui-danger);
8245
+ color: var(--ui-danger-subtle-text);
8240
8246
  }
8241
8247
  :scope {
8242
8248
  --_ui-default-icon-size: var(--ui-editor-toolbar-icon-size, 1rem);
@@ -8681,7 +8687,7 @@ path:where([data-hn-ui-light-editor]) {
8681
8687
  position: relative;
8682
8688
  z-index: 1;
8683
8689
  display: inline-flex !important;
8684
- color: var(--ui-accent);
8690
+ color: var(--ui-accent-subtle-text);
8685
8691
  font-size: var(--ui-font-size-lg);
8686
8692
  }
8687
8693
  .source:where([data-hn-ui-light-editor])::after {
@@ -8794,7 +8800,7 @@ path:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
8794
8800
  position: relative;
8795
8801
  z-index: 1;
8796
8802
  display: inline-flex !important;
8797
- color: var(--ui-accent);
8803
+ color: var(--ui-accent-subtle-text);
8798
8804
  font-size: var(--ui-font-size-lg);
8799
8805
  }
8800
8806
  .source:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-light-editor"]))):where(:scope, :scope
@@ -9685,6 +9691,9 @@ path:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
9685
9691
 
9686
9692
  /* The label, and under it an optional line saying what the choice means. */
9687
9693
 
9694
+ /* The native radio retains grouping, validation and keyboard behavior.
9695
+ Its empty well recedes; the filled selection and its dot stay crisp. */
9696
+
9688
9697
  /* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
9689
9698
  and the first line centres in that control height, so the label shares a row's baseline.
9690
9699
  Multi-line labels and descriptions still grow downward from that first line. */
@@ -9738,9 +9747,34 @@ input:where([data-hn-ui-radio]) {
9738
9747
  inline-size: var(--_ui-radio-size, 1.125rem);
9739
9748
  block-size: var(--_ui-radio-size, 1.125rem);
9740
9749
  margin: max(0px, calc((1lh - var(--_ui-radio-size, 1.125rem)) / 2)) 0 0 !important;
9741
- accent-color: var(--ui-accent-solid);
9750
+ -webkit-appearance: none;
9751
+ appearance: none;
9752
+ position: relative;
9753
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
9754
+ border-radius: var(--ui-radius-round);
9755
+ background-color: var(--ui-control-surface, var(--ui-surface-default));
9756
+ background-image: var(--ui-surface-highlight, none);
9757
+ box-shadow: var(--ui-control-inset);
9742
9758
  cursor: pointer;
9743
9759
  }
9760
+ input:where([data-hn-ui-radio])::after {
9761
+ content: "";
9762
+ position: absolute;
9763
+ inset: 28%;
9764
+ border-radius: var(--ui-radius-round);
9765
+ background-color: var(--ui-text-on-accent);
9766
+ opacity: 0;
9767
+ transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
9768
+ }
9769
+ input:checked:where([data-hn-ui-radio]) {
9770
+ background-color: var(--ui-accent-solid);
9771
+ background-image: var(--ui-accent-highlight, none);
9772
+ border-color: var(--ui-accent-solid);
9773
+ box-shadow: none;
9774
+ }
9775
+ input:checked:where([data-hn-ui-radio])::after {
9776
+ opacity: 1;
9777
+ }
9744
9778
  input:focus-visible:where([data-hn-ui-radio]) {
9745
9779
  outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
9746
9780
  outline-offset: var(--ui-focus-width);
@@ -9753,8 +9787,31 @@ input:focus-visible:where([data-hn-ui-radio]) {
9753
9787
  color: var(--ui-disabled-text);
9754
9788
  }
9755
9789
  :scope[data-ui-radio-state~="disabled"] input:where([data-hn-ui-radio]) {
9790
+ border-color: var(--ui-disabled-border);
9791
+ background-color: var(--ui-disabled-surface);
9792
+ background-image: none;
9793
+ box-shadow: none;
9756
9794
  cursor: not-allowed;
9757
9795
  }
9796
+ :scope[data-ui-radio-state~="disabled"] input:where([data-hn-ui-radio])::after {
9797
+ background-color: var(--ui-disabled-text);
9798
+ }
9799
+ @media (prefers-reduced-motion: reduce) {
9800
+ input:where([data-hn-ui-radio])::after {
9801
+ transition: none;
9802
+ }
9803
+ }
9804
+ @media (forced-colors: active) {
9805
+ input:where([data-hn-ui-radio]) {
9806
+ -webkit-appearance: auto;
9807
+ appearance: auto;
9808
+ background: none;
9809
+ box-shadow: none;
9810
+ }
9811
+ input:where([data-hn-ui-radio])::after {
9812
+ display: none !important;
9813
+ }
9814
+ }
9758
9815
  :scope[data-ui-radio-state~="size=sm"]:where([data-hn-ui-radio]) {
9759
9816
  --_font: var(--ui-font-size-sm);
9760
9817
  --_row: var(--ui-control-size-sm);
@@ -10130,7 +10187,7 @@ dialog:where([data-hn-ui-search-shell]) {
10130
10187
  line-height: var(--ui-line-height-tight);
10131
10188
  }
10132
10189
  :scope[data-ui-section-state~="tone=danger"] .heading:where([data-hn-ui-section]) {
10133
- color: var(--ui-danger);
10190
+ color: var(--ui-danger-subtle-text);
10134
10191
  }
10135
10192
  .description:where([data-hn-ui-section]) {
10136
10193
  color: var(--ui-text-secondary);
@@ -10906,7 +10963,7 @@ input {
10906
10963
  line-height: var(--ui-line-height);
10907
10964
  }
10908
10965
  :scope[data-ui-status-message-state~="kind=error"]:where([data-hn-ui-status-message]) {
10909
- color: var(--ui-danger);
10966
+ color: var(--ui-danger-subtle-text);
10910
10967
  }
10911
10968
  :scope[data-ui-status-message-state~="layout=panel"]:where([data-hn-ui-status-message]) {
10912
10969
  padding: var(--ui-space-6) !important;
@@ -11044,7 +11101,8 @@ input:where([data-hn-ui-switch])::after {
11044
11101
  width: var(--_thumb);
11045
11102
  height: var(--_thumb);
11046
11103
  border-radius: var(--ui-radius-round);
11047
- background: var(--ui-text-secondary);
11104
+ background-color: var(--ui-text-secondary);
11105
+ background-image: var(--ui-knob-highlight, none);
11048
11106
  box-shadow: var(--ui-shadow-xs);
11049
11107
  transition:
11050
11108
  transform var(--ui-motion-base) var(--ui-motion-ease),
@@ -11057,7 +11115,8 @@ input:checked:where([data-hn-ui-switch]) {
11057
11115
  }
11058
11116
  input:checked:where([data-hn-ui-switch])::after {
11059
11117
  transform: translateX(calc(var(--_ui-switch-track-width) - var(--_ui-switch-track-height)));
11060
- background: var(--ui-text-on-accent);
11118
+ background-color: var(--ui-text-on-accent);
11119
+ background-image: var(--ui-knob-on-accent-highlight, none);
11061
11120
  }
11062
11121
  input:focus-visible:where([data-hn-ui-switch]) {
11063
11122
  outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
@@ -11079,6 +11138,7 @@ input:focus-visible:where([data-hn-ui-switch]) {
11079
11138
  }
11080
11139
  :scope[data-ui-switch-state~="disabled"] input:where([data-hn-ui-switch])::after {
11081
11140
  background-color: var(--ui-disabled-text);
11141
+ background-image: none;
11082
11142
  box-shadow: none;
11083
11143
  }
11084
11144
  @media (prefers-reduced-motion: reduce) {
@@ -11392,8 +11452,8 @@ input:where([data-hn-ui-switch]),input:where([data-hn-ui-switch])::after {
11392
11452
  background: var(--ui-surface-muted);
11393
11453
  }
11394
11454
  .list button[aria-selected="true"]:where([data-hn-ui-tabs]),.list > :where(:not([data-hn-ui-tabs])):is(button[slot="tab"][aria-selected="true"]) {
11395
- color: var(--ui-accent-solid);
11396
- border-block-end-color: var(--ui-accent-solid);
11455
+ color: var(--ui-accent-subtle-text);
11456
+ border-block-end-color: var(--ui-accent-subtle-text);
11397
11457
  }
11398
11458
  .list button:focus-visible:where([data-hn-ui-tabs]),.list > :where(:not([data-hn-ui-tabs])):is(button[slot="tab"]:focus-visible) {
11399
11459
  position: relative;
@@ -11431,7 +11491,7 @@ input:where([data-hn-ui-switch]),input:where([data-hn-ui-switch])::after {
11431
11491
  button[aria-selected="true"]:where([data-hn-ui-tabs]),:scope[data-ui-tabs-state~="orientation=vertical"]
11432
11492
  .list
11433
11493
  > :where(:not([data-hn-ui-tabs])):is(button[slot="tab"][aria-selected="true"]) {
11434
- border-inline-end-color: var(--ui-accent-solid);
11494
+ border-inline-end-color: var(--ui-accent-subtle-text);
11435
11495
  }
11436
11496
  @media (prefers-reduced-motion: reduce) {
11437
11497
  .list button:where([data-hn-ui-tabs]),.list > :where(:not([data-hn-ui-tabs])):is(button[slot="tab"]) {
@@ -13593,7 +13653,6 @@ html[data-ui-input-modality="touch"]
13593
13653
  border: var(--ui-accent-line-width) dashed var(--ui-accent-solid);
13594
13654
  border-radius: var(--ui-radius-md);
13595
13655
  background: color-mix(in srgb, var(--ui-accent-soft) 92%, transparent);
13596
- color: var(--ui-accent-active);
13597
13656
  font-size: var(--ui-font-size-sm);
13598
13657
  font-weight: var(--ui-font-semibold);
13599
13658
  pointer-events: none;
@@ -13961,12 +14020,15 @@ html[data-ui-input-modality="touch"]
13961
14020
  inset calc(-1 * var(--_ui-action-start)) -1px 0 light-dark(rgb(0 0 0 / 0.08), rgb(0 0 0 / 0.08))
13962
14021
  );
13963
14022
  --_ui-action-shadow: var(--_ui-action-edge), 0 1px 2px light-dark(rgb(0 0 0 / 0.10), rgb(0 0 0 / 0.20));
14023
+ --_tone-border: var(--ui-accent-border, var(--ui-accent));
14024
+ --_tone-hover-border: var(--ui-accent-hover-border, var(--ui-accent-hover));
14025
+ --_tone-active-border: var(--ui-accent-active-border, var(--ui-accent-active));
13964
14026
  --_tone-highlight: var(--ui-accent-highlight, none);
13965
14027
  --_tone-glow: var(--ui-accent-glow, 0 0 transparent);
13966
14028
  --_hue: var(--ui-accent);
13967
14029
  --_hue-hover: var(--ui-accent-hover);
13968
14030
  --_hue-active: var(--ui-accent-active);
13969
- --_hue-text: var(--ui-accent-active);
14031
+ --_hue-text: var(--ui-accent-subtle-text);
13970
14032
  --_on-hue: var(--ui-on-accent);
13971
14033
 
13972
14034
  --_tone: var(--_hue);
@@ -14004,9 +14066,9 @@ html[data-ui-input-modality="touch"]
14004
14066
  min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
14005
14067
  border-style: solid;
14006
14068
  border-width: var(--ui-border-width);
14007
- border-color: var(--ui-button-border, var(--_tone));
14069
+ border-color: var(--ui-button-border, var(--_tone-text));
14008
14070
  border-radius: var(--ui-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
14009
- background-color: var(--ui-button-surface, oklch(from var(--_tone) l c h / 5%));
14071
+ background-color: var(--ui-button-surface, oklch(from var(--_tone) l c h / calc(5% * var(--ui-tonal-opacity, 1))));
14010
14072
  color: var(--ui-button-text, var(--_tone-text));
14011
14073
  font: inherit;
14012
14074
  font-weight: var(--ui-font-medium);
@@ -14149,8 +14211,8 @@ html[data-ui-input-modality="touch"]
14149
14211
  /* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
14150
14212
  is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
14151
14213
  :scope:where([data-component~="ui-button"]):hover:not(:disabled, [aria-disabled="true"]) {
14152
- border-color: var(--ui-button-hover-border, var(--_tone-hover));
14153
- background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
14214
+ border-color: var(--ui-button-hover-border, var(--_tone-text));
14215
+ background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / calc(12% * var(--ui-tonal-opacity, 1))));
14154
14216
  }
14155
14217
 
14156
14218
  :scope:where([data-component~="ui-button"])[data-appearance="card"][data-tone="neutral"] {
@@ -14170,13 +14232,13 @@ html[data-ui-input-modality="touch"]
14170
14232
  /* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
14171
14233
  :scope:where([data-component~="ui-button"]):active:not(:disabled, [aria-disabled="true"]) {
14172
14234
  scale: var(--ui-press-scale, 1);
14173
- background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
14235
+ background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / calc(18% * var(--ui-tonal-opacity, 1))));
14174
14236
  background-image: none;
14175
14237
  box-shadow: var(--ui-pressed);
14176
14238
  }
14177
14239
 
14178
14240
  :scope:where([data-component~="ui-button"])[data-appearance="solid"], :scope:where([data-component~="ui-button"])[data-appearance="danger"] {
14179
- border-color: var(--_tone);
14241
+ border-color: var(--ui-button-border, var(--_tone-border));
14180
14242
  background-color: var(--_tone);
14181
14243
  color: var(--_on-tone);
14182
14244
  background-image: var(--_tone-highlight);
@@ -14185,14 +14247,15 @@ html[data-ui-input-modality="touch"]
14185
14247
  var(--_tone-glow);
14186
14248
  }
14187
14249
 
14188
- :is(:scope:where([data-component~="ui-button"])[data-appearance="solid"], :scope:where([data-component~="ui-button"])[data-appearance="danger"]):hover:not(:disabled, [aria-disabled="true"]) {
14250
+ :scope:where([data-component~="ui-button"])[data-appearance="solid"]:hover:not(:disabled, [aria-disabled="true"]),
14251
+ :scope:where([data-component~="ui-button"])[data-appearance="danger"]:hover:not(:disabled, [aria-disabled="true"]) {
14189
14252
  background-color: var(--_tone-hover);
14190
- border-color: var(--_tone-hover);
14253
+ border-color: var(--ui-button-hover-border, var(--_tone-hover-border));
14191
14254
  }
14192
14255
 
14193
14256
  :is(:scope:where([data-component~="ui-button"])[data-appearance="solid"], :scope:where([data-component~="ui-button"])[data-appearance="danger"]):active:not(:disabled, [aria-disabled="true"]) {
14194
14257
  background-color: var(--_tone-active);
14195
- border-color: var(--_tone-active);
14258
+ border-color: var(--_tone-active-border);
14196
14259
  background-image: none;
14197
14260
  box-shadow: var(--ui-pressed);
14198
14261
  }
@@ -14200,6 +14263,9 @@ html[data-ui-input-modality="touch"]
14200
14263
  /* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
14201
14264
  destructive secondary action, not a special case. */
14202
14265
  :scope:where([data-component~="ui-button"])[data-tone="neutral"] {
14266
+ --_tone-border: var(--ui-neutral-border, var(--ui-neutral-surface));
14267
+ --_tone-hover-border: var(--ui-neutral-hover-border, var(--ui-neutral-hover));
14268
+ --_tone-active-border: var(--ui-neutral-active-border, var(--ui-neutral-active));
14203
14269
  --_tone-highlight: var(--ui-neutral-highlight, none);
14204
14270
  --_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
14205
14271
  --_hue: var(--ui-text);
@@ -14210,7 +14276,7 @@ html[data-ui-input-modality="touch"]
14210
14276
  }
14211
14277
 
14212
14278
  :scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="solid"] {
14213
- border-color: var(--ui-button-border, var(--ui-control-border));
14279
+ border-color: var(--ui-button-border, var(--_tone-border));
14214
14280
  background-color: var(--ui-button-surface, var(--ui-neutral-surface));
14215
14281
  color: var(--ui-button-text, var(--ui-text));
14216
14282
  }
@@ -14227,13 +14293,18 @@ html[data-ui-input-modality="touch"]
14227
14293
  background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
14228
14294
  }
14229
14295
  :scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="solid"]:hover:not(:disabled, [aria-disabled="true"]) {
14296
+ border-color: var(--ui-button-hover-border, var(--_tone-hover-border));
14230
14297
  background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
14231
14298
  }
14232
14299
  :scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="solid"]:active:not(:disabled, [aria-disabled="true"]) {
14300
+ border-color: var(--_tone-active-border);
14233
14301
  background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
14234
14302
  }
14235
14303
 
14236
14304
  :scope:where([data-component~="ui-button"])[data-tone="danger"], :scope:where([data-component~="ui-button"])[data-appearance="danger"] {
14305
+ --_tone-border: var(--ui-danger-border, var(--ui-danger));
14306
+ --_tone-hover-border: var(--ui-danger-hover-border, var(--ui-danger-hover));
14307
+ --_tone-active-border: var(--ui-danger-active-border, var(--ui-danger-active));
14237
14308
  --_tone-highlight: var(--ui-danger-highlight, none);
14238
14309
  --_tone-glow: var(--ui-danger-glow, 0 0 transparent);
14239
14310
  --_hue: var(--ui-danger);
@@ -14244,6 +14315,9 @@ html[data-ui-input-modality="touch"]
14244
14315
  }
14245
14316
 
14246
14317
  :scope:where([data-component~="ui-button"])[data-tone="success"] {
14318
+ --_tone-border: var(--ui-success-border, var(--ui-success));
14319
+ --_tone-hover-border: var(--ui-success-hover-border, var(--ui-success-hover));
14320
+ --_tone-active-border: var(--ui-success-active-border, var(--ui-success-active));
14247
14321
  --_tone-highlight: var(--ui-success-highlight, none);
14248
14322
  --_tone-glow: var(--ui-success-glow, 0 0 transparent);
14249
14323
  --_hue: var(--ui-success);
@@ -14254,6 +14328,9 @@ html[data-ui-input-modality="touch"]
14254
14328
  }
14255
14329
 
14256
14330
  :scope:where([data-component~="ui-button"])[data-tone="warning"] {
14331
+ --_tone-border: var(--ui-warning-border, var(--ui-warning));
14332
+ --_tone-hover-border: var(--ui-warning-hover-border, var(--ui-warning-hover));
14333
+ --_tone-active-border: var(--ui-warning-active-border, var(--ui-warning-active));
14257
14334
  --_tone-highlight: var(--ui-warning-highlight, none);
14258
14335
  --_tone-glow: var(--ui-warning-glow, 0 0 transparent);
14259
14336
  --_hue: var(--ui-warning);
@@ -14264,6 +14341,9 @@ html[data-ui-input-modality="touch"]
14264
14341
  }
14265
14342
 
14266
14343
  :scope:where([data-component~="ui-button"])[data-tone="info"] {
14344
+ --_tone-border: var(--ui-info-border, var(--ui-info));
14345
+ --_tone-hover-border: var(--ui-info-hover-border, var(--ui-info-hover));
14346
+ --_tone-active-border: var(--ui-info-active-border, var(--ui-info-active));
14267
14347
  --_tone-highlight: var(--ui-info-highlight, none);
14268
14348
  --_tone-glow: var(--ui-info-glow, 0 0 transparent);
14269
14349
  --_hue: var(--ui-info);
@@ -14309,7 +14389,7 @@ html[data-ui-input-modality="touch"]
14309
14389
 
14310
14390
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
14311
14391
  :scope:where([data-component~="ui-button"])[data-appearance="ghost"]:hover:not(:disabled, [aria-disabled="true"]) {
14312
- background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / 10%));
14392
+ background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / calc(10% * var(--ui-tonal-opacity, 1))));
14313
14393
  border-color: transparent;
14314
14394
  }
14315
14395
 
@@ -14894,6 +14974,10 @@ html[data-ui-input-modality="touch"]
14894
14974
  /* Optional inherited action-group values keep text and icon actions under the same light.
14895
14975
  One fine top/start highlight follows the bottom/end lowlight at a joined action seam.
14896
14976
  The shared theme supplies reflections and glow independently of the resting lift. */
14977
+ --_solid-border: var(--ui-accent-border, var(--ui-accent-solid));
14978
+ --_solid-hover-border: var(--ui-accent-hover-border, var(--ui-accent-hover));
14979
+ --_solid-active-border: var(--ui-accent-active-border, var(--ui-accent-active));
14980
+ --_solid-active-surface: var(--ui-accent-active, var(--ui-accent-hover));
14897
14981
  --_tone-highlight: var(--ui-accent-highlight, none);
14898
14982
  --_tone-glow: var(--ui-accent-glow, 0 0 transparent);
14899
14983
  --_ui-action-start: 1px;
@@ -14916,20 +15000,28 @@ html[data-ui-input-modality="touch"]
14916
15000
  }
14917
15001
 
14918
15002
  :scope:where([data-component~="ui-icon-button"])[data-tone="accent"] {
15003
+ --_solid-border: var(--ui-accent-border, var(--ui-accent));
15004
+ --_solid-hover-border: var(--ui-accent-hover-border, var(--ui-accent-hover));
15005
+ --_solid-active-border: var(--ui-accent-active-border, var(--ui-accent-active));
15006
+ --_solid-active-surface: var(--ui-accent-active, var(--ui-accent-hover));
14919
15007
  --_tone-highlight: var(--ui-accent-highlight, none);
14920
15008
  --_tone-glow: var(--ui-accent-glow, 0 0 transparent);
14921
- --_icon-button-border: var(--ui-accent-solid);
14922
- --_icon-button-hover-border: var(--ui-accent-hover);
15009
+ --_icon-button-border: var(--ui-accent-subtle-text);
15010
+ --_icon-button-hover-border: var(--ui-accent-subtle-text);
14923
15011
  --_icon-button-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
14924
15012
  --_icon-button-outline-surface: color-mix(in srgb, var(--ui-accent-solid) 5%, var(--ui-surface-default));
14925
15013
  color: var(--_icon-button-text);
14926
15014
  }
14927
15015
 
14928
15016
  :scope:where([data-component~="ui-icon-button"])[data-tone="danger"] {
15017
+ --_solid-border: var(--ui-danger-border, var(--ui-danger));
15018
+ --_solid-hover-border: var(--ui-danger-hover-border, var(--ui-danger-hover));
15019
+ --_solid-active-border: var(--ui-danger-active-border, var(--ui-danger-active));
15020
+ --_solid-active-surface: var(--ui-danger-active, var(--ui-danger-hover));
14929
15021
  --_tone-highlight: var(--ui-danger-highlight, none);
14930
15022
  --_tone-glow: var(--ui-danger-glow, 0 0 transparent);
14931
- --_icon-button-border: var(--ui-danger);
14932
- --_icon-button-hover-border: var(--ui-danger-hover);
15023
+ --_icon-button-border: var(--ui-danger-subtle-text);
15024
+ --_icon-button-hover-border: var(--ui-danger-subtle-text);
14933
15025
  --_icon-button-text: var(--ui-danger-subtle-text);
14934
15026
  --_icon-button-outline-surface: color-mix(in srgb, var(--ui-danger) 5%, var(--ui-surface-default));
14935
15027
  --_icon-button-solid-surface: var(--ui-danger);
@@ -14939,10 +15031,14 @@ html[data-ui-input-modality="touch"]
14939
15031
  }
14940
15032
 
14941
15033
  :scope:where([data-component~="ui-icon-button"])[data-tone="success"] {
15034
+ --_solid-border: var(--ui-success-border, var(--ui-success));
15035
+ --_solid-hover-border: var(--ui-success-hover-border, var(--ui-success-hover));
15036
+ --_solid-active-border: var(--ui-success-active-border, var(--ui-success-active));
15037
+ --_solid-active-surface: var(--ui-success-active, var(--ui-success-hover));
14942
15038
  --_tone-highlight: var(--ui-success-highlight, none);
14943
15039
  --_tone-glow: var(--ui-success-glow, 0 0 transparent);
14944
- --_icon-button-border: var(--ui-success);
14945
- --_icon-button-hover-border: var(--ui-success-hover);
15040
+ --_icon-button-border: var(--ui-success-subtle-text);
15041
+ --_icon-button-hover-border: var(--ui-success-subtle-text);
14946
15042
  --_icon-button-text: var(--ui-success-subtle-text);
14947
15043
  --_icon-button-outline-surface: color-mix(in srgb, var(--ui-success) 5%, var(--ui-surface-default));
14948
15044
  --_icon-button-solid-surface: var(--ui-success);
@@ -14952,10 +15048,14 @@ html[data-ui-input-modality="touch"]
14952
15048
  }
14953
15049
 
14954
15050
  :scope:where([data-component~="ui-icon-button"])[data-tone="warning"] {
15051
+ --_solid-border: var(--ui-warning-border, var(--ui-warning));
15052
+ --_solid-hover-border: var(--ui-warning-hover-border, var(--ui-warning-hover));
15053
+ --_solid-active-border: var(--ui-warning-active-border, var(--ui-warning-active));
15054
+ --_solid-active-surface: var(--ui-warning-active, var(--ui-warning-hover));
14955
15055
  --_tone-highlight: var(--ui-warning-highlight, none);
14956
15056
  --_tone-glow: var(--ui-warning-glow, 0 0 transparent);
14957
- --_icon-button-border: var(--ui-warning);
14958
- --_icon-button-hover-border: var(--ui-warning-hover);
15057
+ --_icon-button-border: var(--ui-warning-subtle-text);
15058
+ --_icon-button-hover-border: var(--ui-warning-subtle-text);
14959
15059
  --_icon-button-text: var(--ui-warning-subtle-text);
14960
15060
  --_icon-button-outline-surface: color-mix(in srgb, var(--ui-warning) 5%, var(--ui-surface-default));
14961
15061
  --_icon-button-solid-surface: var(--ui-warning);
@@ -14965,10 +15065,14 @@ html[data-ui-input-modality="touch"]
14965
15065
  }
14966
15066
 
14967
15067
  :scope:where([data-component~="ui-icon-button"])[data-tone="info"] {
15068
+ --_solid-border: var(--ui-info-border, var(--ui-info));
15069
+ --_solid-hover-border: var(--ui-info-hover-border, var(--ui-info-hover));
15070
+ --_solid-active-border: var(--ui-info-active-border, var(--ui-info-active));
15071
+ --_solid-active-surface: var(--ui-info-active, var(--ui-info-hover));
14968
15072
  --_tone-highlight: var(--ui-info-highlight, none);
14969
15073
  --_tone-glow: var(--ui-info-glow, 0 0 transparent);
14970
- --_icon-button-border: var(--ui-info);
14971
- --_icon-button-hover-border: var(--ui-info-hover);
15074
+ --_icon-button-border: var(--ui-info-subtle-text);
15075
+ --_icon-button-hover-border: var(--ui-info-subtle-text);
14972
15076
  --_icon-button-text: var(--ui-info-subtle-text);
14973
15077
  --_icon-button-outline-surface: color-mix(in srgb, var(--ui-info) 5%, var(--ui-surface-default));
14974
15078
  --_icon-button-solid-surface: var(--ui-info);
@@ -14979,6 +15083,10 @@ html[data-ui-input-modality="touch"]
14979
15083
 
14980
15084
  /* Neutral actions share the same quiet surface and border roles as fields. */
14981
15085
  :scope:where([data-component~="ui-icon-button"])[data-tone="neutral"] {
15086
+ --_solid-border: var(--ui-neutral-border, var(--ui-neutral-surface));
15087
+ --_solid-hover-border: var(--ui-neutral-hover-border, var(--ui-neutral-hover));
15088
+ --_solid-active-border: var(--ui-neutral-active-border, var(--ui-neutral-active));
15089
+ --_solid-active-surface: var(--ui-neutral-active, var(--ui-neutral-hover));
14982
15090
  --_tone-highlight: var(--ui-neutral-highlight, none);
14983
15091
  --_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
14984
15092
  --_icon-button-outline-surface: transparent;
@@ -15155,6 +15263,7 @@ html[data-ui-input-modality="touch"]
15155
15263
  }
15156
15264
 
15157
15265
  :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"] {
15266
+ border-color: var(--ui-icon-button-border, var(--_solid-border));
15158
15267
  background-color: var(--ui-icon-button-solid-surface, var(--_icon-button-solid-surface, var(--ui-accent-solid)));
15159
15268
  background-image: var(--_tone-highlight);
15160
15269
  color: var(--ui-icon-button-solid-text, var(--_icon-button-solid-text, var(--ui-text-on-accent)));
@@ -15180,6 +15289,7 @@ html[data-ui-input-modality="touch"]
15180
15289
  }
15181
15290
 
15182
15291
  :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"]:hover:enabled:not([aria-disabled="true"]) {
15292
+ border-color: var(--ui-icon-button-hover-border, var(--_solid-hover-border));
15183
15293
  background-color: var(--ui-icon-button-solid-hover-surface, var(--_icon-button-solid-hover-surface, var(--ui-accent-hover)));
15184
15294
  }
15185
15295
 
@@ -15241,6 +15351,11 @@ html[data-ui-input-modality="touch"]
15241
15351
  var(--ui-focus-halo);
15242
15352
  }
15243
15353
 
15354
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"]:active:enabled:not([aria-disabled="true"]) {
15355
+ background-color: var(--ui-icon-button-active-surface, var(--_solid-active-surface));
15356
+ border-color: var(--_solid-active-border);
15357
+ }
15358
+
15244
15359
  :scope:where([data-component~="ui-icon-button"]):is(:scope:where([data-component~="ui-icon-button"])[data-appearance="outline"], :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"]):active:enabled:not([aria-disabled="true"]) {
15245
15360
  background-image: none;
15246
15361
  box-shadow: var(--ui-pressed);
@@ -15540,12 +15655,12 @@ html[data-ui-input-modality="touch"]
15540
15655
  }
15541
15656
 
15542
15657
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
15543
- transparency, saturation and edge light belong to the surrounding decorative material. */
15658
+ transparency, frosting and edge light belong to the surrounding decorative material. */
15544
15659
  :scope:where([data-component~="ui-menu"]):not([inline]) .surface {
15545
- --_ui-material-glassiness: calc(clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4));
15660
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
15546
15661
  --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
15547
- --_ui-material-active: clamp(0, calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000), 1);
15548
- --_ui-material-rim: calc((var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25) * var(--_ui-material-scale, 0.28) * 8px);
15662
+ --_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
15663
+ --_ui-material-rim: calc(var(--_ui-material-separation) * var(--_ui-material-scale, 0.28) * 8px);
15549
15664
  --_ui-material-content-color: var(--_ui-menu-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
15550
15665
  --_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
15551
15666
  background:
@@ -15570,10 +15685,8 @@ html[data-ui-input-modality="touch"]
15570
15685
  var(--ui-elevation-overlay, var(--ui-shadow-lg))
15571
15686
  )
15572
15687
  );
15573
- backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 18px))
15574
- saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 0.18));
15575
- -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 18px))
15576
- saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 0.18));
15688
+ -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 32px));
15689
+ backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 32px));
15577
15690
  }
15578
15691
 
15579
15692
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
@@ -15585,8 +15698,8 @@ html[data-ui-input-modality="touch"]
15585
15698
  @media (prefers-reduced-transparency: reduce) {
15586
15699
  :scope:where([data-component~="ui-menu"]):not([inline]) .surface {
15587
15700
  background: var(--_ui-material-content-color);
15588
- backdrop-filter: none;
15589
15701
  -webkit-backdrop-filter: none;
15702
+ backdrop-filter: none;
15590
15703
  }
15591
15704
  }
15592
15705
 
@@ -15595,8 +15708,8 @@ html[data-ui-input-modality="touch"]
15595
15708
  background: Canvas;
15596
15709
  border-color: CanvasText;
15597
15710
  box-shadow: none;
15598
- backdrop-filter: none;
15599
15711
  -webkit-backdrop-filter: none;
15712
+ backdrop-filter: none;
15600
15713
  }
15601
15714
  }
15602
15715
 
@@ -15658,7 +15771,7 @@ html[data-ui-input-modality="touch"]
15658
15771
  /* Small follows its trigger down: an item's own hooks still win. */
15659
15772
 
15660
15773
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
15661
- transparency, saturation and edge light belong to the surrounding decorative material. */
15774
+ transparency, frosting and edge light belong to the surrounding decorative material. */
15662
15775
 
15663
15776
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
15664
15777
  }
@@ -15744,7 +15857,7 @@ html[data-ui-input-modality="touch"]
15744
15857
  }
15745
15858
 
15746
15859
  :scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="tone=danger"] {
15747
- color: var(--ui-danger);
15860
+ color: var(--ui-danger-subtle-text);
15748
15861
  }
15749
15862
 
15750
15863
  .label {
@@ -15949,12 +16062,12 @@ html[data-ui-input-modality="touch"]
15949
16062
  }
15950
16063
 
15951
16064
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
15952
- transparency, saturation and edge light belong to the surrounding decorative material. */
16065
+ transparency, frosting and edge light belong to the surrounding decorative material. */
15953
16066
  .surface {
15954
- --_ui-material-glassiness: calc(clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4));
16067
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
15955
16068
  --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
15956
- --_ui-material-active: clamp(0, calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000), 1);
15957
- --_ui-material-rim: calc((var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25) * var(--_ui-material-scale, 0.55) * 8px);
16069
+ --_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
16070
+ --_ui-material-rim: calc(var(--_ui-material-separation) * var(--_ui-material-scale, 0.55) * 8px);
15958
16071
  --_ui-material-content-color: var(--_ui-popover-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
15959
16072
  --_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
15960
16073
  background:
@@ -15979,10 +16092,8 @@ html[data-ui-input-modality="touch"]
15979
16092
  var(--ui-elevation-overlay, var(--ui-shadow-lg))
15980
16093
  )
15981
16094
  );
15982
- backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 18px))
15983
- saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 0.18));
15984
- -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 18px))
15985
- saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 0.18));
16095
+ -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 32px));
16096
+ backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 32px));
15986
16097
  }
15987
16098
 
15988
16099
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
@@ -15994,8 +16105,8 @@ html[data-ui-input-modality="touch"]
15994
16105
  @media (prefers-reduced-transparency: reduce) {
15995
16106
  .surface {
15996
16107
  background: var(--_ui-material-content-color);
15997
- backdrop-filter: none;
15998
16108
  -webkit-backdrop-filter: none;
16109
+ backdrop-filter: none;
15999
16110
  }
16000
16111
  }
16001
16112
 
@@ -16004,8 +16115,8 @@ html[data-ui-input-modality="touch"]
16004
16115
  background: Canvas;
16005
16116
  border-color: CanvasText;
16006
16117
  box-shadow: none;
16007
- backdrop-filter: none;
16008
16118
  -webkit-backdrop-filter: none;
16119
+ backdrop-filter: none;
16009
16120
  }
16010
16121
  }
16011
16122
 
@@ -16016,8 +16127,8 @@ html[data-ui-input-modality="touch"]
16016
16127
  border: 0;
16017
16128
  background: transparent;
16018
16129
  box-shadow: none;
16019
- backdrop-filter: none;
16020
16130
  -webkit-backdrop-filter: none;
16131
+ backdrop-filter: none;
16021
16132
  }
16022
16133
 
16023
16134
  :scope:where([data-component~="ui-popover"]):not([data-ui-popover-state~="internalOpen"]) {
@@ -16076,7 +16187,7 @@ html[data-ui-input-modality="touch"]
16076
16187
  /* This component's hooks style the element they are set on, and never a nested one. */
16077
16188
 
16078
16189
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
16079
- transparency, saturation and edge light belong to the surrounding decorative material. */
16190
+ transparency, frosting and edge light belong to the surrounding decorative material. */
16080
16191
 
16081
16192
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
16082
16193
  }
@@ -16243,7 +16354,7 @@ html[data-ui-input-modality="touch"]
16243
16354
  color: var(--ui-text-muted);
16244
16355
  }
16245
16356
  :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=accent"] {
16246
- color: var(--ui-accent-active);
16357
+ color: var(--ui-accent-subtle-text);
16247
16358
  }
16248
16359
  /* Every status tone uses the text-safe token a subtle badge sets its words in, so text and badges
16249
16360
  in one tone match, and each holds 4.5:1 on sunken surfaces where some base colours fall short. */
@@ -16349,7 +16460,7 @@ html[data-ui-input-modality="touch"]
16349
16460
  /* A link in running text is underlined, so it stands apart from the words around it by more than
16350
16461
  colour. */
16351
16462
  :scope:where([data-component~="ui-text"]) :where([data-slotted], [data-slotted] *):is(a) {
16352
- color: var(--ui-accent-active);
16463
+ color: var(--ui-accent-subtle-text);
16353
16464
  text-decoration: underline;
16354
16465
  text-decoration-thickness: 0.06em;
16355
16466
  text-underline-offset: 0.18em;
@@ -16465,12 +16576,12 @@ html[data-ui-input-modality="touch"]
16465
16576
  }
16466
16577
 
16467
16578
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
16468
- transparency, saturation and edge light belong to the surrounding decorative material. */
16579
+ transparency, frosting and edge light belong to the surrounding decorative material. */
16469
16580
  .surface {
16470
- --_ui-material-glassiness: calc(clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4));
16581
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
16471
16582
  --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
16472
- --_ui-material-active: clamp(0, calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000), 1);
16473
- --_ui-material-rim: calc((var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25) * var(--_ui-material-scale, 0.08) * 8px);
16583
+ --_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
16584
+ --_ui-material-rim: calc(var(--_ui-material-separation) * var(--_ui-material-scale, 0.08) * 8px);
16474
16585
  --_ui-material-content-color: var(--_ui-tooltip-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
16475
16586
  --_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
16476
16587
  background:
@@ -16493,10 +16604,8 @@ html[data-ui-input-modality="touch"]
16493
16604
  var(--ui-elevation-tooltip, var(--ui-shadow-md))
16494
16605
  )
16495
16606
  );
16496
- backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 18px))
16497
- saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 0.18));
16498
- -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 18px))
16499
- saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 0.18));
16607
+ -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 32px));
16608
+ backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 32px));
16500
16609
  }
16501
16610
 
16502
16611
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
@@ -16508,8 +16617,8 @@ html[data-ui-input-modality="touch"]
16508
16617
  @media (prefers-reduced-transparency: reduce) {
16509
16618
  .surface {
16510
16619
  background: var(--_ui-material-content-color);
16511
- backdrop-filter: none;
16512
16620
  -webkit-backdrop-filter: none;
16621
+ backdrop-filter: none;
16513
16622
  }
16514
16623
  }
16515
16624
 
@@ -16518,8 +16627,8 @@ html[data-ui-input-modality="touch"]
16518
16627
  background: Canvas;
16519
16628
  border-color: CanvasText;
16520
16629
  box-shadow: none;
16521
- backdrop-filter: none;
16522
16630
  -webkit-backdrop-filter: none;
16631
+ backdrop-filter: none;
16523
16632
  }
16524
16633
  }
16525
16634
 
@@ -16649,7 +16758,7 @@ html[data-ui-input-modality="touch"]
16649
16758
  /* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
16650
16759
 
16651
16760
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
16652
- transparency, saturation and edge light belong to the surrounding decorative material. */
16761
+ transparency, frosting and edge light belong to the surrounding decorative material. */
16653
16762
 
16654
16763
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
16655
16764
  }
@@ -16793,7 +16902,7 @@ html[data-ui-input-modality="touch"]
16793
16902
  border-color: var(--ui-accent-solid);
16794
16903
  background-color: var(--ui-accent-solid);
16795
16904
  background-image: var(--ui-accent-highlight, none);
16796
- box-shadow: var(--ui-control-inset);
16905
+ box-shadow: none;
16797
16906
  }
16798
16907
 
16799
16908
  /* The SVG's painted bounds are centred in its viewBox, including its round stroke.
@@ -17600,7 +17709,7 @@ html[data-ui-input-modality="touch"]
17600
17709
 
17601
17710
  /* A link in the callout's text is underlined, so it reads as a link by more than colour. */
17602
17711
  .content :where([data-slotted], [data-slotted] *):is(a) {
17603
- color: var(--ui-accent-active);
17712
+ color: var(--ui-accent-subtle-text);
17604
17713
  text-decoration: underline;
17605
17714
  text-decoration-thickness: 0.06em;
17606
17715
  text-underline-offset: 0.18em;