@scalewing/react 1.40.0 → 1.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 (191) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +274 -7
  3. package/dist/calendar-labels.d.ts +2 -0
  4. package/dist/calendar-labels.js +7 -0
  5. package/dist/components/Article.d.ts +60 -0
  6. package/dist/components/Article.js +42 -0
  7. package/dist/components/BarChart.d.ts +20 -4
  8. package/dist/components/BarChart.js +13 -6
  9. package/dist/components/ButtonGroup.d.ts +8 -1
  10. package/dist/components/ButtonGroup.js +11 -2
  11. package/dist/components/DateField.d.ts +14 -2
  12. package/dist/components/DateField.js +14 -11
  13. package/dist/components/DenominationGrid.d.ts +3 -2
  14. package/dist/components/DenominationGrid.js +21 -3
  15. package/dist/components/Dialog.d.ts +29 -13
  16. package/dist/components/Dialog.js +22 -20
  17. package/dist/components/DocumentViewer.d.ts +41 -0
  18. package/dist/components/DocumentViewer.js +72 -0
  19. package/dist/components/Field.d.ts +13 -2
  20. package/dist/components/Field.js +14 -38
  21. package/dist/components/FileField.d.ts +44 -0
  22. package/dist/components/FileField.js +66 -0
  23. package/dist/components/FilterChips.d.ts +7 -37
  24. package/dist/components/FilterChips.js +32 -24
  25. package/dist/components/ListRow.d.ts +33 -3
  26. package/dist/components/ListRow.js +18 -17
  27. package/dist/components/MarkdownView.d.ts +39 -0
  28. package/dist/components/MarkdownView.js +30 -0
  29. package/dist/components/NavCount.d.ts +15 -2
  30. package/dist/components/NavCount.js +16 -6
  31. package/dist/components/SegmentedControl.d.ts +17 -1
  32. package/dist/components/SegmentedControl.js +11 -3
  33. package/dist/components/Switch.d.ts +16 -1
  34. package/dist/components/Switch.js +17 -6
  35. package/dist/components/action-bar/ActionBarSummary.d.ts +10 -2
  36. package/dist/components/action-bar/ActionBarSummary.js +11 -2
  37. package/dist/components/chart/use-chart-width.js +2 -24
  38. package/dist/components/date-field/CalendarEntryButton.d.ts +24 -0
  39. package/dist/components/date-field/CalendarEntryButton.js +16 -0
  40. package/dist/components/date-field/TypedEntry.d.ts +26 -0
  41. package/dist/components/date-field/TypedEntry.js +13 -0
  42. package/dist/components/denomination-grid/CountCell.d.ts +16 -0
  43. package/dist/components/denomination-grid/CountCell.js +14 -0
  44. package/dist/components/denomination-grid/DenominationStrip.d.ts +4 -1
  45. package/dist/components/denomination-grid/DenominationStrip.js +2 -2
  46. package/dist/components/denomination-grid/EntryCell.d.ts +3 -1
  47. package/dist/components/denomination-grid/EntryCell.js +2 -2
  48. package/dist/components/denomination-grid/StripRow.js +1 -10
  49. package/dist/components/denomination-grid/TransposedStrip.d.ts +17 -0
  50. package/dist/components/denomination-grid/TransposedStrip.js +43 -0
  51. package/dist/components/denomination-grid/types.d.ts +31 -0
  52. package/dist/components/denomination-grid/types.js +7 -1
  53. package/dist/components/denomination-grid/validate-options.d.ts +7 -0
  54. package/dist/components/denomination-grid/validate-options.js +27 -0
  55. package/dist/components/dialog/DialogFooter.d.ts +6 -5
  56. package/dist/components/dialog/DialogFooter.js +6 -6
  57. package/dist/components/dialog/validate.d.ts +24 -0
  58. package/dist/components/dialog/validate.js +23 -0
  59. package/dist/components/document-viewer/document-viewer-labels.d.ts +23 -0
  60. package/dist/components/document-viewer/document-viewer-labels.js +23 -0
  61. package/dist/components/document-viewer/page-box.d.ts +8 -0
  62. package/dist/components/document-viewer/page-box.js +12 -0
  63. package/dist/components/document-viewer/pdf-document.d.ts +32 -0
  64. package/dist/components/document-viewer/pdf-document.js +66 -0
  65. package/dist/components/document-viewer/pdf-options.d.ts +36 -0
  66. package/dist/components/document-viewer/pdf-options.js +46 -0
  67. package/dist/components/document-viewer/render-pdf-page.d.ts +20 -0
  68. package/dist/components/document-viewer/render-pdf-page.js +38 -0
  69. package/dist/components/document-viewer/scroll-chain.d.ts +6 -0
  70. package/dist/components/document-viewer/scroll-chain.js +23 -0
  71. package/dist/components/document-viewer/use-error-report.d.ts +5 -0
  72. package/dist/components/document-viewer/use-error-report.js +13 -0
  73. package/dist/components/document-viewer/use-page-render.d.ts +21 -0
  74. package/dist/components/document-viewer/use-page-render.js +70 -0
  75. package/dist/components/document-viewer/use-pdf-document.d.ts +22 -0
  76. package/dist/components/document-viewer/use-pdf-document.js +47 -0
  77. package/dist/components/document-viewer/use-pinch-zoom.d.ts +12 -0
  78. package/dist/components/document-viewer/use-pinch-zoom.js +67 -0
  79. package/dist/components/document-viewer/use-zoom.d.ts +23 -0
  80. package/dist/components/document-viewer/use-zoom.js +70 -0
  81. package/dist/components/document-viewer/zoom.d.ts +29 -0
  82. package/dist/components/document-viewer/zoom.js +37 -0
  83. package/dist/components/field/field-checks.d.ts +34 -0
  84. package/dist/components/field/field-checks.js +42 -0
  85. package/dist/components/file-field/file-field-checks.d.ts +13 -0
  86. package/dist/components/file-field/file-field-checks.js +21 -0
  87. package/dist/components/file-field/use-file-drop.d.ts +34 -0
  88. package/dist/components/file-field/use-file-drop.js +78 -0
  89. package/dist/components/file-field/use-swap-focus.d.ts +15 -0
  90. package/dist/components/file-field/use-swap-focus.js +40 -0
  91. package/dist/components/filter-chips/FilterChip.d.ts +16 -0
  92. package/dist/components/filter-chips/FilterChip.js +20 -0
  93. package/dist/components/filter-chips/options.d.ts +75 -0
  94. package/dist/components/filter-chips/options.js +11 -0
  95. package/dist/components/filter-chips/validate.d.ts +9 -0
  96. package/dist/components/filter-chips/validate.js +48 -0
  97. package/dist/components/list/ListRowContent.d.ts +8 -2
  98. package/dist/components/list/ListRowContent.js +6 -3
  99. package/dist/components/list/ListRowItem.d.ts +10 -0
  100. package/dist/components/list/ListRowItem.js +17 -0
  101. package/dist/components/list/row-naming.d.ts +17 -0
  102. package/dist/components/list/row-naming.js +19 -0
  103. package/dist/components/list/row-slot.d.ts +8 -0
  104. package/dist/components/list/row-slot.js +12 -0
  105. package/dist/components/markdown/markdown-limits.d.ts +14 -0
  106. package/dist/components/markdown/markdown-limits.js +14 -0
  107. package/dist/components/markdown/markdown-model.d.ts +94 -0
  108. package/dist/components/markdown/markdown-model.js +8 -0
  109. package/dist/components/markdown/markdown-options.d.ts +18 -0
  110. package/dist/components/markdown/markdown-options.js +10 -0
  111. package/dist/components/markdown/markdown-rules.d.ts +28 -0
  112. package/dist/components/markdown/markdown-rules.js +81 -0
  113. package/dist/components/markdown/markdown-text.d.ts +17 -0
  114. package/dist/components/markdown/markdown-text.js +86 -0
  115. package/dist/components/markdown/parse-markdown.d.ts +4 -0
  116. package/dist/components/markdown/parse-markdown.js +21 -0
  117. package/dist/components/markdown/read-blocks.d.ts +8 -0
  118. package/dist/components/markdown/read-blocks.js +168 -0
  119. package/dist/components/markdown/read-inlines.d.ts +12 -0
  120. package/dist/components/markdown/read-inlines.js +126 -0
  121. package/dist/components/markdown/read-markdown.d.ts +9 -0
  122. package/dist/components/markdown/read-markdown.js +27 -0
  123. package/dist/components/markdown/reading-context.d.ts +18 -0
  124. package/dist/components/markdown/reading-context.js +35 -0
  125. package/dist/components/markdown/render-markdown.d.ts +10 -0
  126. package/dist/components/markdown/render-markdown.js +52 -0
  127. package/dist/components/use-element-width.d.ts +11 -0
  128. package/dist/components/use-element-width.js +38 -0
  129. package/dist/css/chart-tones.d.ts +2 -0
  130. package/dist/css/chart-tones.js +5 -1
  131. package/dist/css/css-article.d.ts +2 -0
  132. package/dist/css/css-article.js +110 -0
  133. package/dist/css/css-bar-chart.d.ts +17 -2
  134. package/dist/css/css-bar-chart.js +38 -7
  135. package/dist/css/css-button-group-attached.d.ts +3 -0
  136. package/dist/css/css-button-group-attached.js +18 -1
  137. package/dist/css/css-canvas-grouped.d.ts +17 -0
  138. package/dist/css/css-canvas-grouped.js +40 -0
  139. package/dist/css/css-components.js +18 -0
  140. package/dist/css/css-count-pill.js +14 -1
  141. package/dist/css/css-date-field-calendar-entry.d.ts +11 -0
  142. package/dist/css/css-date-field-calendar-entry.js +50 -0
  143. package/dist/css/css-date-field.js +4 -0
  144. package/dist/css/css-denomination-grid.js +4 -0
  145. package/dist/css/css-denomination-transposed.d.ts +4 -0
  146. package/dist/css/css-denomination-transposed.js +178 -0
  147. package/dist/css/css-dialog-canvas.d.ts +3 -0
  148. package/dist/css/css-dialog-canvas.js +20 -0
  149. package/dist/css/css-dialog-frame.js +19 -2
  150. package/dist/css/css-dialog-grabber.d.ts +4 -0
  151. package/dist/css/css-dialog-grabber.js +56 -0
  152. package/dist/css/css-dialog.js +3 -2
  153. package/dist/css/css-document-viewer.d.ts +2 -0
  154. package/dist/css/css-document-viewer.js +186 -0
  155. package/dist/css/css-document.js +3 -0
  156. package/dist/css/css-field-width.d.ts +12 -0
  157. package/dist/css/css-field-width.js +49 -0
  158. package/dist/css/css-field.js +4 -0
  159. package/dist/css/css-file-field.d.ts +2 -0
  160. package/dist/css/css-file-field.js +180 -0
  161. package/dist/css/css-filter-chips-layout.d.ts +2 -0
  162. package/dist/css/css-filter-chips-layout.js +42 -0
  163. package/dist/css/css-filter-chips.js +4 -0
  164. package/dist/css/css-list-row-trailing.d.ts +2 -0
  165. package/dist/css/css-list-row-trailing.js +91 -0
  166. package/dist/css/css-list-row.d.ts +6 -0
  167. package/dist/css/css-list-row.js +19 -3
  168. package/dist/css/css-list.js +5 -1
  169. package/dist/css/css-markdown.d.ts +2 -0
  170. package/dist/css/css-markdown.js +144 -0
  171. package/dist/css/css-segmented-sizing.d.ts +13 -0
  172. package/dist/css/css-segmented-sizing.js +66 -0
  173. package/dist/css/css-segmented.js +4 -0
  174. package/dist/css/css-switch.d.ts +6 -0
  175. package/dist/css/css-switch.js +39 -0
  176. package/dist/css/css-variables.js +1 -0
  177. package/dist/css/stacking.d.ts +1 -0
  178. package/dist/css/stacking.js +4 -1
  179. package/dist/css/stylesheet.js +12 -0
  180. package/dist/date-field-labels.d.ts +5 -0
  181. package/dist/date-field-labels.js +1 -0
  182. package/dist/document-viewer-worker.d.ts +9 -0
  183. package/dist/document-viewer-worker.js +9 -0
  184. package/dist/index.d.ts +15 -9
  185. package/dist/index.js +13 -7
  186. package/dist/list-options.d.ts +11 -7
  187. package/dist/list-options.js +20 -8
  188. package/dist/styles.css +889 -44
  189. package/dist/theme/ThemeProvider.d.ts +11 -1
  190. package/dist/theme/ThemeProvider.js +4 -2
  191. package/package.json +10 -2
package/dist/styles.css CHANGED
@@ -57,6 +57,7 @@
57
57
  --sw-dialog-max: 32rem;
58
58
  --sw-dialog-max-lg: 56rem;
59
59
  --sw-dialog-max-xl: 65rem;
60
+ --sw-reading-max: 46rem;
60
61
  --sw-select-max: 16rem;
61
62
  --sw-split-min: 14rem;
62
63
  --sw-split-size: 22rem;
@@ -130,6 +131,7 @@
130
131
  --sw-dialog-max: 32rem;
131
132
  --sw-dialog-max-lg: 56rem;
132
133
  --sw-dialog-max-xl: 65rem;
134
+ --sw-reading-max: 46rem;
133
135
  --sw-select-max: 16rem;
134
136
  --sw-split-min: 14rem;
135
137
  --sw-split-size: 22rem;
@@ -614,6 +616,18 @@ body {
614
616
  color-scheme: dark;
615
617
  }
616
618
 
619
+ [data-theme] {
620
+ --sw-canvas-grouped: color-mix(in srgb, var(--sw-color-muted) 7%, var(--sw-color-background));
621
+ }
622
+
623
+ [data-theme='dark'] {
624
+ --sw-canvas-grouped: var(--sw-color-background);
625
+ }
626
+
627
+ [data-theme][data-canvas='grouped'] {
628
+ background-color: var(--sw-canvas-grouped);
629
+ }
630
+
617
631
  [data-theme] a {
618
632
  color: var(--sw-color-accent);
619
633
  text-decoration: none;
@@ -1003,6 +1017,12 @@ body {
1003
1017
  .sw-button-group.sw-button-group-attached > * { width: auto; }
1004
1018
  }
1005
1019
 
1020
+ /* Its own block, after the phone row's, so a group that does not fill is unchanged. */
1021
+ @media not all and (min-width: 48rem) {
1022
+ .sw-button-group.sw-button-group-attached.sw-button-group-full-below-md { width: 100%; }
1023
+ .sw-button-group.sw-button-group-attached.sw-button-group-full-below-md > .sw-button { flex: 1 1 0; min-width: 0; }
1024
+ }
1025
+
1006
1026
  .sw-button-group.sw-button-group-attached.sw-button-group-track {
1007
1027
  background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
1008
1028
  border-radius: var(--sw-radius-sm);
@@ -1545,6 +1565,37 @@ body {
1545
1565
  .sw-segmented.sw-segmented-raised[aria-invalid='true'] { border-color: Mark; }
1546
1566
  }
1547
1567
 
1568
+ @media not all and (min-width: 48rem) {
1569
+ .sw-segmented-field.sw-segmented-field-full-below-md {
1570
+ align-self: stretch;
1571
+ display: flex;
1572
+ width: 100%;
1573
+ }
1574
+ .sw-segmented-field.sw-segmented-field-full-below-md > .sw-segmented {
1575
+ align-self: stretch;
1576
+ display: grid;
1577
+ grid-auto-columns: minmax(0, 1fr);
1578
+ grid-auto-flow: column;
1579
+ }
1580
+ }
1581
+
1582
+ .sw-segmented.sw-segmented-sm .sw-segmented-item {
1583
+ min-width: 0;
1584
+ overflow: hidden;
1585
+ white-space: nowrap;
1586
+ }
1587
+
1588
+ .sw-segmented.sw-segmented-sm:not(.sw-segmented-with-icons) .sw-segmented-item {
1589
+ padding-inline: var(--sw-space-2);
1590
+ }
1591
+
1592
+ .sw-segmented-sm .sw-segmented-item-label {
1593
+ display: block;
1594
+ min-width: 0;
1595
+ overflow: hidden;
1596
+ text-overflow: ellipsis;
1597
+ }
1598
+
1548
1599
  .sw-segmented-disabled {
1549
1600
  opacity: var(--sw-disabled-opacity);
1550
1601
  }
@@ -2191,6 +2242,36 @@ body {
2191
2242
  .sw-date-field-error { color: var(--sw-color-danger); }
2192
2243
  .sw-date-field-error:empty { position: absolute; }
2193
2244
 
2245
+ .sw-button.sw-date-field-calendar-entry {
2246
+ align-self: flex-start;
2247
+ border-radius: var(--sw-radius-sm);
2248
+ flex: none;
2249
+ justify-content: flex-start;
2250
+ max-width: 100%;
2251
+ text-align: start;
2252
+ white-space: nowrap;
2253
+ }
2254
+
2255
+ /* A long day or word in a narrow column ends in an ellipsis; the name keeps it whole. */
2256
+ .sw-date-field-calendar-entry-text {
2257
+ min-width: 0;
2258
+ overflow: hidden;
2259
+ text-overflow: ellipsis;
2260
+ }
2261
+
2262
+ .sw-button.sw-date-field-calendar-entry .sw-date-field-glyph {
2263
+ height: var(--sw-space-4);
2264
+ width: var(--sw-space-4);
2265
+ }
2266
+
2267
+ .sw-button.sw-date-field-calendar-entry.sw-date-field-calendar-entry-invalid {
2268
+ border-color: var(--sw-color-danger);
2269
+ }
2270
+
2271
+ @media (forced-colors: active) {
2272
+ .sw-button.sw-date-field-calendar-entry.sw-date-field-calendar-entry-invalid { border-color: Mark; }
2273
+ }
2274
+
2194
2275
  .sw-date-field-calendar {
2195
2276
  background: var(--sw-glass-fill);
2196
2277
  border: 1px solid var(--sw-glass-border);
@@ -2801,63 +2882,555 @@ body {
2801
2882
  text-align: end;
2802
2883
  }
2803
2884
 
2804
- .sw-list-row-title {
2805
- font-weight: 600;
2806
- overflow-wrap: anywhere;
2885
+ .sw-list-row-title {
2886
+ font-weight: 600;
2887
+ overflow-wrap: anywhere;
2888
+ }
2889
+
2890
+ .sw-list-row-title-plain { font-weight: 400; }
2891
+
2892
+ .sw-list-row-title-danger { color: var(--sw-color-danger); }
2893
+
2894
+ .sw-list-row-detail,
2895
+ .sw-list-row-value-detail {
2896
+ color: var(--sw-color-muted);
2897
+ font-size: 13px;
2898
+ line-height: 18px;
2899
+ }
2900
+
2901
+ /* The label takes the wrap; the end keeps its words whole up to half the row. */
2902
+ .sw-list-row-detail { overflow-wrap: anywhere; }
2903
+
2904
+ .sw-list-row-value,
2905
+ .sw-list-row-value-detail { font-variant-numeric: tabular-nums; }
2906
+
2907
+ .sw-list-row-value { font-weight: 600; }
2908
+
2909
+ .sw-list-row-value-success { color: var(--sw-color-success); }
2910
+ .sw-list-row-value-danger { color: var(--sw-color-danger); }
2911
+ .sw-list-row-value-muted { color: var(--sw-color-muted); }
2912
+ .sw-list-row-value-accent { color: var(--sw-color-accent); }
2913
+ .sw-list-row-value-warning { color: color-mix(in srgb, var(--sw-color-warning) 50%, var(--sw-color-text)); }
2914
+
2915
+ .sw-list-row-chevron {
2916
+ border-bottom: 2px solid var(--sw-color-muted);
2917
+ border-right: 2px solid var(--sw-color-muted);
2918
+ box-sizing: border-box;
2919
+ height: var(--sw-space-2);
2920
+ width: var(--sw-space-2);
2921
+ flex: none;
2922
+ margin-block-start: calc((20px - var(--sw-space-2)) / 2);
2923
+ margin-inline-end: var(--sw-space-1);
2924
+ transform: rotate(-45deg);
2925
+ }
2926
+
2927
+ .sw-list-row-chevron:dir(rtl) { transform: rotate(135deg); }
2928
+
2929
+ .sw-list-row-check {
2930
+ border-bottom: 2px solid var(--sw-color-accent);
2931
+ border-right: 2px solid var(--sw-color-accent);
2932
+ box-sizing: border-box;
2933
+ flex: none;
2934
+ height: var(--sw-space-3);
2935
+ margin-block-start: calc((20px - var(--sw-space-3)) / 2);
2936
+ margin-inline-end: var(--sw-space-1);
2937
+ transform: rotate(45deg);
2938
+ width: var(--sw-space-2);
2939
+ }
2940
+
2941
+ @media (forced-colors: active) {
2942
+ .sw-list-row-check { border-color: CanvasText; }
2943
+ }
2944
+
2945
+ .sw-list-row-unread {
2946
+ border: calc(var(--sw-space-2) / 2) solid var(--sw-color-accent);
2947
+ border-radius: var(--sw-radius-pill);
2948
+ box-sizing: border-box;
2949
+ display: inline-block;
2950
+ height: var(--sw-space-2);
2951
+ margin-inline-start: var(--sw-space-2);
2952
+ vertical-align: middle;
2953
+ width: var(--sw-space-2);
2954
+ }
2955
+
2956
+ @media (forced-colors: active) {
2957
+ .sw-list-row-unread { border-color: CanvasText; }
2958
+ }
2959
+
2960
+ .sw-list-row-tag {
2961
+ align-self: center;
2962
+ display: inline-flex;
2963
+ flex: none;
2964
+ white-space: nowrap;
2965
+ }
2966
+
2967
+ .sw-list-item-action {
2968
+ align-items: center;
2969
+ display: flex;
2970
+ }
2971
+
2972
+ .sw-list-item-action > .sw-list-row {
2973
+ flex: 1 1 auto;
2974
+ min-width: 0;
2975
+ padding-inline-end: var(--sw-space-2);
2976
+ }
2977
+
2978
+ .sw-list-row-action {
2979
+ display: inline-flex;
2980
+ flex: none;
2981
+ padding-inline-end: var(--sw-space-4);
2982
+ }
2983
+
2984
+ .sw-list-group-plain .sw-list-row-action { padding-inline-end: 0; }
2985
+
2986
+ @supports selector(:has(*)) {
2987
+ @media (hover: hover) {
2988
+ .sw-list-item-action:has(> .sw-list-row-pressable:hover:not(.sw-list-row-disabled)) {
2989
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
2990
+ }
2991
+
2992
+ .sw-list-item-action > .sw-list-row-pressable:hover:not(.sw-list-row-disabled) {
2993
+ background: transparent;
2994
+ }
2995
+ }
2996
+ }
2997
+
2998
+ .sw-file-field-frame {
2999
+ border: 1px solid var(--sw-color-border);
3000
+ border-radius: var(--sw-radius-md);
3001
+ box-sizing: border-box;
3002
+ min-width: 0;
3003
+ }
3004
+
3005
+ .sw-file-field-empty { background: var(--sw-color-subtle); }
3006
+
3007
+ .sw-file-field-chosen {
3008
+ align-items: center;
3009
+ background: var(--sw-color-surface);
3010
+ display: flex;
3011
+ flex-wrap: wrap;
3012
+ gap: var(--sw-space-2) var(--sw-space-3);
3013
+ padding: var(--sw-space-2) var(--sw-space-2) var(--sw-space-2) var(--sw-space-4);
3014
+ }
3015
+
3016
+ .sw-field-invalid .sw-file-field-frame { border-color: var(--sw-color-danger); }
3017
+
3018
+ /* A drag wins over an error's edge: it says where the file goes. */
3019
+ .sw-file-field-frame.sw-file-field-dragging {
3020
+ background: var(--sw-color-accentSubtle);
3021
+ border-color: var(--sw-color-accent);
3022
+ outline: 1px solid var(--sw-color-accent);
3023
+ }
3024
+
3025
+ /* On the tint, muted words fall under 4.5:1 in light palettes: every word takes the text colour. */
3026
+ .sw-file-field-dragging :is(.sw-file-field-choose, .sw-file-field-drop, .sw-file-field-detail, .sw-file-field-icon) {
3027
+ color: var(--sw-color-text);
3028
+ }
3029
+
3030
+ /* Disabled, the frame's hairline is dashed, as a disabled text control's. */
3031
+ .sw-file-field-disabled { border-style: dashed; }
3032
+
3033
+ .sw-file-field-zone {
3034
+ align-items: center;
3035
+ appearance: none;
3036
+ background: transparent;
3037
+ border: 0;
3038
+ border-radius: inherit;
3039
+ box-sizing: border-box;
3040
+ color: var(--sw-color-text);
3041
+ cursor: pointer;
3042
+ display: flex;
3043
+ flex-wrap: wrap;
3044
+ font-family: var(--sw-font-sans);
3045
+ font-size: 15px;
3046
+ gap: var(--sw-space-1);
3047
+ justify-content: center;
3048
+ line-height: 20px;
3049
+ margin: 0;
3050
+ min-height: var(--sw-control-md-min-height);
3051
+ padding: var(--sw-space-6) var(--sw-space-4);
3052
+ text-align: center;
3053
+ width: 100%;
3054
+ }
3055
+
3056
+ .sw-file-field-zone:focus { outline: none; }
3057
+
3058
+ .sw-file-field-zone:focus-visible {
3059
+ outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
3060
+ outline-offset: calc(-1 * var(--sw-focus-ring-width));
3061
+ }
3062
+
3063
+ .sw-file-field-choose {
3064
+ color: var(--sw-color-text);
3065
+ font-weight: 600;
3066
+ }
3067
+
3068
+ .sw-file-field-drop { color: var(--sw-color-muted); }
3069
+
3070
+ .sw-file-field-zone:disabled {
3071
+ background-color: var(--sw-color-subtle);
3072
+ border-style: dashed;
3073
+ cursor: not-allowed;
3074
+ opacity: 1;
3075
+ -webkit-text-fill-color: currentColor;
3076
+ border-radius: inherit;
3077
+ }
3078
+
3079
+ .sw-file-field-zone:disabled .sw-file-field-choose { color: var(--sw-color-muted); }
3080
+
3081
+ @media (pointer: coarse) {
3082
+ .sw-file-field-drop { display: none; }
3083
+ }
3084
+
3085
+ .sw-file-field-icon {
3086
+ align-items: center;
3087
+ color: var(--sw-color-muted);
3088
+ display: flex;
3089
+ flex: none;
3090
+ }
3091
+
3092
+ .sw-file-field-file {
3093
+ display: flex;
3094
+ flex: 1 1 calc(4 * var(--sw-space-8));
3095
+ flex-direction: column;
3096
+ min-width: 0;
3097
+ }
3098
+
3099
+ .sw-file-field-name {
3100
+ font-size: 15px;
3101
+ font-weight: 600;
3102
+ line-height: 20px;
3103
+ overflow-wrap: anywhere;
3104
+ }
3105
+
3106
+ .sw-file-field-detail {
3107
+ color: var(--sw-color-muted);
3108
+ font-size: 13px;
3109
+ line-height: 18px;
3110
+ }
3111
+
3112
+ .sw-file-field-chosen > .sw-button {
3113
+ flex: none;
3114
+ margin-inline-start: auto;
3115
+ }
3116
+
3117
+ @media (forced-colors: active) {
3118
+ .sw-file-field-frame { border-color: CanvasText; }
3119
+ .sw-field-invalid .sw-file-field-frame { border-color: Mark; }
3120
+ .sw-file-field-frame.sw-file-field-dragging { border-color: Highlight; outline-color: Highlight; }
3121
+ .sw-file-field-choose { color: ButtonText; }
3122
+ .sw-file-field-zone:disabled,
3123
+ .sw-file-field-zone:disabled .sw-file-field-choose { color: GrayText; }
3124
+ }
3125
+
3126
+ .sw-article {
3127
+ box-sizing: border-box;
3128
+ display: flex;
3129
+ flex-direction: column;
3130
+ max-inline-size: var(--sw-reading-max);
3131
+ min-width: 0;
3132
+ }
3133
+
3134
+ .sw-article-cover {
3135
+ aspect-ratio: 3 / 1;
3136
+ background: var(--sw-color-subtle);
3137
+ border-start-end-radius: inherit;
3138
+ border-start-start-radius: inherit;
3139
+ display: block;
3140
+ inline-size: 100%;
3141
+ object-fit: cover;
3142
+ }
3143
+
3144
+ .sw-article-body {
3145
+ display: flex;
3146
+ flex-direction: column;
3147
+ min-width: 0;
3148
+ padding: var(--sw-space-6) var(--sw-space-8);
3149
+ }
3150
+
3151
+ .sw-article-header {
3152
+ display: flex;
3153
+ flex-direction: column;
3154
+ margin-block-end: var(--sw-space-3);
3155
+ min-width: 0;
3156
+ }
3157
+
3158
+ .sw-article-top {
3159
+ align-items: center;
3160
+ display: flex;
3161
+ flex-wrap: wrap;
3162
+ gap: var(--sw-space-3);
3163
+ justify-content: space-between;
3164
+ margin-block-end: var(--sw-space-3);
3165
+ }
3166
+
3167
+ .sw-article-eyebrow {
3168
+ color: var(--sw-color-muted);
3169
+ font-size: 13px;
3170
+ font-weight: 600;
3171
+ letter-spacing: -0.08px;
3172
+ line-height: 18px;
3173
+ min-width: 0;
3174
+ overflow-wrap: anywhere;
3175
+ }
3176
+
3177
+ .sw-article-actions {
3178
+ display: flex;
3179
+ flex-wrap: wrap;
3180
+ gap: var(--sw-space-2);
3181
+ }
3182
+
3183
+ .sw-article-actions:only-child { margin-inline-start: auto; }
3184
+
3185
+ .sw-article-title { overflow-wrap: anywhere; }
3186
+
3187
+ .sw-article-meta {
3188
+ color: var(--sw-color-muted);
3189
+ font-size: 13px;
3190
+ letter-spacing: -0.08px;
3191
+ line-height: 18px;
3192
+ margin-block-start: var(--sw-space-3);
3193
+ overflow-wrap: anywhere;
3194
+ }
3195
+
3196
+ .sw-article-content {
3197
+ margin-block-start: var(--sw-space-4);
3198
+ min-width: 0;
3199
+ }
3200
+
3201
+ @media not all and (min-width: 48rem) {
3202
+ .sw-article-cover { aspect-ratio: 2 / 1; }
3203
+ .sw-article-body { padding: var(--sw-space-5); }
3204
+ }
3205
+
3206
+ .sw-document-viewer {
3207
+ background: color-mix(in srgb, var(--sw-color-muted) 16%, transparent);
3208
+ border-radius: var(--sw-radius-lg);
3209
+ display: flex;
3210
+ flex-direction: column;
3211
+ min-width: 0;
3212
+ padding-block-end: var(--sw-space-4);
3213
+ }
3214
+
3215
+ .sw-document-viewer-stage {
3216
+ box-sizing: border-box;
3217
+ min-width: 0;
3218
+ overflow-x: auto;
3219
+ overscroll-behavior-x: contain;
3220
+ padding: var(--sw-space-5);
3221
+ touch-action: pan-x pan-y;
3222
+ }
3223
+
3224
+ @media not all and (min-width: 48rem) {
3225
+ .sw-document-viewer-stage { padding: var(--sw-space-3); }
3226
+ }
3227
+
3228
+ .sw-document-viewer-stage:focus { outline: none; }
3229
+
3230
+ .sw-document-viewer-stage:focus-visible {
3231
+ border-radius: var(--sw-radius-lg);
3232
+ outline: var(--sw-focus-ring-width) solid var(--sw-color-accent);
3233
+ outline-offset: calc(-1 * var(--sw-focus-ring-width));
3234
+ }
3235
+
3236
+ .sw-document-viewer-page {
3237
+ aspect-ratio: 1 / var(--sw-document-page-aspect);
3238
+ background: var(--sw-color-surface);
3239
+ box-shadow: var(--sw-elevation-sm);
3240
+ margin-inline: auto;
3241
+ position: relative;
3242
+ width: var(--sw-document-page-width);
3243
+ }
3244
+
3245
+ .sw-document-viewer-page > canvas {
3246
+ display: block;
3247
+ height: 100%;
3248
+ width: 100%;
3249
+ }
3250
+
3251
+ .sw-document-viewer-text {
3252
+ --scale-round-x: 1px;
3253
+ --scale-round-y: 1px;
3254
+ --min-font-size: 1;
3255
+ --text-scale-factor: calc(var(--total-scale-factor) * var(--min-font-size));
3256
+ --min-font-size-inv: calc(1 / var(--min-font-size));
3257
+ forced-color-adjust: none;
3258
+ inset: 0;
3259
+ letter-spacing: normal;
3260
+ line-height: 1;
3261
+ overflow: clip;
3262
+ position: absolute;
3263
+ text-align: initial;
3264
+ text-size-adjust: none;
3265
+ transform-origin: 0 0;
3266
+ word-spacing: normal;
3267
+ }
3268
+
3269
+ .sw-document-viewer-text :is(span, br) {
3270
+ color: transparent;
3271
+ cursor: text;
3272
+ position: absolute;
3273
+ transform-origin: 0% 0%;
3274
+ user-select: text;
3275
+ white-space: pre;
3276
+ }
3277
+
3278
+ .sw-document-viewer-text > :not(.markedContent),
3279
+ .sw-document-viewer-text .markedContent span:not(.markedContent) {
3280
+ --font-height: 0;
3281
+ --scale-x: 1;
3282
+ --rotate: 0deg;
3283
+ font-size: calc(var(--text-scale-factor) * var(--font-height));
3284
+ transform: rotate(var(--rotate)) scaleX(var(--scale-x)) scale(var(--min-font-size-inv));
3285
+ }
3286
+
3287
+ .sw-document-viewer-text .markedContent { display: contents; }
3288
+
3289
+ .sw-document-viewer-text ::selection {
3290
+ background: color-mix(in srgb, var(--sw-color-accent) 30%, transparent);
3291
+ color: transparent;
3292
+ }
3293
+
3294
+ .sw-document-viewer-bar {
3295
+ align-items: center;
3296
+ display: flex;
3297
+ gap: var(--sw-space-3);
3298
+ justify-content: center;
3299
+ padding-inline: var(--sw-space-3);
3300
+ }
3301
+
3302
+ .sw-button.sw-document-viewer-step {
3303
+ border-radius: var(--sw-radius-pill);
3304
+ flex: none;
3305
+ min-height: var(--sw-space-8);
3306
+ min-width: var(--sw-space-8);
3307
+ padding-inline: 0;
3308
+ }
3309
+
3310
+ .sw-document-viewer-status {
3311
+ font-family: var(--sw-font-sans);
3312
+ font-size: 15px;
3313
+ font-variant-numeric: tabular-nums;
3314
+ line-height: 20px;
3315
+ text-align: center;
3316
+ }
3317
+
3318
+ .sw-document-viewer-message {
3319
+ align-items: center;
3320
+ display: flex;
3321
+ flex-direction: column;
3322
+ gap: var(--sw-space-2);
3323
+ justify-content: center;
3324
+ min-height: calc(4 * var(--sw-space-8));
3325
+ text-align: center;
3326
+ }
3327
+
3328
+ .sw-document-viewer-actions {
3329
+ display: flex;
3330
+ flex-wrap: wrap;
3331
+ gap: var(--sw-space-2);
3332
+ justify-content: center;
3333
+ margin-block-start: var(--sw-space-2);
3334
+ }
3335
+
3336
+ @media (forced-colors: active) {
3337
+ .sw-document-viewer { border: 1px solid CanvasText; }
3338
+ .sw-document-viewer-page { outline: 1px solid CanvasText; }
3339
+ }
3340
+
3341
+ .sw-markdown {
3342
+ color: var(--sw-color-text);
3343
+ font-family: var(--sw-font-sans);
3344
+ font-size: 17px;
3345
+ letter-spacing: -0.2px;
3346
+ line-height: 25px;
3347
+ overflow-wrap: anywhere;
3348
+ }
3349
+
3350
+ :where(.sw-markdown) > *,
3351
+ :where(.sw-markdown-quote) > *,
3352
+ :where(.sw-markdown-list li) > * { margin-block: 0; }
3353
+
3354
+ :where(.sw-markdown, .sw-markdown-quote, .sw-markdown-list li) > * + * {
3355
+ margin-block-start: var(--sw-space-4);
3356
+ }
3357
+
3358
+ :where(.sw-markdown) > * + .sw-markdown-heading { margin-block-start: var(--sw-space-6); }
3359
+ :where(.sw-markdown) > .sw-markdown-heading + * { margin-block-start: var(--sw-space-2); }
3360
+
3361
+ .sw-markdown-heading {
3362
+ color: var(--sw-color-text);
3363
+ font-weight: 600;
3364
+ scroll-margin-block-start: var(--sw-space-6);
3365
+ }
3366
+
3367
+ .sw-markdown-heading-1 {
3368
+ font-size: 20px;
3369
+ letter-spacing: -0.3px;
3370
+ line-height: 28px;
3371
+ }
3372
+
3373
+ .sw-markdown-heading-2 {
3374
+ font-size: 17px;
3375
+ line-height: 25px;
2807
3376
  }
2808
3377
 
2809
- .sw-list-row-title-plain { font-weight: 400; }
2810
-
2811
- .sw-list-row-title-danger { color: var(--sw-color-danger); }
3378
+ .sw-markdown-heading-3 {
3379
+ font-size: 15px;
3380
+ letter-spacing: -0.2px;
3381
+ line-height: 20px;
3382
+ }
2812
3383
 
2813
- .sw-list-row-detail,
2814
- .sw-list-row-value-detail {
2815
- color: var(--sw-color-muted);
2816
- font-size: 13px;
2817
- line-height: 18px;
3384
+ .sw-markdown-list {
3385
+ padding-inline-start: var(--sw-space-5);
2818
3386
  }
2819
3387
 
2820
- /* The label takes the wrap; the end keeps its words whole up to half the row. */
2821
- .sw-list-row-detail { overflow-wrap: anywhere; }
3388
+ .sw-markdown-list > li + li { margin-block-start: var(--sw-space-2); }
2822
3389
 
2823
- .sw-list-row-value,
2824
- .sw-list-row-value-detail { font-variant-numeric: tabular-nums; }
3390
+ [data-theme] .sw-markdown-link {
3391
+ color: var(--sw-color-accent);
3392
+ text-decoration-line: underline;
3393
+ }
2825
3394
 
2826
- .sw-list-row-value { font-weight: 600; }
3395
+ [data-theme] .sw-markdown-link:hover {
3396
+ text-decoration-thickness: var(--sw-focus-ring-width);
3397
+ }
2827
3398
 
2828
- .sw-list-row-value-success { color: var(--sw-color-success); }
2829
- .sw-list-row-value-danger { color: var(--sw-color-danger); }
2830
- .sw-list-row-value-muted { color: var(--sw-color-muted); }
2831
- .sw-list-row-value-accent { color: var(--sw-color-accent); }
3399
+ [data-theme] .sw-markdown-quote :is(.sw-markdown-link, .sw-markdown-caption) {
3400
+ color: var(--sw-color-text);
3401
+ }
2832
3402
 
2833
- .sw-list-row-chevron {
2834
- border-bottom: 2px solid var(--sw-color-muted);
2835
- border-right: 2px solid var(--sw-color-muted);
2836
- box-sizing: border-box;
2837
- height: var(--sw-space-2);
2838
- width: var(--sw-space-2);
2839
- flex: none;
2840
- margin-block-start: calc((20px - var(--sw-space-2)) / 2);
2841
- margin-inline-end: var(--sw-space-1);
2842
- transform: rotate(-45deg);
3403
+ .sw-markdown-quote {
3404
+ background: var(--sw-color-accentSubtle);
3405
+ border-inline-start: var(--sw-space-1) solid var(--sw-color-accent);
3406
+ border-radius: var(--sw-radius-sm);
3407
+ margin-inline: 0;
3408
+ padding: var(--sw-space-3) var(--sw-space-4);
2843
3409
  }
2844
3410
 
2845
- .sw-list-row-chevron:dir(rtl) { transform: rotate(135deg); }
3411
+ .sw-markdown-figure {
3412
+ display: flex;
3413
+ flex-direction: column;
3414
+ gap: var(--sw-space-2);
3415
+ margin-inline: 0;
3416
+ }
2846
3417
 
2847
- .sw-list-row-check {
2848
- border-bottom: 2px solid var(--sw-color-accent);
2849
- border-right: 2px solid var(--sw-color-accent);
2850
- box-sizing: border-box;
2851
- flex: none;
2852
- height: var(--sw-space-3);
2853
- margin-block-start: calc((20px - var(--sw-space-3)) / 2);
2854
- margin-inline-end: var(--sw-space-1);
2855
- transform: rotate(45deg);
2856
- width: var(--sw-space-2);
3418
+ .sw-markdown-image {
3419
+ border-radius: var(--sw-radius-md);
3420
+ display: block;
3421
+ height: auto;
3422
+ width: 100%;
3423
+ }
3424
+
3425
+ .sw-markdown-caption {
3426
+ color: var(--sw-color-muted);
3427
+ font-size: 13px;
3428
+ letter-spacing: -0.08px;
3429
+ line-height: 18px;
2857
3430
  }
2858
3431
 
2859
3432
  @media (forced-colors: active) {
2860
- .sw-list-row-check { border-color: CanvasText; }
3433
+ .sw-markdown-quote { border: 1px solid CanvasText; border-inline-start-width: var(--sw-space-1); }
2861
3434
  }
2862
3435
 
2863
3436
  [data-theme] .sw-section-nav-count,
@@ -2879,6 +3452,17 @@ body {
2879
3452
  padding-inline: var(--sw-space-1);
2880
3453
  }
2881
3454
 
3455
+ /*
3456
+ * NavCount's `tone="accent"`: a count that is news, not work waiting (what
3457
+ * was added since the person last looked), is the accent fill with its
3458
+ * on-colour figures (4.5:1 in every palette, as a primary Button's label).
3459
+ * One class more specific than the pill, so it wins in any order.
3460
+ */
3461
+ [data-theme] .sw-nav-count.sw-nav-count-accent {
3462
+ background: var(--sw-color-accent);
3463
+ color: var(--sw-color-onAccent);
3464
+ }
3465
+
2882
3466
  /*
2883
3467
  * A Nav link holding a count lays out as SectionNav's link does: the words
2884
3468
  * and the pill centred on one line a space-2 apart (the space text node
@@ -2958,6 +3542,7 @@ body {
2958
3542
  .sw-bar-chart-fill-success { background: var(--sw-color-success); }
2959
3543
  .sw-bar-chart-fill-warning { background: var(--sw-color-warning); }
2960
3544
  .sw-bar-chart-fill-danger { background: var(--sw-color-danger); }
3545
+ .sw-bar-chart-fill-neutral { background: var(--sw-color-muted); }
2961
3546
 
2962
3547
  .sw-bar-chart-value {
2963
3548
  color: var(--sw-color-text);
@@ -3016,6 +3601,16 @@ body {
3016
3601
  .sw-bar-chart-diverging .sw-bar-chart-track::before { background: CanvasText; }
3017
3602
  }
3018
3603
 
3604
+ .sw-bar-chart-bare .sw-bar-chart-track {
3605
+ background: transparent;
3606
+ border-color: transparent;
3607
+ }
3608
+
3609
+ /* Forced colours replace a transparent edge; the canvas colour hides it. */
3610
+ @media (forced-colors: active) {
3611
+ .sw-bar-chart-bare .sw-bar-chart-track { border-color: Canvas; }
3612
+ }
3613
+
3019
3614
  @media (forced-colors: active) {
3020
3615
  .sw-bar-chart-fill { background: CanvasText; }
3021
3616
  }
@@ -3698,13 +4293,27 @@ body {
3698
4293
 
3699
4294
  .sw-dialog-footer-status {
3700
4295
  align-items: center;
4296
+ column-gap: var(--sw-space-2);
3701
4297
  display: flex;
3702
4298
  flex: 1 1 auto;
4299
+ flex-wrap: wrap;
3703
4300
  min-width: 0;
3704
4301
  }
3705
4302
 
3706
- /* With no summary the live region stays in the dialog, so a first figure
3707
- is still announced, but it takes no room in the footer. */
4303
+ /* The status line: muted caption words beside the actions. Its children
4304
+ sit on one row and wrap as one phrase. */
4305
+ .sw-dialog-footer-note {
4306
+ color: var(--sw-color-muted);
4307
+ font-family: var(--sw-font-sans);
4308
+ font-size: 13px;
4309
+ line-height: 18px;
4310
+ min-width: 0;
4311
+ overflow-wrap: anywhere;
4312
+ }
4313
+
4314
+ /* With no figure and no status line the live region stays in the
4315
+ dialog, so a first figure is still announced, but it takes no room in
4316
+ the footer. */
3708
4317
  .sw-dialog-footer-status:empty {
3709
4318
  clip-path: inset(50%);
3710
4319
  height: 1px;
@@ -3772,6 +4381,36 @@ body {
3772
4381
  .sw-dialog-banded .sw-dialog-header { border-bottom-color: CanvasText; }
3773
4382
  }
3774
4383
 
4384
+ .sw-dialog.sw-dialog-canvas-grouped {
4385
+ backdrop-filter: none;
4386
+ -webkit-backdrop-filter: none;
4387
+ background: var(--sw-canvas-grouped);
4388
+ }
4389
+
4390
+ .sw-dialog-grabber { display: none; }
4391
+
4392
+ @media not all and (min-width: 48rem) {
4393
+ .sw-dialog-sheet-below-md .sw-dialog-grabber {
4394
+ background: color-mix(in srgb, var(--sw-color-muted) 40%, transparent);
4395
+ border-radius: var(--sw-radius-pill);
4396
+ display: block;
4397
+ height: var(--sw-space-1);
4398
+ margin: calc(var(--sw-space-2) - var(--sw-space-5)) auto var(--sw-space-3);
4399
+ position: sticky;
4400
+ top: calc(var(--sw-space-2) - var(--sw-space-5));
4401
+ width: var(--sw-space-6);
4402
+ z-index: 6;
4403
+ }
4404
+
4405
+ .sw-dialog-sheet-below-md.sw-dialog-banded.sw-dialog-has-grabber .sw-dialog-header {
4406
+ padding-top: var(--sw-space-5);
4407
+ }
4408
+
4409
+ @media (forced-colors: active) {
4410
+ .sw-dialog-sheet-below-md .sw-dialog-grabber { background: CanvasText; forced-color-adjust: none; }
4411
+ }
4412
+ }
4413
+
3775
4414
  .sw-accordion {
3776
4415
  background: var(--sw-glass-fill);
3777
4416
  border: 1px solid var(--sw-glass-border);
@@ -4660,6 +5299,29 @@ body {
4660
5299
  line-height: 18px;
4661
5300
  }
4662
5301
 
5302
+ .sw-switch-trailing {
5303
+ align-items: flex-start;
5304
+ display: flex;
5305
+ gap: var(--sw-space-3);
5306
+ justify-content: space-between;
5307
+ width: 100%;
5308
+ }
5309
+
5310
+ .sw-switch-trailing .sw-switch-copy {
5311
+ flex: 1 1 auto;
5312
+ min-width: 0;
5313
+ padding-block: calc((var(--sw-control-md-min-height) - 20px) / 2);
5314
+ }
5315
+
5316
+ .sw-switch-success .sw-switch-input:checked + .sw-switch-track {
5317
+ background: var(--sw-color-success);
5318
+ border-color: var(--sw-color-success);
5319
+ }
5320
+
5321
+ @media (forced-colors: active) {
5322
+ .sw-switch-success .sw-switch-input:checked + .sw-switch-track { background: Highlight; border-color: Highlight; }
5323
+ }
5324
+
4663
5325
  @media (prefers-reduced-motion: reduce) {
4664
5326
  .sw-switch-thumb { transition: none; }
4665
5327
  }
@@ -5288,6 +5950,28 @@ body {
5288
5950
  border-color: var(--sw-color-danger);
5289
5951
  }
5290
5952
 
5953
+ .sw-filter-chip-count-inline {
5954
+ font-variant-numeric: tabular-nums;
5955
+ }
5956
+
5957
+ .sw-filter-chips-scroll .sw-filter-chips-options {
5958
+ flex-wrap: nowrap;
5959
+ margin: calc(-1 * calc(var(--sw-focus-ring-width) + var(--sw-focus-ring-offset)));
5960
+ overflow-x: auto;
5961
+ overscroll-behavior-x: contain;
5962
+ padding: calc(var(--sw-focus-ring-width) + var(--sw-focus-ring-offset));
5963
+ scrollbar-width: thin;
5964
+ }
5965
+
5966
+ .sw-filter-chips-scroll .sw-filter-chip {
5967
+ flex: none;
5968
+ max-width: none;
5969
+ }
5970
+
5971
+ .sw-filter-chips-scroll .sw-filter-chip-face {
5972
+ white-space: nowrap;
5973
+ }
5974
+
5291
5975
  @media (forced-colors: active) {
5292
5976
  .sw-filter-chip-face { background: Canvas; border-color: CanvasText; color: CanvasText; }
5293
5977
  .sw-filter-chips-error { color: Mark; }
@@ -5865,6 +6549,146 @@ body {
5865
6549
  .sw-denomination-strip .sw-denomination-value-row .sw-denomination-value { color: CanvasText; }
5866
6550
  }
5867
6551
 
6552
+ .sw-denomination-transposed {
6553
+ border-collapse: collapse;
6554
+ width: 100%;
6555
+ }
6556
+
6557
+ .sw-denomination-transposed th,
6558
+ .sw-denomination-transposed td {
6559
+ padding: var(--sw-space-1) var(--sw-space-2);
6560
+ vertical-align: middle;
6561
+ }
6562
+
6563
+ .sw-denomination-transposed tbody tr,
6564
+ .sw-denomination-transposed tfoot tr {
6565
+ border-top: 1px solid var(--sw-color-border);
6566
+ }
6567
+
6568
+ .sw-denomination-transposed .sw-denomination-transposed-head {
6569
+ vertical-align: bottom;
6570
+ white-space: nowrap;
6571
+ }
6572
+
6573
+ .sw-denomination-transposed .sw-denomination-label-line {
6574
+ justify-content: flex-end;
6575
+ }
6576
+
6577
+ .sw-denomination-transposed-label {
6578
+ color: var(--sw-color-text);
6579
+ font-size: 15px;
6580
+ font-weight: 600;
6581
+ letter-spacing: -0.2px;
6582
+ line-height: 20px;
6583
+ text-align: start;
6584
+ white-space: nowrap;
6585
+ }
6586
+
6587
+ .sw-denomination-transposed td.sw-denomination-entry {
6588
+ padding: var(--sw-space-1);
6589
+ }
6590
+
6591
+ .sw-denomination-transposed-entry .sw-denomination-transposed-head,
6592
+ .sw-denomination-transposed-entry .sw-denomination-cell {
6593
+ text-align: center;
6594
+ }
6595
+
6596
+ .sw-denomination-transposed-entry .sw-denomination-label-line {
6597
+ justify-content: center;
6598
+ }
6599
+
6600
+ .sw-denomination-transposed-value {
6601
+ background: var(--sw-color-subtle);
6602
+ font-size: 15px;
6603
+ font-variant-numeric: tabular-nums;
6604
+ font-weight: 500;
6605
+ letter-spacing: -0.2px;
6606
+ line-height: 20px;
6607
+ text-align: center;
6608
+ white-space: nowrap;
6609
+ }
6610
+
6611
+ .sw-denomination-transposed-total {
6612
+ color: var(--sw-denomination-tone);
6613
+ font-size: 13px;
6614
+ font-variant-numeric: tabular-nums;
6615
+ font-weight: 600;
6616
+ letter-spacing: -0.08px;
6617
+ line-height: 18px;
6618
+ text-align: end;
6619
+ white-space: nowrap;
6620
+ }
6621
+
6622
+ .sw-denomination-transposed-entry .sw-denomination-transposed-total {
6623
+ text-align: center;
6624
+ }
6625
+
6626
+ /* The denomination column and its corner stay in view, as the strip's labels do. */
6627
+ .sw-denomination-transposed .sw-denomination-transposed-label,
6628
+ .sw-denomination-transposed :is(thead, tfoot) .sw-denomination-corner:first-child {
6629
+ background: var(--sw-glass-fill);
6630
+ backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
6631
+ -webkit-backdrop-filter: blur(var(--sw-glass-blur)) saturate(var(--sw-glass-saturate));
6632
+ inset-inline-start: 0;
6633
+ position: sticky;
6634
+ z-index: 1;
6635
+ }
6636
+
6637
+ .sw-denomination-scroll-transposed.sw-scroll-more-start .sw-denomination-transposed-label::after {
6638
+ background: linear-gradient(to right, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent);
6639
+ content: '';
6640
+ inset-block: 0;
6641
+ inset-inline-start: 100%;
6642
+ pointer-events: none;
6643
+ position: absolute;
6644
+ width: var(--sw-space-5);
6645
+ }
6646
+
6647
+ .sw-denomination-scroll-transposed.sw-scroll-more-start:dir(rtl) .sw-denomination-transposed-label::after {
6648
+ background: linear-gradient(to left, color-mix(in srgb, var(--sw-color-text) 28%, transparent), transparent);
6649
+ }
6650
+
6651
+ @media (forced-colors: active) {
6652
+ .sw-denomination-scroll-transposed.sw-scroll-more-start .sw-denomination-transposed-label::after { display: none; }
6653
+ }
6654
+
6655
+ .sw-denomination-transposed-quiet {
6656
+ background: var(--sw-color-subtle);
6657
+ }
6658
+
6659
+ /* Over a toned count's full strength (three classes, emitted later). */
6660
+ .sw-denomination-grid.sw-denomination-transposed .sw-denomination-transposed-disabled:is(.sw-denomination-cell, .sw-denomination-transposed-value, .sw-denomination-transposed-total, .sw-denomination-transposed-head) {
6661
+ opacity: var(--sw-disabled-opacity);
6662
+ }
6663
+
6664
+ @media (forced-colors: active) {
6665
+ .sw-denomination-transposed-value,
6666
+ .sw-denomination-transposed-quiet { background: Canvas; }
6667
+ .sw-denomination-transposed-label,
6668
+ .sw-denomination-transposed-value,
6669
+ .sw-denomination-transposed-total { color: CanvasText; }
6670
+ }
6671
+
6672
+ .sw-denomination-cell-signed.sw-denomination-cell-positive {
6673
+ color: var(--sw-color-success);
6674
+ }
6675
+
6676
+ .sw-denomination-cell-negative.sw-denomination-cell-plain {
6677
+ color: var(--sw-color-text);
6678
+ }
6679
+
6680
+ .sw-denomination-count-digits .sw-denomination-entry .sw-stepper-full .sw-stepper-track {
6681
+ font-size: 17px;
6682
+ font-variant-numeric: tabular-nums;
6683
+ font-weight: 600;
6684
+ grid-template-columns: var(--sw-space-6) minmax(calc(var(--sw-denomination-count-digits) * 1ch + 2 * var(--sw-space-1) + 2px), 1fr) var(--sw-space-6);
6685
+ }
6686
+
6687
+ @media (forced-colors: active) {
6688
+ .sw-denomination-cell-signed.sw-denomination-cell-positive,
6689
+ .sw-denomination-cell-negative.sw-denomination-cell-plain { color: CanvasText; }
6690
+ }
6691
+
5868
6692
  @media (forced-colors: active) {
5869
6693
  .sw-denomination-label { border-inline-start-color: CanvasText; color: CanvasText; }
5870
6694
  .sw-denomination-strip .sw-denomination-label::before { background: CanvasText; forced-color-adjust: none; }
@@ -6093,6 +6917,27 @@ body {
6093
6917
  linear-gradient(135deg, var(--sw-color-muted) 50%, transparent 50%); }
6094
6918
  }
6095
6919
 
6920
+ .sw-field-width-xs { --sw-field-width: 4rem; }
6921
+ .sw-field-width-sm { --sw-field-width: 6rem; }
6922
+ .sw-field-width-md { --sw-field-width: 8rem; }
6923
+ .sw-field-width-lg { --sw-field-width: 12rem; }
6924
+ .sw-field-width-xl { --sw-field-width: 16rem; }
6925
+
6926
+ .sw-field-sized > :is(input[type='text'], input[type='email'], input[type='number'], input[type='search'], input[type='url'], input[type='password'], input:not([type]), textarea, select, .sw-field-adorned, .sw-field-search) {
6927
+ align-self: flex-start;
6928
+ box-sizing: border-box;
6929
+ inline-size: min(100%, var(--sw-field-width));
6930
+ max-inline-size: 100%;
6931
+ }
6932
+
6933
+ [data-theme] .sw-field-sized > select {
6934
+ height: var(--sw-control-md-min-height);
6935
+ }
6936
+
6937
+ [data-theme] .sw-field-xs.sw-field-sized > select {
6938
+ height: var(--sw-control-xs-min-height);
6939
+ }
6940
+
6096
6941
  @media (forced-colors: active) {
6097
6942
  [data-theme] .sw-field-invalid :is(input, select, textarea),
6098
6943
  .sw-field-invalid .sw-field-adorned { border-color: Mark; }