@capillaryjs/capillary-ui 1.0.0-alpha.1

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 (178) hide show
  1. package/CHANGELOG.md +459 -0
  2. package/LICENSE +55 -0
  3. package/NOTICE +2 -0
  4. package/README.md +853 -0
  5. package/colors/README.md +63 -0
  6. package/colors/gray/colors.css +16 -0
  7. package/colors/green/colors.css +16 -0
  8. package/colors/iceblue/colors.css +19 -0
  9. package/colors/ocean/colors.css +16 -0
  10. package/colors/orange/colors.css +16 -0
  11. package/colors/purple/colors.css +16 -0
  12. package/colors/red/colors.css +16 -0
  13. package/colors/yellow/colors.css +16 -0
  14. package/dist/Components/Placeholder.d.ts +15 -0
  15. package/dist/Components/Placeholder.d.ts.map +1 -0
  16. package/dist/Components/app/app.d.ts +41 -0
  17. package/dist/Components/app/app.d.ts.map +1 -0
  18. package/dist/Components/component.d.ts +256 -0
  19. package/dist/Components/component.d.ts.map +1 -0
  20. package/dist/Components/controlUtils.d.ts +23 -0
  21. package/dist/Components/controlUtils.d.ts.map +1 -0
  22. package/dist/Components/data/descriptionList.d.ts +23 -0
  23. package/dist/Components/data/descriptionList.d.ts.map +1 -0
  24. package/dist/Components/data/filterState.d.ts +38 -0
  25. package/dist/Components/data/filterState.d.ts.map +1 -0
  26. package/dist/Components/data/infoPanel.d.ts +29 -0
  27. package/dist/Components/data/infoPanel.d.ts.map +1 -0
  28. package/dist/Components/data/listview/listview.d.ts +51 -0
  29. package/dist/Components/data/listview/listview.d.ts.map +1 -0
  30. package/dist/Components/data/selectionhandler.d.ts +87 -0
  31. package/dist/Components/data/selectionhandler.d.ts.map +1 -0
  32. package/dist/Components/data/table/DataTable.d.ts +79 -0
  33. package/dist/Components/data/table/DataTable.d.ts.map +1 -0
  34. package/dist/Components/data/table/FilterPanel.d.ts +41 -0
  35. package/dist/Components/data/table/FilterPanel.d.ts.map +1 -0
  36. package/dist/Components/data/table/TableHeader.d.ts +23 -0
  37. package/dist/Components/data/table/TableHeader.d.ts.map +1 -0
  38. package/dist/Components/data/table/TableHeaderCell.d.ts +41 -0
  39. package/dist/Components/data/table/TableHeaderCell.d.ts.map +1 -0
  40. package/dist/Components/data/table/tableDataSource.d.ts +49 -0
  41. package/dist/Components/data/table/tableDataSource.d.ts.map +1 -0
  42. package/dist/Components/data/table/tableQuery.d.ts +29 -0
  43. package/dist/Components/data/table/tableQuery.d.ts.map +1 -0
  44. package/dist/Components/data/treeview/treeModel.d.ts +23 -0
  45. package/dist/Components/data/treeview/treeModel.d.ts.map +1 -0
  46. package/dist/Components/data/treeview/treeitem.d.ts +21 -0
  47. package/dist/Components/data/treeview/treeitem.d.ts.map +1 -0
  48. package/dist/Components/data/treeview/treeview.d.ts +49 -0
  49. package/dist/Components/data/treeview/treeview.d.ts.map +1 -0
  50. package/dist/Components/dialog/dialog.d.ts +46 -0
  51. package/dist/Components/dialog/dialog.d.ts.map +1 -0
  52. package/dist/Components/layout/declarativeRegion.d.ts +30 -0
  53. package/dist/Components/layout/declarativeRegion.d.ts.map +1 -0
  54. package/dist/Components/layout/groupBox.d.ts +21 -0
  55. package/dist/Components/layout/groupBox.d.ts.map +1 -0
  56. package/dist/Components/layout/header.d.ts +20 -0
  57. package/dist/Components/layout/header.d.ts.map +1 -0
  58. package/dist/Components/layout/layout.d.ts +28 -0
  59. package/dist/Components/layout/layout.d.ts.map +1 -0
  60. package/dist/Components/layout/layoutTraits.d.ts +39 -0
  61. package/dist/Components/layout/layoutTraits.d.ts.map +1 -0
  62. package/dist/Components/layout/optionGroup.d.ts +35 -0
  63. package/dist/Components/layout/optionGroup.d.ts.map +1 -0
  64. package/dist/Components/layout/optionsBox.d.ts +12 -0
  65. package/dist/Components/layout/optionsBox.d.ts.map +1 -0
  66. package/dist/Components/layout/panel.d.ts +34 -0
  67. package/dist/Components/layout/panel.d.ts.map +1 -0
  68. package/dist/Components/layout/routedSelection.d.ts +10 -0
  69. package/dist/Components/layout/routedSelection.d.ts.map +1 -0
  70. package/dist/Components/layout/sidebar.d.ts +27 -0
  71. package/dist/Components/layout/sidebar.d.ts.map +1 -0
  72. package/dist/Components/layout/splitView.d.ts +82 -0
  73. package/dist/Components/layout/splitView.d.ts.map +1 -0
  74. package/dist/Components/layout/tabpanel/tab.d.ts +15 -0
  75. package/dist/Components/layout/tabpanel/tab.d.ts.map +1 -0
  76. package/dist/Components/layout/tabpanel/tabline.d.ts +31 -0
  77. package/dist/Components/layout/tabpanel/tabline.d.ts.map +1 -0
  78. package/dist/Components/layout/tabpanel/tabpanel.d.ts +44 -0
  79. package/dist/Components/layout/tabpanel/tabpanel.d.ts.map +1 -0
  80. package/dist/Components/lineinputs/CheckableControl.d.ts +7 -0
  81. package/dist/Components/lineinputs/CheckableControl.d.ts.map +1 -0
  82. package/dist/Components/lineinputs/LabeledInputControl.d.ts +7 -0
  83. package/dist/Components/lineinputs/LabeledInputControl.d.ts.map +1 -0
  84. package/dist/Components/lineinputs/SelectControl.d.ts +7 -0
  85. package/dist/Components/lineinputs/SelectControl.d.ts.map +1 -0
  86. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts +46 -0
  87. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts.map +1 -0
  88. package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts +11 -0
  89. package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts.map +1 -0
  90. package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts +11 -0
  91. package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts.map +1 -0
  92. package/dist/Components/lineinputs/datetime/Calendar.d.ts +23 -0
  93. package/dist/Components/lineinputs/datetime/Calendar.d.ts.map +1 -0
  94. package/dist/Components/lineinputs/datetime/DatePicker.d.ts +62 -0
  95. package/dist/Components/lineinputs/datetime/DatePicker.d.ts.map +1 -0
  96. package/dist/Components/lineinputs/datetime/DateTimePicker.d.ts +52 -0
  97. package/dist/Components/lineinputs/datetime/DateTimePicker.d.ts.map +1 -0
  98. package/dist/Components/lineinputs/datetime/TimePicker.d.ts +46 -0
  99. package/dist/Components/lineinputs/datetime/TimePicker.d.ts.map +1 -0
  100. package/dist/Components/lineinputs/datetime/civilDate.d.ts +37 -0
  101. package/dist/Components/lineinputs/datetime/civilDate.d.ts.map +1 -0
  102. package/dist/Components/lineinputs/datetime/timeString.d.ts +26 -0
  103. package/dist/Components/lineinputs/datetime/timeString.d.ts.map +1 -0
  104. package/dist/Components/lineinputs/dropdown.d.ts +49 -0
  105. package/dist/Components/lineinputs/dropdown.d.ts.map +1 -0
  106. package/dist/Components/lineinputs/label.d.ts +14 -0
  107. package/dist/Components/lineinputs/label.d.ts.map +1 -0
  108. package/dist/Components/lineinputs/radio.d.ts +69 -0
  109. package/dist/Components/lineinputs/radio.d.ts.map +1 -0
  110. package/dist/Components/lineinputs/textbox.d.ts +40 -0
  111. package/dist/Components/lineinputs/textbox.d.ts.map +1 -0
  112. package/dist/Components/lineinputs/toggle.d.ts +40 -0
  113. package/dist/Components/lineinputs/toggle.d.ts.map +1 -0
  114. package/dist/Components/menu/button.d.ts +31 -0
  115. package/dist/Components/menu/button.d.ts.map +1 -0
  116. package/dist/Components/menu/toolbar.d.ts +15 -0
  117. package/dist/Components/menu/toolbar.d.ts.map +1 -0
  118. package/dist/Components/navigation/breadcrumb.d.ts +31 -0
  119. package/dist/Components/navigation/breadcrumb.d.ts.map +1 -0
  120. package/dist/Components/navigation/navigationBar.d.ts +53 -0
  121. package/dist/Components/navigation/navigationBar.d.ts.map +1 -0
  122. package/dist/Components/status/progressBar.d.ts +23 -0
  123. package/dist/Components/status/progressBar.d.ts.map +1 -0
  124. package/dist/Components/status/statusPresentation.d.ts +21 -0
  125. package/dist/Components/status/statusPresentation.d.ts.map +1 -0
  126. package/dist/Components/theme/stylesheetPicker.d.ts +42 -0
  127. package/dist/Components/theme/stylesheetPicker.d.ts.map +1 -0
  128. package/dist/index.d.ts +68 -0
  129. package/dist/index.d.ts.map +1 -0
  130. package/dist/index.js +7736 -0
  131. package/dist/index.js.map +1 -0
  132. package/dist/jsx-dev-runtime-BAF7C1E1.js +1368 -0
  133. package/dist/jsx-dev-runtime-BAF7C1E1.js.map +1 -0
  134. package/dist/jsx-dev-runtime.d.ts +2 -0
  135. package/dist/jsx-dev-runtime.d.ts.map +1 -0
  136. package/dist/jsx-dev-runtime.js +6 -0
  137. package/dist/jsx-dev-runtime.js.map +1 -0
  138. package/dist/jsx-runtime.d.ts +26 -0
  139. package/dist/jsx-runtime.d.ts.map +1 -0
  140. package/dist/jsx-runtime.js +9 -0
  141. package/dist/jsx-runtime.js.map +1 -0
  142. package/dist/localization.d.ts +76 -0
  143. package/dist/localization.d.ts.map +1 -0
  144. package/dist/routing/RouteLink.d.ts +18 -0
  145. package/dist/routing/RouteLink.d.ts.map +1 -0
  146. package/dist/routing/RouteOutlet.d.ts +38 -0
  147. package/dist/routing/RouteOutlet.d.ts.map +1 -0
  148. package/dist/routing/RouteQuery.d.ts +19 -0
  149. package/dist/routing/RouteQuery.d.ts.map +1 -0
  150. package/dist/routing/RouteScope.d.ts +18 -0
  151. package/dist/routing/RouteScope.d.ts.map +1 -0
  152. package/dist/routing/RouteValue.d.ts +19 -0
  153. package/dist/routing/RouteValue.d.ts.map +1 -0
  154. package/dist/routing/navigationAdapter.d.ts +33 -0
  155. package/dist/routing/navigationAdapter.d.ts.map +1 -0
  156. package/dist/routing/route.d.ts +64 -0
  157. package/dist/routing/route.d.ts.map +1 -0
  158. package/dist/routing/router.d.ts +109 -0
  159. package/dist/routing/router.d.ts.map +1 -0
  160. package/dist/runtime.d.ts +34 -0
  161. package/dist/runtime.d.ts.map +1 -0
  162. package/dist/services.d.ts +45 -0
  163. package/dist/services.d.ts.map +1 -0
  164. package/dist/styling/styleRegistry.d.ts +15 -0
  165. package/dist/styling/styleRegistry.d.ts.map +1 -0
  166. package/dist/styling/theme.d.ts +39 -0
  167. package/dist/styling/theme.d.ts.map +1 -0
  168. package/dist/util/filterMode.d.ts +15 -0
  169. package/dist/util/filterMode.d.ts.map +1 -0
  170. package/docs/application-composition-guide.md +843 -0
  171. package/docs/application-layout-guide.md +553 -0
  172. package/package.json +90 -0
  173. package/styles/structural.css +2388 -0
  174. package/themes/README.md +99 -0
  175. package/themes/base.css +344 -0
  176. package/themes/java/theme.css +21 -0
  177. package/themes/minimal/theme.css +7 -0
  178. package/themes/shiny/theme.css +168 -0
@@ -0,0 +1,2388 @@
1
+ /* Generated by scripts/build-structural-css.mjs. Do not edit directly. */
2
+
3
+ .cap-fill-horizontal,
4
+ .cap-fill-vertical {
5
+ box-sizing: border-box;
6
+ background: var(--application-background);
7
+ color: var(--ui-color);
8
+ font-family: var(--font-family);
9
+ font-size: var(--font-size);
10
+ line-height: var(--line-height);
11
+ }
12
+
13
+ .cap-fill-horizontal {
14
+ width: 100vw;
15
+ max-width: 100vw;
16
+ min-width: 0;
17
+ overflow-x: auto;
18
+ }
19
+
20
+ .cap-fill-vertical {
21
+ height: 100vh;
22
+ max-height: 100vh;
23
+ min-height: 0;
24
+ overflow-y: auto;
25
+ }
26
+
27
+ .cap-layout-horizontal,
28
+ .cap-layout-vertical {
29
+ display: flex;
30
+ align-items: stretch;
31
+ min-inline-size: 0;
32
+ min-block-size: 0;
33
+ }
34
+
35
+ .cap-layout-horizontal {
36
+ flex-direction: row;
37
+ }
38
+
39
+ .cap-layout-vertical {
40
+ flex-direction: column;
41
+ }
42
+
43
+ .cap-size-natural {
44
+ flex: 0 0 auto;
45
+ }
46
+
47
+ .cap-size-flexible {
48
+ flex: 1 1 0;
49
+ min-inline-size: 0;
50
+ min-block-size: 0;
51
+ }
52
+
53
+ .cap-scroll {
54
+ overflow: auto;
55
+ min-inline-size: 0;
56
+ min-block-size: 0;
57
+ }
58
+
59
+ .colored {
60
+ --colored-base-bg:
61
+ linear-gradient(
62
+ 15deg,
63
+ var(--c1) 0%,
64
+ var(--c2) 65%,
65
+ var(--c2) 65%,
66
+ var(--c3) 100%
67
+ );
68
+
69
+ background: var(--colored-base-bg);
70
+ box-shadow: var(--colored-shadow);
71
+ border-radius: var(--ui-border-radius);
72
+ }
73
+
74
+ .app-footer.island,
75
+ .island {
76
+ box-sizing: border-box;
77
+ min-width: 0;
78
+ min-height: 0;
79
+ margin: var(--island-margin);
80
+ padding: var(--island-padding);
81
+ background: var(--island-background);
82
+ border: var(--island-border);
83
+ border-radius: var(--island-radius);
84
+ box-shadow: var(--island-shadow);
85
+ }
86
+
87
+ .cap-fill-horizontal.island,
88
+ .cap-fill-horizontal .island {
89
+ max-width: calc(100% - (2 * var(--island-margin)));
90
+ overflow-x: auto;
91
+ }
92
+
93
+ .cap-fill-vertical.island,
94
+ .cap-fill-vertical .island {
95
+ max-height: calc(100% - (2 * var(--island-margin)));
96
+ overflow-y: auto;
97
+ }
98
+
99
+ label[data-cap] {
100
+ user-select: none;
101
+ }
102
+
103
+ cap-breadcrumb {
104
+ display: block;
105
+ min-width: 0;
106
+ user-select: none;
107
+ }
108
+
109
+ cap-breadcrumb > nav > ol {
110
+ display: flex;
111
+ flex-flow: row wrap;
112
+ align-items: center;
113
+ gap: var(--breadcrumb-gap, 0.375rem);
114
+ margin: 0;
115
+ padding: 0;
116
+ list-style: none;
117
+ min-width: 0;
118
+ }
119
+
120
+ cap-breadcrumb > nav > ol > li {
121
+ display: inline-flex;
122
+ align-items: center;
123
+ min-width: 0;
124
+ }
125
+
126
+ cap-breadcrumb > nav > ol > li + li::before {
127
+ content: "/";
128
+ margin-inline-end: var(--breadcrumb-gap, 0.375rem);
129
+ color: var(--breadcrumb-separator-color, var(--muted-color, currentColor));
130
+ opacity: 0.6;
131
+ }
132
+
133
+ cap-breadcrumb > nav > ol > li > a {
134
+ color: var(--breadcrumb-link-color, inherit);
135
+ text-decoration: none;
136
+ white-space: nowrap;
137
+ }
138
+
139
+ cap-breadcrumb > nav > ol > li > a:hover {
140
+ text-decoration: underline;
141
+ }
142
+
143
+ cap-breadcrumb > nav > ol > li > [aria-current="page"] {
144
+ font-weight: var(--breadcrumb-current-font-weight, 600);
145
+ }
146
+
147
+ cap-button > button {
148
+ min-height: var(--control-min-height, 2rem);
149
+ padding: var(--space-xs) var(--space-sm);
150
+ color: var(--button-color);
151
+ background: var(--button-background);
152
+ border: var(--button-border);
153
+ border-radius: var(--radius-md);
154
+ box-shadow: var(--button-shadow);
155
+ box-sizing: border-box;
156
+ cursor: default;
157
+ font-family: inherit;
158
+ font-size: var(--ui-font-size);
159
+ line-height: calc(var(--ui-font-size) + var(--ui-padding) + var(--ui-padding));
160
+ user-select: none;
161
+ white-space: nowrap;
162
+ }
163
+
164
+ cap-button {
165
+ display: inline-flex;
166
+ position: relative;
167
+ flex-flow: row wrap;
168
+ }
169
+
170
+ cap-button > button:hover:not(:disabled, [aria-disabled="true"]) {
171
+ background: var(--button-background-hover);
172
+ }
173
+
174
+ cap-button > button:active:not(:disabled, [aria-disabled="true"]) {
175
+ background: var(--button-background-active);
176
+ border-style: var(--button-border-style-active);
177
+ box-shadow: var(--button-shadow-active);
178
+ }
179
+
180
+ cap-button > button:focus-visible {
181
+ outline: 2px solid transparent;
182
+ outline-offset: 1px;
183
+ box-shadow: var(--focus-ring);
184
+ }
185
+
186
+ cap-button > button:disabled,
187
+ cap-button > button[aria-disabled="true"] {
188
+ color: var(--input-color-disabled);
189
+ background: var(--button-background-disabled);
190
+ border: var(--button-border-disabled);
191
+ cursor: not-allowed;
192
+ pointer-events: none;
193
+ }
194
+
195
+ cap-button > button[aria-busy="true"]:not([aria-invalid="true"]) {
196
+ background: var(--working-background-image), var(--button-background-disabled);
197
+ background-repeat: repeat, no-repeat;
198
+ background-size: 2rem 2rem, 100% 100%;
199
+ animation: cap-working-progress .55s linear infinite;
200
+ }
201
+
202
+ cap-button > button[aria-invalid="true"] {
203
+ border-color: var(--error-color);
204
+ }
205
+
206
+ @media (prefers-reduced-motion: reduce) {
207
+ cap-button > button[aria-busy="true"] {
208
+ animation: none !important;
209
+ }
210
+ }
211
+
212
+ @media (forced-colors: active) {
213
+ cap-button > button[aria-invalid="true"] {
214
+ outline: 2px solid Mark;
215
+ outline-offset: 1px;
216
+ }
217
+ }
218
+
219
+ cap-error {
220
+ position: absolute;
221
+ z-index: 1200;
222
+ inset-block-start: -.35em;
223
+ inset-inline-end: -.35em;
224
+ display: block;
225
+ width: 1.25em;
226
+ height: 1.25em;
227
+ margin: 0;
228
+ color: var(--error-color);
229
+ font-size: .875em;
230
+ line-height: 1.35;
231
+ outline: none;
232
+ box-sizing: border-box;
233
+ }
234
+
235
+ cap-error > cap-erroricon {
236
+ position: absolute;
237
+ inset: 0;
238
+ display: grid;
239
+ width: 1.25em;
240
+ height: 1.25em;
241
+ color: var(--error-contrast);
242
+ background: var(--error-color);
243
+ border: 1px solid var(--error-color);
244
+ border-radius: 50%;
245
+ box-sizing: border-box;
246
+ font-weight: 700;
247
+ line-height: 1;
248
+ place-items: center;
249
+ }
250
+
251
+ cap-error > cap-erroricon::before {
252
+ content: "!";
253
+ }
254
+
255
+ cap-error > cap-errortext {
256
+ position: absolute;
257
+ z-index: 1;
258
+ inset-block-start: calc(100% + .25em);
259
+ inset-inline-end: 0;
260
+ display: block;
261
+ visibility: hidden;
262
+ width: max-content;
263
+ max-width: min(22rem, 80vw);
264
+ padding: var(--space-xs) var(--space-sm);
265
+ color: var(--ui-color);
266
+ background: var(--error-bg-neutral, var(--application-background));
267
+ border: 1px solid var(--error-color);
268
+ border-radius: var(--radius-md);
269
+ box-shadow: var(--ui-shadow);
270
+ opacity: 0;
271
+ overflow-wrap: anywhere;
272
+ pointer-events: none;
273
+ transform: translateY(-.2em);
274
+ transition: opacity var(--motion-fast), transform var(--motion-fast), visibility 0s linear var(--motion-fast);
275
+ }
276
+
277
+ cap-error > cap-erroricon:hover + cap-errortext,
278
+ cap-error:focus-visible > cap-errortext {
279
+ visibility: visible;
280
+ opacity: 1;
281
+ transform: translateY(0);
282
+ transition-delay: 0s;
283
+ }
284
+
285
+ cap-error:focus-visible > cap-erroricon {
286
+ outline: 2px solid transparent;
287
+ outline-offset: 1px;
288
+ box-shadow: var(--focus-ring);
289
+ }
290
+
291
+ @media (forced-colors: active) {
292
+ cap-error > cap-erroricon,
293
+ cap-error > cap-errortext {
294
+ color: CanvasText;
295
+ background: Canvas;
296
+ border-color: Mark;
297
+ forced-color-adjust: auto;
298
+ }
299
+ }
300
+
301
+ @keyframes cap-working-progress {
302
+ from { background-position: 0 0, 0 0; }
303
+ to { background-position: 2rem 0, 0 0; }
304
+ }
305
+
306
+ cap-checkbox,
307
+ cap-quadcheckbox,
308
+ cap-radiobutton,
309
+ cap-tricheckbox {
310
+ display: inline-flex;
311
+ position: relative;
312
+ flex-flow: row wrap;
313
+ line-height: 1;
314
+ }
315
+
316
+ cap-checkbox > label,
317
+ cap-quadcheckbox > label,
318
+ cap-radiobutton > label,
319
+ cap-tricheckbox > label {
320
+ display: flex;
321
+ flex-flow: row nowrap;
322
+ position: relative;
323
+ line-height: calc(var(--ui-font-size) + var(--ui-padding) + var(--ui-padding));
324
+ font-size: var(--ui-font-size);
325
+ height: calc(var(--ui-font-size) + var(--ui-padding-h) + var(--ui-padding-h));
326
+ color: var(--ui-text-color);
327
+ border-radius: var(--ui-border-radius);
328
+ box-sizing: border-box;
329
+ align-items: center;
330
+ gap: .3em;
331
+ align-content: center;
332
+ justify-content: center;
333
+ justify-items: center;
334
+ cursor: pointer;
335
+ user-select: none;
336
+ }
337
+
338
+ cap-checkbox > label:has(> input:disabled),
339
+ cap-quadcheckbox > label:has(> input:disabled),
340
+ cap-radiobutton > label:has(> input:disabled),
341
+ cap-tricheckbox > label:has(> input:disabled) {
342
+ color: var(--checkable-label-color-disabled);
343
+ cursor: not-allowed;
344
+ }
345
+
346
+ cap-checkbox > label > input,
347
+ cap-quadcheckbox > label > input,
348
+ cap-radiobutton > label > input,
349
+ cap-tricheckbox > label > input {
350
+ position: absolute;
351
+ width: 1px;
352
+ height: 1px;
353
+ padding: 0;
354
+ margin: -1px;
355
+ overflow: hidden;
356
+ clip: rect(0 0 0 0);
357
+ white-space: nowrap;
358
+ border: 0;
359
+ font: inherit;
360
+ font-size: var(--ui-font-size, inherit);
361
+ }
362
+
363
+ cap-checkbox > label > input + cap-checkshell,
364
+ cap-quadcheckbox > label > input + cap-checkshell,
365
+ cap-radiobutton > label > input + cap-checkshell,
366
+ cap-tricheckbox > label > input + cap-checkshell {
367
+ position: relative;
368
+ display: grid;
369
+ width: 1em;
370
+ height: 1em;
371
+ flex: 0 0 1em;
372
+ box-sizing: border-box;
373
+ text-align: center;
374
+ line-height: 120%;
375
+ color: var(--input-color, var(--ui-text-color, currentColor));
376
+ background: var(--checkbox-box-background, var(--ui-input-bg, transparent));
377
+ border: var(--checkbox-box-border, var(--cbx-o-border, 1px solid currentColor));
378
+ border-radius: var(--cbx-border-radius, var(--radius-sm, 0.2rem));
379
+ box-shadow: var(--checkbox-box-shadow);
380
+ font-family: inherit;
381
+ font-size: 1em;
382
+ user-select: none;
383
+ place-items: center;
384
+ }
385
+
386
+ cap-checkbox > label > input:checked + cap-checkshell,
387
+ cap-quadcheckbox > label > input:checked + cap-checkshell,
388
+ cap-radiobutton > label > input:checked + cap-checkshell,
389
+ cap-tricheckbox > label > input:checked + cap-checkshell {
390
+ color: var(--checkbox-symbol-color, var(--selection-color, currentColor));
391
+ background: var(--checkbox-box-background-checked,
392
+ var(--selection-background, var(--ui-accent-color, Highlight)));
393
+ box-shadow: var(--checkbox-box-shadow-checked);
394
+ }
395
+
396
+ cap-checkbox > label > input:focus-visible + cap-checkshell,
397
+ cap-quadcheckbox > label > input:focus-visible + cap-checkshell,
398
+ cap-radiobutton > label > input:focus-visible + cap-checkshell,
399
+ cap-tricheckbox > label > input:focus-visible + cap-checkshell {
400
+ outline: 2px solid var(--focus-color, var(--ui-accent-color, Highlight));
401
+ outline-offset: 1px;
402
+ }
403
+
404
+ cap-checkbox > label > input:disabled + cap-checkshell,
405
+ cap-quadcheckbox > label > input:disabled + cap-checkshell,
406
+ cap-radiobutton > label > input:disabled + cap-checkshell,
407
+ cap-tricheckbox > label > input:disabled + cap-checkshell {
408
+ opacity: 0.6;
409
+ filter: saturate(0.6);
410
+ }
411
+
412
+ cap-checkbox > label > input[aria-busy="true"]:not([aria-invalid="true"]) + cap-checkshell,
413
+ cap-quadcheckbox > label > input[aria-busy="true"]:not([aria-invalid="true"]) + cap-checkshell,
414
+ cap-radiobutton > label > input[aria-busy="true"]:not([aria-invalid="true"]) + cap-checkshell,
415
+ cap-tricheckbox > label > input[aria-busy="true"]:not([aria-invalid="true"]) + cap-checkshell {
416
+ background: var(--working-background-image), var(--checkbox-box-background,
417
+ var(--ui-input-bg, transparent));
418
+ background-repeat: repeat, no-repeat;
419
+ background-size: 2rem 2rem, 100% 100%;
420
+ animation: cap-working-progress .55s linear infinite;
421
+ }
422
+
423
+ cap-checkbox > label:has(> input[aria-invalid="true"]),
424
+ cap-quadcheckbox > label:has(> input[aria-invalid="true"]),
425
+ cap-radiobutton > label:has(> input[aria-invalid="true"]),
426
+ cap-tricheckbox > label:has(> input[aria-invalid="true"]) {
427
+ color: var(--error-color);
428
+ }
429
+
430
+ cap-checkbox > label > input[aria-invalid="true"] + cap-checkshell,
431
+ cap-quadcheckbox > label > input[aria-invalid="true"] + cap-checkshell,
432
+ cap-radiobutton > label > input[aria-invalid="true"] + cap-checkshell,
433
+ cap-tricheckbox > label > input[aria-invalid="true"] + cap-checkshell {
434
+ border-color: var(--error-color);
435
+ }
436
+
437
+ @media (prefers-reduced-motion: reduce) {
438
+ cap-checkbox > label > input[aria-busy="true"] + cap-checkshell,
439
+ cap-quadcheckbox > label > input[aria-busy="true"] + cap-checkshell,
440
+ cap-radiobutton > label > input[aria-busy="true"] + cap-checkshell,
441
+ cap-tricheckbox > label > input[aria-busy="true"] + cap-checkshell {
442
+ animation: none !important;
443
+ }
444
+ }
445
+
446
+ @media (forced-colors: active) {
447
+ cap-checkbox > label > input[aria-invalid="true"] + cap-checkshell,
448
+ cap-quadcheckbox > label > input[aria-invalid="true"] + cap-checkshell,
449
+ cap-radiobutton > label > input[aria-invalid="true"] + cap-checkshell,
450
+ cap-tricheckbox > label > input[aria-invalid="true"] + cap-checkshell {
451
+ outline: 2px solid Mark;
452
+ outline-offset: 1px;
453
+ }
454
+ }
455
+
456
+ cap-checkbox > label > input[value="require"] + cap-checkshell,
457
+ cap-quadcheckbox > label > input[value="require"] + cap-checkshell,
458
+ cap-tricheckbox > label > input[value="require"] + cap-checkshell {
459
+ color: var(--palette-contrast-light);
460
+ background: var(--palette-green);
461
+ box-shadow: var(--checkbox-box-shadow-checked);
462
+ }
463
+
464
+ cap-checkbox > label > input[value="deny"] + cap-checkshell,
465
+ cap-quadcheckbox > label > input[value="deny"] + cap-checkshell,
466
+ cap-tricheckbox > label > input[value="deny"] + cap-checkshell {
467
+ color: var(--palette-contrast-light);
468
+ background: var(--palette-red);
469
+ box-shadow: var(--checkbox-box-shadow-checked);
470
+ }
471
+
472
+ cap-dropdown,
473
+ cap-datepicker,
474
+ cap-timepicker,
475
+ cap-textbox,
476
+ cap-toggle {
477
+ display: flex;
478
+ flex-flow: row nowrap;
479
+ position: relative;
480
+ align-items: center;
481
+ gap: .5em;
482
+ min-height: var(--control-min-height, 2rem);
483
+ color: var(--ui-text-color);
484
+ font-size: var(--ui-font-size);
485
+ line-height: normal;
486
+ box-sizing: border-box;
487
+ user-select: none;
488
+ }
489
+
490
+ cap-groupbox > cap-content > cap-layout > cap-dropdown,
491
+ cap-groupbox > cap-content > cap-layout > cap-datepicker,
492
+ cap-groupbox > cap-content > cap-layout > cap-timepicker,
493
+ cap-groupbox > cap-content > cap-layout > cap-textbox,
494
+ cap-groupbox > cap-content > cap-layout > cap-toggle {
495
+ align-self: stretch;
496
+ }
497
+
498
+ cap-dropdown > label,
499
+ cap-datepicker > label,
500
+ cap-timepicker > label,
501
+ cap-textbox > label,
502
+ cap-toggle > label {
503
+ align-self: center;
504
+ user-select: none;
505
+ white-space: nowrap;
506
+ }
507
+
508
+ cap-dropdown,
509
+ cap-timepicker {
510
+ min-width: 0;
511
+ }
512
+
513
+ cap-dropdown > cap-selectshell,
514
+ cap-timepicker > cap-selectshell {
515
+ display: flex;
516
+ flex-flow: row nowrap;
517
+ position: relative;
518
+ isolation: isolate;
519
+ min-height: var(--control-min-height, 2rem);
520
+ min-width: 0;
521
+ box-sizing: border-box;
522
+ margin-left: auto;
523
+ }
524
+
525
+ cap-dropdown > cap-selectshell > select,
526
+ cap-timepicker > cap-selectshell > select {
527
+ position: relative;
528
+ z-index: 1;
529
+ min-height: var(--control-min-height, 2rem);
530
+ width: var(--input-width, 15rem);
531
+ max-width: 100%;
532
+ min-width: var(--input-min-width, 6rem);
533
+ padding: var(--space-xs) var(--space-sm);
534
+ padding-inline-end: var(--dropdown-padding-inline-end);
535
+ color: var(--input-color);
536
+ background: var(--dropdown-select-background);
537
+ border: var(--dropdown-select-border);
538
+ border-radius: var(--radius-md);
539
+ box-shadow: var(--dropdown-select-shadow);
540
+ box-sizing: border-box;
541
+ font: inherit;
542
+ appearance: var(--dropdown-appearance);
543
+ pointer-events: all;
544
+ user-select: none;
545
+ white-space: nowrap;
546
+ }
547
+
548
+ cap-dropdown > cap-selectshell::after,
549
+ cap-timepicker > cap-selectshell::after {
550
+ content: var(--dropdown-underlay-content);
551
+ position: absolute;
552
+ z-index: 0;
553
+ inset: 0;
554
+ background: var(--dropdown-underlay-background);
555
+ border: var(--dropdown-underlay-border);
556
+ border-radius: 0;
557
+ border-start-start-radius: var(--dropdown-underlay-start-radius);
558
+ border-end-start-radius: var(--dropdown-underlay-start-radius);
559
+ box-shadow: var(--dropdown-underlay-shadow);
560
+ box-sizing: border-box;
561
+ pointer-events: none;
562
+ }
563
+
564
+ cap-dropdown > cap-selectshell::before,
565
+ cap-timepicker > cap-selectshell::before {
566
+ content: var(--dropdown-trigger-content);
567
+ position: absolute;
568
+ z-index: 2;
569
+ inset-block: 0;
570
+ inset-inline-end: 0;
571
+ display: grid;
572
+ inline-size: var(--dropdown-trigger-width);
573
+ place-items: center;
574
+ color: var(--dropdown-trigger-color);
575
+ background: var(--dropdown-trigger-background);
576
+ border: var(--dropdown-trigger-border);
577
+ border-radius: 0;
578
+ border-start-end-radius: var(--dropdown-trigger-end-radius);
579
+ border-end-end-radius: var(--dropdown-trigger-end-radius);
580
+ box-shadow: var(--dropdown-trigger-shadow);
581
+ box-sizing: border-box;
582
+ pointer-events: none;
583
+ }
584
+
585
+ cap-dropdown > cap-selectshell:has(> select:hover:not(:disabled))::before,
586
+ cap-timepicker > cap-selectshell:has(> select:hover:not(:disabled))::before {
587
+ background: var(--dropdown-trigger-background-hover);
588
+ box-shadow: var(--dropdown-trigger-shadow-hover);
589
+ }
590
+
591
+ cap-dropdown > cap-selectshell:has(> select:disabled)::before,
592
+ cap-timepicker > cap-selectshell:has(> select:disabled)::before {
593
+ color: var(--input-color-disabled);
594
+ background: var(--dropdown-trigger-background-disabled);
595
+ border: var(--dropdown-trigger-border-disabled);
596
+ }
597
+
598
+ cap-dropdown > cap-selectshell:has(> select:disabled)::after,
599
+ cap-timepicker > cap-selectshell:has(> select:disabled)::after {
600
+ background: var(--dropdown-underlay-background-disabled);
601
+ border: var(--dropdown-underlay-border-disabled);
602
+ }
603
+
604
+ cap-dropdown > cap-selectshell > select:focus-visible,
605
+ cap-timepicker > cap-selectshell > select:focus-visible {
606
+ outline: 2px solid transparent;
607
+ outline-offset: 1px;
608
+ box-shadow: var(--focus-ring);
609
+ }
610
+
611
+ cap-dropdown > cap-selectshell:has(> select[aria-busy="true"]:not([aria-invalid="true"]))::after,
612
+ cap-timepicker > cap-selectshell:has(> select[aria-busy="true"]:not([aria-invalid="true"]))::after {
613
+ background: var(--working-background-image), var(--dropdown-underlay-background);
614
+ background-repeat: repeat, no-repeat;
615
+ background-size: 2rem 2rem, 100% 100%;
616
+ animation: cap-working-progress .55s linear infinite;
617
+ }
618
+
619
+ cap-dropdown > cap-selectshell > select[aria-busy="true"]:not([aria-invalid="true"]),
620
+ cap-timepicker > cap-selectshell > select[aria-busy="true"]:not([aria-invalid="true"]) {
621
+ background: var(--working-background-image), var(--dropdown-select-background);
622
+ background-repeat: repeat, no-repeat;
623
+ background-size: 2rem 2rem, 100% 100%;
624
+ animation: cap-working-progress .55s linear infinite;
625
+ }
626
+
627
+ cap-dropdown > cap-selectshell:has(> select[aria-invalid="true"])::before,
628
+ cap-timepicker > cap-selectshell:has(> select[aria-invalid="true"])::before,
629
+ cap-dropdown > cap-selectshell:has(> select[aria-invalid="true"])::after,
630
+ cap-timepicker > cap-selectshell:has(> select[aria-invalid="true"])::after,
631
+ cap-dropdown > cap-selectshell > select[aria-invalid="true"],
632
+ cap-timepicker > cap-selectshell > select[aria-invalid="true"] {
633
+ border-color: var(--error-color);
634
+ }
635
+
636
+ @media (prefers-reduced-motion: reduce) {
637
+ cap-dropdown > cap-selectshell:has(> select[aria-busy="true"])::after,
638
+ cap-timepicker > cap-selectshell:has(> select[aria-busy="true"])::after,
639
+ cap-dropdown > cap-selectshell > select[aria-busy="true"],
640
+ cap-timepicker > cap-selectshell > select[aria-busy="true"] {
641
+ animation: none !important;
642
+ }
643
+ }
644
+
645
+ @media (forced-colors: active) {
646
+ cap-dropdown > cap-selectshell::before,
647
+ cap-timepicker > cap-selectshell::before,
648
+ cap-dropdown > cap-selectshell::after,
649
+ cap-timepicker > cap-selectshell::after {
650
+ display: none;
651
+ }
652
+
653
+ cap-dropdown > cap-selectshell > select,
654
+ cap-timepicker > cap-selectshell > select {
655
+ appearance: auto;
656
+ padding-inline-end: var(--space-sm);
657
+ }
658
+
659
+ cap-dropdown > cap-selectshell > select[aria-invalid="true"],
660
+ cap-timepicker > cap-selectshell > select[aria-invalid="true"] {
661
+ outline: 2px solid Mark;
662
+ outline-offset: 1px;
663
+ }
664
+ }
665
+
666
+ cap-datatable {
667
+ display: block;
668
+ position: relative;
669
+ overflow: auto;
670
+ }
671
+
672
+ cap-datatable > p {
673
+ margin: 0;
674
+ }
675
+
676
+ cap-datatable > table {
677
+ border-collapse: collapse;
678
+ width: 100%;
679
+ }
680
+
681
+ cap-datatable thead:has([aria-expanded="true"]) {
682
+ position: relative;
683
+ z-index: 1100;
684
+ }
685
+
686
+ cap-datatable th,
687
+ cap-datatable td {
688
+ position: relative;
689
+ text-align: left;
690
+ padding: 0 var(--ui-padding);
691
+ font-weight: normal;
692
+ }
693
+
694
+ cap-datatable,
695
+ cap-datatable table,
696
+ cap-datatable tbody tr,
697
+ cap-datatable tbody tr td {
698
+ user-select: none;
699
+ pointer-events: all;
700
+ }
701
+
702
+ cap-datatable tr td {
703
+ background: var(--ui-table-bg-color);
704
+ line-height: calc(var(--ui-font-size) + var(--ui-padding));
705
+ font-size: var(--ui-font-size);
706
+ height: calc(var(--ui-font-size) + var(--ui-padding-h));
707
+ }
708
+
709
+ cap-datatable > table > tbody > tr:nth-child(even) > td {
710
+ background: var(--ui-table-bg-color2);
711
+ }
712
+
713
+ cap-datatable > table > tbody > tr[aria-selected="true"] > td {
714
+ color: var(--ui-select-text-color);
715
+ background: var(--ui-select-bg);
716
+ }
717
+
718
+ cap-datatable > table > tbody > tr:nth-child(even)[aria-selected="true"] > td {
719
+ background: var(--ui-select-bg-dark);
720
+ }
721
+
722
+ cap-datatable tr td cap-placeholder {
723
+ font-size: var(--ui-font-size);
724
+ height: var(--ui-font-size);
725
+ }
726
+
727
+ cap-datatable > table[aria-busy="true"] > tbody > tr[data-cap-selectable-row] > td::after {
728
+ content: "";
729
+ position: absolute;
730
+ z-index: 1;
731
+ inset: 0;
732
+ background-image: var(--working-background-image);
733
+ background-repeat: repeat;
734
+ background-size: 2rem 2rem;
735
+ animation: cap-working-progress .55s linear infinite;
736
+ pointer-events: none;
737
+ }
738
+
739
+ cap-datatable:has(> cap-error) {
740
+ outline: 1px solid var(--error-color);
741
+ outline-offset: -1px;
742
+ }
743
+
744
+ cap-datatable:has(> cap-error) > button {
745
+ border-color: var(--error-color);
746
+ }
747
+
748
+ @media (prefers-reduced-motion: reduce) {
749
+ cap-datatable > table[aria-busy="true"] > tbody > tr[data-cap-selectable-row] > td::after {
750
+ animation: none !important;
751
+ }
752
+ }
753
+
754
+ @media (forced-colors: active) {
755
+ cap-datatable:has(> cap-error) {
756
+ outline: 2px solid Mark;
757
+ }
758
+ }
759
+
760
+ cap-placeholder {
761
+ display: block;
762
+ width: 5em;
763
+ height: 1em;
764
+ background: #ccc;
765
+ border-radius: var(--ui-border-radius);
766
+ position: relative;
767
+ }
768
+
769
+ cap-placeholder::after {
770
+ content: "";
771
+ display: block;
772
+ position: absolute;
773
+ z-index: 1;
774
+ inset: 0;
775
+ margin: auto;
776
+ animation: cap-working-progress .55s linear infinite;
777
+ background-repeat: repeat;
778
+ background-size: 2rem 2rem;
779
+ background-image: var(--working-background-image);
780
+ border: 0 solid transparent;
781
+ border-radius: inherit;
782
+ box-sizing: border-box;
783
+ pointer-events: none;
784
+ }
785
+
786
+ @media (prefers-reduced-motion: reduce) {
787
+ cap-placeholder::after {
788
+ animation: none !important;
789
+ }
790
+ }
791
+
792
+ cap-datatable > table > thead {
793
+ color: var(--table-header-color);
794
+ background: var(--ui-gradient);
795
+ }
796
+
797
+ cap-datatable > table > thead > tr > th {
798
+ border: 2px groove #fff7;
799
+ border-left: none;
800
+ }
801
+
802
+ cap-datatable > table > thead > tr > th:last-child {
803
+ border-right: none;
804
+ }
805
+
806
+ cap-datatable > table > thead > tr > th[aria-sort] {
807
+ position: relative;
808
+ padding-right: 24px;
809
+ user-select: var(--noselect-user-select);
810
+ cursor: var(--noselect-cursor);
811
+ }
812
+
813
+ cap-datatable > table > thead > tr > th[aria-sort] > button.sort {
814
+ appearance: none;
815
+ display: block;
816
+ width: 100%;
817
+ padding: 0;
818
+ color: inherit;
819
+ background: transparent;
820
+ border: 0;
821
+ font-family: inherit;
822
+ font-size: inherit;
823
+ font-weight: inherit;
824
+ line-height: inherit;
825
+ text-align: inherit;
826
+ cursor: pointer;
827
+ }
828
+
829
+ cap-datatable > table > thead > tr > th[aria-sort] > button.sort > span.sortindicator {
830
+ position: absolute;
831
+ right: 20px;
832
+ top: 50%;
833
+ transform: translateY(-50%);
834
+ width: 1em;
835
+ text-align: center;
836
+ }
837
+
838
+ cap-datatable > table > thead > tr > th[aria-sort] > button.filter {
839
+ appearance: none;
840
+ position: absolute;
841
+ right: 2px;
842
+ top: 50%;
843
+ transform: translateY(-50%);
844
+ width: 1em;
845
+ padding: 0;
846
+ color: inherit;
847
+ background: transparent;
848
+ border: 0;
849
+ font-family: inherit;
850
+ font-size: inherit;
851
+ line-height: inherit;
852
+ text-align: center;
853
+ cursor: pointer;
854
+ opacity: 0.5;
855
+ }
856
+
857
+ cap-datatable > table > thead > tr > th[aria-sort] > button.filter:hover {
858
+ opacity: 1;
859
+ }
860
+
861
+ cap-filterpanel {
862
+ position: absolute;
863
+ background: white;
864
+ border: 1px solid #ccc;
865
+ padding: 8px;
866
+ min-width: 180px;
867
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
868
+ z-index: 1000;
869
+ display: flex;
870
+ flex-flow: column nowrap;
871
+ align-items: flex-start;
872
+ left: 100%;
873
+ top: 0;
874
+ user-select: none;
875
+ }
876
+
877
+ cap-filterpanel > p {
878
+ margin: 0;
879
+ }
880
+
881
+ cap-filterpanel[aria-busy="true"]::after {
882
+ content: "";
883
+ position: absolute;
884
+ z-index: 1;
885
+ inset: 0;
886
+ background-image: var(--working-background-image);
887
+ background-repeat: repeat;
888
+ background-size: 2rem 2rem;
889
+ animation: cap-working-progress .55s linear infinite;
890
+ pointer-events: none;
891
+ }
892
+
893
+ cap-filterpanel:has(> cap-error) {
894
+ border-color: var(--error-color);
895
+ }
896
+
897
+ @media (prefers-reduced-motion: reduce) {
898
+ cap-filterpanel[aria-busy="true"]::after {
899
+ animation: none !important;
900
+ }
901
+ }
902
+
903
+ cap-datepicker {
904
+ display: flex;
905
+ flex-flow: row nowrap;
906
+ align-items: center;
907
+ gap: 0.5em;
908
+ position: relative;
909
+ min-height: var(--control-min-height, 2rem);
910
+ min-width: 0;
911
+ }
912
+
913
+ cap-datepicker > input {
914
+ min-height: var(--control-min-height, 2rem);
915
+ width: var(--input-width, 10rem);
916
+ max-width: 100%;
917
+ min-width: var(--input-min-width, 6rem);
918
+ padding: var(--space-xs) var(--space-sm);
919
+ color: var(--input-color);
920
+ background: var(--input-background);
921
+ border: var(--input-border);
922
+ border-radius: var(--radius-md);
923
+ box-shadow: var(--input-shadow);
924
+ box-sizing: border-box;
925
+ font: inherit;
926
+ user-select: text;
927
+ cursor: text;
928
+ }
929
+
930
+ cap-datepicker > input:disabled,
931
+ cap-datepicker > input[readonly] {
932
+ color: var(--input-color-disabled);
933
+ background: var(--input-background-disabled);
934
+ border-color: var(--ui-input-border-disabled);
935
+ cursor: not-allowed;
936
+ }
937
+
938
+ cap-datepicker > input:focus-visible {
939
+ outline: 2px solid transparent;
940
+ outline-offset: 1px;
941
+ box-shadow: var(--focus-ring);
942
+ }
943
+
944
+ cap-datepicker > button {
945
+ min-height: var(--control-min-height, 2rem);
946
+ min-width: 2rem;
947
+ padding: var(--space-xs) var(--space-sm);
948
+ color: var(--button-color);
949
+ background: var(--button-background);
950
+ border: var(--button-border);
951
+ border-radius: var(--radius-md);
952
+ cursor: pointer;
953
+ font: inherit;
954
+ user-select: none;
955
+ }
956
+
957
+ cap-datepicker > button:disabled {
958
+ color: var(--input-color-disabled);
959
+ background: var(--input-background-disabled);
960
+ cursor: not-allowed;
961
+ }
962
+
963
+ cap-datepicker > dialog {
964
+ position: absolute;
965
+ inset-block-start: 100%;
966
+ inset-inline-start: 0;
967
+ z-index: 1;
968
+ margin: 0.25em 0 0;
969
+ padding: 0.5em;
970
+ min-width: 16rem;
971
+ background: var(--island-background, var(--application-background));
972
+ border: var(--island-border, var(--input-border));
973
+ border-radius: var(--radius-md);
974
+ box-shadow: var(--island-shadow, var(--input-shadow));
975
+ color: var(--ui-color);
976
+ }
977
+
978
+ cap-datepicker > dialog::backdrop {
979
+ display: none;
980
+ }
981
+
982
+ cap-datepicker > input[aria-busy="true"]:not([aria-invalid="true"]) {
983
+ background: var(--working-background-image), var(--input-background);
984
+ background-repeat: repeat, no-repeat;
985
+ background-size: 2rem 2rem, 100% 100%;
986
+ animation: cap-working-progress .55s linear infinite;
987
+ }
988
+
989
+ cap-datepicker > input[aria-invalid="true"] {
990
+ border-color: var(--error-color);
991
+ }
992
+
993
+ cap-datepicker > dialog .cap-calendar {
994
+ display: inline-block;
995
+ font: inherit;
996
+ user-select: none;
997
+ }
998
+
999
+ cap-datepicker > dialog .cap-calendar .cap-calendar-header {
1000
+ display: flex;
1001
+ justify-content: space-between;
1002
+ align-items: center;
1003
+ gap: 0.5em;
1004
+ padding: 0.25em 0.5em;
1005
+ font: inherit;
1006
+ text-align: center;
1007
+ }
1008
+
1009
+ cap-datepicker > dialog .cap-calendar .cap-calendar-header button {
1010
+ min-inline-size: 2em;
1011
+ min-block-size: 2em;
1012
+ padding: 0.25em;
1013
+ cursor: pointer;
1014
+ }
1015
+
1016
+ cap-datepicker > dialog .cap-calendar table[role="grid"] {
1017
+ border-collapse: collapse;
1018
+ width: 100%;
1019
+ font: inherit;
1020
+ }
1021
+
1022
+ cap-datepicker > dialog .cap-calendar table[role="grid"] th,
1023
+ cap-datepicker > dialog .cap-calendar table[role="grid"] td {
1024
+ padding: 0.125em;
1025
+ text-align: center;
1026
+ }
1027
+
1028
+ cap-datepicker > dialog .cap-calendar table[role="grid"] th {
1029
+ font-weight: 600;
1030
+ }
1031
+
1032
+ cap-datepicker > dialog .cap-calendar table[role="grid"] td button {
1033
+ inline-size: 2em;
1034
+ block-size: 2em;
1035
+ padding: 0;
1036
+ border: 1px solid transparent;
1037
+ border-radius: var(--radius-sm, 0.25rem);
1038
+ background: transparent;
1039
+ color: inherit;
1040
+ font: inherit;
1041
+ cursor: pointer;
1042
+ }
1043
+
1044
+ cap-datepicker > dialog .cap-calendar table[role="grid"] td button:focus-visible {
1045
+ outline: 2px solid transparent;
1046
+ outline-offset: 1px;
1047
+ box-shadow: var(--focus-ring);
1048
+ }
1049
+
1050
+ cap-datepicker > dialog .cap-calendar table[role="grid"] td button[data-today="true"] {
1051
+ border-color: var(--palette-primary-500);
1052
+ }
1053
+
1054
+ cap-datepicker > dialog .cap-calendar table[role="grid"] td button[data-selected="true"] {
1055
+ background: var(--palette-primary-500);
1056
+ color: var(--palette-primary-contrast);
1057
+ }
1058
+
1059
+ cap-datepicker > dialog .cap-calendar table[role="grid"] td button:disabled,
1060
+ cap-datepicker > dialog .cap-calendar table[role="grid"] td button[aria-disabled="true"] {
1061
+ color: var(--input-color-disabled);
1062
+ cursor: not-allowed;
1063
+ }
1064
+
1065
+ @media (prefers-reduced-motion: reduce) {
1066
+ cap-datepicker > input[aria-busy="true"] {
1067
+ animation: none !important;
1068
+ }
1069
+ }
1070
+
1071
+ @media (forced-colors: active) {
1072
+ cap-datepicker > input[aria-invalid="true"] {
1073
+ outline: 2px solid Mark;
1074
+ outline-offset: 1px;
1075
+ }
1076
+
1077
+ cap-datepicker > dialog .cap-calendar table[role="grid"] td button[data-selected="true"] {
1078
+ outline: 2px solid ButtonText;
1079
+ }
1080
+ }
1081
+
1082
+ cap-datetimepicker {
1083
+ display: block;
1084
+ position: relative;
1085
+ min-width: 0;
1086
+ }
1087
+
1088
+ cap-datetimepicker > fieldset {
1089
+ margin: 0;
1090
+ padding: 0;
1091
+ min-inline-size: 0;
1092
+ border: 0;
1093
+ display: flex;
1094
+ flex-flow: row wrap;
1095
+ align-items: flex-start;
1096
+ gap: 0.5em;
1097
+ width: 100%;
1098
+ }
1099
+
1100
+ cap-datetimepicker > fieldset > legend {
1101
+ display: block;
1102
+ width: 100%;
1103
+ padding: 0;
1104
+ margin: 0 0 0.25em;
1105
+ font: inherit;
1106
+ user-select: none;
1107
+ }
1108
+
1109
+ cap-datetimepicker > fieldset[aria-invalid="true"] cap-datepicker > input,
1110
+ cap-datetimepicker > fieldset[aria-invalid="true"] cap-timepicker > cap-selectshell::before,
1111
+ cap-datetimepicker > fieldset[aria-invalid="true"] cap-timepicker > cap-selectshell::after,
1112
+ cap-datetimepicker > fieldset[aria-invalid="true"] cap-timepicker > cap-selectshell > select {
1113
+ border-color: var(--error-color);
1114
+ }
1115
+
1116
+ @media (forced-colors: active) {
1117
+ cap-datetimepicker > fieldset[aria-invalid="true"] {
1118
+ outline: 2px solid Mark;
1119
+ outline-offset: 1px;
1120
+ }
1121
+ }
1122
+
1123
+ cap-timepicker > cap-selectshell > select {
1124
+ min-width: 7rem;
1125
+ }
1126
+
1127
+ cap-descriptionlist {
1128
+ display: block;
1129
+ user-select: none;
1130
+ }
1131
+
1132
+ cap-descriptionlist > dl {
1133
+ display: grid;
1134
+ margin: 0;
1135
+ }
1136
+
1137
+ cap-dialog > dialog {
1138
+ z-index: 2;
1139
+ width: min(38rem, calc(100vw - 2rem));
1140
+ max-height: min(42rem, calc(100dvh - 2rem));
1141
+ padding: 0;
1142
+ color: var(--panel-color);
1143
+ background: var(--panel-background);
1144
+ border: var(--panel-border);
1145
+ border-radius: var(--panel-radius);
1146
+ box-shadow: var(--dialog-shadow);
1147
+ overflow: hidden;
1148
+ isolation: isolate;
1149
+ }
1150
+
1151
+ cap-dialog > dialog[open] {
1152
+ display: flex;
1153
+ flex-direction: column;
1154
+ }
1155
+
1156
+ cap-dialog > dialog::backdrop {
1157
+ background: var(--dialog-backdrop-background);
1158
+ }
1159
+
1160
+ cap-dialog > dialog > header,
1161
+ cap-dialog > dialog > p,
1162
+ cap-dialog > dialog > cap-content,
1163
+ cap-dialog > dialog > footer {
1164
+ padding: var(--panel-padding, 0.75rem);
1165
+ }
1166
+
1167
+ cap-dialog > dialog > header {
1168
+ position: relative;
1169
+ z-index: 1;
1170
+ color: var(--dialog-header-color);
1171
+ background: var(--dialog-header-background);
1172
+ box-shadow: var(--section-header-shadow);
1173
+ user-select: none;
1174
+ }
1175
+
1176
+ cap-dialog > dialog > header h2,
1177
+ cap-dialog > dialog > p {
1178
+ margin: 0;
1179
+ }
1180
+
1181
+ cap-dialog > dialog > header h2 {
1182
+ font-size: 1.1em;
1183
+ font-weight: 700;
1184
+ }
1185
+
1186
+ cap-dialog > dialog > cap-content {
1187
+ position: relative;
1188
+ z-index: 0;
1189
+ display: block;
1190
+ flex: 1 1 auto;
1191
+ min-height: 0;
1192
+ overflow: auto;
1193
+ }
1194
+
1195
+ cap-dialog > dialog > footer {
1196
+ display: flex;
1197
+ justify-content: flex-end;
1198
+ gap: var(--spacing-small, 0.5rem);
1199
+ }
1200
+
1201
+ @media (forced-colors: active) {
1202
+ cap-dialog > dialog {
1203
+ border: 2px solid CanvasText;
1204
+ }
1205
+
1206
+ cap-dialog > dialog::backdrop {
1207
+ background: Canvas;
1208
+ }
1209
+ }
1210
+
1211
+ cap-app {
1212
+ box-sizing: border-box;
1213
+ display: block;
1214
+ background: var(--application-background);
1215
+ color: var(--ui-color);
1216
+ font-family: var(--font-family);
1217
+ font-size: var(--font-size);
1218
+ line-height: var(--line-height);
1219
+ }
1220
+
1221
+ cap-groupbox,
1222
+ cap-optionsbox {
1223
+ display: flex;
1224
+ flex-flow: var(--cap-groupbox-flow, row nowrap);
1225
+ align-items: stretch;
1226
+ box-sizing: border-box;
1227
+ gap: var(--cap-groupbox-gap, 0 0.35rem);
1228
+ padding: var(--cap-groupbox-padding, 0.125rem 0.35rem 0.125rem 0.125rem);
1229
+ border: var(--cap-groupbox-border, 1px solid var(--ui-border-color));
1230
+ border-radius: var(--ui-border-radius);
1231
+ position: relative;
1232
+ min-width: 0;
1233
+ min-height: 0;
1234
+ }
1235
+
1236
+ cap-groupbox > cap-header,
1237
+ cap-optionsbox > cap-header {
1238
+ display: grid;
1239
+ place-items: var(--cap-groupbox-header-align, center);
1240
+ box-sizing: border-box;
1241
+ width: var(--cap-groupbox-header-width, 1.7em);
1242
+ padding: var(--cap-groupbox-header-padding, 0.125em);
1243
+ border-radius: var(--ui-border-radius);
1244
+ color: var(--cap-groupbox-header-color, var(--section-header-color));
1245
+ background: var(--cap-groupbox-header-background, var(--section-header-background));
1246
+ box-shadow: var(--cap-groupbox-header-shadow, var(--section-header-shadow));
1247
+ writing-mode: var(--cap-groupbox-header-writing, vertical-rl);
1248
+ transform: var(--cap-groupbox-header-transform, rotate(180deg));
1249
+ font-weight: normal;
1250
+ font-size: var(--ui-font-size);
1251
+ min-width: 0;
1252
+ min-height: 0;
1253
+ }
1254
+
1255
+ cap-groupbox > cap-content,
1256
+ cap-optionsbox > cap-content {
1257
+ display: block;
1258
+ min-width: 0;
1259
+ min-height: 0;
1260
+ margin-left: var(--cap-groupbox-content-margin, .25em);
1261
+ }
1262
+
1263
+ .cap-layout-horizontal cap-groupbox > cap-content > cap-layout,
1264
+ .cap-layout-horizontal cap-optionsbox > cap-content > cap-layout,
1265
+ .cap-layout-vertical cap-groupbox > cap-content > cap-layout,
1266
+ .cap-layout-vertical cap-optionsbox > cap-content > cap-layout {
1267
+ gap: .5rem;
1268
+ justify-content: flex-start;
1269
+ align-content: flex-start;
1270
+ justify-items: flex-start;
1271
+ align-items: flex-start;
1272
+ }
1273
+
1274
+ /* Presentation contexts: each marker sets the complete context-sensitive
1275
+ property set, so the nearest marked ancestor wins through ordinary
1276
+ custom-property inheritance. Unmarked containers keep the control
1277
+ defaults declared as var() fallbacks above. */
1278
+ [data-cap-context='control'] {
1279
+ --cap-groupbox-flow: row nowrap;
1280
+ --cap-groupbox-gap: 0 0.35rem;
1281
+ --cap-groupbox-padding: 0.125rem 0.35rem 0.125rem 0.125rem;
1282
+ --cap-groupbox-border: 1px solid var(--ui-border-color);
1283
+ --cap-groupbox-header-align: center;
1284
+ --cap-groupbox-header-width: 1.7em;
1285
+ --cap-groupbox-header-padding: 0.125em;
1286
+ --cap-groupbox-header-color: var(--section-header-color);
1287
+ --cap-groupbox-header-background: var(--section-header-background);
1288
+ --cap-groupbox-header-shadow: var(--section-header-shadow);
1289
+ --cap-groupbox-header-writing: vertical-rl;
1290
+ --cap-groupbox-header-transform: rotate(180deg);
1291
+ --cap-groupbox-content-margin: .25em;
1292
+ }
1293
+
1294
+ [data-cap-context='form'] {
1295
+ --cap-groupbox-flow: column nowrap;
1296
+ --cap-groupbox-gap: 0.25rem 0;
1297
+ --cap-groupbox-padding: 0.5rem;
1298
+ --cap-groupbox-border: 1px solid var(--ui-border-color);
1299
+ --cap-groupbox-header-align: center start;
1300
+ --cap-groupbox-header-width: auto;
1301
+ --cap-groupbox-header-padding: 0;
1302
+ --cap-groupbox-header-color: var(--text-color);
1303
+ --cap-groupbox-header-background: none;
1304
+ --cap-groupbox-header-shadow: none;
1305
+ --cap-groupbox-header-writing: horizontal-tb;
1306
+ --cap-groupbox-header-transform: none;
1307
+ --cap-groupbox-content-margin: 0;
1308
+ }
1309
+
1310
+ [data-cap-context='form'] cap-groupbox,
1311
+ [data-cap-context='form'] cap-optionsbox {
1312
+ flex: 1 1 auto;
1313
+ align-self: stretch;
1314
+ padding-top: 1em;
1315
+ }
1316
+
1317
+ .cap-layout-horizontal cap-groupbox,
1318
+ .cap-layout-horizontal cap-optionsbox {
1319
+ max-width: 15rem;
1320
+ min-width: 0;
1321
+ }
1322
+
1323
+ .cap-layout-vertical cap-groupbox,
1324
+ .cap-layout-vertical cap-optionsbox {
1325
+ max-height: 15rem;
1326
+ min-height: 0;
1327
+ }
1328
+
1329
+ [data-cap-context='form'] cap-groupbox > cap-header {
1330
+ position: absolute;
1331
+ left: calc(0px - var(--ui-font-size) / 2);
1332
+ top: calc(0px - var(--ui-font-size) / 2);
1333
+ background: var(--panel-background);
1334
+ padding: 2px 5px;
1335
+ }
1336
+
1337
+ cap-header {
1338
+ display: block;
1339
+ color: var(--section-header-color);
1340
+ border-radius: var(--ui-border-radius) var(--ui-border-radius) 0 0;
1341
+ padding: .25em;
1342
+ background: var(--section-header-background);
1343
+ box-shadow: var(--section-header-shadow);
1344
+ z-index: 1;
1345
+ user-select: none;
1346
+ }
1347
+
1348
+ cap-header > h1,
1349
+ cap-header > h2,
1350
+ cap-header > h3,
1351
+ cap-header > h4,
1352
+ cap-header > h5,
1353
+ cap-header > h6 {
1354
+ margin: 0;
1355
+ font: inherit;
1356
+ }
1357
+
1358
+ cap-infopanel {
1359
+ background: var(--panel-background);
1360
+ border: var(--panel-border);
1361
+ border-radius: var(--panel-radius);
1362
+ box-shadow: var(--panel-shadow);
1363
+ color: var(--panel-color);
1364
+ display: flex;
1365
+ flex-direction: column;
1366
+ overflow: auto;
1367
+ user-select: none;
1368
+ }
1369
+
1370
+ cap-infopanel > dl {
1371
+ display: grid;
1372
+ grid-template-columns: auto 1fr;
1373
+ gap: var(--space-sm, 0.375rem) var(--space-md, 1rem);
1374
+ margin: 0;
1375
+ padding: var(--panel-padding, 0.75rem);
1376
+ }
1377
+
1378
+ cap-infopanel > dl > dt {
1379
+ font-weight: 600;
1380
+ color: var(--info-panel-label-color, var(--ui-muted-text-color));
1381
+ }
1382
+
1383
+ cap-infopanel > dl > dd {
1384
+ margin: 0;
1385
+ }
1386
+
1387
+ cap-listview {
1388
+ display: flex;
1389
+ position: relative;
1390
+ flex-direction: column;
1391
+ overflow-y: auto;
1392
+ height: 100%;
1393
+ padding: var(--ui-padding-v) var(--ui-padding-h);
1394
+ color: var(--ui-text-color);
1395
+ background: var(--ui-input-bg);
1396
+ border: var(--ui-input-border);
1397
+ border-radius: var(--ui-border-radius);
1398
+ box-shadow: var(--input-shadow);
1399
+ box-sizing: border-box;
1400
+ pointer-events: all;
1401
+ user-select: none;
1402
+ white-space: nowrap;
1403
+ }
1404
+
1405
+ cap-listview > [role="listbox"],
1406
+ cap-listview > ul[aria-hidden="true"] {
1407
+ display: flex;
1408
+ flex-direction: column;
1409
+ margin: 0;
1410
+ padding: 0;
1411
+ list-style: none;
1412
+ }
1413
+
1414
+ cap-listview > [role="listbox"] > [role="option"] {
1415
+ display: flex;
1416
+ flex-flow: row nowrap;
1417
+ position: relative;
1418
+ min-height: calc(var(--ui-font-size) + var(--ui-padding-h) + var(--ui-padding-h));
1419
+ line-height: calc(var(--ui-font-size) + var(--ui-padding) + var(--ui-padding));
1420
+ font-size: var(--ui-font-size);
1421
+ color: var(--ui-text-color);
1422
+ border-radius: var(--ui-border-radius);
1423
+ box-sizing: border-box;
1424
+ user-select: none;
1425
+ }
1426
+
1427
+ cap-listview > [role="listbox"][aria-busy="true"] > [role="option"]::after {
1428
+ content: "";
1429
+ position: absolute;
1430
+ z-index: 1;
1431
+ inset: 0;
1432
+ background-image: var(--working-background-image);
1433
+ background-repeat: repeat;
1434
+ background-size: 2rem 2rem;
1435
+ border-radius: inherit;
1436
+ animation: cap-working-progress .55s linear infinite;
1437
+ pointer-events: none;
1438
+ }
1439
+
1440
+ cap-listview > [role="listbox"] > [role="option"]:hover {
1441
+ background: var(--hover-bg-color, #f5f5f5);
1442
+ }
1443
+
1444
+ cap-listview > [role="listbox"] > [role="option"][aria-selected="true"] {
1445
+ background: var(--selected-bg-color, #e0e7ff);
1446
+ }
1447
+
1448
+ cap-listview > [role="status"] {
1449
+ margin: 0;
1450
+ padding: var(--ui-padding);
1451
+ }
1452
+
1453
+ cap-listview:has(> cap-error) {
1454
+ border-color: var(--error-color);
1455
+ }
1456
+
1457
+ @media (prefers-reduced-motion: reduce) {
1458
+ cap-listview > [role="listbox"][aria-busy="true"] > [role="option"]::after {
1459
+ animation: none !important;
1460
+ }
1461
+ }
1462
+
1463
+ @media (forced-colors: active) {
1464
+ cap-listview:has(> cap-error) {
1465
+ outline: 2px solid Mark;
1466
+ outline-offset: -2px;
1467
+ }
1468
+ }
1469
+
1470
+ cap-navigationbar {
1471
+ display: block;
1472
+ flex: 0 0 auto;
1473
+ min-width: 0;
1474
+ color: var(--navigation-bar-color);
1475
+ background: var(--navigation-bar-background);
1476
+ border: var(--navigation-bar-border);
1477
+ box-shadow: var(--navigation-bar-shadow);
1478
+ user-select: none;
1479
+ }
1480
+
1481
+ cap-navigationbar > nav,
1482
+ cap-navigationbar > nav > ul {
1483
+ min-width: 0;
1484
+ }
1485
+
1486
+ cap-navigationbar > nav > ul {
1487
+ display: flex;
1488
+ flex-flow: row wrap;
1489
+ gap: var(--navigation-bar-gap);
1490
+
1491
+ align-items: center;
1492
+ justify-content: center;
1493
+ margin: 0;
1494
+ padding: var(--navigation-bar-padding);
1495
+ list-style: none;
1496
+ }
1497
+
1498
+ cap-navigationbar > nav > ul > li {
1499
+ display: flex;
1500
+ }
1501
+
1502
+ cap-navigationbar > nav > ul > li > a,
1503
+ cap-navigationbar > nav > ul > li > span[aria-disabled="true"] {
1504
+ display: inline-flex;
1505
+ align-items: center;
1506
+ min-height: var(--control-min-height, 2rem);
1507
+ padding: var(--navigation-link-padding);
1508
+ box-sizing: border-box;
1509
+ color: var(--navigation-link-color);
1510
+ background: var(--navigation-link-background);
1511
+ border: var(--navigation-link-border);
1512
+ border-radius: var(--navigation-link-radius);
1513
+ box-shadow: var(--navigation-link-shadow);
1514
+ font-family: inherit;
1515
+ font-size: 1.1rem;
1516
+ line-height: calc(var(--ui-font-size) + var(--ui-padding) + var(--ui-padding));
1517
+ text-decoration: none;
1518
+ white-space: nowrap;
1519
+ }
1520
+
1521
+ cap-navigationbar > nav > ul > li > a:hover {
1522
+ color: var(--navigation-link-color-hover);
1523
+ background: var(--navigation-link-background-hover);
1524
+ }
1525
+
1526
+ cap-navigationbar > nav > ul > li > a:active {
1527
+ color: var(--navigation-link-color-active);
1528
+ background: var(--navigation-link-background-active);
1529
+ }
1530
+
1531
+ cap-navigationbar > nav > ul > li > a[aria-current="page"] {
1532
+ color: var(--navigation-link-color-current);
1533
+ background: var(--navigation-link-background-current);
1534
+ box-shadow: var(--navigation-link-shadow-current);
1535
+ font-weight: var(--navigation-link-font-weight-current);
1536
+ }
1537
+
1538
+ cap-navigationbar > nav > ul > li > a:focus-visible {
1539
+ outline: 2px solid transparent;
1540
+ outline-offset: 1px;
1541
+ box-shadow: var(--focus-ring);
1542
+ }
1543
+
1544
+ cap-navigationbar > nav > ul > li > span[aria-disabled="true"] {
1545
+ color: var(--navigation-link-color-disabled);
1546
+ background: var(--navigation-link-background-disabled);
1547
+ border: var(--navigation-link-border);
1548
+ cursor: not-allowed;
1549
+ }
1550
+
1551
+ cap-optiongroup {
1552
+ display: block;
1553
+ position: relative;
1554
+ min-width: 0;
1555
+ }
1556
+
1557
+ cap-optiongroup > fieldset {
1558
+ margin: 0;
1559
+ padding: 0;
1560
+ min-inline-size: 0;
1561
+ border: 0;
1562
+ width: 100%;
1563
+ box-sizing: border-box;
1564
+ }
1565
+
1566
+ cap-optiongroup > fieldset > legend {
1567
+ display: flex;
1568
+ justify-content: space-between;
1569
+ align-items: center;
1570
+ box-sizing: border-box;
1571
+ gap: 0.5rem;
1572
+ width: 100%;
1573
+ padding: 0 0 0.25em;
1574
+ margin-bottom: 0.5em;
1575
+ border-bottom: 1px solid var(--ui-border-color);
1576
+ font: inherit;
1577
+ user-select: none;
1578
+ }
1579
+
1580
+ cap-optiongroup > fieldset > legend > span {
1581
+ flex: 1;
1582
+ min-width: 0;
1583
+ }
1584
+
1585
+ cap-optiongroup > fieldset[aria-busy="true"]:not([aria-invalid="true"]) {
1586
+ background-image: var(--working-background-image);
1587
+ background-repeat: repeat;
1588
+ background-size: 2rem 2rem;
1589
+ animation: cap-working-progress .55s linear infinite;
1590
+ }
1591
+
1592
+ cap-optiongroup > fieldset[aria-invalid="true"] {
1593
+ border: 1px solid var(--error-color);
1594
+ border-radius: var(--radius-md);
1595
+ }
1596
+
1597
+ @media (prefers-reduced-motion: reduce) {
1598
+ cap-optiongroup > fieldset[aria-busy="true"] {
1599
+ animation: none !important;
1600
+ }
1601
+ }
1602
+
1603
+ @media (forced-colors: active) {
1604
+ cap-optiongroup > fieldset[aria-invalid="true"] {
1605
+ outline: 2px solid Mark;
1606
+ outline-offset: 1px;
1607
+ }
1608
+ }
1609
+
1610
+ cap-optionsbox > cap-content {
1611
+ display: flex;
1612
+ flex-direction: column;
1613
+ align-self: stretch;
1614
+ flex: 1 1 0;
1615
+ gap: .5em;
1616
+ }
1617
+
1618
+ cap-optionsbox > cap-content * > fieldset > legend {
1619
+ display: flex;
1620
+ justify-content: space-between;
1621
+ align-items: center;
1622
+ box-sizing: border-box;
1623
+ font-size: var(--ui-font-size);
1624
+ color: var(--palette-neutral-950);
1625
+ gap: 0.5rem;
1626
+ width: 100%;
1627
+ padding: 0 0 0.25em;
1628
+ margin-bottom: 0.25em;
1629
+ border-bottom: 1px solid var(--ui-border-color);
1630
+ user-select: none;
1631
+ }
1632
+
1633
+ cap-optionsbox > cap-content * > fieldset {
1634
+ display: flex;
1635
+ flex-flow: column;
1636
+ justify-content: stretch;
1637
+ justify-items: stretch;
1638
+ align-items: stretch;
1639
+ align-content: stretch;
1640
+ box-sizing: border-box;
1641
+ width: 100%;
1642
+ gap: 0;
1643
+ padding: .25em 0 .5em 0;
1644
+ }
1645
+
1646
+ cap-panel {
1647
+ background: var(--panel-background);
1648
+ border: var(--panel-border);
1649
+ border-radius: var(--panel-radius);
1650
+ box-shadow: var(--panel-shadow);
1651
+ color: var(--panel-color);
1652
+ display: flex;
1653
+ flex-direction: column;
1654
+ min-width: 0;
1655
+ min-height: 0;
1656
+ overflow: hidden;
1657
+ flex: 0 0 auto;
1658
+ }
1659
+
1660
+ cap-panel > cap-layout.panel-content {
1661
+ flex: 1 1 auto;
1662
+ min-width: 0;
1663
+ min-height: 0;
1664
+ padding: var(--panel-padding, 0.75rem);
1665
+ gap: var(--spacing-medium, 1rem);
1666
+ }
1667
+
1668
+ cap-panel[aria-disabled="true"] {
1669
+ opacity: .65;
1670
+ }
1671
+
1672
+ cap-progressbar {
1673
+ display: block;
1674
+ }
1675
+
1676
+ cap-progressbar > label,
1677
+ cap-progressbar > progress {
1678
+ position: absolute;
1679
+ width: 1px;
1680
+ height: 1px;
1681
+ padding: 0;
1682
+ margin: -1px;
1683
+ overflow: hidden;
1684
+ clip: rect(0 0 0 0);
1685
+ white-space: nowrap;
1686
+ border: 0;
1687
+ }
1688
+
1689
+ cap-progressbar > cap-content {
1690
+ position: relative;
1691
+ display: block;
1692
+ width: 100%;
1693
+ min-height: var(--control-min-height);
1694
+ border-radius: var(--ui-border-radius);
1695
+ overflow: hidden;
1696
+ background: var(--progress-track-background);
1697
+ box-shadow: var(--progress-track-shadow);
1698
+ color: var(--progress-track-color);
1699
+ text-align: center;
1700
+ line-height: var(--control-min-height);
1701
+ box-sizing: border-box;
1702
+ user-select: none;
1703
+ }
1704
+
1705
+ cap-progressbar > cap-content > cap-progress {
1706
+ position: absolute;
1707
+ z-index: 1;
1708
+ top: 0;
1709
+ left: 0;
1710
+ display: block;
1711
+ width: var(--progress-width, 0%);
1712
+ height: 100%;
1713
+ border-radius: inherit;
1714
+ overflow: hidden;
1715
+ background: var(--progress-value-background);
1716
+ box-shadow: var(--progress-value-shadow);
1717
+ }
1718
+
1719
+ cap-progressbar > cap-content > cap-progress > cap-inverse {
1720
+ position: absolute;
1721
+ top: 0;
1722
+ left: 0;
1723
+ display: block;
1724
+ width: var(--progress-inverse-width, 10000%);
1725
+ height: 100%;
1726
+ color: var(--progress-value-color);
1727
+ text-align: center;
1728
+ white-space: nowrap;
1729
+ }
1730
+
1731
+ cap-progressbar > cap-content > cap-label {
1732
+ position: relative;
1733
+ z-index: 0;
1734
+ display: block;
1735
+ height: 100%;
1736
+ white-space: nowrap;
1737
+ }
1738
+
1739
+ cap-progressbar:has(> progress:indeterminate) > cap-content > cap-progress {
1740
+ display: none;
1741
+ }
1742
+
1743
+ cap-progressbar:has(> progress:indeterminate) > cap-content > cap-label {
1744
+ z-index: 2;
1745
+ }
1746
+
1747
+ cap-progressbar:has(> progress:indeterminate) > cap-content::after {
1748
+ position: absolute;
1749
+ z-index: 1;
1750
+ inset: 1px;
1751
+ content: "";
1752
+ border-radius: inherit;
1753
+ background-image: var(--working-background-image);
1754
+ background-repeat: repeat;
1755
+ background-size: 2rem 2rem;
1756
+ animation: cap-working-progress .55s linear infinite;
1757
+ opacity: .5;
1758
+ }
1759
+
1760
+ @media (prefers-reduced-motion: reduce) {
1761
+ cap-progressbar:has(> progress:indeterminate) > cap-content::after {
1762
+ animation: none !important;
1763
+ }
1764
+ }
1765
+
1766
+ @media (forced-colors: active) {
1767
+ cap-progressbar > cap-content {
1768
+ border: 1px solid CanvasText;
1769
+ background: Canvas;
1770
+ box-shadow: none;
1771
+ color: CanvasText;
1772
+ }
1773
+
1774
+ cap-progressbar > cap-content > cap-progress {
1775
+ background: Highlight;
1776
+ box-shadow: none;
1777
+ }
1778
+
1779
+ cap-progressbar > cap-content > cap-progress > cap-inverse {
1780
+ color: HighlightText;
1781
+ }
1782
+ }
1783
+
1784
+ cap-radiogroup > fieldset {
1785
+ display: flex;
1786
+ flex-flow: column wrap;
1787
+ gap: 0;
1788
+ margin: 0;
1789
+ padding: 0;
1790
+ min-inline-size: 0;
1791
+ border: 0;
1792
+ user-select: none;
1793
+ }
1794
+
1795
+ cap-radiogroup {
1796
+ position: relative;
1797
+ }
1798
+
1799
+ cap-radiogroup > fieldset > legend {
1800
+ flex: 0 0 100%;
1801
+ padding: 0;
1802
+ margin-bottom: .5em;
1803
+ border-bottom: 1px solid #aaa;
1804
+ }
1805
+
1806
+ cap-radiogroup > fieldset[aria-invalid="true"] cap-checkshell {
1807
+ border-color: var(--error-color);
1808
+ }
1809
+
1810
+ cap-radiogroup > fieldset[aria-invalid="true"] cap-radiobutton > label {
1811
+ color: var(--error-color);
1812
+ }
1813
+
1814
+ @media (forced-colors: active) {
1815
+ cap-radiogroup > fieldset[aria-invalid="true"] {
1816
+ outline: 2px solid Mark;
1817
+ outline-offset: 1px;
1818
+ }
1819
+ }
1820
+
1821
+ cap-radiobutton > label > input[type="radio"] + cap-checkshell {
1822
+ border-radius: 50%;
1823
+ }
1824
+
1825
+ cap-radiobutton > label > input[type="radio"]:checked + cap-checkshell::after {
1826
+ width: .4em;
1827
+ height: .4em;
1828
+ content: "";
1829
+ border-radius: 50%;
1830
+ background: var(--checkbox-symbol-color);
1831
+ }
1832
+
1833
+ cap-routeoutlet {
1834
+ display: flex;
1835
+ flex: 1 1 auto;
1836
+ flex-direction: column;
1837
+ min-width: 0;
1838
+ min-height: 0;
1839
+ overflow: hidden;
1840
+ }
1841
+
1842
+ cap-routeoutlet > div {
1843
+ display: flex;
1844
+ flex: 1 1 auto;
1845
+ flex-direction: column;
1846
+ min-width: 0;
1847
+ min-height: 0;
1848
+ overflow: auto;
1849
+ }
1850
+
1851
+ cap-routeoutlet > div[hidden] {
1852
+ display: none;
1853
+ }
1854
+
1855
+ cap-sidebar {
1856
+ display: flex;
1857
+ min-width: 0;
1858
+ min-height: 0;
1859
+ }
1860
+
1861
+ cap-sidebar > aside {
1862
+ display: flex;
1863
+ flex: 1 1 auto;
1864
+ flex-direction: column;
1865
+ min-width: 0;
1866
+ min-height: 0;
1867
+ overflow: hidden;
1868
+ }
1869
+
1870
+ cap-sidebar > aside > cap-header,
1871
+ cap-sidebar > aside > cap-toolbarcontent {
1872
+ flex: none;
1873
+ }
1874
+
1875
+ cap-sidebar > aside > cap-toolbarcontent {
1876
+ min-width: 0;
1877
+ overflow-x: auto;
1878
+ }
1879
+
1880
+ cap-sidebar > aside > cap-content {
1881
+ flex: 1;
1882
+ min-height: 0;
1883
+ overflow: auto;
1884
+ }
1885
+
1886
+ cap-splitview {
1887
+ display: flex;
1888
+ flex: 1 1 auto;
1889
+ min-width: 0;
1890
+ min-height: 0;
1891
+ overflow: hidden;
1892
+ }
1893
+
1894
+ cap-splitview.horizontal {
1895
+ flex-direction: row;
1896
+ }
1897
+
1898
+ cap-splitview.vertical {
1899
+ flex-direction: column;
1900
+ }
1901
+
1902
+ cap-splitview > cap-primary {
1903
+ flex: 0 0 var(--split-primary-size, 40%);
1904
+ }
1905
+
1906
+ cap-splitview > cap-secondary {
1907
+ flex: 1 1 0;
1908
+ }
1909
+
1910
+ cap-splitview.horizontal > cap-primary {
1911
+ min-inline-size: var(--split-primary-min-size, 96px);
1912
+ }
1913
+
1914
+ cap-splitview.horizontal > cap-secondary {
1915
+ min-inline-size: var(--split-secondary-min-size, 96px);
1916
+ }
1917
+
1918
+ cap-splitview.vertical > cap-primary {
1919
+ min-block-size: var(--split-primary-min-size, 96px);
1920
+ }
1921
+
1922
+ cap-splitview.vertical > cap-secondary {
1923
+ min-block-size: var(--split-secondary-min-size, 96px);
1924
+ }
1925
+
1926
+ cap-splitview > cap-separator {
1927
+ position: relative;
1928
+ flex: none;
1929
+ box-sizing: border-box;
1930
+ background: var(--ui-border-color);
1931
+ touch-action: none;
1932
+ user-select: none;
1933
+ }
1934
+
1935
+ cap-splitview > cap-separator::after {
1936
+ content: '';
1937
+ position: absolute;
1938
+ border-radius: 999px;
1939
+ background: currentColor;
1940
+ opacity: 0;
1941
+ }
1942
+
1943
+ cap-splitview > cap-separator:hover::after,
1944
+ cap-splitview > cap-separator:focus-visible::after {
1945
+ opacity: .45;
1946
+ }
1947
+
1948
+ cap-splitview.horizontal > cap-separator {
1949
+ inline-size: .45rem;
1950
+ cursor: col-resize;
1951
+ }
1952
+
1953
+ cap-splitview.horizontal > cap-separator::after {
1954
+ inset-block: 35%;
1955
+ inset-inline: 1px;
1956
+ }
1957
+
1958
+ cap-splitview.vertical > cap-separator {
1959
+ block-size: .45rem;
1960
+ cursor: row-resize;
1961
+ }
1962
+
1963
+ cap-splitview.vertical > cap-separator::after {
1964
+ inset-inline: 35%;
1965
+ inset-block: 1px;
1966
+ }
1967
+
1968
+ cap-splitview[data-resizable="false"] > cap-separator {
1969
+ cursor: default;
1970
+ }
1971
+
1972
+ cap-tabline {
1973
+ display: flex;
1974
+ background: var(--tabline-background);
1975
+ flex-flow: row wrap;
1976
+ overflow: hidden;
1977
+ padding-top: 3px;
1978
+ padding-inline-start: var(--tabline-padding-inline-start);
1979
+ flex: 0 0 auto;
1980
+ z-index: 0;
1981
+ }
1982
+
1983
+ cap-tabline > button[role="tab"] {
1984
+ position: relative;
1985
+ min-height: calc(var(--control-min-height, 2rem) - 5px);
1986
+ padding-block: 0;
1987
+ padding-inline: var(--space-sm);
1988
+ color: var(--button-color);
1989
+ background: var(--tab-button-background);
1990
+ border: none;
1991
+ border-radius: var(--radius-md) var(--radius-md) 0 0;
1992
+ box-shadow: var(--tab-button-shadow);
1993
+ box-sizing: border-box;
1994
+ align-self: flex-end;
1995
+ cursor: default;
1996
+ font-family: inherit;
1997
+ font-size: var(--ui-font-size);
1998
+ line-height: calc(var(--ui-font-size) + var(--ui-padding) + var(--ui-padding));
1999
+ margin-block-start: 3px;
2000
+ user-select: none;
2001
+ white-space: nowrap;
2002
+ }
2003
+
2004
+ cap-tabline > button[role="tab"]:hover:not(:disabled)[aria-selected="false"] {
2005
+ background: var(--button-background-hover);
2006
+ }
2007
+
2008
+ cap-tabline > button[role="tab"]:not(:disabled)[aria-selected="true"] {
2009
+ min-height: var(--control-min-height, 2rem);
2010
+ padding-block-start: 3px;
2011
+ background: var(--tab-button-background-active);
2012
+ box-shadow: var(--tab-button-shadow-active);
2013
+ margin-block-start: 0;
2014
+ z-index: 1;
2015
+ }
2016
+
2017
+ cap-tabline > button[role="tab"]:not(:disabled)[aria-selected="false"]::after {
2018
+ content: '';
2019
+ position: absolute;
2020
+ inset-inline: 0;
2021
+ block-size: 1px;
2022
+ inset-block-end: -1px;
2023
+ box-shadow: var(--tab-button-inactive-bottom-shadow);
2024
+ z-index: 1;
2025
+ }
2026
+
2027
+ cap-tabline > button[role="tab"]:disabled {
2028
+ color: var(--input-color-disabled);
2029
+ background: var(--button-background-disabled);
2030
+ border: var(--button-border-disabled);
2031
+ cursor: not-allowed;
2032
+ }
2033
+
2034
+ cap-tabpanel {
2035
+ background: var(--panel-background);
2036
+ border-radius: var(--panel-radius);
2037
+ box-shadow: var(--panel-shadow);
2038
+ display: flex;
2039
+ flex-direction: column;
2040
+ width: 100%;
2041
+ height: 100%;
2042
+ overflow: hidden;
2043
+ }
2044
+
2045
+ cap-tabpanel > section[role="tabpanel"] {
2046
+ display: flex;
2047
+ flex-direction: column;
2048
+ flex: 1;
2049
+ overflow: auto;
2050
+ padding: 3px;
2051
+ z-index: 2;
2052
+ }
2053
+
2054
+ cap-tabpanel > section[role="tabpanel"][hidden] {
2055
+ display: none;
2056
+ }
2057
+
2058
+ cap-tabpanel > section[role="tabpanel"] > cap-toolbar[role="toolbar"]:first-child {
2059
+ width: calc(100% + 6px);
2060
+ margin-block-start: -3px;
2061
+ margin-inline-start: -3px;
2062
+ }
2063
+
2064
+ cap-textbox {
2065
+ display: flex;
2066
+ flex-flow: row nowrap;
2067
+ align-items: center;
2068
+ justify-content: center;
2069
+ min-height: var(--control-min-height, 2rem);
2070
+ min-width: 0;
2071
+ line-height: normal;
2072
+ }
2073
+
2074
+ cap-textbox > input {
2075
+ min-height: var(--control-min-height, 2rem);
2076
+ width: var(--input-width, 15rem);
2077
+ max-width: 100%;
2078
+ min-width: var(--input-min-width, 6rem);
2079
+ color: var(--input-color);
2080
+ background: var(--input-background);
2081
+ border: var(--input-border);
2082
+ border-radius: var(--radius-md);
2083
+ box-shadow: var(--input-shadow);
2084
+ box-sizing: border-box;
2085
+ font: inherit;
2086
+ pointer-events: all;
2087
+ user-select: text;
2088
+ white-space: nowrap;
2089
+ cursor: text;
2090
+ margin-left: auto;
2091
+ }
2092
+
2093
+ cap-textbox > input:disabled {
2094
+ color: var(--input-color-disabled);
2095
+ background: var(--input-background-disabled);
2096
+ border-color: var(--ui-input-border-disabled);
2097
+ cursor: not-allowed;
2098
+ }
2099
+
2100
+ cap-textbox > input:focus-visible {
2101
+ outline: 2px solid transparent;
2102
+ outline-offset: 1px;
2103
+ box-shadow: var(--focus-ring);
2104
+ }
2105
+
2106
+ cap-textbox > input[aria-busy="true"]:not([aria-invalid="true"]) {
2107
+ background: var(--working-background-image), var(--input-background);
2108
+ background-repeat: repeat, no-repeat;
2109
+ background-size: 2rem 2rem, 100% 100%;
2110
+ animation: cap-working-progress .55s linear infinite;
2111
+ }
2112
+
2113
+ cap-textbox > input:disabled[aria-busy="true"]:not([aria-invalid="true"]) {
2114
+ background: var(--working-background-image), var(--input-background-disabled);
2115
+ background-repeat: repeat, no-repeat;
2116
+ background-size: 2rem 2rem, 100% 100%;
2117
+ }
2118
+
2119
+ cap-textbox > input[aria-invalid="true"] {
2120
+ border-color: var(--error-color);
2121
+ }
2122
+
2123
+ @media (prefers-reduced-motion: reduce) {
2124
+ cap-textbox > input[aria-busy="true"] {
2125
+ animation: none !important;
2126
+ }
2127
+ }
2128
+
2129
+ @media (forced-colors: active) {
2130
+ cap-textbox > input[aria-invalid="true"] {
2131
+ outline: 2px solid Mark;
2132
+ outline-offset: 1px;
2133
+ }
2134
+ }
2135
+
2136
+ cap-toggle {
2137
+ min-height: var(--control-min-height, 2rem);
2138
+ display: flex;
2139
+ position: relative;
2140
+ flex-flow: row nowrap;
2141
+ align-content: center;
2142
+ align-items: center;
2143
+ gap: .75em;
2144
+ color: var(--text-color);
2145
+ outline: none;
2146
+ }
2147
+
2148
+ cap-toggle > cap-label {
2149
+ display: block;
2150
+ align-self: center;
2151
+ }
2152
+
2153
+ cap-toggle > cap-options {
2154
+ display: flex;
2155
+ min-height: var(--control-min-height, 2rem);
2156
+ border-radius: var(--radius-md);
2157
+ box-shadow: var(--toggle-group-shadow);
2158
+ box-sizing: border-box;
2159
+ cursor: pointer;
2160
+ user-select: none;
2161
+ margin-left: auto;
2162
+ }
2163
+
2164
+ cap-toggle > cap-options > button[role="radio"] {
2165
+ min-height: var(--control-min-height, 2rem);
2166
+ position: relative;
2167
+ font-family: inherit;
2168
+ font-size: var(--ui-font-size);
2169
+ color: var(--button-color);
2170
+ background: var(--toggle-button-background);
2171
+ user-select: none;
2172
+ white-space: nowrap;
2173
+ box-sizing: border-box;
2174
+ border: var(--button-border);
2175
+ border-left: none;
2176
+ border-right: none;
2177
+ border-radius: 0;
2178
+ box-shadow: var(--toggle-button-shadow);
2179
+ cursor: default;
2180
+ }
2181
+
2182
+ cap-toggle > cap-options > button[role="radio"]:hover:not(:disabled)[aria-checked="false"] {
2183
+ background: var(--button-background-hover);
2184
+ }
2185
+
2186
+ cap-toggle > cap-options > button[role="radio"]:first-of-type {
2187
+ border-radius: var(--radius-md) 0 0 var(--radius-md);
2188
+ border: var(--button-border);
2189
+ border-right: none;
2190
+ }
2191
+
2192
+ cap-toggle > cap-options > button[role="radio"]:last-of-type {
2193
+ border-radius: 0 var(--radius-md) var(--radius-md) 0;
2194
+ border: var(--button-border);
2195
+ border-left: none;
2196
+ }
2197
+
2198
+ cap-toggle > cap-options > button[role="radio"][aria-checked="false"]
2199
+ + [role="radio"][aria-checked="false"] {
2200
+ border-inline-start: var(--button-border);
2201
+ border-inline-start-color: var(--toggle-inactive-shared-border-color);
2202
+ }
2203
+
2204
+ cap-toggle > cap-options > button[role="radio"][aria-checked="true"] {
2205
+ color: var(--selection-color);
2206
+ background: var(--toggle-button-background-checked);
2207
+ border: var(--toggle-button-border-checked);
2208
+ box-shadow: none;
2209
+ margin-inline: var(--toggle-button-selected-inline-overlap);
2210
+ z-index: var(--toggle-button-selected-z-index);
2211
+ }
2212
+
2213
+ cap-toggle > cap-options > button[role="radio"]:disabled {
2214
+ color: var(--input-color-disabled);
2215
+ background: var(--button-background-disabled);
2216
+ border: var(--button-border-disabled);
2217
+ cursor: not-allowed;
2218
+ }
2219
+
2220
+ cap-toggle > cap-options[aria-busy="true"]:not([aria-invalid="true"])
2221
+ > button[role="radio"] {
2222
+ background: var(--working-background-image), var(--toggle-button-background);
2223
+ background-repeat: repeat, no-repeat;
2224
+ background-size: 2rem 2rem, 100% 100%;
2225
+ animation: cap-working-progress .55s linear infinite;
2226
+ }
2227
+
2228
+ cap-toggle > cap-options[aria-busy="true"]:not([aria-invalid="true"])
2229
+ > button[role="radio"][aria-checked="true"] {
2230
+ background: var(--working-background-image), var(--toggle-button-background-checked);
2231
+ background-repeat: repeat, no-repeat;
2232
+ background-size: 2rem 2rem, 100% 100%;
2233
+ }
2234
+
2235
+ cap-toggle > cap-options[aria-invalid="true"] > button[role="radio"] {
2236
+ border-color: var(--error-color);
2237
+ }
2238
+
2239
+ cap-toggle > cap-options > button[role="radio"][aria-checked="false"]
2240
+ + [role="radio"][aria-checked="false"]::after {
2241
+ content: '';
2242
+ position: absolute;
2243
+ inset-block: var(--toggle-inactive-separator-block-inset);
2244
+ inline-size: 1px;
2245
+ inset-inline-start: -1px;
2246
+ background: var(--toggle-inactive-separator-background);
2247
+ }
2248
+
2249
+ @media (prefers-reduced-motion: reduce) {
2250
+ cap-toggle > cap-options[aria-busy="true"] > button[role="radio"] {
2251
+ animation: none !important;
2252
+ }
2253
+ }
2254
+
2255
+ @media (forced-colors: active) {
2256
+ cap-toggle > cap-options[aria-invalid="true"] {
2257
+ outline: 2px solid Mark;
2258
+ outline-offset: 1px;
2259
+ }
2260
+ }
2261
+
2262
+ cap-toolbar {
2263
+ display: flex;
2264
+ flex-wrap: wrap;
2265
+ align-items: center;
2266
+ color: var(--toolbar-color);
2267
+ background: var(--toolbar-background);
2268
+ border: var(--toolbar-border);
2269
+ box-shadow: var(--toolbar-shadow);
2270
+ gap: var(--toolbar-spacing, 1.5rem);
2271
+ padding: var(--ui-padding);
2272
+ user-select: none;
2273
+ }
2274
+
2275
+ cap-toolbar > * {
2276
+ margin: 0;
2277
+ }
2278
+
2279
+ cap-toolbar[aria-orientation="vertical"] {
2280
+ flex-direction: column;
2281
+ align-items: stretch;
2282
+ }
2283
+
2284
+ cap-treeview {
2285
+ display: flex;
2286
+ position: relative;
2287
+ flex-direction: column;
2288
+ min-width: 0;
2289
+ min-height: 0;
2290
+ overflow: auto;
2291
+ }
2292
+
2293
+ cap-treeview > [role="tree"],
2294
+ cap-treeview > ul[aria-hidden="true"] {
2295
+ display: grid;
2296
+ align-content: start;
2297
+ margin: 0;
2298
+ padding: 0;
2299
+ list-style: none;
2300
+ }
2301
+
2302
+ cap-treeview [role="treeitem"],
2303
+ cap-treeview > ul[aria-hidden="true"] > li {
2304
+ display: flex;
2305
+ position: relative;
2306
+ align-items: flex-start;
2307
+ gap: 0.35rem;
2308
+ min-width: 0;
2309
+ padding: 0.38rem 0.5rem;
2310
+ padding-inline-start: calc(0.5rem + var(--tree-depth) * 1.1rem);
2311
+ cursor: default;
2312
+ user-select: none;
2313
+ }
2314
+
2315
+ cap-treeview > ul[aria-hidden="true"] cap-placeholder {
2316
+ align-self: center;
2317
+ height: var(--ui-font-size);
2318
+ }
2319
+
2320
+ cap-treeview > [role="tree"][aria-busy="true"] > [role="treeitem"]::after {
2321
+ content: "";
2322
+ position: absolute;
2323
+ z-index: 1;
2324
+ inset: 0;
2325
+ background-image: var(--working-background-image);
2326
+ background-repeat: repeat;
2327
+ background-size: 2rem 2rem;
2328
+ animation: cap-working-progress .55s linear infinite;
2329
+ pointer-events: none;
2330
+ }
2331
+
2332
+ cap-treeview [role="treeitem"]:hover {
2333
+ background: var(--button-background-hover);
2334
+ }
2335
+
2336
+ cap-treeview [role="treeitem"]:focus-visible {
2337
+ outline: 2px solid transparent;
2338
+ outline-offset: -2px;
2339
+ box-shadow: var(--focus-ring);
2340
+ }
2341
+
2342
+ cap-treeview [role="treeitem"][aria-selected="true"] {
2343
+ color: var(--ui-select-text-color);
2344
+ background: var(--ui-select-bg);
2345
+ }
2346
+
2347
+ cap-treeview cap-expander {
2348
+ flex: 0 0 1rem;
2349
+ text-align: center;
2350
+ }
2351
+
2352
+ cap-treeview [role="treeitem"][aria-expanded] > cap-expander {
2353
+ cursor: pointer;
2354
+ }
2355
+
2356
+ cap-treeview cap-label {
2357
+ display: block;
2358
+ flex: 1 1 auto;
2359
+ min-width: 0;
2360
+ overflow-wrap: anywhere;
2361
+ }
2362
+
2363
+ cap-treeview > [role="status"] {
2364
+ margin: 0;
2365
+ padding: var(--ui-padding, 0.75rem);
2366
+ }
2367
+
2368
+ cap-treeview:has(> cap-error) {
2369
+ outline: 1px solid var(--error-color);
2370
+ outline-offset: -1px;
2371
+ }
2372
+
2373
+ @media (prefers-reduced-motion: reduce) {
2374
+ cap-treeview > [role="tree"][aria-busy="true"] > [role="treeitem"]::after {
2375
+ animation: none !important;
2376
+ }
2377
+ }
2378
+
2379
+ @media (forced-colors: active) {
2380
+ cap-treeview [role="treeitem"][aria-selected="true"] {
2381
+ outline: 2px solid Highlight;
2382
+ forced-color-adjust: auto;
2383
+ }
2384
+
2385
+ cap-treeview:has(> cap-error) {
2386
+ outline: 2px solid Mark;
2387
+ }
2388
+ }