@xcv-ui/ui 0.0.0-stage → 1.0.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.
@@ -0,0 +1,1184 @@
1
+ /* XCV layout and typography primitives. All visual values use semantic theme tokens. */
2
+ .xcv-box { min-width: 0; }
3
+ .xcv-box--flex { display: flex; }
4
+ .xcv-box--grid { display: grid; }
5
+ .xcv-box--inline-flex { display: inline-flex; }
6
+ .xcv-box--block { display: block; }
7
+ .xcv-box--direction-row { flex-direction: row; }
8
+ .xcv-box--direction-row-reverse { flex-direction: row-reverse; }
9
+ .xcv-box--direction-column { flex-direction: column; }
10
+ .xcv-box--direction-column-reverse { flex-direction: column-reverse; }
11
+ .xcv-box--align-start { align-items: flex-start; }
12
+ .xcv-box--align-center { align-items: center; }
13
+ .xcv-box--align-end { align-items: flex-end; }
14
+ .xcv-box--align-stretch { align-items: stretch; }
15
+ .xcv-box--align-baseline { align-items: baseline; }
16
+ .xcv-box--justify-start { justify-content: flex-start; }
17
+ .xcv-box--justify-center { justify-content: center; }
18
+ .xcv-box--justify-end { justify-content: flex-end; }
19
+ .xcv-box--justify-between { justify-content: space-between; }
20
+ .xcv-box--justify-around { justify-content: space-around; }
21
+ .xcv-box--justify-evenly { justify-content: space-evenly; }
22
+ .xcv-box--gap-none { gap: var(--xcv-space-none); }
23
+ .xcv-box--gap-xs { gap: var(--xcv-space-xs); }
24
+ .xcv-box--gap-sm { gap: var(--xcv-space-sm); }
25
+ .xcv-box--gap-md { gap: var(--xcv-space-md); }
26
+ .xcv-box--gap-lg { gap: var(--xcv-space-lg); }
27
+ .xcv-box--gap-xl { gap: var(--xcv-space-xl); }
28
+ .xcv-box--wrap { flex-wrap: wrap; }
29
+ .xcv-box--nowrap { flex-wrap: nowrap; }
30
+
31
+ .xcv-stack { display: flex; flex-direction: column; min-width: 0; }
32
+ .xcv-stack--gap-none { gap: var(--xcv-space-none); }
33
+ .xcv-stack--gap-xs { gap: var(--xcv-space-xs); }
34
+ .xcv-stack--gap-sm { gap: var(--xcv-space-sm); }
35
+ .xcv-stack--gap-md { gap: var(--xcv-space-md); }
36
+ .xcv-stack--gap-lg { gap: var(--xcv-space-lg); }
37
+ .xcv-stack--gap-xl { gap: var(--xcv-space-xl); }
38
+ .xcv-stack--align-start { align-items: flex-start; }
39
+ .xcv-stack--align-center { align-items: center; }
40
+ .xcv-stack--align-end { align-items: flex-end; }
41
+ .xcv-stack--align-stretch { align-items: stretch; }
42
+ .xcv-stack--align-baseline { align-items: baseline; }
43
+ .xcv-stack--justify-start { justify-content: flex-start; }
44
+ .xcv-stack--justify-center { justify-content: center; }
45
+ .xcv-stack--justify-end { justify-content: flex-end; }
46
+ .xcv-stack--justify-between { justify-content: space-between; }
47
+ .xcv-stack--justify-around { justify-content: space-around; }
48
+ .xcv-stack--justify-evenly { justify-content: space-evenly; }
49
+
50
+ .xcv-inline { display: flex; min-width: 0; }
51
+ .xcv-inline--wrap { flex-wrap: wrap; }
52
+ .xcv-inline--nowrap { flex-wrap: nowrap; }
53
+ .xcv-inline--gap-none { gap: var(--xcv-space-none); }
54
+ .xcv-inline--gap-xs { gap: var(--xcv-space-xs); }
55
+ .xcv-inline--gap-sm { gap: var(--xcv-space-sm); }
56
+ .xcv-inline--gap-md { gap: var(--xcv-space-md); }
57
+ .xcv-inline--gap-lg { gap: var(--xcv-space-lg); }
58
+ .xcv-inline--gap-xl { gap: var(--xcv-space-xl); }
59
+ .xcv-inline--align-start { align-items: flex-start; }
60
+ .xcv-inline--align-center { align-items: center; }
61
+ .xcv-inline--align-end { align-items: flex-end; }
62
+ .xcv-inline--align-stretch { align-items: stretch; }
63
+ .xcv-inline--align-baseline { align-items: baseline; }
64
+ .xcv-inline--justify-start { justify-content: flex-start; }
65
+ .xcv-inline--justify-center { justify-content: center; }
66
+ .xcv-inline--justify-end { justify-content: flex-end; }
67
+ .xcv-inline--justify-between { justify-content: space-between; }
68
+ .xcv-inline--justify-around { justify-content: space-around; }
69
+ .xcv-inline--justify-evenly { justify-content: space-evenly; }
70
+
71
+ .xcv-container { width: 100%; min-width: 0; }
72
+ .xcv-container--centered { margin-inline: auto; }
73
+ .xcv-container--sm { max-width: 40rem; }
74
+ .xcv-container--md { max-width: 48rem; }
75
+ .xcv-container--lg { max-width: 64rem; }
76
+ .xcv-container--xl { max-width: 80rem; }
77
+ .xcv-container--full { max-width: none; }
78
+
79
+ .xcv-divider { flex: none; border: 0; background: linear-gradient(90deg, transparent 0%, var(--xcv-color-border) 16%, var(--xcv-color-border) 84%, transparent 100%); }
80
+ .xcv-divider--horizontal { width: 100%; height: 1px; }
81
+ .xcv-divider--vertical { display: block; align-self: stretch; width: 1px; min-height: 1rem; background: linear-gradient(180deg, transparent 0%, var(--xcv-color-border) 16%, var(--xcv-color-border) 84%, transparent 100%); }
82
+ .xcv-divider--spacing-none { margin: 0; }
83
+ .xcv-divider--spacing-xs { margin: var(--xcv-space-xs) 0; }
84
+ .xcv-divider--spacing-sm { margin: var(--xcv-space-sm) 0; }
85
+ .xcv-divider--spacing-md { margin: var(--xcv-space-md) 0; }
86
+ .xcv-divider--spacing-lg { margin: var(--xcv-space-lg) 0; }
87
+ .xcv-divider--spacing-xl { margin: var(--xcv-space-xl) 0; }
88
+ .xcv-divider--vertical.xcv-divider--spacing-xs { margin: 0 var(--xcv-space-xs); }
89
+ .xcv-divider--vertical.xcv-divider--spacing-sm { margin: 0 var(--xcv-space-sm); }
90
+ .xcv-divider--vertical.xcv-divider--spacing-md { margin: 0 var(--xcv-space-md); }
91
+ .xcv-divider--vertical.xcv-divider--spacing-lg { margin: 0 var(--xcv-space-lg); }
92
+ .xcv-divider--vertical.xcv-divider--spacing-xl { margin: 0 var(--xcv-space-xl); }
93
+
94
+ .xcv-surface, .xcv-card { min-width: 0; color: var(--xcv-color-text-primary); background: var(--xcv-gradient-surface); border: 1px solid var(--xcv-color-border); box-shadow: var(--xcv-shadow-md), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent); }
95
+ .xcv-surface--default, .xcv-card--default { background: var(--xcv-gradient-surface); }
96
+ .xcv-surface--subtle, .xcv-card--subtle { background: var(--xcv-gradient-surface-subtle); border-color: color-mix(in srgb, var(--xcv-color-border) 82%, transparent); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 10%, transparent); }
97
+ .xcv-surface--outlined, .xcv-card--outlined { background: var(--xcv-gradient-surface-subtle); border-color: var(--xcv-color-border-strong); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 10%, transparent); }
98
+ .xcv-surface--padding-none, .xcv-card--padding-none { padding: var(--xcv-space-none); }
99
+ .xcv-surface--padding-xs, .xcv-card--padding-xs { padding: var(--xcv-space-xs); }
100
+ .xcv-surface--padding-sm, .xcv-card--padding-sm { padding: var(--xcv-space-sm); }
101
+ .xcv-surface--padding-md, .xcv-card--padding-md { padding: var(--xcv-space-md); }
102
+ .xcv-surface--padding-lg, .xcv-card--padding-lg { padding: var(--xcv-space-lg); }
103
+ .xcv-surface--padding-xl, .xcv-card--padding-xl { padding: var(--xcv-space-xl); }
104
+ .xcv-surface--radius-none, .xcv-card--radius-none { border-radius: var(--xcv-radius-none); }
105
+ .xcv-surface--radius-subtle, .xcv-card--radius-subtle { border-radius: var(--xcv-radius-subtle); }
106
+ .xcv-surface--radius-medium, .xcv-card--radius-medium { border-radius: var(--xcv-radius-medium); }
107
+ .xcv-surface--radius-large, .xcv-card--radius-large { border-radius: var(--xcv-radius-large); }
108
+ .xcv-surface--radius-full, .xcv-card--radius-full { border-radius: var(--xcv-radius-full); }
109
+ .xcv-card { display: flex; flex-direction: column; }
110
+ .xcv-card > .xcv-link { display: block; color: inherit; text-decoration: none; }
111
+ .xcv-card > .xcv-link:focus-visible { outline: 2px solid var(--xcv-color-focus-ring); outline-offset: 3px; }
112
+
113
+ .xcv-card[data-xcv-accented="on"] { border-inline-start: 3px solid var(--xcv-color-accent); }
114
+ .xcv-card[data-xcv-accented="on"] {
115
+ background:
116
+ linear-gradient(135deg, color-mix(in srgb, var(--xcv-color-accent) 18%, transparent), color-mix(in srgb, var(--xcv-color-accent) 7%, transparent)),
117
+ var(--xcv-gradient-surface);
118
+ }
119
+ .xcv-card__content { min-width: 0; }
120
+ .xcv-card__footer { display: flex; flex-wrap: wrap; align-items: center; gap: var(--xcv-space-sm); margin-top: auto; padding-top: var(--xcv-space-md); }
121
+
122
+ .xcv-media { position: relative; width: 100%; overflow: hidden; }
123
+ .xcv-media:focus-within { outline: 2px solid var(--xcv-color-focus-ring); outline-offset: -2px; }
124
+ .xcv-media > img, .xcv-media > video, .xcv-media > iframe, .xcv-media > picture, .xcv-media > picture > img { display: block; width: 100%; height: 100%; object-fit: var(--xcv-media-fit, cover); object-position: var(--xcv-media-position, center); }
125
+ .xcv-media > img, .xcv-media > video, .xcv-media > picture { position: absolute; inset: 0; }
126
+ .xcv-media > picture > img { position: absolute; inset: 0; }
127
+ .xcv-media--intrinsic > img, .xcv-media--intrinsic > video, .xcv-media--intrinsic > picture { position: static; height: auto; }
128
+ .xcv-media--intrinsic > picture > img { position: static; height: auto; }
129
+
130
+ .xcv-text { overflow-wrap: anywhere; text-wrap: pretty; font-kerning: normal; margin: 0; color: var(--xcv-color-text-primary); font-size: var(--xcv-font-size-md); line-height: var(--xcv-line-height-relaxed); }
131
+ .xcv-text--small { font-size: var(--xcv-font-size-sm); line-height: var(--xcv-line-height-relaxed); }
132
+ .xcv-text--caption { font-size: var(--xcv-font-size-xs); line-height: var(--xcv-line-height-normal); }
133
+ .xcv-text--eyebrow { font-size: var(--xcv-font-size-xs); font-weight: var(--xcv-font-weight-semibold); letter-spacing: 0.085em; line-height: var(--xcv-line-height-normal); text-transform: uppercase; }
134
+ .xcv-text--weight-normal { font-weight: var(--xcv-font-weight-normal); }
135
+ .xcv-text--weight-medium { font-weight: var(--xcv-font-weight-medium); }
136
+ .xcv-text--weight-semibold { font-weight: var(--xcv-font-weight-semibold); }
137
+ .xcv-text--weight-bold { font-weight: var(--xcv-font-weight-bold); }
138
+ .xcv-text--color-primary { color: var(--xcv-color-text-primary); }
139
+ .xcv-text--color-secondary { color: var(--xcv-color-text-secondary); }
140
+ .xcv-text--color-muted { color: var(--xcv-color-text-muted); }
141
+ .xcv-text--color-inverse { color: var(--xcv-color-text-inverse); }
142
+
143
+ .xcv-title { max-width: 100%; overflow-wrap: anywhere; text-wrap: balance; font-kerning: normal; margin: 0; color: var(--xcv-color-text-primary); line-height: var(--xcv-line-height-tight); letter-spacing: -0.025em; }
144
+ .xcv-title--sm { font-size: var(--xcv-font-size-md); letter-spacing: -0.01em; }
145
+ .xcv-title--md { font-size: var(--xcv-font-size-lg); letter-spacing: -0.015em; }
146
+ .xcv-title--lg { font-size: var(--xcv-font-size-xl); letter-spacing: -0.02em; }
147
+ .xcv-title--xl { font-size: var(--xcv-font-size-2xl); }
148
+ .xcv-title--2xl { font-size: var(--xcv-font-size-3xl); letter-spacing: -0.03em; }
149
+ .xcv-title--3xl { font-size: clamp(var(--xcv-font-size-3xl), 4vw, var(--xcv-font-size-4xl)); letter-spacing: -0.035em; }
150
+ .xcv-title--weight-medium { font-weight: var(--xcv-font-weight-medium); }
151
+ .xcv-title--weight-semibold { font-weight: var(--xcv-font-weight-semibold); }
152
+ .xcv-title--weight-bold { font-weight: var(--xcv-font-weight-bold); }
153
+
154
+ .xcv-label { display: inline-block; max-width: 100%; overflow-wrap: anywhere; color: var(--xcv-color-text-primary); font-size: var(--xcv-font-size-sm); font-weight: var(--xcv-font-weight-medium); }
155
+ .xcv-label__required { color: var(--xcv-color-feedback-error); }
156
+
157
+
158
+ /* Actions */
159
+ .xcv-button { position: relative; isolation: isolate; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; gap: var(--xcv-space-sm); border: 1px solid transparent; border-radius: var(--xcv-radius-md); font: inherit; font-weight: var(--xcv-font-weight-semibold); line-height: var(--xcv-line-height-normal); cursor: pointer; transform: translate3d(0, 0, 0); transition: background var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing), color var(--xcv-motion-duration) var(--xcv-motion-easing), transform var(--xcv-motion-duration) var(--xcv-motion-easing), box-shadow var(--xcv-motion-duration) var(--xcv-motion-easing), filter var(--xcv-motion-duration) var(--xcv-motion-easing); }
160
+ .xcv-button:focus-visible, .xcv-link:focus-visible { outline: 2px solid var(--xcv-color-focus-ring); outline-offset: 3px; }
161
+ .xcv-button:disabled { opacity: var(--xcv-opacity-disabled); cursor: not-allowed; box-shadow: none; filter: saturate(0.65); }
162
+ .xcv-button:hover:not(:disabled) { transform: translate3d(0, -1px, 0); }
163
+ .xcv-button:active:not(:disabled) { transform: translate3d(0, 0, 0) scale(0.975); }
164
+ .xcv-button--sm { min-height: 2rem; padding: 0 var(--xcv-space-sm); font-size: var(--xcv-font-size-sm); }
165
+ .xcv-button--md { min-height: 2.5rem; padding: 0 var(--xcv-space-md); font-size: var(--xcv-font-size-md); }
166
+ .xcv-button--lg { min-height: 3rem; padding: 0 var(--xcv-space-lg); font-size: var(--xcv-font-size-md); }
167
+ .xcv-button--primary { color: var(--xcv-color-text-inverse); background: var(--xcv-gradient-action-primary); box-shadow: var(--xcv-shadow-md), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 26%, transparent); }
168
+ .xcv-button--primary:hover:not(:disabled) { background: var(--xcv-gradient-action-primary-hover); box-shadow: 0 4px 14px color-mix(in srgb, var(--xcv-color-action-primary) 32%, transparent), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 25%, transparent); }
169
+ .xcv-button--secondary { color: var(--xcv-color-text-primary); background: var(--xcv-gradient-action-secondary); border-color: var(--xcv-color-border-strong); box-shadow: var(--xcv-shadow-sm), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent); }
170
+ .xcv-button--secondary:hover:not(:disabled) { background: var(--xcv-gradient-control-surface-hover); border-color: var(--xcv-color-border-focus); box-shadow: var(--xcv-shadow-md), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 16%, transparent); }
171
+ .xcv-button--tertiary { color: var(--xcv-color-text-primary); background: transparent; box-shadow: none; }
172
+ .xcv-button--tertiary:hover:not(:disabled) { background: var(--xcv-gradient-control-surface-hover); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--xcv-color-border-strong) 48%, transparent); }
173
+ .xcv-button__content { position: relative; z-index: 1; }
174
+ .xcv-button--full-width { width: 100%; }
175
+ .xcv-button--icon-only { flex: none; padding-inline: 0; }
176
+ .xcv-button--icon-only.xcv-button--sm { width: 2rem; }
177
+ .xcv-button--icon-only.xcv-button--md { width: 2.5rem; }
178
+ .xcv-button--icon-only.xcv-button--lg { width: 3rem; }
179
+ .xcv-button--full-width.xcv-button--icon-only { width: 100%; }
180
+ .xcv-button__content { display: inline-flex; align-items: center; justify-content: center; gap: inherit; }
181
+ .xcv-button__spinner { position: relative; z-index: 1; width: 1em; height: 1em; flex: none; border: 2px solid currentColor; border-right-color: transparent; border-radius: var(--xcv-radius-full); animation: xcv-spin 700ms linear infinite; }
182
+ @keyframes xcv-spin { to { transform: rotate(360deg); } }
183
+ .xcv-link { color: var(--xcv-color-link); text-decoration: none; cursor: pointer; transition: color var(--xcv-motion-duration) var(--xcv-motion-easing); }
184
+ .xcv-link:hover { color: var(--xcv-color-link-hover); }
185
+ .xcv-link--subtle { color: var(--xcv-color-text-secondary); }
186
+ .xcv-link--subtle:hover { color: var(--xcv-color-text-primary); }
187
+
188
+
189
+
190
+ /* Form controls */
191
+ .xcv-field-control { box-sizing: border-box; display: block; width: 100%; min-width: 0; color: var(--xcv-color-text-primary); background: var(--xcv-gradient-control-surface); border: 1px solid var(--xcv-color-border); border-radius: var(--xcv-radius-md); font: inherit; line-height: var(--xcv-line-height-normal); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 10%, transparent), 0 1px 2px color-mix(in srgb, var(--xcv-color-surface) 42%, transparent); transition: background var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing), box-shadow var(--xcv-motion-duration) var(--xcv-motion-easing), transform var(--xcv-motion-duration) var(--xcv-motion-easing); }
192
+ .xcv-field-control::placeholder { color: var(--xcv-color-text-muted); opacity: 1; }
193
+ .xcv-field-control:hover:not(:disabled):not(:focus-visible) { background: var(--xcv-gradient-control-surface-hover); border-color: var(--xcv-color-border-strong); }
194
+ .xcv-field-control--sm { min-height: 2rem; padding: 0 var(--xcv-space-sm); font-size: var(--xcv-font-size-sm); }
195
+ .xcv-field-control--md { min-height: 2.5rem; padding: 0 var(--xcv-space-md); font-size: var(--xcv-font-size-md); }
196
+ .xcv-field-control--lg { min-height: 3rem; padding: 0 var(--xcv-space-md); font-size: var(--xcv-font-size-md); }
197
+ .xcv-field-control:focus-visible, .xcv-checkable:focus-visible { outline: 2px solid var(--xcv-color-focus-ring); outline-offset: 3px; }
198
+ .xcv-field-control:focus-visible { background: var(--xcv-color-surface-raised); border-color: var(--xcv-color-border-focus); box-shadow: 0 0 0 4px color-mix(in srgb, var(--xcv-color-focus-ring) 22%, transparent), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent); transform: translateY(-1px); }
199
+ .xcv-field-control:disabled, .xcv-checkable:disabled { opacity: var(--xcv-opacity-disabled); cursor: not-allowed; box-shadow: none; }
200
+ .xcv-field-control--error { border-color: var(--xcv-color-feedback-error); }
201
+ .xcv-field-control--error:focus-visible { outline-color: var(--xcv-color-feedback-error); box-shadow: 0 0 0 4px color-mix(in srgb, var(--xcv-color-feedback-error) 20%, transparent); }
202
+ .xcv-field-control--success { border-color: var(--xcv-color-feedback-success); }
203
+ .xcv-field-control--success:focus-visible { outline-color: var(--xcv-color-feedback-success); box-shadow: 0 0 0 4px color-mix(in srgb, var(--xcv-color-feedback-success) 18%, transparent); }
204
+ .xcv-checkable.xcv-field-control--error { border-color: var(--xcv-color-feedback-error); }
205
+ .xcv-checkable.xcv-field-control--error:focus-visible { outline-color: var(--xcv-color-feedback-error); }
206
+ .xcv-checkable.xcv-field-control--success { border-color: var(--xcv-color-feedback-success); }
207
+ .xcv-text-area { min-height: 6rem; padding-block: var(--xcv-space-sm); resize: vertical; }
208
+ .xcv-select-wrapper {
209
+ position: relative;
210
+ display: block;
211
+ width: 100%;
212
+ min-width: 0;
213
+ isolation: isolate;
214
+ }
215
+ .xcv-select-wrapper[data-open="true"] { z-index: 20; }
216
+ .xcv-select__native {
217
+ position: absolute !important;
218
+ width: 1px !important;
219
+ height: 1px !important;
220
+ padding: 0 !important;
221
+ margin: -1px !important;
222
+ overflow: hidden !important;
223
+ clip: rect(0, 0, 0, 0) !important;
224
+ clip-path: inset(50%) !important;
225
+ white-space: nowrap !important;
226
+ border: 0 !important;
227
+ pointer-events: none !important;
228
+ }
229
+ .xcv-select__trigger {
230
+ display: flex;
231
+ width: 100%;
232
+ align-items: center;
233
+ justify-content: space-between;
234
+ gap: var(--xcv-space-md);
235
+ padding-inline: var(--xcv-space-md) 3rem;
236
+ font: inherit;
237
+ text-align: start;
238
+ cursor: pointer;
239
+ }
240
+ .xcv-select__trigger[aria-expanded="true"] {
241
+ border-color: var(--xcv-color-border-focus);
242
+ background: var(--xcv-gradient-control-surface-hover);
243
+ }
244
+ .xcv-select__trigger:disabled { cursor: not-allowed; }
245
+ .xcv-select__value { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
246
+ .xcv-select__value--placeholder { color: var(--xcv-color-text-muted); }
247
+ .xcv-select__chevron {
248
+ position: absolute;
249
+ inset-inline-end: 1.125rem;
250
+ top: 50%;
251
+ width: 0.5rem;
252
+ height: 0.5rem;
253
+ border-inline-end: 1.5px solid currentColor;
254
+ border-block-end: 1.5px solid currentColor;
255
+ transform: translateY(-68%) rotate(45deg);
256
+ transition: transform var(--xcv-motion-duration) var(--xcv-motion-easing);
257
+ pointer-events: none;
258
+ }
259
+ .xcv-select__trigger[aria-expanded="true"] .xcv-select__chevron {
260
+ transform: translateY(-30%) rotate(225deg);
261
+ }
262
+ .xcv-select__listbox {
263
+ position: fixed;
264
+ z-index: 1000;
265
+ display: flex;
266
+ max-height: min(18rem, 50vh);
267
+ min-width: 0;
268
+ flex-direction: column;
269
+ gap: 2px;
270
+ overflow: auto;
271
+ padding: var(--xcv-space-xs);
272
+ border: 1px solid var(--xcv-overlay-border);
273
+ border-radius: var(--xcv-component-radius, var(--xcv-overlay-radius));
274
+ color: var(--xcv-color-text-primary);
275
+ background: var(--xcv-color-surface-raised);
276
+ box-shadow: var(--xcv-overlay-shadow);
277
+ animation: xcv-overlay-enter var(--xcv-motion-duration) var(--xcv-motion-easing) both;
278
+ }
279
+ @supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
280
+ .xcv-select__listbox {
281
+ background: var(--xcv-overlay-background);
282
+ -webkit-backdrop-filter: blur(var(--xcv-overlay-backdrop-blur)) saturate(var(--xcv-overlay-backdrop-saturation));
283
+ backdrop-filter: blur(var(--xcv-overlay-backdrop-blur)) saturate(var(--xcv-overlay-backdrop-saturation));
284
+ }
285
+ }
286
+ .xcv-select__option {
287
+ display: flex;
288
+ min-height: 2.375rem;
289
+ min-width: 0;
290
+ align-items: center;
291
+ justify-content: space-between;
292
+ gap: var(--xcv-space-md);
293
+ padding: var(--xcv-space-sm) var(--xcv-space-md);
294
+ border: 1px solid transparent;
295
+ border-radius: var(--xcv-component-radius, var(--xcv-radius-sm));
296
+ color: var(--xcv-color-text-primary);
297
+ background: transparent;
298
+ font: inherit;
299
+ text-align: start;
300
+ cursor: pointer;
301
+ transition: color var(--xcv-motion-duration) var(--xcv-motion-easing), background var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing), transform var(--xcv-motion-duration) var(--xcv-motion-easing);
302
+ }
303
+ .xcv-select__option:hover:not([aria-disabled="true"]),
304
+ .xcv-select__option[data-active="true"]:not([aria-disabled="true"]) {
305
+ border-color: color-mix(in srgb, var(--xcv-color-border-strong) 72%, transparent);
306
+ background: var(--xcv-gradient-control-surface-hover);
307
+ }
308
+ .xcv-select__option[aria-selected="true"] {
309
+ border-color: color-mix(in srgb, var(--xcv-color-accent) 28%, var(--xcv-color-border));
310
+ background: color-mix(in srgb, var(--xcv-color-accent) 9%, var(--xcv-color-surface-raised));
311
+ }
312
+ .xcv-select__option[aria-disabled="true"] { opacity: var(--xcv-opacity-disabled); cursor: not-allowed; }
313
+ .xcv-select__check { color: var(--xcv-color-action-primary); font-size: 0.875em; font-weight: var(--xcv-font-weight-bold); }
314
+ .xcv-select__empty { padding: var(--xcv-space-md); color: var(--xcv-color-text-muted); font-size: var(--xcv-font-size-sm); }
315
+ @media (forced-colors: active) {
316
+ .xcv-select__listbox { border: 1px solid CanvasText; background: Canvas; box-shadow: none; }
317
+ .xcv-select__option[aria-selected="true"],
318
+ .xcv-select__option[data-active="true"] { outline: 1px solid Highlight; background: Highlight; color: HighlightText; }
319
+ .xcv-select__chevron { border-color: ButtonText; }
320
+ }
321
+ .xcv-checkable { box-sizing: border-box; display: inline-grid; place-content: center; width: 1.375rem; height: 1.375rem; margin: 0; flex: none; appearance: none; border: 1px solid var(--xcv-color-border-strong); background: var(--xcv-gradient-control-surface); color: var(--xcv-color-text-inverse); cursor: pointer; transition: background var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing), box-shadow var(--xcv-motion-duration) var(--xcv-motion-easing), transform var(--xcv-motion-duration) var(--xcv-motion-easing); }
322
+ .xcv-checkbox { border-radius: var(--xcv-radius-subtle); }
323
+ .xcv-radio { border-radius: var(--xcv-radius-full); }
324
+ .xcv-checkbox::before { content: ""; width: 0.34rem; height: 0.62rem; border: solid currentColor; border-width: 0 2px 2px 0; opacity: 0; transform: translateY(-1px) rotate(45deg) scale(0.65); transition: opacity var(--xcv-motion-duration) var(--xcv-motion-easing), transform var(--xcv-motion-duration) var(--xcv-motion-easing); }
325
+ .xcv-radio::before { content: ""; width: 0.55rem; height: 0.55rem; border-radius: var(--xcv-radius-full); background: currentColor; opacity: 0; transform: scale(0.55); transition: opacity var(--xcv-motion-duration) var(--xcv-motion-easing), transform var(--xcv-motion-duration) var(--xcv-motion-easing); }
326
+ .xcv-checkbox:checked, .xcv-radio:checked { border-color: var(--xcv-color-action-primary); background: var(--xcv-gradient-action-primary); }
327
+ .xcv-checkbox:checked::before, .xcv-radio:checked::before { opacity: 1; transform: translateY(-1px) rotate(45deg) scale(1); }
328
+ .xcv-radio:checked::before { transform: scale(1); }
329
+ .xcv-checkbox:indeterminate { border-color: var(--xcv-color-action-primary); background: var(--xcv-gradient-action-primary); }
330
+ .xcv-checkbox:indeterminate::before { width: 0.62rem; height: 2px; border: 0; border-radius: var(--xcv-radius-full); background: currentColor; opacity: 1; transform: none; }
331
+ .xcv-checkable:hover:not(:disabled) { border-color: var(--xcv-color-action-primary); background: var(--xcv-gradient-control-surface-hover); }
332
+ .xcv-checkable:checked:hover:not(:disabled) { background: var(--xcv-gradient-action-primary-hover); box-shadow: 0 0 0 3px color-mix(in srgb, var(--xcv-color-action-primary) 13%, transparent); }
333
+ .xcv-checkable:active:not(:disabled) { transform: scale(0.975); }
334
+ .xcv-checkable:disabled { cursor: not-allowed; }
335
+ .xcv-toggle { position: relative; appearance: none; width: 2.75rem; height: 1.625rem; border: 1px solid var(--xcv-color-border-strong); border-radius: var(--xcv-radius-full); background: var(--xcv-gradient-control-surface); box-shadow: inset 0 1px 2px color-mix(in srgb, var(--xcv-color-surface) 65%, transparent); transition: background var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing), box-shadow var(--xcv-motion-duration) var(--xcv-motion-easing), transform var(--xcv-motion-duration) var(--xcv-motion-easing); }
336
+ .xcv-toggle::before { content: ""; position: absolute; top: 0.125rem; left: 0.125rem; width: 1.25rem; height: 1.25rem; border-radius: var(--xcv-radius-full); background: var(--xcv-color-surface-raised); box-shadow: var(--xcv-shadow-md), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 35%, transparent); transition: transform var(--xcv-motion-duration) var(--xcv-motion-easing); }
337
+ .xcv-toggle:dir(rtl)::before { left: auto; right: 0.125rem; }
338
+ .xcv-toggle:hover:not(:disabled) { border-color: var(--xcv-color-border-focus); }
339
+ .xcv-toggle:checked { background: var(--xcv-gradient-action-primary); border-color: var(--xcv-color-action-primary); box-shadow: inset 0 1px 2px color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent); }
340
+ .xcv-toggle:checked:hover:not(:disabled) { box-shadow: 0 0 0 3px color-mix(in srgb, var(--xcv-color-action-primary) 14%, transparent), inset 0 1px 2px color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent); }
341
+ .xcv-toggle:checked::before { transform: translateX(1.125rem); }
342
+ .xcv-toggle:dir(rtl):checked::before { transform: translateX(-1.125rem); }
343
+ .xcv-toggle:disabled { cursor: not-allowed; }
344
+ .xcv-toggle:focus-visible { box-shadow: 0 0 0 4px color-mix(in srgb, var(--xcv-color-focus-ring) 22%, transparent); }
345
+
346
+
347
+
348
+ .xcv-checkbox.xcv-field-control--error, .xcv-radio.xcv-field-control--error { accent-color: var(--xcv-color-feedback-error); }
349
+ .xcv-toggle.xcv-field-control--error { border-color: var(--xcv-color-feedback-error); }
350
+
351
+
352
+ /* Form field composition */
353
+ .xcv-form-field { display: flex; flex-direction: column; align-items: stretch; gap: var(--xcv-space-xs); min-width: 0; }
354
+ .xcv-form-field__label { display: inline-block; color: var(--xcv-color-text-primary); font-size: var(--xcv-font-size-sm); font-weight: var(--xcv-font-weight-medium); }
355
+ .xcv-form-field__description { color: var(--xcv-color-text-secondary); font-size: var(--xcv-font-size-sm); line-height: var(--xcv-line-height-normal); }
356
+ .xcv-form-field__error { color: var(--xcv-color-feedback-error); font-size: var(--xcv-font-size-sm); line-height: var(--xcv-line-height-normal); }
357
+
358
+
359
+ /* Feedback */
360
+ .xcv-notice { --xcv-notice-accent: var(--xcv-color-feedback-info); position: relative; display: flex; align-items: flex-start; gap: var(--xcv-space-md); min-width: 0; padding: var(--xcv-space-md) var(--xcv-space-lg); overflow: hidden; color: var(--xcv-notice-accent); background: var(--xcv-notice-background, var(--xcv-color-surface-raised)); border: 1px solid color-mix(in srgb, var(--xcv-notice-accent) 38%, var(--xcv-color-border)); border-inline-start-width: 3px; border-radius: var(--xcv-radius-md); box-shadow: var(--xcv-shadow-sm), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent); animation: xcv-notice-enter var(--xcv-motion-duration) var(--xcv-motion-easing) both; }
361
+ @keyframes xcv-notice-enter { from { opacity: 0; transform: translateY(var(--xcv-motion-distance)); } to { opacity: 1; transform: translateY(0); } }
362
+ .xcv-notice--info { --xcv-notice-background: var(--xcv-color-feedback-info-background); }
363
+ .xcv-notice--success { --xcv-notice-accent: var(--xcv-color-feedback-success); --xcv-notice-background: var(--xcv-color-feedback-success-background); }
364
+ .xcv-notice--warning { --xcv-notice-accent: var(--xcv-color-feedback-warning); --xcv-notice-background: var(--xcv-color-feedback-warning-background); }
365
+ .xcv-notice--error { --xcv-notice-accent: var(--xcv-color-feedback-error); --xcv-notice-background: var(--xcv-color-feedback-error-background); }
366
+ .xcv-notice__title, .xcv-notice__content { color: inherit; }
367
+ .xcv-notice__icon { display: inline-flex; flex: none; align-items: center; justify-content: center; padding: var(--xcv-space-xs); border: 1px solid color-mix(in srgb, var(--xcv-notice-accent) 28%, transparent); border-radius: var(--xcv-radius-md); background: color-mix(in srgb, var(--xcv-notice-accent) 12%, transparent); }
368
+ .xcv-notice__body { min-width: 0; }
369
+ .xcv-notice__title { overflow-wrap: anywhere; margin: 0 0 var(--xcv-space-xs); color: var(--xcv-color-text-primary); font-weight: var(--xcv-font-weight-semibold); }
370
+ .xcv-notice__content { overflow-wrap: anywhere; color: var(--xcv-color-text-secondary); font-size: var(--xcv-font-size-sm); line-height: var(--xcv-line-height-relaxed); }
371
+ .xcv-badge { box-sizing: border-box; display: inline-flex; min-height: 1.5rem; align-items: center; gap: var(--xcv-space-xs); max-width: 100%; padding: 0 var(--xcv-space-sm); border: 1px solid var(--xcv-color-border); border-radius: var(--xcv-radius-full); color: var(--xcv-color-text-secondary); background: linear-gradient(145deg, var(--xcv-color-surface-raised), var(--xcv-color-surface-subtle)); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent); font-size: var(--xcv-font-size-xs); font-weight: var(--xcv-font-weight-semibold); line-height: var(--xcv-line-height-relaxed); overflow-wrap: anywhere; }
372
+ .xcv-badge::before { width: 0.35rem; height: 0.35rem; flex: none; border-radius: var(--xcv-radius-full); background: currentColor; content: ""; opacity: 0.85; }
373
+ .xcv-badge--info { color: var(--xcv-color-feedback-info); background: var(--xcv-color-feedback-info-background); border-color: color-mix(in srgb, var(--xcv-color-feedback-info) 38%, var(--xcv-color-border)); }
374
+ .xcv-badge--success { color: var(--xcv-color-feedback-success); background: var(--xcv-color-feedback-success-background); border-color: color-mix(in srgb, var(--xcv-color-feedback-success) 38%, var(--xcv-color-border)); }
375
+ .xcv-badge--warning { color: var(--xcv-color-feedback-warning); background: var(--xcv-color-feedback-warning-background); border-color: color-mix(in srgb, var(--xcv-color-feedback-warning) 38%, var(--xcv-color-border)); }
376
+ .xcv-badge--error { color: var(--xcv-color-feedback-error); background: var(--xcv-color-feedback-error-background); border-color: color-mix(in srgb, var(--xcv-color-feedback-error) 38%, var(--xcv-color-border)); }
377
+ .xcv-badge--info { background: linear-gradient(145deg, color-mix(in srgb, var(--xcv-color-feedback-info) 13%, var(--xcv-color-surface-raised)), var(--xcv-color-feedback-info-background)); }
378
+ .xcv-badge--success { background: linear-gradient(145deg, color-mix(in srgb, var(--xcv-color-feedback-success) 13%, var(--xcv-color-surface-raised)), var(--xcv-color-feedback-success-background)); }
379
+ .xcv-badge--warning { background: linear-gradient(145deg, color-mix(in srgb, var(--xcv-color-feedback-warning) 13%, var(--xcv-color-surface-raised)), var(--xcv-color-feedback-warning-background)); }
380
+ .xcv-badge--error { background: linear-gradient(145deg, color-mix(in srgb, var(--xcv-color-feedback-error) 13%, var(--xcv-color-surface-raised)), var(--xcv-color-feedback-error-background)); }
381
+
382
+ .xcv-field-control[aria-invalid="true"] { border-color: var(--xcv-color-feedback-error); }
383
+ .xcv-checkbox[aria-invalid="true"], .xcv-radio[aria-invalid="true"] { accent-color: var(--xcv-color-feedback-error); }
384
+ .xcv-toggle[aria-invalid="true"] { border-color: var(--xcv-color-feedback-error); }
385
+
386
+
387
+ /* Navigation: accordion */
388
+ .xcv-accordion { display: flex; min-width: 0; flex-direction: column; gap: var(--xcv-space-sm); }
389
+ .xcv-accordion__item { min-width: 0; overflow: hidden; border: 1px solid var(--xcv-color-border); border-radius: var(--xcv-radius-md); background: var(--xcv-gradient-surface-subtle); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 8%, transparent); transition: background var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing), box-shadow var(--xcv-motion-duration) var(--xcv-motion-easing); }
390
+ .xcv-accordion__item--open { border-color: color-mix(in srgb, var(--xcv-color-accent) 42%, var(--xcv-color-border-strong)); background: var(--xcv-gradient-surface); box-shadow: var(--xcv-shadow-sm), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent); }
391
+ .xcv-accordion__trigger { position: relative; display: flex; width: 100%; min-height: 3rem; align-items: center; justify-content: space-between; gap: var(--xcv-space-md); padding: var(--xcv-space-sm) var(--xcv-space-md); border: 0; border-radius: inherit; color: var(--xcv-color-text-primary); background: transparent; font: inherit; font-weight: var(--xcv-font-weight-semibold); text-align: start; cursor: pointer; transition: color var(--xcv-motion-duration) var(--xcv-motion-easing), background var(--xcv-motion-duration) var(--xcv-motion-easing); }
392
+ .xcv-accordion__trigger:hover:not(:disabled) { background: var(--xcv-gradient-surface-hover); }
393
+ .xcv-accordion__trigger-content { min-width: 0; overflow-wrap: anywhere; }
394
+ .xcv-accordion__trigger:focus-visible { outline: 2px solid var(--xcv-color-focus-ring); outline-offset: -3px; }
395
+ .xcv-accordion__trigger:disabled { opacity: var(--xcv-opacity-disabled); cursor: not-allowed; }
396
+ .xcv-chevron { position: relative; display: block; width: 0.55rem; height: 0.55rem; flex: none; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; opacity: 0.72; transition: transform var(--xcv-motion-duration) var(--xcv-motion-easing), opacity var(--xcv-motion-duration) var(--xcv-motion-easing), color var(--xcv-motion-duration) var(--xcv-motion-easing); }
397
+ .xcv-accordion__indicator { transform: rotate(45deg); }
398
+ .xcv-accordion__item--open .xcv-accordion__indicator { color: var(--xcv-color-accent); opacity: 1; transform: rotate(225deg); }
399
+ .xcv-accordion__content { padding: 0 var(--xcv-space-md) var(--xcv-space-md); color: var(--xcv-color-text-secondary); line-height: var(--xcv-line-height-relaxed); }
400
+ .xcv-accordion__content:not([hidden]) { animation: xcv-accordion-enter var(--xcv-motion-duration) var(--xcv-motion-easing) both; }
401
+ @keyframes xcv-accordion-enter { from { opacity: 0; transform: translateY(calc(0px - var(--xcv-motion-distance))); } to { opacity: 1; transform: translateY(0); } }
402
+ .xcv-accordion__content[hidden] { display: none; }
403
+
404
+
405
+
406
+ /* Navigation: actions menu */
407
+ .xcv-actions-menu { position: relative; display: inline-flex; }
408
+ .xcv-actions-menu__trigger { display: inline-flex; max-width: calc(100vw - 2rem); overflow-wrap: anywhere; align-items: center; justify-content: center; min-height: 2.5rem; padding: 0 var(--xcv-space-md); border: 1px solid var(--xcv-color-border-strong); border-radius: var(--xcv-radius-md); color: var(--xcv-color-text-primary); background: var(--xcv-color-surface); font: inherit; cursor: pointer; }
409
+ .xcv-actions-menu__trigger:hover:not(:disabled) { background: var(--xcv-color-surface-subtle); }
410
+ .xcv-actions-menu__trigger:disabled { opacity: var(--xcv-opacity-disabled); cursor: not-allowed; }
411
+ .xcv-actions-menu__trigger:focus-visible, .xcv-actions-menu__item:focus-visible { outline: 2px solid var(--xcv-color-focus-ring); outline-offset: 2px; }
412
+ .xcv-actions-menu__content { position: fixed; z-index: 1000; display: flex; min-width: min(12rem, calc(100vw - 2rem)); max-width: min(20rem, calc(100vw - 2rem)); max-height: min(18rem, 70vh); overflow: auto; flex-direction: column; padding: var(--xcv-space-xs); border: 1px solid var(--xcv-overlay-border); border-radius: var(--xcv-overlay-radius); color: var(--xcv-color-text-primary); background: var(--xcv-color-surface-raised); box-shadow: var(--xcv-overlay-shadow); }
413
+ @supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
414
+ .xcv-actions-menu__content { background: var(--xcv-overlay-background); -webkit-backdrop-filter: blur(var(--xcv-overlay-backdrop-blur)) saturate(var(--xcv-overlay-backdrop-saturation)); backdrop-filter: blur(var(--xcv-overlay-backdrop-blur)) saturate(var(--xcv-overlay-backdrop-saturation)); }
415
+ }
416
+ .xcv-actions-menu__item { box-sizing: border-box; display: flex; width: 100%; min-width: 0; min-height: 2.25rem; overflow-wrap: anywhere; align-items: center; padding: var(--xcv-space-sm) var(--xcv-space-md); border: 0; border-radius: var(--xcv-radius-sm); color: var(--xcv-color-text-primary); background: transparent; font: inherit; text-align: start; cursor: pointer; }
417
+ .xcv-actions-menu__item:hover:not([aria-disabled="true"]), .xcv-actions-menu__item:focus-visible { background: var(--xcv-color-surface-subtle); }
418
+ .xcv-actions-menu__item[aria-disabled="true"] { opacity: var(--xcv-opacity-disabled); cursor: not-allowed; }
419
+ .xcv-actions-menu__separator { height: 1px; margin: var(--xcv-space-xs) 0; background: var(--xcv-color-border); }
420
+
421
+ /* Navigation: tabs */
422
+ .xcv-tabs { min-width: 0; }
423
+ .xcv-tabs__list { display: flex; flex-wrap: wrap; gap: var(--xcv-space-xs); width: fit-content; max-width: 100%; padding: var(--xcv-space-xs); border: 1px solid var(--xcv-color-border); border-radius: var(--xcv-radius-lg); background: var(--xcv-gradient-surface-subtle); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 9%, transparent); }
424
+ .xcv-tabs--vertical .xcv-tabs__list { width: auto; flex-wrap: nowrap; flex-direction: column; align-items: stretch; }
425
+ .xcv-tabs__tab { position: relative; display: inline-flex; min-width: 0; max-width: 100%; overflow-wrap: anywhere; min-height: 2.5rem; align-items: center; justify-content: center; padding: var(--xcv-space-sm) var(--xcv-space-md); border: 1px solid transparent; border-radius: var(--xcv-radius-md); color: var(--xcv-color-text-secondary); background: transparent; font: inherit; font-weight: var(--xcv-font-weight-medium); cursor: pointer; transition: color var(--xcv-motion-duration) var(--xcv-motion-easing), background var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing), box-shadow var(--xcv-motion-duration) var(--xcv-motion-easing), transform var(--xcv-motion-duration) var(--xcv-motion-easing); }
426
+ .xcv-tabs__tab:hover:not(:disabled) { color: var(--xcv-color-text-primary); background: var(--xcv-gradient-surface-hover); transform: translateY(-1px); }
427
+ .xcv-tabs__tab--selected { border-color: color-mix(in srgb, var(--xcv-color-accent) 30%, var(--xcv-color-border)); color: var(--xcv-color-text-primary); background: var(--xcv-gradient-surface); box-shadow: var(--xcv-shadow-sm), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 16%, transparent); font-weight: var(--xcv-font-weight-semibold); }
428
+ .xcv-tabs__tab::after { position: absolute; inset-inline: var(--xcv-space-md); inset-block-end: 0.2rem; height: 2px; border-radius: var(--xcv-radius-full); background: var(--xcv-gradient-action-primary); content: ""; opacity: 0; transform: scaleX(0.35); transform-origin: center; transition: opacity var(--xcv-motion-duration) var(--xcv-motion-easing), transform var(--xcv-motion-duration) var(--xcv-motion-easing); }
429
+ .xcv-tabs__tab--selected::after { opacity: 1; transform: scaleX(1); }
430
+ .xcv-tabs__tab:focus-visible { z-index: 1; outline: 2px solid var(--xcv-color-focus-ring); outline-offset: 2px; }
431
+ .xcv-tabs__tab:disabled { opacity: var(--xcv-opacity-disabled); cursor: not-allowed; }
432
+ .xcv-tabs__panel { padding-block: var(--xcv-space-lg); }
433
+ .xcv-tabs__panel:focus-visible { outline: 2px solid var(--xcv-color-focus-ring); outline-offset: 2px; }
434
+ .xcv-tabs__panel[hidden] { display: none; }
435
+
436
+
437
+ /* Navigation: pagination */
438
+ .xcv-pagination { display: inline-flex; max-width: 100%; flex-wrap: nowrap; align-items: center; gap: var(--xcv-space-xs); padding: var(--xcv-space-xs); border: 1px solid var(--xcv-color-border); border-radius: var(--xcv-radius-lg); background: var(--xcv-gradient-surface-subtle); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 8%, transparent); }
439
+ .xcv-pagination__control,
440
+ .xcv-pagination__page-slot { box-sizing: border-box; display: inline-flex; flex: none; width: 2.35rem; min-width: 2.35rem; height: 2.35rem; align-items: center; justify-content: center; padding: 0; border: 1px solid transparent; border-radius: var(--xcv-radius-md); color: var(--xcv-color-text-secondary); background: transparent; font: inherit; font-variant-numeric: tabular-nums; cursor: pointer; transition: color var(--xcv-motion-duration) var(--xcv-motion-easing), background var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing), box-shadow var(--xcv-motion-duration) var(--xcv-motion-easing), transform var(--xcv-motion-duration) var(--xcv-motion-easing); }
441
+ .xcv-pagination__control { font-size: var(--xcv-font-size-lg); }
442
+ .xcv-pagination__page-slot { color: var(--xcv-color-text-primary); }
443
+ .xcv-pagination__control:hover:not(:disabled),
444
+ .xcv-pagination__page:hover { border-color: var(--xcv-color-border-strong); color: var(--xcv-color-text-primary); background: var(--xcv-gradient-surface-hover); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent); transform: translateY(-1px); }
445
+ .xcv-pagination__control:active:not(:disabled),
446
+ .xcv-pagination__page:active { transform: translateY(0) scale(0.94); }
447
+ .xcv-pagination__page--current { border-color: color-mix(in srgb, var(--xcv-color-accent) 38%, transparent); color: var(--xcv-color-text-inverse); background: var(--xcv-gradient-action-primary); box-shadow: 0 4px 14px color-mix(in srgb, var(--xcv-color-action-primary) 32%, transparent), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 25%, transparent); font-weight: var(--xcv-font-weight-bold); }
448
+ .xcv-pagination__page--current:hover { border-color: transparent; color: var(--xcv-color-text-inverse); background: var(--xcv-gradient-action-primary-hover); box-shadow: 0 6px 18px color-mix(in srgb, var(--xcv-color-action-primary) 38%, transparent); }
449
+ .xcv-pagination__page-slot--empty { visibility: hidden; pointer-events: none; }
450
+ .xcv-pagination__control:focus-visible,
451
+ .xcv-pagination__page:focus-visible { outline: 2px solid var(--xcv-color-focus-ring); outline-offset: 2px; }
452
+ .xcv-pagination:dir(rtl) .xcv-pagination__control { transform: rotate(180deg); }
453
+ .xcv-pagination__control:disabled { opacity: var(--xcv-opacity-disabled); cursor: not-allowed; }
454
+ .xcv-pagination__control:disabled:hover { transform: none; box-shadow: none; }
455
+
456
+ /* Navigation: filter group */
457
+ .xcv-filter-group { min-width: 0; padding: 0; border: 0; margin: 0; }
458
+ .xcv-filter-group__legend { margin-bottom: var(--xcv-space-sm); color: var(--xcv-color-text-primary); font-size: var(--xcv-font-size-sm); font-weight: var(--xcv-font-weight-semibold); }
459
+ .xcv-filter-group__options { display: flex; gap: var(--xcv-space-sm) var(--xcv-space-md); }
460
+ .xcv-filter-group--vertical .xcv-filter-group__options { flex-direction: column; }
461
+ .xcv-filter-group--horizontal .xcv-filter-group__options { flex-direction: row; flex-wrap: wrap; }
462
+ .xcv-filter-group__option { display: inline-flex; min-width: 0; max-width: 100%; min-height: 1.5rem; align-items: center; gap: var(--xcv-space-sm); color: var(--xcv-color-text-primary); font-size: var(--xcv-font-size-sm); cursor: pointer; }
463
+ .xcv-filter-group__option span { min-width: 0; overflow-wrap: anywhere; }
464
+ .xcv-filter-group__option--disabled { cursor: not-allowed; }
465
+ .xcv-filter-group__option input { width: 1.5rem; height: 1.5rem; flex: none; margin: 0; accent-color: var(--xcv-color-action-primary); }
466
+ .xcv-filter-group__option input:focus-visible { outline: 2px solid var(--xcv-color-focus-ring); outline-offset: 2px; }
467
+ .xcv-filter-group__option input:disabled { opacity: var(--xcv-opacity-disabled); cursor: not-allowed; }
468
+ .xcv-filter-group__option input:disabled + span { opacity: var(--xcv-opacity-disabled); }
469
+
470
+
471
+ /* Data display: stat card */
472
+ .xcv-stat-card { position: relative; display: flex; min-width: 0; flex-direction: column; gap: var(--xcv-space-sm); padding: var(--xcv-space-lg); overflow: hidden; border: 1px solid var(--xcv-color-border); border-radius: var(--xcv-radius-lg); color: var(--xcv-color-text-primary); background: var(--xcv-gradient-surface); box-shadow: var(--xcv-shadow-md), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 14%, transparent); }
473
+ .xcv-stat-card::before { position: absolute; inset-block: 0; inset-inline-start: 0; width: 2px; background: var(--xcv-gradient-action-primary); content: ""; opacity: 0.85; }
474
+ .xcv-stat-card__header { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: var(--xcv-space-sm); }
475
+ .xcv-stat-card__label { min-width: 0; overflow-wrap: anywhere; color: var(--xcv-color-text-secondary); font-size: var(--xcv-font-size-sm); font-weight: var(--xcv-font-weight-medium); }
476
+ .xcv-stat-card__icon { display: inline-flex; flex: none; align-items: center; justify-content: center; padding: var(--xcv-space-sm); border: 1px solid var(--xcv-color-border); border-radius: var(--xcv-radius-md); color: var(--xcv-color-accent); background: var(--xcv-gradient-control-surface); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent); }
477
+ .xcv-stat-card__value { color: var(--xcv-color-text-primary); font-size: var(--xcv-font-size-2xl); font-weight: var(--xcv-font-weight-bold); line-height: var(--xcv-line-height-tight); letter-spacing: -0.025em; overflow-wrap: anywhere; }
478
+ .xcv-stat-card__description { overflow-wrap: anywhere; color: var(--xcv-color-text-secondary); font-size: var(--xcv-font-size-sm); line-height: var(--xcv-line-height-normal); }
479
+ .xcv-stat-card__detail { align-self: flex-start; max-width: 100%; padding: 0.15rem var(--xcv-space-sm); overflow-wrap: anywhere; border: 1px solid var(--xcv-color-border); border-radius: var(--xcv-radius-full); color: var(--xcv-color-text-secondary); background: var(--xcv-gradient-surface-subtle); font-size: var(--xcv-font-size-xs); font-weight: var(--xcv-font-weight-semibold); }
480
+ .xcv-stat-card__detail--positive { border-color: color-mix(in srgb, var(--xcv-color-feedback-success) 36%, var(--xcv-color-border)); color: var(--xcv-color-feedback-success); background: color-mix(in srgb, var(--xcv-color-feedback-success) 8%, var(--xcv-color-surface)); }
481
+ .xcv-stat-card__detail--negative { border-color: color-mix(in srgb, var(--xcv-color-feedback-error) 36%, var(--xcv-color-border)); color: var(--xcv-color-feedback-error); background: color-mix(in srgb, var(--xcv-color-feedback-error) 8%, var(--xcv-color-surface)); }
482
+
483
+ /* Data display: semantic table */
484
+ .xcv-table__viewport { width: 100%; min-width: 0; overflow: auto; border: 1px solid var(--xcv-color-border); border-radius: var(--xcv-radius-lg); background: var(--xcv-gradient-surface-subtle); box-shadow: var(--xcv-shadow-sm), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 10%, transparent); }
485
+ .xcv-table__viewport:focus-visible { outline: 2px solid var(--xcv-color-focus-ring); outline-offset: 2px; }
486
+ .xcv-table { width: 100%; border-collapse: separate; border-spacing: 0; color: var(--xcv-color-text-primary); text-align: start; }
487
+ .xcv-table__caption { padding: var(--xcv-space-md) var(--xcv-space-lg); color: var(--xcv-color-text-secondary); font-size: var(--xcv-font-size-sm); font-weight: var(--xcv-font-weight-medium); text-align: start; }
488
+ .xcv-table__header-cell { padding: var(--xcv-space-md) var(--xcv-space-lg); border-bottom: 1px solid var(--xcv-color-border-strong); color: var(--xcv-color-text-secondary); background: var(--xcv-gradient-control-surface); font-size: var(--xcv-font-size-xs); font-weight: var(--xcv-font-weight-bold); letter-spacing: 0.045em; text-align: start; text-transform: uppercase; vertical-align: middle; }
489
+ .xcv-table__cell { padding: var(--xcv-space-md) var(--xcv-space-lg); border-bottom: 1px solid var(--xcv-color-border); font-size: var(--xcv-font-size-sm); line-height: var(--xcv-line-height-normal); vertical-align: middle; transition: background var(--xcv-motion-duration) var(--xcv-motion-easing); }
490
+ .xcv-table--compact .xcv-table__header-cell, .xcv-table--compact .xcv-table__cell { padding: var(--xcv-space-sm) var(--xcv-space-md); }
491
+ .xcv-table__body .xcv-table__row:nth-child(even) { background: color-mix(in srgb, var(--xcv-color-surface-raised) 38%, transparent); }
492
+ .xcv-table__body .xcv-table__row:hover { background: var(--xcv-gradient-surface-hover); }
493
+ .xcv-table__body .xcv-table__row:last-child .xcv-table__cell { border-bottom: 0; }
494
+
495
+ /* Search pattern */
496
+ .xcv-search-box { display: flex; width: 100%; min-width: 0; align-items: flex-end; gap: var(--xcv-space-sm); }
497
+ .xcv-search-box__label { display: flex; min-width: 0; overflow-wrap: anywhere; flex: 1; flex-direction: column; gap: var(--xcv-space-xs); color: var(--xcv-color-text-primary); font-size: var(--xcv-font-size-sm); font-weight: var(--xcv-font-weight-medium); }
498
+ .xcv-search-box__input { min-width: 0; }
499
+ /* Keep the browser's native search clear control from duplicating XCV's explicit clear action. */
500
+ .xcv-search-box__input::-webkit-search-cancel-button,
501
+ .xcv-search-box__input::-webkit-search-decoration,
502
+ .xcv-search-box__input::-webkit-search-results-button,
503
+ .xcv-search-box__input::-webkit-search-results-decoration {
504
+ -webkit-appearance: none;
505
+ appearance: none;
506
+ display: none;
507
+ }
508
+ .xcv-search-box__clear { width: 2.5rem; min-height: 2.5rem; flex: none; padding: 0; }
509
+ @media (max-width: 30rem) {
510
+ .xcv-search-box { flex-wrap: wrap; align-items: stretch; }
511
+ .xcv-search-box__label { flex-basis: 100%; }
512
+ }
513
+
514
+ /* Vertical tabs use an inline-end indicator instead of the horizontal underline. */
515
+ .xcv-tabs--vertical .xcv-tabs__tab { width: 100%; justify-content: flex-start; }
516
+ .xcv-tabs--vertical .xcv-tabs__tab::after { inset-block: var(--xcv-space-sm); inset-inline-end: 0.2rem; inset-inline-start: auto; width: 2px; height: auto; transform: scaleY(0); }
517
+ .xcv-tabs--vertical .xcv-tabs__tab--selected::after { transform: scaleY(1); }
518
+
519
+
520
+ /* Step navigation */
521
+ .xcv-stepper { width: 100%; min-width: 0; }
522
+ .xcv-stepper__list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--xcv-space-sm); margin: 0; padding: 0; list-style: none; }
523
+ .xcv-stepper--columns-3 .xcv-stepper__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
524
+ .xcv-stepper--columns-4 .xcv-stepper__list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
525
+ .xcv-stepper__item { min-width: 0; }
526
+ .xcv-stepper__link { position: relative; box-sizing: border-box; display: flex; min-width: 0; min-height: 3.25rem; align-items: center; gap: var(--xcv-space-sm); padding: var(--xcv-space-sm) var(--xcv-space-md); border: 1px solid var(--xcv-color-border); border-radius: var(--xcv-radius-md); color: var(--xcv-color-text-secondary); background: var(--xcv-gradient-surface-subtle); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 8%, transparent); font: inherit; text-decoration: none; transition: transform var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing), color var(--xcv-motion-duration) var(--xcv-motion-easing), background var(--xcv-motion-duration) var(--xcv-motion-easing), box-shadow var(--xcv-motion-duration) var(--xcv-motion-easing); }
527
+ .xcv-stepper__link:hover { border-color: color-mix(in srgb, var(--xcv-color-accent) 42%, var(--xcv-color-border-strong)); color: var(--xcv-color-text-primary); background: var(--xcv-gradient-surface-hover); box-shadow: var(--xcv-shadow-md), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 14%, transparent); transform: translateY(-1px); }
528
+ .xcv-stepper__link:active { transform: translateY(0) scale(0.985); }
529
+ .xcv-stepper__link:focus-visible { outline: 2px solid var(--xcv-color-focus-ring); outline-offset: 2px; }
530
+ .xcv-stepper__number { display: inline-flex; width: 1.9rem; height: 1.9rem; flex: none; align-items: center; justify-content: center; border: 1px solid var(--xcv-color-border-strong); border-radius: var(--xcv-radius-full); color: var(--xcv-color-text-primary); background: var(--xcv-gradient-control-surface); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 16%, transparent); font-size: var(--xcv-font-size-xs); font-weight: var(--xcv-font-weight-bold); line-height: var(--xcv-line-height-normal); transition: border-color var(--xcv-motion-duration) var(--xcv-motion-easing), color var(--xcv-motion-duration) var(--xcv-motion-easing), background var(--xcv-motion-duration) var(--xcv-motion-easing), box-shadow var(--xcv-motion-duration) var(--xcv-motion-easing); }
531
+ .xcv-stepper__link:hover .xcv-stepper__number { border-color: var(--xcv-color-accent); color: var(--xcv-color-text-inverse); background: var(--xcv-gradient-action-primary); box-shadow: var(--xcv-shadow-sm), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 24%, transparent); }
532
+ .xcv-stepper__label { min-width: 0; overflow-wrap: anywhere; font-weight: var(--xcv-font-weight-medium); }
533
+ @media (max-width: 47.5rem) {
534
+ .xcv-stepper--columns-3 .xcv-stepper__list,
535
+ .xcv-stepper--columns-4 .xcv-stepper__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
536
+ }
537
+
538
+
539
+
540
+ /* Windows High Contrast / forced-colors support. */
541
+ @media (forced-colors: active) {
542
+ .xcv-button:focus-visible,
543
+ .xcv-link:focus-visible,
544
+ .xcv-field-control:focus-visible,
545
+ .xcv-checkable:focus-visible,
546
+ .xcv-accordion__trigger:focus-visible,
547
+ .xcv-actions-menu__trigger:focus-visible,
548
+ .xcv-actions-menu__item:focus-visible,
549
+ .xcv-tabs__tab:focus-visible,
550
+ .xcv-tabs__panel:focus-visible,
551
+ .xcv-pagination__control:focus-visible,
552
+ .xcv-pagination__page:focus-visible,
553
+ .xcv-filter-group__option input:focus-visible,
554
+ .xcv-table__viewport:focus-visible,
555
+ .xcv-search-box__clear:focus-visible,
556
+ .xcv-media:focus-within,
557
+ .xcv-stepper__link:focus-visible {
558
+ outline-color: Highlight;
559
+ }
560
+
561
+ .xcv-card[data-xcv-interactive="on"]::before {
562
+ display: none;
563
+ }
564
+ .xcv-divider {
565
+ background: CanvasText;
566
+ forced-color-adjust: auto;
567
+ }
568
+ .xcv-button--primary {
569
+ border-color: Highlight;
570
+ color: HighlightText;
571
+ background: Highlight;
572
+ }
573
+ .xcv-button--secondary,
574
+ .xcv-actions-menu__trigger,
575
+ .xcv-search-box__clear {
576
+ border-color: ButtonText;
577
+ color: ButtonText;
578
+ background: ButtonFace;
579
+ }
580
+ .xcv-button--tertiary,
581
+ .xcv-link,
582
+ .xcv-link--subtle {
583
+ color: LinkText;
584
+ }
585
+ .xcv-button:disabled,
586
+ .xcv-actions-menu__trigger:disabled,
587
+ .xcv-actions-menu__item[aria-disabled="true"],
588
+ .xcv-field-control:disabled,
589
+ .xcv-checkable:disabled,
590
+ .xcv-accordion__trigger:disabled,
591
+ .xcv-tabs__tab:disabled,
592
+ .xcv-pagination__control:disabled,
593
+ .xcv-search-box__clear:disabled,
594
+ .xcv-filter-group__option input:disabled + span {
595
+ color: GrayText;
596
+ opacity: 1;
597
+ }
598
+
599
+ .xcv-field-control {
600
+ border-color: ButtonText;
601
+ color: FieldText;
602
+ background: Field;
603
+ }
604
+ .xcv-field-control::placeholder {
605
+ color: GrayText;
606
+ }
607
+ .xcv-checkable {
608
+ accent-color: auto;
609
+ }
610
+ .xcv-checkbox,
611
+ .xcv-radio {
612
+ appearance: auto;
613
+ -webkit-appearance: auto;
614
+ background: Field;
615
+ border-color: ButtonText;
616
+ }
617
+ .xcv-checkbox:checked,
618
+ .xcv-radio:checked {
619
+ accent-color: Highlight;
620
+ background: Field;
621
+ border-color: Highlight;
622
+ }
623
+
624
+ .xcv-toggle {
625
+ border-color: ButtonText;
626
+ background: Canvas;
627
+ }
628
+ .xcv-toggle::before {
629
+ background: ButtonText;
630
+ box-shadow: none;
631
+ }
632
+ .xcv-toggle:checked {
633
+ border-color: Highlight;
634
+ background: Highlight;
635
+ }
636
+ .xcv-toggle:checked::before {
637
+ background: HighlightText;
638
+ }
639
+
640
+ .xcv-actions-menu__content {
641
+ border-color: ButtonText;
642
+ color: CanvasText;
643
+ background: Canvas;
644
+ box-shadow: none;
645
+ }
646
+ .xcv-actions-menu__item {
647
+ color: CanvasText;
648
+ }
649
+ .xcv-actions-menu__item:hover:not([aria-disabled="true"]),
650
+ .xcv-actions-menu__item:focus-visible {
651
+ outline-color: Highlight;
652
+ background: Highlight;
653
+ color: HighlightText;
654
+ }
655
+ .xcv-actions-menu__separator {
656
+ background: CanvasText;
657
+ }
658
+
659
+ .xcv-accordion__item {
660
+ border-color: ButtonText;
661
+ background: Canvas;
662
+ box-shadow: none;
663
+ }
664
+ .xcv-accordion__item--open {
665
+ border-color: Highlight;
666
+ }
667
+ .xcv-accordion__trigger {
668
+ color: CanvasText;
669
+ background: Canvas;
670
+ }
671
+ .xcv-accordion__item--open .xcv-accordion__indicator {
672
+ color: Highlight;
673
+ }
674
+
675
+ .xcv-tabs__list,
676
+ .xcv-pagination {
677
+ border-color: ButtonText;
678
+ background: Canvas;
679
+ box-shadow: none;
680
+ }
681
+ .xcv-tabs__tab {
682
+ color: CanvasText;
683
+ background: Canvas;
684
+ }
685
+ .xcv-tabs__tab--selected {
686
+ border-color: Highlight;
687
+ color: HighlightText;
688
+ background: Highlight;
689
+ }
690
+ .xcv-tabs__tab--selected::after {
691
+ background: HighlightText;
692
+ }
693
+ .xcv-pagination__control,
694
+ .xcv-pagination__page {
695
+ border-color: ButtonText;
696
+ color: CanvasText;
697
+ background: Canvas;
698
+ }
699
+ .xcv-pagination__page--current {
700
+ border-color: Highlight;
701
+ color: HighlightText;
702
+ background: Highlight;
703
+ }
704
+
705
+ .xcv-surface,
706
+ .xcv-card {
707
+ border-color: ButtonText;
708
+ color: CanvasText;
709
+ background: Canvas;
710
+ box-shadow: none;
711
+ }
712
+ .xcv-notice {
713
+ border-inline-start-color: Highlight;
714
+ color: CanvasText;
715
+ background: Canvas;
716
+ }
717
+ .xcv-badge {
718
+ border-color: ButtonText;
719
+ color: CanvasText;
720
+ background: Canvas;
721
+ }
722
+ .xcv-badge--info,
723
+ .xcv-badge--success,
724
+ .xcv-badge--warning,
725
+ .xcv-badge--error {
726
+ border-color: Highlight;
727
+ color: CanvasText;
728
+ }
729
+ .xcv-stepper__link {
730
+ border-color: ButtonText;
731
+ color: LinkText;
732
+ background: Canvas;
733
+ }
734
+ .xcv-stat-card {
735
+ border-color: ButtonText;
736
+ color: CanvasText;
737
+ background: Canvas;
738
+ box-shadow: none;
739
+ }
740
+ .xcv-stat-card::before { background: Highlight; }
741
+ .xcv-stat-card__icon,
742
+ .xcv-stat-card__detail,
743
+ .xcv-table__viewport,
744
+ .xcv-table__header-cell {
745
+ border-color: ButtonText;
746
+ color: CanvasText;
747
+ background: Canvas;
748
+ box-shadow: none;
749
+ }
750
+ .xcv-table__body .xcv-table__row:nth-child(even),
751
+ .xcv-table__body .xcv-table__row:hover { background: Canvas; }
752
+ .xcv-notice__title,
753
+ .xcv-notice__content { color: CanvasText; }
754
+ .xcv-notice__icon { border-color: Highlight; color: Highlight; background: Canvas; }
755
+ }
756
+
757
+ /* Feedback: animated loading indicator */
758
+ .xcv-loader { --xcv-loader-size: 1.5rem; display: inline-flex; align-items: center; gap: var(--xcv-space-sm); color: var(--xcv-color-action-primary); vertical-align: middle; }
759
+ .xcv-loader--sm { --xcv-loader-size: 1rem; }
760
+ .xcv-loader--md { --xcv-loader-size: 1.5rem; }
761
+ .xcv-loader--lg { --xcv-loader-size: 2.25rem; }
762
+ .xcv-loader__visual { position: relative; display: inline-block; width: var(--xcv-loader-size); height: var(--xcv-loader-size); flex: none; }
763
+ .xcv-loader__shape { position: absolute; display: block; box-sizing: border-box; }
764
+ .xcv-loader[data-variant="orbit"] .xcv-loader__shape:nth-child(1) { inset: 0; border: 2px solid transparent; border-top-color: currentColor; border-right-color: currentColor; border-radius: 50%; animation: xcv-loader-spin var(--xcv-motion-duration-loader) linear infinite; }
765
+ .xcv-loader[data-variant="orbit"] .xcv-loader__shape:nth-child(2) { inset: 19%; border: 2px solid transparent; border-bottom-color: color-mix(in srgb, currentColor 48%, var(--xcv-color-feedback-info)); border-left-color: color-mix(in srgb, currentColor 48%, var(--xcv-color-feedback-info)); border-radius: 50%; animation: xcv-loader-spin var(--xcv-motion-duration-loader-slow) linear infinite reverse; }
766
+ .xcv-loader[data-variant="orbit"] .xcv-loader__shape:nth-child(3) { inset: 43%; border: 1px solid color-mix(in srgb, currentColor 28%, transparent); border-radius: 50%; background: currentColor; }
767
+ .xcv-loader[data-variant="orbit"] .xcv-loader__shape:nth-child(n+4) { display: none; }
768
+ .xcv-loader[data-variant="comet"] .xcv-loader__shape:nth-child(1) { inset: 0; border: 1px solid color-mix(in srgb, currentColor 18%, transparent); border-radius: 50%; }
769
+ .xcv-loader[data-variant="comet"] .xcv-loader__shape:nth-child(2) { inset: 0; border-radius: 50%; background: conic-gradient(from 15deg, transparent 0deg 220deg, color-mix(in srgb, currentColor 24%, transparent) 260deg, currentColor 330deg 350deg, transparent 360deg); -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2px), currentColor calc(100% - 1.5px)); mask: radial-gradient(farthest-side, transparent calc(100% - 2px), currentColor calc(100% - 1.5px)); animation: xcv-loader-spin var(--xcv-motion-duration-loader) linear infinite; }
770
+ .xcv-loader[data-variant="comet"] .xcv-loader__shape:nth-child(3) { width: 22%; height: 22%; inset: 39%; border: 1px solid color-mix(in srgb, currentColor 28%, transparent); border-radius: 50%; background: currentColor; }
771
+ .xcv-loader[data-variant="comet"] .xcv-loader__shape:nth-child(n+4) { display: none; }
772
+ .xcv-loader[data-variant="ring"] .xcv-loader__shape:nth-child(1) { inset: 0; border: 2px solid color-mix(in srgb, currentColor 18%, transparent); border-top-color: currentColor; border-radius: 50%; animation: xcv-loader-spin var(--xcv-motion-duration-loader) linear infinite; }
773
+ .xcv-loader[data-variant="ring"] .xcv-loader__shape:nth-child(2) { inset: 27%; border: 2px solid color-mix(in srgb, currentColor 32%, transparent); border-bottom-color: currentColor; border-radius: 50%; animation: xcv-loader-spin var(--xcv-motion-duration-loader-slow) linear infinite reverse; }
774
+ .xcv-loader[data-variant="ring"] .xcv-loader__shape:nth-child(3) { inset: 45%; border-radius: 50%; background: currentColor; }
775
+ .xcv-loader[data-variant="ring"] .xcv-loader__shape:nth-child(n+4) { display: none; }
776
+ .xcv-loader[data-variant="pulse"] .xcv-loader__visual { display: inline-flex; align-items: center; justify-content: center; gap: 12%; }
777
+ .xcv-loader[data-variant="pulse"] .xcv-loader__shape { position: static; width: 19%; height: 19%; border-radius: 50%; background: currentColor; animation: xcv-loader-pulse var(--xcv-motion-duration-loader) ease-in-out infinite; }
778
+ .xcv-loader[data-variant="pulse"] .xcv-loader__shape:nth-child(2) { animation-delay: 140ms; opacity: 0.78; }
779
+ .xcv-loader[data-variant="pulse"] .xcv-loader__shape:nth-child(3) { animation-delay: 280ms; opacity: 0.56; }
780
+ .xcv-loader[data-variant="pulse"] .xcv-loader__shape:nth-child(n+4) { display: none; }
781
+ .xcv-loader[data-variant="wave"] .xcv-loader__visual { display: inline-flex; align-items: center; justify-content: center; gap: 8%; }
782
+ .xcv-loader[data-variant="wave"] .xcv-loader__shape { position: static; width: 12%; height: 42%; border-radius: var(--xcv-radius-full); background: currentColor; transform-origin: center; animation: xcv-loader-wave var(--xcv-motion-duration-loader) ease-in-out infinite; }
783
+ .xcv-loader[data-variant="wave"] .xcv-loader__shape:nth-child(2) { animation-delay: 100ms; }
784
+ .xcv-loader[data-variant="wave"] .xcv-loader__shape:nth-child(3) { animation-delay: 200ms; }
785
+ .xcv-loader[data-variant="wave"] .xcv-loader__shape:nth-child(4) { animation-delay: 300ms; }
786
+ .xcv-loader[data-variant="wave"] .xcv-loader__shape:nth-child(5) { animation-delay: 400ms; }
787
+ .xcv-loader__label { color: var(--xcv-color-text-secondary); font-size: var(--xcv-font-size-sm); line-height: var(--xcv-line-height-normal); }
788
+ @keyframes xcv-loader-spin { to { transform: rotate(360deg); } }
789
+ @keyframes xcv-loader-pulse { 0%, 80%, 100% { transform: scale(0.62); opacity: 0.45; } 40% { transform: scale(1); opacity: 1; } }
790
+ @keyframes xcv-loader-wave { 0%, 100% { transform: scaleY(0.48); opacity: 0.48; } 50% { transform: scaleY(1.35); opacity: 1; } }
791
+
792
+ @media (forced-colors: active) {
793
+ .xcv-loader { color: CanvasText; }
794
+ .xcv-loader[data-variant="orbit"] .xcv-loader__shape:nth-child(1),
795
+ .xcv-loader[data-variant="orbit"] .xcv-loader__shape:nth-child(2) { border-color: CanvasText; border-top-color: Highlight; }
796
+ .xcv-loader[data-variant="comet"] .xcv-loader__shape:nth-child(2) { background: Highlight; }
797
+ .xcv-loader__shape { forced-color-adjust: auto; }
798
+ }
799
+
800
+
801
+ /* Shared radius API: component roots expose one semantic value to their visual layers. */
802
+ [data-xcv-radius="none"] { --xcv-component-radius: var(--xcv-radius-none); }
803
+ [data-xcv-radius="subtle"] { --xcv-component-radius: var(--xcv-radius-subtle); }
804
+ [data-xcv-radius="medium"] { --xcv-component-radius: var(--xcv-radius-medium); }
805
+ [data-xcv-radius="large"] { --xcv-component-radius: var(--xcv-radius-large); }
806
+ [data-xcv-radius="full"] { --xcv-component-radius: var(--xcv-radius-full); }
807
+ [data-xcv-radius] { border-radius: var(--xcv-component-radius); }
808
+ .xcv-card[data-xcv-interactive="on"] {
809
+ transition: transform var(--xcv-motion-duration) var(--xcv-motion-easing), background var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing), box-shadow var(--xcv-motion-duration) var(--xcv-motion-easing);
810
+ }
811
+ .xcv-card[data-xcv-interactive="on"]:hover,
812
+ .xcv-card[data-xcv-interactive="on"]:focus-within {
813
+ transform: translateY(-1px);
814
+ background:
815
+ linear-gradient(135deg, color-mix(in srgb, var(--xcv-color-accent) 10%, transparent), color-mix(in srgb, var(--xcv-color-accent) 4%, transparent)),
816
+ var(--xcv-gradient-surface-hover);
817
+ border-color: color-mix(in srgb, var(--xcv-color-accent) 48%, var(--xcv-color-border-focus));
818
+ box-shadow: var(--xcv-shadow-md), 0 0 0 1px color-mix(in srgb, var(--xcv-color-accent) 12%, transparent), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 14%, transparent);
819
+ }
820
+
821
+ .xcv-search-box[data-xcv-radius] .xcv-field-control,
822
+ .xcv-search-box[data-xcv-radius] .xcv-search-box__clear,
823
+ .xcv-select-wrapper[data-xcv-radius] .xcv-select__trigger,
824
+ .xcv-select-wrapper[data-xcv-radius] .xcv-select__listbox,
825
+ .xcv-select-wrapper[data-xcv-radius] .xcv-select__option,
826
+ .xcv-select__listbox[data-xcv-radius] .xcv-select__option,
827
+ .xcv-actions-menu[data-xcv-radius] .xcv-actions-menu__trigger,
828
+ .xcv-actions-menu[data-xcv-radius] .xcv-actions-menu__content,
829
+ .xcv-actions-menu[data-xcv-radius] .xcv-actions-menu__item,
830
+ .xcv-actions-menu__content[data-xcv-radius] .xcv-actions-menu__item,
831
+ .xcv-accordion[data-xcv-radius] .xcv-accordion__item,
832
+ .xcv-accordion[data-xcv-radius] .xcv-accordion__trigger,
833
+ .xcv-tabs[data-xcv-radius] .xcv-tabs__list,
834
+ .xcv-tabs[data-xcv-radius] .xcv-tabs__tab,
835
+ .xcv-pagination[data-xcv-radius] .xcv-pagination__control,
836
+ .xcv-pagination[data-xcv-radius] .xcv-pagination__page,
837
+ .xcv-stepper[data-xcv-radius] .xcv-stepper__link {
838
+ border-radius: var(--xcv-component-radius);
839
+ }
840
+
841
+
842
+ /* Unified interaction language: restrained at rest, expressive on intent. */
843
+ .xcv-actions-menu__trigger {
844
+ border-color: var(--xcv-color-border-strong);
845
+ background: var(--xcv-gradient-control-surface);
846
+ box-shadow: var(--xcv-shadow-sm), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent);
847
+ transition: color var(--xcv-motion-duration) var(--xcv-motion-easing), background var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing), box-shadow var(--xcv-motion-duration) var(--xcv-motion-easing), transform var(--xcv-motion-duration) var(--xcv-motion-easing);
848
+ }
849
+ .xcv-actions-menu__trigger:hover:not(:disabled),
850
+ .xcv-actions-menu__trigger[aria-expanded="true"] {
851
+ border-color: var(--xcv-color-border-focus);
852
+ color: var(--xcv-color-text-primary);
853
+ background: var(--xcv-gradient-control-surface-hover);
854
+ box-shadow: var(--xcv-shadow-md), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 16%, transparent);
855
+ }
856
+ .xcv-actions-menu__trigger:active:not(:disabled) { transform: scale(0.98); }
857
+ /* Shared overlay surface: Select and ActionsMenu keep one material language. */
858
+ .xcv-select__listbox,
859
+ .xcv-actions-menu__content {
860
+ border: 1px solid var(--xcv-overlay-border);
861
+ border-radius: var(--xcv-component-radius, var(--xcv-overlay-radius));
862
+ color: var(--xcv-color-text-primary);
863
+ background: var(--xcv-overlay-background);
864
+ box-shadow: var(--xcv-overlay-shadow);
865
+ animation: xcv-overlay-enter var(--xcv-motion-duration) var(--xcv-motion-easing) both;
866
+ }
867
+ @supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
868
+ .xcv-select__listbox,
869
+ .xcv-actions-menu__content {
870
+ -webkit-backdrop-filter: blur(var(--xcv-overlay-backdrop-blur)) saturate(var(--xcv-overlay-backdrop-saturation));
871
+ backdrop-filter: blur(var(--xcv-overlay-backdrop-blur)) saturate(var(--xcv-overlay-backdrop-saturation));
872
+ }
873
+ }
874
+ .xcv-select__listbox,
875
+ .xcv-actions-menu__content { gap: 2px; }
876
+
877
+ @keyframes xcv-overlay-enter {
878
+ from { opacity: 0; transform: translateY(calc(var(--xcv-motion-distance) * -0.45)) scale(0.985); }
879
+ to { opacity: 1; transform: translateY(0) scale(1); }
880
+ }
881
+ /* Shared option/item feedback: expressive surface, stable geometry. */
882
+ .xcv-select__option,
883
+ .xcv-actions-menu__item {
884
+ border: 1px solid transparent;
885
+ border-radius: var(--xcv-radius-sm);
886
+ transition: color var(--xcv-motion-duration) var(--xcv-motion-easing), background var(--xcv-motion-duration) var(--xcv-motion-easing), border-color var(--xcv-motion-duration) var(--xcv-motion-easing);
887
+ }
888
+ .xcv-select__option:hover:not([aria-disabled="true"]),
889
+ .xcv-select__option[data-active="true"]:not([aria-disabled="true"]),
890
+ .xcv-actions-menu__item:hover:not([aria-disabled="true"]),
891
+ .xcv-actions-menu__item:focus-visible {
892
+ border-color: color-mix(in srgb, var(--xcv-color-border-strong) 72%, transparent);
893
+ background: var(--xcv-gradient-control-surface-hover);
894
+ }
895
+ .xcv-actions-menu__item:active:not([aria-disabled="true"]) { background: var(--xcv-gradient-control-surface-hover); }
896
+
897
+ .xcv-accordion__item:hover:not(.xcv-accordion__item--disabled) {
898
+ border-color: color-mix(in srgb, var(--xcv-color-accent) 28%, var(--xcv-color-border-strong));
899
+ }
900
+ .xcv-accordion__trigger[aria-expanded="true"] { background: color-mix(in srgb, var(--xcv-color-accent) 5%, transparent); }
901
+ .xcv-accordion__trigger:active:not(:disabled) { background: var(--xcv-gradient-surface-hover); }
902
+ .xcv-accordion__item--open .xcv-accordion__indicator { filter: none; }
903
+
904
+ .xcv-tabs__list {
905
+ border-color: color-mix(in srgb, var(--xcv-color-border-strong) 72%, var(--xcv-color-border));
906
+ box-shadow: var(--xcv-shadow-sm), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 10%, transparent);
907
+ }
908
+ .xcv-tabs__tab { border-radius: var(--xcv-radius-lg); }
909
+ .xcv-tabs__tab--selected {
910
+ border-color: color-mix(in srgb, var(--xcv-color-accent) 38%, var(--xcv-color-border));
911
+ background: var(--xcv-gradient-control-surface);
912
+ box-shadow: var(--xcv-shadow-sm), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 18%, transparent);
913
+ }
914
+ .xcv-tabs__tab:active:not(:disabled) { transform: scale(0.985); }
915
+
916
+ .xcv-pagination {
917
+ border-color: color-mix(in srgb, var(--xcv-color-border-strong) 72%, var(--xcv-color-border));
918
+ box-shadow: var(--xcv-shadow-sm), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 10%, transparent);
919
+ }
920
+ .xcv-pagination__page--current { border-color: var(--xcv-color-action-primary); }
921
+ .xcv-pagination__page--current:hover { transform: translateY(-1px); }
922
+ .xcv-pagination__control:active:not(:disabled),
923
+ .xcv-pagination__page:active { transform: scale(0.96); }
924
+
925
+ .xcv-stepper__link:active { transform: scale(0.985); }
926
+
927
+ .xcv-filter-group__option input.xcv-checkable {
928
+ width: 1.375rem;
929
+ height: 1.375rem;
930
+ min-height: 1.375rem;
931
+ padding: 0;
932
+ accent-color: var(--xcv-color-action-primary);
933
+ }
934
+ .xcv-filter-group__option input.xcv-checkbox { border-radius: var(--xcv-radius-subtle); }
935
+
936
+ .xcv-notice__icon { border-radius: max(0px, calc(var(--xcv-component-radius) - var(--xcv-space-xs))); }
937
+ .xcv-badge { box-shadow: inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 14%, transparent), 0 1px 2px color-mix(in srgb, var(--xcv-color-surface) 30%, transparent); }
938
+ .xcv-stat-card { background: var(--xcv-gradient-surface); }
939
+ .xcv-stat-card__icon { border-radius: max(0px, calc(var(--xcv-component-radius) - var(--xcv-space-sm))); }
940
+ .xcv-table__viewport { background: var(--xcv-gradient-surface-subtle); }
941
+ .xcv-table__header-cell { background: var(--xcv-gradient-control-surface); }
942
+ .xcv-table__body .xcv-table__row { transition: background var(--xcv-motion-duration) var(--xcv-motion-easing); }
943
+ .xcv-search-box__clear { box-shadow: var(--xcv-shadow-sm), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent); }
944
+
945
+ .xcv-link:hover { text-decoration: none; }
946
+ .xcv-button:active:not(:disabled) { box-shadow: inset 0 1px 3px color-mix(in srgb, var(--xcv-color-surface) 24%, transparent); }
947
+
948
+
949
+
950
+ /* One reduced-motion contract for all XCV interaction and entrance feedback. */
951
+ @media (prefers-reduced-motion: reduce) {
952
+ .xcv-button,
953
+ .xcv-actions-menu__trigger,
954
+ .xcv-actions-menu__content,
955
+ .xcv-actions-menu__item,
956
+ .xcv-select__chevron,
957
+ .xcv-select__option,
958
+ .xcv-link,
959
+ .xcv-field-control,
960
+ .xcv-checkable,
961
+ .xcv-checkbox::before,
962
+ .xcv-radio::before,
963
+ .xcv-toggle,
964
+ .xcv-toggle::before,
965
+ .xcv-accordion__item,
966
+ .xcv-accordion__trigger,
967
+ .xcv-chevron,
968
+ .xcv-accordion__indicator,
969
+ .xcv-tabs__tab,
970
+ .xcv-tabs__tab::after,
971
+ .xcv-stepper__link,
972
+ .xcv-stepper__number,
973
+ .xcv-table__cell,
974
+ .xcv-pagination__control,
975
+ .xcv-pagination__page,
976
+ .xcv-card[data-xcv-interactive="on"],
977
+ .xcv-card[data-xcv-interactive="on"]::before {
978
+ transition: none !important;
979
+ }
980
+
981
+ .xcv-button:hover:not(:disabled),
982
+ .xcv-button:active:not(:disabled),
983
+ .xcv-actions-menu__item:hover:not([aria-disabled="true"]),
984
+ .xcv-actions-menu__item:focus-visible,
985
+ .xcv-field-control:focus-visible,
986
+ .xcv-select__option:hover:not([aria-disabled="true"]),
987
+ .xcv-select__option[data-active="true"]:not([aria-disabled="true"]),
988
+ .xcv-checkable:hover:not(:disabled),
989
+ .xcv-checkable:active:not(:disabled),
990
+ .xcv-tabs__tab:hover:not(:disabled),
991
+ .xcv-stepper__link:hover,
992
+ .xcv-pagination__control:hover:not(:disabled),
993
+ .xcv-pagination__control:active:not(:disabled),
994
+ .xcv-pagination__page:hover,
995
+ .xcv-pagination__page:active,
996
+ .xcv-card[data-xcv-interactive="on"],
997
+ .xcv-card[data-xcv-interactive="on"]:hover,
998
+ .xcv-card[data-xcv-interactive="on"]:focus-within {
999
+ transform: none;
1000
+ }
1001
+
1002
+ .xcv-button__spinner,
1003
+ .xcv-actions-menu__content,
1004
+ .xcv-select__listbox,
1005
+ .xcv-notice,
1006
+ .xcv-accordion__content:not([hidden]),
1007
+ .xcv-loader__shape {
1008
+ animation: none !important;
1009
+ }
1010
+
1011
+ .xcv-loader[data-variant="orbit"] .xcv-loader__shape:nth-child(1) { border-top-color: currentColor; border-right-color: transparent; opacity: 0.9; }
1012
+ .xcv-loader[data-variant="orbit"] .xcv-loader__shape:nth-child(2) { opacity: 0.65; }
1013
+ .xcv-loader[data-variant="comet"] .xcv-loader__shape:nth-child(2) { opacity: 0.75; }
1014
+ .xcv-loader[data-variant="pulse"] .xcv-loader__shape { transform: none; opacity: 0.8; }
1015
+ .xcv-loader[data-variant="wave"] .xcv-loader__shape { transform: scaleY(0.72); opacity: 0.8; }
1016
+ }
1017
+
1018
+
1019
+ /* Content surfaces: layered semantic light, not a flat directional wash. */
1020
+ .xcv-notice {
1021
+ background: var(--xcv-notice-background, var(--xcv-color-surface-raised));
1022
+ }
1023
+ .xcv-badge {
1024
+ --xcv-badge-accent: var(--xcv-color-text-secondary);
1025
+ background:
1026
+ radial-gradient(120% 160% at 0% 0%, color-mix(in srgb, var(--xcv-badge-accent) 12%, transparent), transparent 68%),
1027
+ linear-gradient(145deg, var(--xcv-color-surface-raised), var(--xcv-color-surface-subtle));
1028
+ }
1029
+ .xcv-badge--info { --xcv-badge-accent: var(--xcv-color-feedback-info); --xcv-badge-background: var(--xcv-color-feedback-info-background); }
1030
+ .xcv-badge--success { --xcv-badge-accent: var(--xcv-color-feedback-success); --xcv-badge-background: var(--xcv-color-feedback-success-background); }
1031
+ .xcv-badge--warning { --xcv-badge-accent: var(--xcv-color-feedback-warning); --xcv-badge-background: var(--xcv-color-feedback-warning-background); }
1032
+ .xcv-badge--error { --xcv-badge-accent: var(--xcv-color-feedback-error); --xcv-badge-background: var(--xcv-color-feedback-error-background); }
1033
+ .xcv-badge--info,
1034
+ .xcv-badge--success,
1035
+ .xcv-badge--warning,
1036
+ .xcv-badge--error {
1037
+ background: var(--xcv-badge-background, var(--xcv-color-surface-raised));
1038
+ }
1039
+
1040
+ /* Touch-first overlay ergonomics and compact viewport constraints. */
1041
+ @media (max-width: 40rem) {
1042
+ .xcv-select__listbox,
1043
+ .xcv-actions-menu__content {
1044
+ max-height: min(18rem, 45dvh);
1045
+ overscroll-behavior: contain;
1046
+ -webkit-overflow-scrolling: touch;
1047
+ touch-action: pan-y;
1048
+ }
1049
+ }
1050
+ @media (pointer: coarse) {
1051
+ .xcv-select__option,
1052
+ .xcv-actions-menu__item {
1053
+ min-height: 2.75rem;
1054
+ }
1055
+ }
1056
+
1057
+ /* Cobalt Foundation v1.0: expressive gradients with balanced resting states. */
1058
+ .xcv-button--primary,
1059
+ .xcv-pagination__page--current,
1060
+ .xcv-checkbox:checked,
1061
+ .xcv-radio:checked,
1062
+ .xcv-checkbox:indeterminate,
1063
+ .xcv-toggle:checked {
1064
+ background: var(--xcv-gradient-action-primary-accessible);
1065
+ }
1066
+ .xcv-button--primary:hover:not(:disabled),
1067
+ .xcv-checkable:checked:hover:not(:disabled),
1068
+ .xcv-pagination__page--current:hover {
1069
+ background: var(--xcv-gradient-action-primary-accessible-hover);
1070
+ }
1071
+ .xcv-card[data-xcv-interactive="on"]:hover,
1072
+ .xcv-card[data-xcv-interactive="on"]:focus-within {
1073
+ background:
1074
+ linear-gradient(135deg, color-mix(in srgb, var(--xcv-color-accent) 10%, transparent), color-mix(in srgb, var(--xcv-color-accent) 4%, transparent)),
1075
+ var(--xcv-gradient-surface-hover);
1076
+ border-color: color-mix(in srgb, var(--xcv-color-accent) 48%, var(--xcv-color-border-focus));
1077
+ box-shadow:
1078
+ var(--xcv-shadow-md),
1079
+ 0 0 0 1px color-mix(in srgb, var(--xcv-color-accent) 12%, transparent),
1080
+ inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 14%, transparent);
1081
+ }
1082
+ .xcv-card[data-xcv-accented="on"][data-xcv-interactive="on"]:hover,
1083
+ .xcv-card[data-xcv-accented="on"][data-xcv-interactive="on"]:focus-within {
1084
+ background:
1085
+ linear-gradient(135deg, color-mix(in srgb, var(--xcv-color-accent) 24%, transparent), color-mix(in srgb, var(--xcv-color-accent) 12%, transparent)),
1086
+ var(--xcv-color-surface-raised);
1087
+ border-color: color-mix(in srgb, var(--xcv-color-accent) 48%, var(--xcv-color-border-focus));
1088
+ border-inline-start-color: var(--xcv-color-accent);
1089
+ box-shadow: var(--xcv-shadow-md), 0 0 0 1px color-mix(in srgb, var(--xcv-color-accent) 16%, transparent), inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 14%, transparent);
1090
+ }
1091
+ .xcv-field-control:focus-visible {
1092
+ border-color: var(--xcv-color-border-focus);
1093
+ box-shadow:
1094
+ 0 0 0 4px color-mix(in srgb, var(--xcv-color-focus-ring) 22%, transparent),
1095
+ inset 0 1px 0 color-mix(in srgb, var(--xcv-color-text-inverse) 12%, transparent);
1096
+ }
1097
+ .xcv-select__trigger[aria-expanded="true"] {
1098
+ border-color: var(--xcv-color-border-focus);
1099
+ background:
1100
+ radial-gradient(ellipse at 0% 0%, color-mix(in srgb, var(--xcv-color-accent-cyan) 12%, transparent), transparent 72%),
1101
+ var(--xcv-gradient-control-surface-hover);
1102
+ }
1103
+ .xcv-select__option[aria-selected="true"] {
1104
+ border-color: color-mix(in srgb, var(--xcv-color-accent-cobalt) 36%, var(--xcv-color-border));
1105
+ background:
1106
+ radial-gradient(ellipse at 100% 0%, color-mix(in srgb, var(--xcv-color-accent-cyan) 12%, transparent), transparent 72%),
1107
+ color-mix(in srgb, var(--xcv-color-accent-cobalt) 10%, var(--xcv-color-surface-raised));
1108
+ }
1109
+ .xcv-select__option[aria-selected="true"] .xcv-select__check { color: var(--xcv-color-accent-cyan); }
1110
+ .xcv-tabs__tab--selected {
1111
+ border-color: color-mix(in srgb, var(--xcv-color-accent-cobalt) 34%, var(--xcv-color-border));
1112
+ background:
1113
+ radial-gradient(ellipse 90% 150% at 0% 0%, color-mix(in srgb, var(--xcv-color-accent-cyan) 12%, transparent), transparent 72%),
1114
+ radial-gradient(ellipse 80% 130% at 100% 100%, color-mix(in srgb, var(--xcv-color-accent-lavender) 10%, transparent), transparent 72%),
1115
+ var(--xcv-gradient-control-surface);
1116
+ }
1117
+ .xcv-tabs__tab--selected::after {
1118
+ background: linear-gradient(90deg, var(--xcv-color-accent-cobalt), var(--xcv-color-accent-cyan) 58%, var(--xcv-color-accent-lavender));
1119
+ }
1120
+ .xcv-badge {
1121
+ --xcv-badge-accent: var(--xcv-color-accent-cobalt);
1122
+ background:
1123
+ radial-gradient(ellipse 120% 160% at 0% 0%, color-mix(in srgb, var(--xcv-color-accent-cyan) 10%, transparent), transparent 68%),
1124
+ linear-gradient(145deg, var(--xcv-color-surface-raised), var(--xcv-color-surface-subtle));
1125
+ }
1126
+ .xcv-badge::before { background: var(--xcv-badge-accent); }
1127
+ .xcv-stepper__link:hover .xcv-stepper__number {
1128
+ border-color: var(--xcv-color-accent-cyan);
1129
+ background:
1130
+ radial-gradient(ellipse at 0% 0%, color-mix(in srgb, var(--xcv-color-accent-cyan) 24%, transparent), transparent 72%),
1131
+ radial-gradient(ellipse at 100% 100%, color-mix(in srgb, var(--xcv-color-accent-lavender) 20%, transparent), transparent 72%),
1132
+ var(--xcv-gradient-action-primary-accessible);
1133
+ }
1134
+ @media (forced-colors: active) {
1135
+ .xcv-button--primary,
1136
+ .xcv-button--primary:hover:not(:disabled),
1137
+ .xcv-pagination__page--current,
1138
+ .xcv-tabs__tab--selected,
1139
+ .xcv-select__option[aria-selected="true"],
1140
+ .xcv-stepper__link:hover .xcv-stepper__number {
1141
+ background: Highlight;
1142
+ color: HighlightText;
1143
+ }
1144
+ .xcv-card[data-xcv-interactive="on"]:hover,
1145
+ .xcv-card[data-xcv-interactive="on"]:focus-within,
1146
+ .xcv-field-control:focus-visible,
1147
+ .xcv-select__trigger[aria-expanded="true"] {
1148
+ border-color: Highlight;
1149
+ box-shadow: none;
1150
+ }
1151
+ .xcv-tabs__tab--selected::after { background: HighlightText; }
1152
+ }
1153
+
1154
+
1155
+ /* Semantic lists */
1156
+ .xcv-list { display: flex; flex-direction: column; min-width: 0; margin: 0; padding: 0; list-style: none; }
1157
+ .xcv-list--plain.xcv-list--gap-none { row-gap: var(--xcv-space-none); }
1158
+ .xcv-list--plain.xcv-list--gap-xs { row-gap: var(--xcv-space-xs); }
1159
+ .xcv-list--plain.xcv-list--gap-sm { row-gap: var(--xcv-space-sm); }
1160
+ .xcv-list--plain.xcv-list--gap-md { row-gap: var(--xcv-space-md); }
1161
+ .xcv-list--plain.xcv-list--gap-lg { row-gap: var(--xcv-space-lg); }
1162
+ .xcv-list--plain.xcv-list--gap-xl { row-gap: var(--xcv-space-xl); }
1163
+ .xcv-list--marker-disc { list-style: disc; padding-inline-start: 1.5rem; }
1164
+ .xcv-list--marker-decimal { list-style: decimal; padding-inline-start: 1.5rem; }
1165
+ .xcv-list--divided > .xcv-list-item { padding-block: var(--xcv-list-row-inset, var(--xcv-space-md)); border-block-start: 1px solid var(--xcv-color-border); }
1166
+ .xcv-list--divided > .xcv-list-item:first-child { border-block-start: 0; }
1167
+ .xcv-list--divided.xcv-list--gap-none { --xcv-list-row-inset: var(--xcv-space-none); }
1168
+ .xcv-list--divided.xcv-list--gap-xs { --xcv-list-row-inset: var(--xcv-space-xs); }
1169
+ .xcv-list--divided.xcv-list--gap-sm { --xcv-list-row-inset: var(--xcv-space-sm); }
1170
+ .xcv-list--divided.xcv-list--gap-md { --xcv-list-row-inset: var(--xcv-space-md); }
1171
+ .xcv-list--divided.xcv-list--gap-lg { --xcv-list-row-inset: var(--xcv-space-lg); }
1172
+ .xcv-list--divided.xcv-list--gap-xl { --xcv-list-row-inset: var(--xcv-space-xl); }
1173
+ .xcv-list-item { display: list-item; min-width: 0; }
1174
+ .xcv-list-item__layout { display: flex; align-items: center; gap: var(--xcv-space-md); min-width: 0; }
1175
+ .xcv-list-item--align-start > .xcv-list-item__layout { align-items: flex-start; }
1176
+ .xcv-list-item--align-center > .xcv-list-item__layout { align-items: center; }
1177
+ .xcv-list-item__leading { display: flex; flex: none; align-items: center; min-width: 0; }
1178
+ .xcv-list-item__content { flex: 1 1 auto; min-width: 0; }
1179
+ .xcv-list-item__trailing { display: flex; flex: 0 1 auto; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--xcv-space-sm); min-width: 0; }
1180
+ @media (max-width: 40rem) {
1181
+ .xcv-list-item__layout { flex-wrap: wrap; }
1182
+ .xcv-list-item__content { flex-basis: calc(100% - 1px); }
1183
+ .xcv-list-item__trailing { margin-inline-start: auto; }
1184
+ }