@threadlabs/looma 0.41.1 → 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 (101) 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-site-header/ui-site-header.html +6 -2
  19. package/components/ui-status-message/ui-status-message.html +1 -1
  20. package/components/ui-switch/ui-switch.html +5 -2
  21. package/components/ui-tabs/ui-tabs.html +3 -3
  22. package/components/ui-text/ui-text.html +2 -2
  23. package/components/ui-tooltip/ui-tooltip.html +8 -10
  24. package/dist/index.js +1 -1
  25. package/docs/README.md +5 -1
  26. package/docs/catalog.json +410 -35
  27. package/docs/customizer-render.mjs +9 -5
  28. package/docs/customizer.js +2 -0
  29. package/docs/fonts.mjs +1 -1
  30. package/docs/theme.mjs +136 -35
  31. package/package.json +1 -1
  32. package/styles/ui-button.css +33 -12
  33. package/styles/ui-callout.css +1 -1
  34. package/styles/ui-card.css +6 -6
  35. package/styles/ui-checkbox.css +1 -1
  36. package/styles/ui-dialog.css +17 -21
  37. package/styles/ui-editor-mention-menu-item.css +1 -1
  38. package/styles/ui-editor-mention-menu.css +1 -1
  39. package/styles/ui-editor-table-context-menu.css +1 -1
  40. package/styles/ui-editor-table-toolbar.css +2 -2
  41. package/styles/ui-icon-button.css +45 -10
  42. package/styles/ui-light-editor.css +2 -2
  43. package/styles/ui-menu-item.css +1 -1
  44. package/styles/ui-menu.css +9 -11
  45. package/styles/ui-popover.css +10 -12
  46. package/styles/ui-radio.css +62 -1
  47. package/styles/ui-section.css +1 -1
  48. package/styles/ui-site-header.css +6 -2
  49. package/styles/ui-status-message.css +1 -1
  50. package/styles/ui-switch.css +5 -2
  51. package/styles/ui-tabs.css +3 -3
  52. package/styles/ui-text.css +2 -2
  53. package/styles/ui-tooltip.css +9 -11
  54. package/theme-system.css +10 -8
  55. package/tokens.css +23 -0
  56. package/vue/UiButton.vue +45 -12
  57. package/vue/UiCallout.vue +1 -1
  58. package/vue/UiCard.vue +7 -13
  59. package/vue/UiCheckbox.vue +1 -1
  60. package/vue/UiDialog.vue +21 -45
  61. package/vue/UiEditorMentionMenu.vue +1 -1
  62. package/vue/UiEditorMentionMenuItem.vue +1 -1
  63. package/vue/UiEditorTableContextMenu.vue +1 -1
  64. package/vue/UiEditorTableToolbar.vue +2 -2
  65. package/vue/UiIconButton.vue +45 -10
  66. package/vue/UiLightEditor.vue +2 -2
  67. package/vue/UiMenu.vue +11 -21
  68. package/vue/UiMenuItem.vue +1 -1
  69. package/vue/UiPopover.vue +12 -22
  70. package/vue/UiRadio.vue +57 -1
  71. package/vue/UiSection.vue +1 -1
  72. package/vue/UiSiteHeader.vue +6 -2
  73. package/vue/UiStatusMessage.vue +1 -1
  74. package/vue/UiSwitch.vue +5 -2
  75. package/vue/UiTabs.vue +3 -3
  76. package/vue/UiText.vue +2 -2
  77. package/vue/UiTooltip.vue +11 -21
  78. package/vue/chunks/UiButton.js +1 -1
  79. package/vue/chunks/UiCallout.js +1 -1
  80. package/vue/chunks/UiCard.js +2 -2
  81. package/vue/chunks/UiCheckbox.js +1 -1
  82. package/vue/chunks/UiDialog.js +1 -1
  83. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  84. package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
  85. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  86. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  87. package/vue/chunks/UiIconButton.js +1 -1
  88. package/vue/chunks/UiLightEditor.js +1 -1
  89. package/vue/chunks/UiMenu.js +1 -1
  90. package/vue/chunks/UiMenuItem.js +1 -1
  91. package/vue/chunks/UiPopover.js +1 -1
  92. package/vue/chunks/UiRadio.js +1 -1
  93. package/vue/chunks/UiSection.js +1 -1
  94. package/vue/chunks/UiSiteHeader.js +1 -1
  95. package/vue/chunks/UiStatusMessage.js +1 -1
  96. package/vue/chunks/UiSwitch.js +1 -1
  97. package/vue/chunks/UiTabs.js +1 -1
  98. package/vue/chunks/UiText.js +1 -1
  99. package/vue/chunks/UiTooltip.js +1 -1
  100. package/vue/components.css +348 -235
  101. 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);
@@ -10627,6 +10684,7 @@ dialog:where([data-hn-ui-search-shell]) {
10627
10684
  align-items: center !important;
10628
10685
  align-content: center !important;
10629
10686
  gap: var(--ui-space-2) !important;
10687
+ inline-size: 100%;
10630
10688
  min-inline-size: 0;
10631
10689
  min-block-size: var(--ui-site-header-compact-height, 3.75rem);
10632
10690
  padding: var(--ui-space-2) var(--ui-site-header-padding-inline, var(--ui-space-4)) !important;
@@ -10648,12 +10706,15 @@ dialog:where([data-hn-ui-search-shell]) {
10648
10706
  max-inline-size: 100%;
10649
10707
  }
10650
10708
  .actions:where([data-hn-ui-site-header]) {
10651
- flex-wrap: wrap !important;
10709
+ display: grid !important;
10710
+ grid-auto-flow: column !important;
10711
+ grid-auto-columns: minmax(max-content, var(--ui-control-min-block-size)) !important;
10712
+ justify-items: center !important;
10652
10713
  margin-inline-start: auto !important;
10653
10714
  }
10654
10715
  .identity:where([data-hn-ui-site-header]) {
10655
10716
  display: flex !important;
10656
- flex: 1 1 auto;
10717
+ flex: 1 1 0;
10657
10718
  flex-wrap: wrap !important;
10658
10719
  align-items: baseline !important;
10659
10720
  gap: var(--ui-space-2) var(--ui-space-6) !important;
@@ -10902,7 +10963,7 @@ input {
10902
10963
  line-height: var(--ui-line-height);
10903
10964
  }
10904
10965
  :scope[data-ui-status-message-state~="kind=error"]:where([data-hn-ui-status-message]) {
10905
- color: var(--ui-danger);
10966
+ color: var(--ui-danger-subtle-text);
10906
10967
  }
10907
10968
  :scope[data-ui-status-message-state~="layout=panel"]:where([data-hn-ui-status-message]) {
10908
10969
  padding: var(--ui-space-6) !important;
@@ -11040,7 +11101,8 @@ input:where([data-hn-ui-switch])::after {
11040
11101
  width: var(--_thumb);
11041
11102
  height: var(--_thumb);
11042
11103
  border-radius: var(--ui-radius-round);
11043
- background: var(--ui-text-secondary);
11104
+ background-color: var(--ui-text-secondary);
11105
+ background-image: var(--ui-knob-highlight, none);
11044
11106
  box-shadow: var(--ui-shadow-xs);
11045
11107
  transition:
11046
11108
  transform var(--ui-motion-base) var(--ui-motion-ease),
@@ -11053,7 +11115,8 @@ input:checked:where([data-hn-ui-switch]) {
11053
11115
  }
11054
11116
  input:checked:where([data-hn-ui-switch])::after {
11055
11117
  transform: translateX(calc(var(--_ui-switch-track-width) - var(--_ui-switch-track-height)));
11056
- background: var(--ui-text-on-accent);
11118
+ background-color: var(--ui-text-on-accent);
11119
+ background-image: var(--ui-knob-on-accent-highlight, none);
11057
11120
  }
11058
11121
  input:focus-visible:where([data-hn-ui-switch]) {
11059
11122
  outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
@@ -11075,6 +11138,7 @@ input:focus-visible:where([data-hn-ui-switch]) {
11075
11138
  }
11076
11139
  :scope[data-ui-switch-state~="disabled"] input:where([data-hn-ui-switch])::after {
11077
11140
  background-color: var(--ui-disabled-text);
11141
+ background-image: none;
11078
11142
  box-shadow: none;
11079
11143
  }
11080
11144
  @media (prefers-reduced-motion: reduce) {
@@ -11388,8 +11452,8 @@ input:where([data-hn-ui-switch]),input:where([data-hn-ui-switch])::after {
11388
11452
  background: var(--ui-surface-muted);
11389
11453
  }
11390
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"]) {
11391
- color: var(--ui-accent-solid);
11392
- 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);
11393
11457
  }
11394
11458
  .list button:focus-visible:where([data-hn-ui-tabs]),.list > :where(:not([data-hn-ui-tabs])):is(button[slot="tab"]:focus-visible) {
11395
11459
  position: relative;
@@ -11427,7 +11491,7 @@ input:where([data-hn-ui-switch]),input:where([data-hn-ui-switch])::after {
11427
11491
  button[aria-selected="true"]:where([data-hn-ui-tabs]),:scope[data-ui-tabs-state~="orientation=vertical"]
11428
11492
  .list
11429
11493
  > :where(:not([data-hn-ui-tabs])):is(button[slot="tab"][aria-selected="true"]) {
11430
- border-inline-end-color: var(--ui-accent-solid);
11494
+ border-inline-end-color: var(--ui-accent-subtle-text);
11431
11495
  }
11432
11496
  @media (prefers-reduced-motion: reduce) {
11433
11497
  .list button:where([data-hn-ui-tabs]),.list > :where(:not([data-hn-ui-tabs])):is(button[slot="tab"]) {
@@ -13589,7 +13653,6 @@ html[data-ui-input-modality="touch"]
13589
13653
  border: var(--ui-accent-line-width) dashed var(--ui-accent-solid);
13590
13654
  border-radius: var(--ui-radius-md);
13591
13655
  background: color-mix(in srgb, var(--ui-accent-soft) 92%, transparent);
13592
- color: var(--ui-accent-active);
13593
13656
  font-size: var(--ui-font-size-sm);
13594
13657
  font-weight: var(--ui-font-semibold);
13595
13658
  pointer-events: none;
@@ -13957,12 +14020,15 @@ html[data-ui-input-modality="touch"]
13957
14020
  inset calc(-1 * var(--_ui-action-start)) -1px 0 light-dark(rgb(0 0 0 / 0.08), rgb(0 0 0 / 0.08))
13958
14021
  );
13959
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));
13960
14026
  --_tone-highlight: var(--ui-accent-highlight, none);
13961
14027
  --_tone-glow: var(--ui-accent-glow, 0 0 transparent);
13962
14028
  --_hue: var(--ui-accent);
13963
14029
  --_hue-hover: var(--ui-accent-hover);
13964
14030
  --_hue-active: var(--ui-accent-active);
13965
- --_hue-text: var(--ui-accent-active);
14031
+ --_hue-text: var(--ui-accent-subtle-text);
13966
14032
  --_on-hue: var(--ui-on-accent);
13967
14033
 
13968
14034
  --_tone: var(--_hue);
@@ -14000,9 +14066,9 @@ html[data-ui-input-modality="touch"]
14000
14066
  min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
14001
14067
  border-style: solid;
14002
14068
  border-width: var(--ui-border-width);
14003
- border-color: var(--ui-button-border, var(--_tone));
14069
+ border-color: var(--ui-button-border, var(--_tone-text));
14004
14070
  border-radius: var(--ui-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
14005
- 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))));
14006
14072
  color: var(--ui-button-text, var(--_tone-text));
14007
14073
  font: inherit;
14008
14074
  font-weight: var(--ui-font-medium);
@@ -14145,8 +14211,8 @@ html[data-ui-input-modality="touch"]
14145
14211
  /* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
14146
14212
  is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
14147
14213
  :scope:where([data-component~="ui-button"]):hover:not(:disabled, [aria-disabled="true"]) {
14148
- border-color: var(--ui-button-hover-border, var(--_tone-hover));
14149
- 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))));
14150
14216
  }
14151
14217
 
14152
14218
  :scope:where([data-component~="ui-button"])[data-appearance="card"][data-tone="neutral"] {
@@ -14166,13 +14232,13 @@ html[data-ui-input-modality="touch"]
14166
14232
  /* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
14167
14233
  :scope:where([data-component~="ui-button"]):active:not(:disabled, [aria-disabled="true"]) {
14168
14234
  scale: var(--ui-press-scale, 1);
14169
- 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))));
14170
14236
  background-image: none;
14171
14237
  box-shadow: var(--ui-pressed);
14172
14238
  }
14173
14239
 
14174
14240
  :scope:where([data-component~="ui-button"])[data-appearance="solid"], :scope:where([data-component~="ui-button"])[data-appearance="danger"] {
14175
- border-color: var(--_tone);
14241
+ border-color: var(--ui-button-border, var(--_tone-border));
14176
14242
  background-color: var(--_tone);
14177
14243
  color: var(--_on-tone);
14178
14244
  background-image: var(--_tone-highlight);
@@ -14181,14 +14247,15 @@ html[data-ui-input-modality="touch"]
14181
14247
  var(--_tone-glow);
14182
14248
  }
14183
14249
 
14184
- :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"]) {
14185
14252
  background-color: var(--_tone-hover);
14186
- border-color: var(--_tone-hover);
14253
+ border-color: var(--ui-button-hover-border, var(--_tone-hover-border));
14187
14254
  }
14188
14255
 
14189
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"]) {
14190
14257
  background-color: var(--_tone-active);
14191
- border-color: var(--_tone-active);
14258
+ border-color: var(--_tone-active-border);
14192
14259
  background-image: none;
14193
14260
  box-shadow: var(--ui-pressed);
14194
14261
  }
@@ -14196,6 +14263,9 @@ html[data-ui-input-modality="touch"]
14196
14263
  /* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
14197
14264
  destructive secondary action, not a special case. */
14198
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));
14199
14269
  --_tone-highlight: var(--ui-neutral-highlight, none);
14200
14270
  --_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
14201
14271
  --_hue: var(--ui-text);
@@ -14206,7 +14276,7 @@ html[data-ui-input-modality="touch"]
14206
14276
  }
14207
14277
 
14208
14278
  :scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="solid"] {
14209
- border-color: var(--ui-button-border, var(--ui-control-border));
14279
+ border-color: var(--ui-button-border, var(--_tone-border));
14210
14280
  background-color: var(--ui-button-surface, var(--ui-neutral-surface));
14211
14281
  color: var(--ui-button-text, var(--ui-text));
14212
14282
  }
@@ -14223,13 +14293,18 @@ html[data-ui-input-modality="touch"]
14223
14293
  background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
14224
14294
  }
14225
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));
14226
14297
  background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
14227
14298
  }
14228
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);
14229
14301
  background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
14230
14302
  }
14231
14303
 
14232
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));
14233
14308
  --_tone-highlight: var(--ui-danger-highlight, none);
14234
14309
  --_tone-glow: var(--ui-danger-glow, 0 0 transparent);
14235
14310
  --_hue: var(--ui-danger);
@@ -14240,6 +14315,9 @@ html[data-ui-input-modality="touch"]
14240
14315
  }
14241
14316
 
14242
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));
14243
14321
  --_tone-highlight: var(--ui-success-highlight, none);
14244
14322
  --_tone-glow: var(--ui-success-glow, 0 0 transparent);
14245
14323
  --_hue: var(--ui-success);
@@ -14250,6 +14328,9 @@ html[data-ui-input-modality="touch"]
14250
14328
  }
14251
14329
 
14252
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));
14253
14334
  --_tone-highlight: var(--ui-warning-highlight, none);
14254
14335
  --_tone-glow: var(--ui-warning-glow, 0 0 transparent);
14255
14336
  --_hue: var(--ui-warning);
@@ -14260,6 +14341,9 @@ html[data-ui-input-modality="touch"]
14260
14341
  }
14261
14342
 
14262
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));
14263
14347
  --_tone-highlight: var(--ui-info-highlight, none);
14264
14348
  --_tone-glow: var(--ui-info-glow, 0 0 transparent);
14265
14349
  --_hue: var(--ui-info);
@@ -14305,7 +14389,7 @@ html[data-ui-input-modality="touch"]
14305
14389
 
14306
14390
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
14307
14391
  :scope:where([data-component~="ui-button"])[data-appearance="ghost"]:hover:not(:disabled, [aria-disabled="true"]) {
14308
- 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))));
14309
14393
  border-color: transparent;
14310
14394
  }
14311
14395
 
@@ -14890,6 +14974,10 @@ html[data-ui-input-modality="touch"]
14890
14974
  /* Optional inherited action-group values keep text and icon actions under the same light.
14891
14975
  One fine top/start highlight follows the bottom/end lowlight at a joined action seam.
14892
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));
14893
14981
  --_tone-highlight: var(--ui-accent-highlight, none);
14894
14982
  --_tone-glow: var(--ui-accent-glow, 0 0 transparent);
14895
14983
  --_ui-action-start: 1px;
@@ -14912,20 +15000,28 @@ html[data-ui-input-modality="touch"]
14912
15000
  }
14913
15001
 
14914
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));
14915
15007
  --_tone-highlight: var(--ui-accent-highlight, none);
14916
15008
  --_tone-glow: var(--ui-accent-glow, 0 0 transparent);
14917
- --_icon-button-border: var(--ui-accent-solid);
14918
- --_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);
14919
15011
  --_icon-button-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
14920
15012
  --_icon-button-outline-surface: color-mix(in srgb, var(--ui-accent-solid) 5%, var(--ui-surface-default));
14921
15013
  color: var(--_icon-button-text);
14922
15014
  }
14923
15015
 
14924
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));
14925
15021
  --_tone-highlight: var(--ui-danger-highlight, none);
14926
15022
  --_tone-glow: var(--ui-danger-glow, 0 0 transparent);
14927
- --_icon-button-border: var(--ui-danger);
14928
- --_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);
14929
15025
  --_icon-button-text: var(--ui-danger-subtle-text);
14930
15026
  --_icon-button-outline-surface: color-mix(in srgb, var(--ui-danger) 5%, var(--ui-surface-default));
14931
15027
  --_icon-button-solid-surface: var(--ui-danger);
@@ -14935,10 +15031,14 @@ html[data-ui-input-modality="touch"]
14935
15031
  }
14936
15032
 
14937
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));
14938
15038
  --_tone-highlight: var(--ui-success-highlight, none);
14939
15039
  --_tone-glow: var(--ui-success-glow, 0 0 transparent);
14940
- --_icon-button-border: var(--ui-success);
14941
- --_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);
14942
15042
  --_icon-button-text: var(--ui-success-subtle-text);
14943
15043
  --_icon-button-outline-surface: color-mix(in srgb, var(--ui-success) 5%, var(--ui-surface-default));
14944
15044
  --_icon-button-solid-surface: var(--ui-success);
@@ -14948,10 +15048,14 @@ html[data-ui-input-modality="touch"]
14948
15048
  }
14949
15049
 
14950
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));
14951
15055
  --_tone-highlight: var(--ui-warning-highlight, none);
14952
15056
  --_tone-glow: var(--ui-warning-glow, 0 0 transparent);
14953
- --_icon-button-border: var(--ui-warning);
14954
- --_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);
14955
15059
  --_icon-button-text: var(--ui-warning-subtle-text);
14956
15060
  --_icon-button-outline-surface: color-mix(in srgb, var(--ui-warning) 5%, var(--ui-surface-default));
14957
15061
  --_icon-button-solid-surface: var(--ui-warning);
@@ -14961,10 +15065,14 @@ html[data-ui-input-modality="touch"]
14961
15065
  }
14962
15066
 
14963
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));
14964
15072
  --_tone-highlight: var(--ui-info-highlight, none);
14965
15073
  --_tone-glow: var(--ui-info-glow, 0 0 transparent);
14966
- --_icon-button-border: var(--ui-info);
14967
- --_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);
14968
15076
  --_icon-button-text: var(--ui-info-subtle-text);
14969
15077
  --_icon-button-outline-surface: color-mix(in srgb, var(--ui-info) 5%, var(--ui-surface-default));
14970
15078
  --_icon-button-solid-surface: var(--ui-info);
@@ -14975,6 +15083,10 @@ html[data-ui-input-modality="touch"]
14975
15083
 
14976
15084
  /* Neutral actions share the same quiet surface and border roles as fields. */
14977
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));
14978
15090
  --_tone-highlight: var(--ui-neutral-highlight, none);
14979
15091
  --_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
14980
15092
  --_icon-button-outline-surface: transparent;
@@ -15151,6 +15263,7 @@ html[data-ui-input-modality="touch"]
15151
15263
  }
15152
15264
 
15153
15265
  :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"] {
15266
+ border-color: var(--ui-icon-button-border, var(--_solid-border));
15154
15267
  background-color: var(--ui-icon-button-solid-surface, var(--_icon-button-solid-surface, var(--ui-accent-solid)));
15155
15268
  background-image: var(--_tone-highlight);
15156
15269
  color: var(--ui-icon-button-solid-text, var(--_icon-button-solid-text, var(--ui-text-on-accent)));
@@ -15176,6 +15289,7 @@ html[data-ui-input-modality="touch"]
15176
15289
  }
15177
15290
 
15178
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));
15179
15293
  background-color: var(--ui-icon-button-solid-hover-surface, var(--_icon-button-solid-hover-surface, var(--ui-accent-hover)));
15180
15294
  }
15181
15295
 
@@ -15237,6 +15351,11 @@ html[data-ui-input-modality="touch"]
15237
15351
  var(--ui-focus-halo);
15238
15352
  }
15239
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
+
15240
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"]) {
15241
15360
  background-image: none;
15242
15361
  box-shadow: var(--ui-pressed);
@@ -15536,12 +15655,12 @@ html[data-ui-input-modality="touch"]
15536
15655
  }
15537
15656
 
15538
15657
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
15539
- transparency, saturation and edge light belong to the surrounding decorative material. */
15658
+ transparency, frosting and edge light belong to the surrounding decorative material. */
15540
15659
  :scope:where([data-component~="ui-menu"]):not([inline]) .surface {
15541
- --_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);
15542
15661
  --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
15543
- --_ui-material-active: clamp(0, calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000), 1);
15544
- --_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);
15545
15664
  --_ui-material-content-color: var(--_ui-menu-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
15546
15665
  --_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
15547
15666
  background:
@@ -15566,10 +15685,8 @@ html[data-ui-input-modality="touch"]
15566
15685
  var(--ui-elevation-overlay, var(--ui-shadow-lg))
15567
15686
  )
15568
15687
  );
15569
- backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 18px))
15570
- saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 0.18));
15571
- -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 18px))
15572
- 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));
15573
15690
  }
15574
15691
 
15575
15692
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
@@ -15581,8 +15698,8 @@ html[data-ui-input-modality="touch"]
15581
15698
  @media (prefers-reduced-transparency: reduce) {
15582
15699
  :scope:where([data-component~="ui-menu"]):not([inline]) .surface {
15583
15700
  background: var(--_ui-material-content-color);
15584
- backdrop-filter: none;
15585
15701
  -webkit-backdrop-filter: none;
15702
+ backdrop-filter: none;
15586
15703
  }
15587
15704
  }
15588
15705
 
@@ -15591,8 +15708,8 @@ html[data-ui-input-modality="touch"]
15591
15708
  background: Canvas;
15592
15709
  border-color: CanvasText;
15593
15710
  box-shadow: none;
15594
- backdrop-filter: none;
15595
15711
  -webkit-backdrop-filter: none;
15712
+ backdrop-filter: none;
15596
15713
  }
15597
15714
  }
15598
15715
 
@@ -15654,7 +15771,7 @@ html[data-ui-input-modality="touch"]
15654
15771
  /* Small follows its trigger down: an item's own hooks still win. */
15655
15772
 
15656
15773
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
15657
- transparency, saturation and edge light belong to the surrounding decorative material. */
15774
+ transparency, frosting and edge light belong to the surrounding decorative material. */
15658
15775
 
15659
15776
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
15660
15777
  }
@@ -15740,7 +15857,7 @@ html[data-ui-input-modality="touch"]
15740
15857
  }
15741
15858
 
15742
15859
  :scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="tone=danger"] {
15743
- color: var(--ui-danger);
15860
+ color: var(--ui-danger-subtle-text);
15744
15861
  }
15745
15862
 
15746
15863
  .label {
@@ -15945,12 +16062,12 @@ html[data-ui-input-modality="touch"]
15945
16062
  }
15946
16063
 
15947
16064
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
15948
- transparency, saturation and edge light belong to the surrounding decorative material. */
16065
+ transparency, frosting and edge light belong to the surrounding decorative material. */
15949
16066
  .surface {
15950
- --_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);
15951
16068
  --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
15952
- --_ui-material-active: clamp(0, calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000), 1);
15953
- --_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);
15954
16071
  --_ui-material-content-color: var(--_ui-popover-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
15955
16072
  --_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
15956
16073
  background:
@@ -15975,10 +16092,8 @@ html[data-ui-input-modality="touch"]
15975
16092
  var(--ui-elevation-overlay, var(--ui-shadow-lg))
15976
16093
  )
15977
16094
  );
15978
- backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 18px))
15979
- saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 0.18));
15980
- -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 18px))
15981
- 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));
15982
16097
  }
15983
16098
 
15984
16099
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
@@ -15990,8 +16105,8 @@ html[data-ui-input-modality="touch"]
15990
16105
  @media (prefers-reduced-transparency: reduce) {
15991
16106
  .surface {
15992
16107
  background: var(--_ui-material-content-color);
15993
- backdrop-filter: none;
15994
16108
  -webkit-backdrop-filter: none;
16109
+ backdrop-filter: none;
15995
16110
  }
15996
16111
  }
15997
16112
 
@@ -16000,8 +16115,8 @@ html[data-ui-input-modality="touch"]
16000
16115
  background: Canvas;
16001
16116
  border-color: CanvasText;
16002
16117
  box-shadow: none;
16003
- backdrop-filter: none;
16004
16118
  -webkit-backdrop-filter: none;
16119
+ backdrop-filter: none;
16005
16120
  }
16006
16121
  }
16007
16122
 
@@ -16012,8 +16127,8 @@ html[data-ui-input-modality="touch"]
16012
16127
  border: 0;
16013
16128
  background: transparent;
16014
16129
  box-shadow: none;
16015
- backdrop-filter: none;
16016
16130
  -webkit-backdrop-filter: none;
16131
+ backdrop-filter: none;
16017
16132
  }
16018
16133
 
16019
16134
  :scope:where([data-component~="ui-popover"]):not([data-ui-popover-state~="internalOpen"]) {
@@ -16072,7 +16187,7 @@ html[data-ui-input-modality="touch"]
16072
16187
  /* This component's hooks style the element they are set on, and never a nested one. */
16073
16188
 
16074
16189
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
16075
- transparency, saturation and edge light belong to the surrounding decorative material. */
16190
+ transparency, frosting and edge light belong to the surrounding decorative material. */
16076
16191
 
16077
16192
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
16078
16193
  }
@@ -16239,7 +16354,7 @@ html[data-ui-input-modality="touch"]
16239
16354
  color: var(--ui-text-muted);
16240
16355
  }
16241
16356
  :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=accent"] {
16242
- color: var(--ui-accent-active);
16357
+ color: var(--ui-accent-subtle-text);
16243
16358
  }
16244
16359
  /* Every status tone uses the text-safe token a subtle badge sets its words in, so text and badges
16245
16360
  in one tone match, and each holds 4.5:1 on sunken surfaces where some base colours fall short. */
@@ -16345,7 +16460,7 @@ html[data-ui-input-modality="touch"]
16345
16460
  /* A link in running text is underlined, so it stands apart from the words around it by more than
16346
16461
  colour. */
16347
16462
  :scope:where([data-component~="ui-text"]) :where([data-slotted], [data-slotted] *):is(a) {
16348
- color: var(--ui-accent-active);
16463
+ color: var(--ui-accent-subtle-text);
16349
16464
  text-decoration: underline;
16350
16465
  text-decoration-thickness: 0.06em;
16351
16466
  text-underline-offset: 0.18em;
@@ -16461,12 +16576,12 @@ html[data-ui-input-modality="touch"]
16461
16576
  }
16462
16577
 
16463
16578
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
16464
- transparency, saturation and edge light belong to the surrounding decorative material. */
16579
+ transparency, frosting and edge light belong to the surrounding decorative material. */
16465
16580
  .surface {
16466
- --_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);
16467
16582
  --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
16468
- --_ui-material-active: clamp(0, calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000), 1);
16469
- --_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);
16470
16585
  --_ui-material-content-color: var(--_ui-tooltip-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
16471
16586
  --_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
16472
16587
  background:
@@ -16489,10 +16604,8 @@ html[data-ui-input-modality="touch"]
16489
16604
  var(--ui-elevation-tooltip, var(--ui-shadow-md))
16490
16605
  )
16491
16606
  );
16492
- backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 18px))
16493
- saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 0.18));
16494
- -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 18px))
16495
- 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));
16496
16609
  }
16497
16610
 
16498
16611
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
@@ -16504,8 +16617,8 @@ html[data-ui-input-modality="touch"]
16504
16617
  @media (prefers-reduced-transparency: reduce) {
16505
16618
  .surface {
16506
16619
  background: var(--_ui-material-content-color);
16507
- backdrop-filter: none;
16508
16620
  -webkit-backdrop-filter: none;
16621
+ backdrop-filter: none;
16509
16622
  }
16510
16623
  }
16511
16624
 
@@ -16514,8 +16627,8 @@ html[data-ui-input-modality="touch"]
16514
16627
  background: Canvas;
16515
16628
  border-color: CanvasText;
16516
16629
  box-shadow: none;
16517
- backdrop-filter: none;
16518
16630
  -webkit-backdrop-filter: none;
16631
+ backdrop-filter: none;
16519
16632
  }
16520
16633
  }
16521
16634
 
@@ -16645,7 +16758,7 @@ html[data-ui-input-modality="touch"]
16645
16758
  /* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
16646
16759
 
16647
16760
  /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
16648
- transparency, saturation and edge light belong to the surrounding decorative material. */
16761
+ transparency, frosting and edge light belong to the surrounding decorative material. */
16649
16762
 
16650
16763
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
16651
16764
  }
@@ -16789,7 +16902,7 @@ html[data-ui-input-modality="touch"]
16789
16902
  border-color: var(--ui-accent-solid);
16790
16903
  background-color: var(--ui-accent-solid);
16791
16904
  background-image: var(--ui-accent-highlight, none);
16792
- box-shadow: var(--ui-control-inset);
16905
+ box-shadow: none;
16793
16906
  }
16794
16907
 
16795
16908
  /* The SVG's painted bounds are centred in its viewBox, including its round stroke.
@@ -17596,7 +17709,7 @@ html[data-ui-input-modality="touch"]
17596
17709
 
17597
17710
  /* A link in the callout's text is underlined, so it reads as a link by more than colour. */
17598
17711
  .content :where([data-slotted], [data-slotted] *):is(a) {
17599
- color: var(--ui-accent-active);
17712
+ color: var(--ui-accent-subtle-text);
17600
17713
  text-decoration: underline;
17601
17714
  text-decoration-thickness: 0.06em;
17602
17715
  text-underline-offset: 0.18em;