@oods/component-styles 0.3.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,1489 @@
1
+ @import "@oods/tokens/css";
2
+ @import "./statusables.css";
3
+
4
+ /* Legacy unprefixed geometry used by billing recipes. Values come from the
5
+ * semantic layer; preserve these names until their authored callers migrate. */
6
+ :root {
7
+ --space-1: var(--sys-control-gap-compact);
8
+ --space-2: var(--sys-control-gap);
9
+ --space-3: var(--sys-field-padding-inline);
10
+ --space-4: var(--sys-inset-md);
11
+ --radius-sm: var(--sys-radius-control);
12
+ --radius-md: var(--sys-radius-control);
13
+ }
14
+
15
+ :where(.oods-badge, [data-oods-component='Badge']) {
16
+ display: inline-flex;
17
+ align-items: center;
18
+ gap: var(--cmp-badge-gap, 0.25rem);
19
+ padding: var(--cmp-badge-padding-block, 0.125rem) var(--cmp-badge-padding-inline, 0.5rem);
20
+ border: 1px solid var(--cmp-badge-border, var(--cmp-border-default, currentColor));
21
+ border-radius: var(--cmp-badge-radius, 999px);
22
+ background: var(--cmp-badge-background, var(--cmp-surface-subtle, transparent));
23
+ color: var(--cmp-badge-text, var(--cmp-text-body, currentColor));
24
+ font-size: var(--cmp-badge-font-size, 0.875rem);
25
+ font-weight: var(--cmp-badge-font-weight, 600);
26
+ }
27
+
28
+ /* Every governed Badge uses the same geometry, including React's legacy statusable class. */
29
+ .oods-badge {
30
+ min-block-size: var(--cmp-badge-height, 1.5rem);
31
+ box-sizing: border-box;
32
+ font-size: var(--cmp-badge-font-size, 0.875rem);
33
+ line-height: var(--sys-text-line-height-tight, 1.2);
34
+ letter-spacing: normal;
35
+ text-transform: none;
36
+ gap: var(--cmp-badge-gap, 0.25rem);
37
+ }
38
+ .oods-badge__label { line-height: inherit; }
39
+
40
+ /* Solid reverses the already contrast-checked status surface/text pair. */
41
+ :where(.oods-badge, [data-oods-component='Badge'])[data-emphasis='solid'] {
42
+ border-color: var(--cmp-badge-text, var(--sys-status-neutral-text, CanvasText));
43
+ background: var(--cmp-badge-text, var(--sys-status-neutral-text, CanvasText));
44
+ color: var(--cmp-badge-background, var(--sys-status-neutral-surface, Canvas));
45
+ }
46
+
47
+ :where(.oods-banner, [data-oods-component='Banner'])[data-emphasis='solid'] {
48
+ border-color: var(--cmp-banner-text, var(--sys-status-neutral-text, CanvasText));
49
+ background: var(--cmp-banner-text, var(--sys-status-neutral-text, CanvasText));
50
+ color: var(--cmp-banner-background, var(--sys-status-neutral-surface, Canvas));
51
+ }
52
+
53
+ :where(.oods-banner, [data-oods-component='Banner']) {
54
+ display: grid;
55
+ grid-template-columns: 1fr auto;
56
+ gap: var(--cmp-spacing-inline-sm, 0.75rem);
57
+ padding: var(--cmp-spacing-inset-default, 1rem);
58
+ border: 1px solid var(--cmp-banner-border, var(--cmp-border-default, currentColor));
59
+ border-radius: var(--cmp-input-radius, 0.5rem);
60
+ background: var(--cmp-banner-background, var(--cmp-surface-subtle, transparent));
61
+ color: var(--cmp-banner-text, var(--cmp-text-body, currentColor));
62
+ }
63
+
64
+ .oods-banner__title,
65
+ .oods-banner-title {
66
+ font-weight: var(--ref-typography-weights-bold, 700);
67
+ }
68
+
69
+ :where(.oods-button, [data-oods-component='Button']) {
70
+ --oods-button-min-block-size: var(--cmp-button-height, 2.5rem);
71
+ --oods-button-padding-block: var(--cmp-button-padding-block, 0.625rem);
72
+ --oods-button-padding-inline: var(--cmp-button-padding-inline, 1rem);
73
+ --oods-button-font-size: var(--sys-text-size-md, 1rem);
74
+ display: inline-flex;
75
+ min-block-size: var(--oods-button-min-block-size);
76
+ box-sizing: border-box;
77
+ align-items: center;
78
+ justify-content: center;
79
+ gap: var(--cmp-button-gap, 0.5rem);
80
+ padding: var(--oods-button-padding-block) var(--oods-button-padding-inline);
81
+ border: 1px solid var(--oods-button-border, var(--cmp-button-border, transparent));
82
+ border-radius: var(--cmp-button-radius, 0.5rem);
83
+ background: var(--oods-button-background, var(--cmp-button-background, var(--cmp-surface-action, CanvasText)));
84
+ color: var(--oods-button-text, var(--cmp-button-text, var(--cmp-text-on-action, Canvas)));
85
+ font: inherit;
86
+ font-size: var(--oods-button-font-size);
87
+ font-weight: var(--cmp-button-font-weight, 600);
88
+ line-height: var(--sys-text-line-height-tight, 1.2);
89
+ cursor: pointer;
90
+ }
91
+
92
+ :where(.oods-button, [data-oods-component='Button'])[data-intent='neutral'] {
93
+ --oods-button-background: var(--sys-surface-inverse, CanvasText);
94
+ --oods-button-background-hover: var(--sys-surface-inverse, CanvasText);
95
+ --oods-button-border: var(--sys-surface-inverse, CanvasText);
96
+ --oods-button-text: var(--sys-text-inverse, Canvas);
97
+ }
98
+
99
+ :where(.oods-button, [data-oods-component='Button'])[data-intent='primary'] {
100
+ --oods-button-background: var(--sys-surface-interactive-primary-default, CanvasText);
101
+ --oods-button-background-hover: var(--sys-surface-interactive-primary-hover, CanvasText);
102
+ --oods-button-border: var(--sys-surface-interactive-primary-default, CanvasText);
103
+ --oods-button-text: var(--sys-text-on-interactive, Canvas);
104
+ }
105
+
106
+ :where(.oods-button, [data-oods-component='Button'])[data-intent='secondary'] {
107
+ --oods-button-background: var(--sys-surface-subtle, Canvas);
108
+ --oods-button-background-hover: var(--sys-surface-canvas, Canvas);
109
+ --oods-button-border: var(--sys-border-strong, CanvasText);
110
+ --oods-button-text: var(--sys-text-primary, CanvasText);
111
+ }
112
+
113
+ :where(.oods-button, [data-oods-component='Button'])[data-intent='success'] {
114
+ --oods-button-background: var(--sys-status-success-text, CanvasText);
115
+ --oods-button-background-hover: var(--sys-status-success-text, CanvasText);
116
+ --oods-button-border: var(--sys-status-success-text, CanvasText);
117
+ --oods-button-text: var(--sys-status-success-surface, Canvas);
118
+ }
119
+
120
+ :where(.oods-button, [data-oods-component='Button'])[data-intent='warning'] {
121
+ --oods-button-background: var(--sys-status-warning-text, CanvasText);
122
+ --oods-button-background-hover: var(--sys-status-warning-text, CanvasText);
123
+ --oods-button-border: var(--sys-status-warning-text, CanvasText);
124
+ --oods-button-text: var(--sys-status-warning-surface, Canvas);
125
+ }
126
+
127
+ :where(.oods-button, [data-oods-component='Button'])[data-intent='danger'] {
128
+ --oods-button-background: var(--sys-status-critical-text, CanvasText);
129
+ --oods-button-background-hover: var(--sys-status-critical-text, CanvasText);
130
+ --oods-button-border: var(--sys-status-critical-text, CanvasText);
131
+ --oods-button-text: var(--sys-status-critical-surface, Canvas);
132
+ }
133
+
134
+ :where(.oods-button, [data-oods-component='Button'])[data-size='sm'] {
135
+ --oods-button-min-block-size: var(--cmp-button-height-sm, 2rem);
136
+ --oods-button-padding-block: var(--cmp-button-padding-block-sm, 0.375rem);
137
+ --oods-button-padding-inline: var(--cmp-button-padding-inline-sm, 0.75rem);
138
+ --oods-button-font-size: var(--sys-text-size-sm, 0.875rem);
139
+ font-size: var(--oods-button-font-size);
140
+ }
141
+
142
+ :where(.oods-button, [data-oods-component='Button'])[data-size='md'] {
143
+ --oods-button-min-block-size: var(--cmp-button-height, 2.5rem);
144
+ --oods-button-padding-block: var(--cmp-button-padding-block, 0.625rem);
145
+ --oods-button-padding-inline: var(--cmp-button-padding-inline, 1rem);
146
+ --oods-button-font-size: var(--sys-text-size-md, 1rem);
147
+ font-size: var(--oods-button-font-size);
148
+ }
149
+
150
+ :where(.oods-button, [data-oods-component='Button'])[data-size='lg'] {
151
+ --oods-button-min-block-size: var(--cmp-button-height-lg, 3rem);
152
+ --oods-button-padding-block: var(--cmp-button-padding-block-lg, 0.75rem);
153
+ --oods-button-padding-inline: var(--cmp-button-padding-inline-lg, 1.5rem);
154
+ --oods-button-font-size: var(--sys-text-size-lg, 1.25rem);
155
+ font-size: var(--oods-button-font-size);
156
+ }
157
+
158
+ :where(.oods-button, [data-oods-component='Button']):hover:not(:disabled) {
159
+ background: var(--oods-button-background-hover, var(--cmp-button-background-hover, var(--cmp-surface-action-hover, CanvasText)));
160
+ }
161
+
162
+ :where(.oods-button, [data-oods-component='Button']):disabled {
163
+ border-color: var(--cmp-button-border-disabled, var(--sys-border-subtle, GrayText));
164
+ background: var(--cmp-button-background-disabled, var(--sys-surface-disabled, Canvas));
165
+ color: var(--cmp-button-text-disabled, var(--sys-text-disabled, GrayText));
166
+ cursor: not-allowed;
167
+ }
168
+
169
+ /* One focus treatment for every interactive element, native controls included:
170
+ * token width, colour and offset. Nothing else in this stylesheet paints focus. */
171
+ :where(.oods-button, [data-oods-component='Button'], .oods-field-control, .oods-tab, .oods-table-row-action, .oods-collection-row,
172
+ .oods-banner-dismiss, .tabs__overflow-trigger, .oods-tabs-overflow-trigger,
173
+ [data-oods-component] input, [data-oods-component] textarea, [data-oods-component] select,
174
+ [data-oods-component] button, [data-oods-component] a[href], [data-oods-component] [role='menuitem'],
175
+ [data-oods-component='Checkbox']):focus-visible {
176
+ outline: var(--cmp-focus-width, 2px) solid var(--cmp-focus-outer, Highlight);
177
+ outline-offset: var(--cmp-focus-offset, 2px);
178
+ }
179
+
180
+ :where(.oods-card, [data-oods-component='Card']) {
181
+ padding: var(--cmp-spacing-inset-default, 1rem);
182
+ border: 1px solid var(--cmp-border-default, var(--sys-border-subtle));
183
+ border-radius: var(--cmp-card-radius, 0.75rem);
184
+ background: var(--cmp-surface-panel, var(--sys-surface-raised));
185
+ color: var(--cmp-text-body, var(--sys-text-primary));
186
+ }
187
+
188
+ :where(.oods-card[data-elevated='true'], [data-oods-component='Card'][data-elevated='true']) {
189
+ box-shadow: var(--cmp-card-shadow-offset-x, 0px) var(--cmp-card-shadow-offset-y, 16px) var(--cmp-card-shadow-blur, 40px) var(--cmp-card-shadow-spread, -12px) var(--cmp-card-shadow-color, rgba(15, 23, 42, 0.12));
190
+ }
191
+
192
+ /* The tokens build scopes colour per brand and theme; the dark elevation tokens are
193
+ * emitted at :root, so the dark scope takes its shadow roles from them here. */
194
+ [data-theme='dark'] {
195
+ --cmp-card-shadow-offset-x: var(--theme-dark-shadow-elevation-card-offset-x);
196
+ --cmp-card-shadow-offset-y: var(--theme-dark-shadow-elevation-card-offset-y);
197
+ --cmp-card-shadow-blur: var(--theme-dark-shadow-elevation-card-blur);
198
+ --cmp-card-shadow-spread: var(--theme-dark-shadow-elevation-card-spread);
199
+ --cmp-card-shadow-color: var(--theme-dark-shadow-elevation-card-color);
200
+ --cmp-shadow-overlay-offset-x: var(--theme-dark-shadow-elevation-overlay-offset-x);
201
+ --cmp-shadow-overlay-offset-y: var(--theme-dark-shadow-elevation-overlay-offset-y);
202
+ --cmp-shadow-overlay-blur: var(--theme-dark-shadow-elevation-overlay-blur);
203
+ --cmp-shadow-overlay-spread: var(--theme-dark-shadow-elevation-overlay-spread);
204
+ --cmp-shadow-overlay-color: var(--theme-dark-shadow-elevation-overlay-color);
205
+ }
206
+
207
+ :where([data-oods-component='DetailHeader'], [data-oods-component='CardHeader']) {
208
+ --cmp-header-title: var(--sys-text-primary);
209
+ --cmp-header-subtitle: var(--sys-text-secondary);
210
+ --cmp-header-metadata: var(--sys-text-muted);
211
+ display: grid;
212
+ gap: var(--sys-spacing-stack-compact, 0.75rem);
213
+ }
214
+
215
+ :where([data-oods-component='DetailHeader'], [data-oods-component='CardHeader']) > :is(h1, h2, h3, h4, h5, h6) {
216
+ margin: 0;
217
+ color: var(--cmp-header-title, CanvasText);
218
+ font-weight: var(--ref-typography-weights-semibold, 600);
219
+ line-height: var(--sys-text-line-height-standard, 1.4);
220
+ }
221
+
222
+ :where([data-oods-component='DetailHeader']) > :is(h1, h2, h3, h4, h5, h6) {
223
+ font-size: var(--sys-text-scale-heading-lg-font-size, 1.5rem);
224
+ line-height: var(--sys-text-scale-heading-lg-line-height, 1.2);
225
+ }
226
+
227
+ :where([data-oods-component='CardHeader']) > :is(h1, h2, h3, h4, h5, h6) {
228
+ font-size: var(--sys-text-size-lg, 1.25rem);
229
+ }
230
+
231
+ :where([data-oods-component='DetailHeader']) > [data-oods-subtitle],
232
+ :where([data-oods-component='CardHeader']) > [data-oods-supporting] {
233
+ color: var(--cmp-header-subtitle, CanvasText);
234
+ }
235
+
236
+ :where([data-oods-component='DetailHeader']) > [data-oods-metadata] {
237
+ color: var(--cmp-header-metadata, CanvasText);
238
+ font-size: var(--sys-text-size-sm, 0.875rem);
239
+ }
240
+
241
+ :where([data-oods-component='ColorSwatch']) {
242
+ --cmp-swatch-chip: var(--sys-surface-interactive-primary-default);
243
+ --cmp-swatch-border: var(--sys-border-strong);
244
+ --cmp-text-body: var(--sys-text-primary);
245
+ display: inline-flex;
246
+ align-items: center;
247
+ gap: var(--cmp-spacing-inline-sm, 0.75rem);
248
+ color: var(--cmp-text-body, CanvasText);
249
+ }
250
+
251
+ :where([data-oods-component='ColorSwatch']) > [data-oods-swatch-chip] {
252
+ flex: none;
253
+ inline-size: 1.25rem;
254
+ block-size: 1.25rem;
255
+ border: 1px solid var(--cmp-swatch-border, CanvasText);
256
+ border-radius: var(--cmp-input-radius, 0.5rem);
257
+ background: var(--oods-swatch-color, var(--cmp-swatch-chip, CanvasText));
258
+ }
259
+
260
+ :where([data-oods-component='ColorizedBadge']) {
261
+ --cmp-badge-background: var(--sys-status-neutral-surface);
262
+ --cmp-badge-border: var(--sys-status-neutral-border);
263
+ --cmp-badge-text: var(--sys-status-neutral-text);
264
+ --cmp-badge-icon: var(--sys-status-neutral-icon);
265
+ --cmp-badge-color: var(--sys-surface-interactive-primary-default);
266
+ display: inline-flex;
267
+ align-items: center;
268
+ gap: var(--cmp-badge-gap, 0.25rem);
269
+ padding: var(--cmp-badge-padding-block, 0.125rem) var(--cmp-badge-padding-inline, 0.5rem);
270
+ border: 1px solid var(--cmp-badge-border, CanvasText);
271
+ border-radius: var(--cmp-badge-radius, 999px);
272
+ background: var(--cmp-badge-background, Canvas);
273
+ color: var(--cmp-badge-text, CanvasText);
274
+ font-size: var(--cmp-badge-font-size, 0.875rem);
275
+ font-weight: var(--cmp-badge-font-weight, 600);
276
+ }
277
+
278
+ :where([data-oods-component='ColorizedBadge'])[data-emphasis='solid'] {
279
+ border-color: var(--cmp-badge-text, CanvasText);
280
+ background: var(--cmp-badge-text, CanvasText);
281
+ color: var(--cmp-badge-background, Canvas);
282
+ }
283
+
284
+ :where([data-oods-component='ColorizedBadge']) [data-oods-badge-marker] {
285
+ display: inline-block;
286
+ flex: none;
287
+ inline-size: 0.75rem;
288
+ block-size: 0.75rem;
289
+ border: 1px solid var(--cmp-badge-icon, CanvasText);
290
+ border-radius: 50%;
291
+ background: var(--oods-badge-color, var(--cmp-badge-color, CanvasText));
292
+ }
293
+
294
+ /* The decorative color marker always has an adjacent, visible text label. */
295
+ :where([data-oods-component='ColorSwatch']) > [data-oods-swatch-label],
296
+ :where([data-oods-component='ColorizedBadge']) [data-oods-badge-label] {
297
+ display: inline;
298
+ visibility: visible;
299
+ color: inherit;
300
+ }
301
+
302
+ /* This is a frame for authored content; it renders no chart pixels. */
303
+ :where([data-oods-component='VizAreaPreview'], [data-oods-component='VizGraphPreview'], [data-oods-component='VizHeatmapPreview'], [data-oods-component='VizLinePreview'], [data-oods-component='VizMarkPreview'], [data-oods-component='VizPointPreview'], [data-oods-component='VizScatterPreview']) {
304
+ --cmp-preview-frame: var(--sys-border-subtle);
305
+ --cmp-preview-placeholder: var(--sys-text-muted);
306
+ display: grid;
307
+ place-items: center;
308
+ box-sizing: border-box;
309
+ inline-size: min(100%, var(--oods-viz-width, 640px));
310
+ min-block-size: var(--oods-viz-height, 360px);
311
+ padding: var(--cmp-spacing-inset-default, 1rem);
312
+ border: 1px dashed var(--cmp-preview-frame, CanvasText);
313
+ border-radius: var(--cmp-input-radius, 0.5rem);
314
+ background: var(--sys-surface-canvas, Canvas);
315
+ }
316
+
317
+ :where([data-oods-component='VizAreaPreview'], [data-oods-component='VizGraphPreview'], [data-oods-component='VizHeatmapPreview'], [data-oods-component='VizLinePreview'], [data-oods-component='VizMarkPreview'], [data-oods-component='VizPointPreview'], [data-oods-component='VizScatterPreview']) > [data-viz-preview-placeholder] {
318
+ color: var(--cmp-preview-placeholder, CanvasText);
319
+ text-align: center;
320
+ }
321
+
322
+ :where([data-oods-component='VizAreaPreview'][data-viz-rendered='true'], [data-oods-component='VizGraphPreview'][data-viz-rendered='true'], [data-oods-component='VizHeatmapPreview'][data-viz-rendered='true'], [data-oods-component='VizLinePreview'][data-viz-rendered='true'], [data-oods-component='VizMarkPreview'][data-viz-rendered='true'], [data-oods-component='VizPointPreview'][data-viz-rendered='true'], [data-oods-component='VizScatterPreview'][data-viz-rendered='true']) {
323
+ margin: 0;
324
+ padding: 0;
325
+ min-block-size: 0;
326
+ inline-size: 100%;
327
+ border: 0;
328
+ place-items: stretch;
329
+ }
330
+ :where([data-viz-rendered='true']) > figcaption {
331
+ font-size: min(var(--sys-text-scale-heading-md-font-size, 1.25rem), 1.25rem);
332
+ font-weight: var(--ref-typography-weights-semibold, 600);
333
+ }
334
+ :where([data-viz-svg]) { min-inline-size: 0; }
335
+ :where([data-viz-svg]) > svg { display: block; inline-size: 100%; max-inline-size: var(--oods-viz-width, 100%); block-size: auto; }
336
+ /* A placed chart carries a narrow render beside the design-size one; the figure measures its own inline size and shows the narrow render at 600px or less, so axis text keeps its size on a phone column instead of scaling with the SVG (Sprint 202 m01). */
337
+ :where([data-viz-rendered='true'][data-viz-narrow='true']) { container-type: inline-size; }
338
+ :where([data-viz-svg-narrow]) { display: none; min-inline-size: 0; }
339
+ :where([data-viz-svg-narrow]) > svg { display: block; inline-size: 100%; block-size: auto; }
340
+ @container (max-width: 600px) {
341
+ :where([data-viz-narrow='true']) > [data-viz-svg] { display: none; }
342
+ :where([data-viz-narrow='true']) > [data-viz-svg-narrow] { display: block; }
343
+ }
344
+ /* s213-m01 (Sprint 212 review finding 5): a figure with a wide render fills its column. The design render grows until
345
+ * the figure is 900px wide, then the render drawn for a desktop column takes over, so the chart spans the screen near
346
+ * design scale; it used to stop at its design width, half of a 1440 detail screen. */
347
+ :where([data-viz-rendered='true'][data-viz-wide='true']) { container-type: inline-size; }
348
+ :where([data-viz-svg-wide]) { display: none; min-inline-size: 0; }
349
+ :where([data-viz-svg-wide]) > svg { display: block; inline-size: 100%; block-size: auto; }
350
+ /* Each render is drawn at most 1.25 times its own size, so a 10px axis label never passes 12.5px (#2347): the design
351
+ * render reaches about 1.23 times before the wide one takes over, and the wide render, 1130px wide, stops growing here. */
352
+ :where([data-viz-svg-wide]) > svg { max-inline-size: calc(1130px * 1.25); }
353
+ :where([data-viz-wide='true']) > [data-viz-svg] > svg { max-inline-size: none; }
354
+ @container (min-width: 900px) {
355
+ :where([data-viz-wide='true']) > [data-viz-svg] { display: none; }
356
+ :where([data-viz-wide='true']) > [data-viz-svg-wide] { display: block; }
357
+ }
358
+ :where([data-viz-description]) { color: var(--sys-text-neutral); font-size: var(--sys-text-size-sm, 0.875rem); }
359
+
360
+ /* Timeline-family logs and the audit event article mirror renderTimelineContainer and renderEventArticle. */
361
+ :where([data-oods-component='AddressValidationTimeline'], [data-oods-component='MembershipAuditTimeline'], [data-oods-component='MessageEventTimeline'], [data-oods-component='PreferenceTimeline']) {
362
+ --cmp-timeline-background: var(--sys-surface-raised);
363
+ --cmp-timeline-border: var(--sys-border-subtle);
364
+ --cmp-timeline-text: var(--sys-text-primary);
365
+ --cmp-timeline-marker: var(--sys-border-strong);
366
+ display: grid;
367
+ gap: var(--cmp-spacing-stack-sm, 0.75rem);
368
+ padding: var(--cmp-spacing-inset-default, 1rem);
369
+ border: 1px solid var(--cmp-timeline-border, CanvasText);
370
+ border-radius: var(--cmp-input-radius, 0.5rem);
371
+ background: var(--cmp-timeline-background, Canvas);
372
+ color: var(--cmp-timeline-text, CanvasText);
373
+ }
374
+
375
+ :where([data-oods-component='AddressValidationTimeline'], [data-oods-component='MembershipAuditTimeline'], [data-oods-component='MessageEventTimeline'], [data-oods-component='PreferenceTimeline']) > [data-timeline-title] {
376
+ margin: 0;
377
+ font-size: var(--sys-text-size-lg, 1.25rem);
378
+ font-weight: var(--ref-typography-weights-semibold, 600);
379
+ line-height: var(--sys-text-line-height-standard, 1.4);
380
+ }
381
+
382
+ :where([data-oods-component='AddressValidationTimeline'], [data-oods-component='MembershipAuditTimeline'], [data-oods-component='MessageEventTimeline'], [data-oods-component='PreferenceTimeline']) > [data-timeline-events] {
383
+ display: grid;
384
+ gap: var(--cmp-spacing-stack-sm, 0.75rem);
385
+ margin: 0;
386
+ padding-inline-start: var(--cmp-spacing-stack-lg, 1.5rem);
387
+ }
388
+
389
+ :where([data-oods-component='AddressValidationTimeline'], [data-oods-component='MembershipAuditTimeline'], [data-oods-component='MessageEventTimeline'], [data-oods-component='PreferenceTimeline']) > [data-timeline-events] > li {
390
+ border-inline-start: var(--ref-border-width-bold, 2px) solid var(--cmp-timeline-marker, CanvasText);
391
+ padding-inline-start: var(--cmp-spacing-inline-sm, 0.75rem);
392
+ }
393
+
394
+ :where([data-oods-component='AddressValidationTimeline'], [data-oods-component='MembershipAuditTimeline'], [data-oods-component='MessageEventTimeline'], [data-oods-component='PreferenceTimeline']) [data-timeline-label],
395
+ :where([data-oods-component='AddressValidationTimeline'], [data-oods-component='MembershipAuditTimeline'], [data-oods-component='MessageEventTimeline'], [data-oods-component='PreferenceTimeline']) [data-timeline-detail] {
396
+ margin: 0;
397
+ }
398
+
399
+ :where([data-oods-component='AddressValidationTimeline'], [data-oods-component='MembershipAuditTimeline'], [data-oods-component='MessageEventTimeline'], [data-oods-component='PreferenceTimeline']) [data-timeline-time],
400
+ :where([data-oods-component='AddressValidationTimeline'], [data-oods-component='MembershipAuditTimeline'], [data-oods-component='MessageEventTimeline'], [data-oods-component='PreferenceTimeline']) [data-timeline-detail],
401
+ :where([data-oods-component='AddressValidationTimeline'], [data-oods-component='MembershipAuditTimeline'], [data-oods-component='MessageEventTimeline'], [data-oods-component='PreferenceTimeline']) [data-timeline-empty] {
402
+ color: var(--sys-text-muted, GrayText);
403
+ font-size: var(--sys-text-size-sm, 0.875rem);
404
+ }
405
+
406
+ :where([data-oods-component='AuditEvent']) {
407
+ --cmp-event-background: var(--sys-surface-raised);
408
+ --cmp-event-border: var(--sys-border-subtle);
409
+ --cmp-event-text: var(--sys-text-primary);
410
+ display: grid;
411
+ gap: var(--sys-spacing-stack-compact, 0.75rem);
412
+ padding: var(--cmp-spacing-inset-sm, 0.75rem);
413
+ border: 1px solid var(--cmp-event-border, CanvasText);
414
+ border-radius: var(--cmp-input-radius, 0.5rem);
415
+ background: var(--cmp-event-background, Canvas);
416
+ color: var(--cmp-event-text, CanvasText);
417
+ }
418
+
419
+ :where([data-oods-component='AuditEvent']) > [data-event-label],
420
+ :where([data-oods-component='AuditEvent']) > [data-event-detail] {
421
+ margin: 0;
422
+ }
423
+
424
+ :where([data-oods-component='AuditEvent']) > [data-event-label] {
425
+ font-weight: var(--ref-typography-weights-semibold, 600);
426
+ }
427
+
428
+ :where([data-oods-component='AuditEvent']) > [data-event-time],
429
+ :where([data-oods-component='AuditEvent']) > [data-event-detail] {
430
+ color: var(--sys-text-muted, GrayText);
431
+ font-size: var(--sys-text-size-sm, 0.875rem);
432
+ }
433
+
434
+ /* Badge-family summaries reuse the governed Badge substrate; the pill groups mirror their plain-span HTML renderers. */
435
+ :where([data-oods-component='ArchivePill'], [data-oods-component='CancellationBadge'], [data-oods-component='OwnerBadge'], [data-oods-component='ClassificationBadge'], [data-oods-component='AddressSummaryBadge'], [data-oods-component='MessageStatusBadge'], [data-oods-component='PreferenceSummaryBadge']) {
436
+ --cmp-badge-background: var(--sys-status-neutral-surface);
437
+ --cmp-badge-border: var(--sys-status-neutral-border);
438
+ --cmp-badge-text: var(--sys-status-neutral-text);
439
+ display: inline-flex;
440
+ align-items: center;
441
+ gap: var(--cmp-badge-gap, 0.25rem);
442
+ padding: var(--cmp-badge-padding-block, 0.125rem) var(--cmp-badge-padding-inline, 0.5rem);
443
+ border: 1px solid var(--cmp-badge-border, CanvasText);
444
+ border-radius: var(--cmp-badge-radius, 999px);
445
+ background: var(--cmp-badge-background, Canvas);
446
+ color: var(--cmp-badge-text, CanvasText);
447
+ font-size: var(--cmp-badge-font-size, 0.875rem);
448
+ font-weight: var(--cmp-badge-font-weight, 600);
449
+ }
450
+
451
+ :where([data-oods-component='ArchivePill'], [data-oods-component='CancellationBadge'], [data-oods-component='OwnerBadge'], [data-oods-component='ClassificationBadge'], [data-oods-component='AddressSummaryBadge'], [data-oods-component='MessageStatusBadge'], [data-oods-component='PreferenceSummaryBadge'])[data-emphasis='solid'] {
452
+ border-color: var(--cmp-badge-text, CanvasText);
453
+ background: var(--cmp-badge-text, CanvasText);
454
+ color: var(--cmp-badge-background, Canvas);
455
+ }
456
+
457
+ :where([data-oods-component='ArchivePill'], [data-oods-component='CancellationBadge'], [data-oods-component='OwnerBadge'], [data-oods-component='ClassificationBadge'], [data-oods-component='AddressSummaryBadge'], [data-oods-component='MessageStatusBadge'], [data-oods-component='PreferenceSummaryBadge']) [data-oods-badge-label] {
458
+ display: inline;
459
+ visibility: visible;
460
+ color: inherit;
461
+ }
462
+
463
+ :where([data-oods-component='RoleBadgeList'], [data-oods-component='TagPills']) {
464
+ --cmp-badge-background: var(--sys-status-neutral-surface);
465
+ --cmp-badge-border: var(--sys-status-neutral-border);
466
+ --cmp-badge-text: var(--sys-status-neutral-text);
467
+ display: inline-flex;
468
+ flex-wrap: wrap;
469
+ align-items: center;
470
+ gap: var(--cmp-spacing-inline-xs, 0.5rem);
471
+ color: var(--cmp-badge-text, CanvasText);
472
+ }
473
+
474
+ :where([data-oods-component='RoleBadgeList']) [data-role-badge],
475
+ :where([data-oods-component='TagPills']) [data-tag-pill],
476
+ :where([data-oods-component='TagPills']) [data-tag-overflow] {
477
+ display: inline-flex;
478
+ align-items: center;
479
+ padding: var(--cmp-badge-padding-block, 0.125rem) var(--cmp-badge-padding-inline, 0.5rem);
480
+ border: 1px solid var(--cmp-badge-border, CanvasText);
481
+ border-radius: var(--cmp-badge-radius, 999px);
482
+ background: var(--cmp-badge-background, Canvas);
483
+ color: var(--cmp-badge-text, CanvasText);
484
+ font-size: var(--cmp-badge-font-size, 0.875rem);
485
+ font-weight: var(--cmp-badge-font-weight, 600);
486
+ }
487
+
488
+ /* Panel, filter and summary sections mirror their HTML renderers; controls stay unwired. */
489
+ :where([data-oods-component='AddressCollectionPanel'], [data-oods-component='ClassificationPanel'], [data-oods-component='MembershipPanel'], [data-oods-component='PreferencePanel']) {
490
+ --cmp-panel-background: var(--sys-surface-raised);
491
+ --cmp-panel-border: var(--sys-border-subtle);
492
+ --cmp-panel-title: var(--sys-text-primary);
493
+ --cmp-panel-subtitle: var(--sys-text-secondary);
494
+ display: grid;
495
+ gap: var(--cmp-spacing-stack-sm, 0.75rem);
496
+ padding: var(--cmp-spacing-inset-default, 1rem);
497
+ border: 1px solid var(--cmp-panel-border, CanvasText);
498
+ border-radius: var(--cmp-input-radius, 0.5rem);
499
+ background: var(--cmp-panel-background, Canvas);
500
+ color: var(--cmp-panel-title, CanvasText);
501
+ }
502
+
503
+ :where([data-oods-component='AddressCollectionPanel'], [data-oods-component='ClassificationPanel'], [data-oods-component='MembershipPanel'], [data-oods-component='PreferencePanel']) > [data-panel-header] {
504
+ display: grid;
505
+ gap: var(--sys-spacing-stack-compact, 0.75rem);
506
+ }
507
+
508
+ :where([data-oods-component='AddressCollectionPanel'], [data-oods-component='ClassificationPanel'], [data-oods-component='MembershipPanel'], [data-oods-component='PreferencePanel']) > [data-panel-header] > h2 {
509
+ margin: 0;
510
+ color: var(--cmp-panel-title, CanvasText);
511
+ font-size: var(--sys-text-size-lg, 1.25rem);
512
+ font-weight: var(--ref-typography-weights-semibold, 600);
513
+ line-height: var(--sys-text-line-height-standard, 1.4);
514
+ }
515
+
516
+ :where([data-oods-component='AddressCollectionPanel'], [data-oods-component='ClassificationPanel'], [data-oods-component='MembershipPanel'], [data-oods-component='PreferencePanel']) > [data-panel-header] > [data-panel-subtitle] {
517
+ color: var(--cmp-panel-subtitle, CanvasText);
518
+ font-size: var(--sys-text-size-sm, 0.875rem);
519
+ }
520
+
521
+ :where([data-oods-component='AddressCollectionPanel'], [data-oods-component='ClassificationPanel'], [data-oods-component='MembershipPanel'], [data-oods-component='PreferencePanel']) > [data-panel-content] > [data-panel-summary] {
522
+ color: var(--cmp-panel-subtitle, CanvasText);
523
+ }
524
+
525
+ :where([data-oods-component='FilterPanel']) {
526
+ --cmp-filter-background: var(--sys-surface-raised);
527
+ --cmp-filter-border: var(--sys-border-subtle);
528
+ --cmp-filter-text: var(--sys-text-primary);
529
+ --cmp-filter-legend: var(--sys-text-secondary);
530
+ display: grid;
531
+ gap: var(--cmp-spacing-stack-sm, 0.75rem);
532
+ padding: var(--cmp-spacing-inset-default, 1rem);
533
+ border: 1px solid var(--cmp-filter-border, CanvasText);
534
+ border-radius: var(--cmp-input-radius, 0.5rem);
535
+ background: var(--cmp-filter-background, Canvas);
536
+ color: var(--cmp-filter-text, CanvasText);
537
+ }
538
+
539
+ :where([data-oods-component='FilterPanel']) > [data-filter-section] {
540
+ margin: 0;
541
+ padding: var(--cmp-spacing-inset-sm, 0.75rem);
542
+ border: 1px solid var(--cmp-filter-border, CanvasText);
543
+ border-radius: var(--cmp-input-radius, 0.5rem);
544
+ }
545
+
546
+ :where([data-oods-component='FilterPanel']) > [data-filter-section] > legend {
547
+ padding-inline: var(--sys-control-gap-compact, 0.25rem);
548
+ color: var(--cmp-filter-legend, CanvasText);
549
+ font-weight: var(--ref-typography-weights-semibold, 600);
550
+ }
551
+
552
+ :where([data-oods-component='FilterPanel']) > [data-active-filters] {
553
+ display: flex;
554
+ align-items: center;
555
+ gap: var(--cmp-spacing-inline-sm, 0.75rem);
556
+ }
557
+
558
+ :where([data-oods-component='FilterPanel']) button {
559
+ padding: var(--cmp-button-padding-block-sm, 0.375rem) var(--cmp-button-padding-inline-sm, 0.75rem);
560
+ border: 1px solid var(--cmp-filter-border, CanvasText);
561
+ border-radius: var(--cmp-input-radius, 0.5rem);
562
+ background: transparent;
563
+ color: var(--cmp-filter-text, CanvasText);
564
+ font: inherit;
565
+ }
566
+
567
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) {
568
+ --cmp-form-background: var(--sys-surface-raised);
569
+ --cmp-form-border: var(--sys-border-subtle);
570
+ --cmp-form-text: var(--sys-text-primary);
571
+ --cmp-form-hint: var(--sys-text-secondary);
572
+ display: grid;
573
+ gap: var(--cmp-spacing-stack-sm, 0.75rem);
574
+ margin: 0;
575
+ padding: var(--cmp-spacing-inset-default, 1rem);
576
+ border: 1px solid var(--cmp-form-border, CanvasText);
577
+ border-radius: var(--cmp-input-radius, 0.5rem);
578
+ background: var(--cmp-form-background, Canvas);
579
+ color: var(--cmp-form-text, CanvasText);
580
+ }
581
+
582
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) > [data-form-header] {
583
+ display: grid;
584
+ gap: var(--sys-spacing-stack-compact, 0.75rem);
585
+ }
586
+
587
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) > [data-form-header] > h2 {
588
+ margin: 0;
589
+ color: var(--cmp-form-text, CanvasText);
590
+ font-size: var(--sys-text-size-lg, 1.25rem);
591
+ font-weight: var(--ref-typography-weights-semibold, 600);
592
+ line-height: var(--sys-text-line-height-standard, 1.4);
593
+ }
594
+
595
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) > [data-form-header] > [data-form-subtitle] {
596
+ color: var(--cmp-form-hint, CanvasText);
597
+ font-size: var(--sys-text-size-sm, 0.875rem);
598
+ }
599
+
600
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) [data-tag-list] {
601
+ display: flex;
602
+ flex-wrap: wrap;
603
+ gap: var(--cmp-spacing-inline-xs, 0.5rem);
604
+ }
605
+
606
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) [data-tag-item] {
607
+ padding: var(--cmp-badge-padding-block, 0.125rem) var(--cmp-badge-padding-inline, 0.5rem);
608
+ border: 1px solid var(--cmp-form-border, CanvasText);
609
+ border-radius: var(--cmp-badge-radius, 999px);
610
+ }
611
+
612
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) [data-form-control='input'] {
613
+ display: grid;
614
+ gap: var(--sys-control-gap-compact, 0.25rem);
615
+ }
616
+
617
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) [data-form-control='input'] > span {
618
+ color: var(--cmp-form-hint, CanvasText);
619
+ font-size: var(--sys-text-size-sm, 0.875rem);
620
+ }
621
+
622
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) input {
623
+ padding: var(--cmp-input-padding-block-compact, 0.375rem) var(--cmp-input-padding-inline-compact, 0.5rem);
624
+ border: 1px solid var(--cmp-form-border, CanvasText);
625
+ border-radius: var(--cmp-input-radius, 0.5rem);
626
+ background: transparent;
627
+ color: inherit;
628
+ font: inherit;
629
+ }
630
+
631
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) > legend {
632
+ padding-inline: var(--sys-control-gap-compact, 0.25rem);
633
+ font-size: var(--sys-text-size-lg, 1.25rem);
634
+ font-weight: var(--ref-typography-weights-semibold, 600);
635
+ }
636
+
637
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) > [data-form-subtitle] {
638
+ color: var(--cmp-form-hint, CanvasText);
639
+ font-size: var(--sys-text-size-sm, 0.875rem);
640
+ }
641
+
642
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) [data-form-content] {
643
+ display: grid;
644
+ gap: var(--cmp-spacing-stack-sm, 0.75rem);
645
+ }
646
+
647
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) [data-form-control] {
648
+ display: grid;
649
+ gap: var(--sys-control-gap-compact, 0.25rem);
650
+ }
651
+
652
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) [data-form-control] > span {
653
+ color: var(--cmp-form-hint, CanvasText);
654
+ font-size: var(--sys-text-size-sm, 0.875rem);
655
+ }
656
+
657
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) select,
658
+ :where([data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TagInput'], [data-oods-component='TagManager'], [data-oods-component='TemplatePicker']) textarea {
659
+ padding: var(--cmp-input-padding-block-compact, 0.375rem) var(--cmp-input-padding-inline-compact, 0.5rem);
660
+ border: 1px solid var(--cmp-form-border, CanvasText);
661
+ border-radius: var(--cmp-input-radius, 0.5rem);
662
+ background: transparent;
663
+ color: inherit;
664
+ font: inherit;
665
+ }
666
+
667
+ :where([data-oods-component='StatusSelector']) {
668
+ --cmp-input-background: var(--sys-surface-raised);
669
+ --cmp-input-border: var(--sys-border-subtle);
670
+ --cmp-input-text: var(--sys-text-primary);
671
+ --cmp-input-focus: var(--sys-border-strong);
672
+ display: grid;
673
+ gap: var(--sys-control-gap-compact, 0.25rem);
674
+ color: var(--cmp-input-text, CanvasText);
675
+ }
676
+
677
+ :where([data-oods-component='StatusSelector']) [data-form-control='select'] {
678
+ display: grid;
679
+ gap: var(--sys-control-gap-compact, 0.25rem);
680
+ }
681
+
682
+ :where([data-oods-component='StatusSelector']) select {
683
+ padding: var(--cmp-input-padding-block-compact, 0.375rem) var(--cmp-input-padding-inline-compact, 0.5rem);
684
+ border: 1px solid var(--cmp-input-border, CanvasText);
685
+ border-radius: var(--cmp-input-radius, 0.5rem);
686
+ background: var(--cmp-input-background, Canvas);
687
+ color: var(--cmp-input-text, CanvasText);
688
+ font: inherit;
689
+ }
690
+
691
+ /* The focus ring is the shared rule above; the focused field also takes the input focus colour on its border. */
692
+ :where([data-oods-component='StatusSelector']) select:focus-visible {
693
+ border-color: var(--cmp-input-focus, Highlight);
694
+ }
695
+
696
+
697
+ :where([data-oods-component='ArchiveSummary'], [data-oods-component='OwnershipSummary'], [data-oods-component='TagSummary'], [data-oods-component='PriceSummary']) {
698
+ --cmp-summary-background: var(--sys-surface-raised);
699
+ --cmp-summary-border: var(--sys-border-subtle);
700
+ --cmp-summary-text: var(--sys-text-primary);
701
+ --cmp-summary-label: var(--sys-text-secondary);
702
+ display: grid;
703
+ gap: var(--cmp-spacing-stack-sm, 0.75rem);
704
+ padding: var(--cmp-spacing-inset-default, 1rem);
705
+ border: 1px solid var(--cmp-summary-border, CanvasText);
706
+ border-radius: var(--cmp-input-radius, 0.5rem);
707
+ background: var(--cmp-summary-background, Canvas);
708
+ color: var(--cmp-summary-text, CanvasText);
709
+ }
710
+
711
+ :where([data-oods-component='ArchiveSummary'], [data-oods-component='OwnershipSummary'], [data-oods-component='TagSummary'], [data-oods-component='PriceSummary']) > [data-summary-title] {
712
+ margin: 0;
713
+ font-size: var(--sys-text-size-lg, 1.25rem);
714
+ font-weight: var(--ref-typography-weights-semibold, 600);
715
+ line-height: var(--sys-text-line-height-standard, 1.4);
716
+ }
717
+
718
+ :where([data-oods-component='ArchiveSummary'], [data-oods-component='OwnershipSummary'], [data-oods-component='TagSummary'], [data-oods-component='PriceSummary']) > dl {
719
+ display: grid;
720
+ grid-template-columns: minmax(max-content, 1fr) minmax(0, 2fr);
721
+ gap: var(--cmp-spacing-stack-xs, 0.5rem) var(--cmp-spacing-inline-md, 1rem);
722
+ margin: 0;
723
+ }
724
+
725
+ :where([data-oods-component='ArchiveSummary'], [data-oods-component='OwnershipSummary'], [data-oods-component='TagSummary'], [data-oods-component='PriceSummary']) [data-summary-item] {
726
+ display: contents;
727
+ }
728
+
729
+ :where([data-oods-component='ArchiveSummary'], [data-oods-component='OwnershipSummary'], [data-oods-component='TagSummary'], [data-oods-component='PriceSummary']) dt {
730
+ color: var(--cmp-summary-label, CanvasText);
731
+ font-weight: var(--ref-typography-weights-semibold, 600);
732
+ }
733
+
734
+ :where([data-oods-component='ArchiveSummary'], [data-oods-component='OwnershipSummary'], [data-oods-component='TagSummary'], [data-oods-component='PriceSummary']) dd {
735
+ margin: 0;
736
+ }
737
+
738
+ :where([data-oods-component='ArchiveSummary'], [data-oods-component='OwnershipSummary'], [data-oods-component='TagSummary'], [data-oods-component='PriceSummary']) > [data-summary-fallback] {
739
+ margin: 0;
740
+ color: var(--cmp-summary-label, CanvasText);
741
+ }
742
+
743
+ .oods-field {
744
+ display: grid;
745
+ gap: var(--cmp-input-gap, 0.375rem);
746
+ color: var(--cmp-text-body, CanvasText);
747
+ }
748
+
749
+ .oods-field-label { font-weight: var(--ref-typography-weights-semibold, 600); }
750
+
751
+ .oods-field-control,
752
+ :where(
753
+ input[data-oods-component='Input'],
754
+ input[data-oods-component='DatePicker'],
755
+ select[data-oods-component='Select'],
756
+ textarea[data-oods-component='Textarea']
757
+ ) {
758
+ inline-size: 100%;
759
+ box-sizing: border-box;
760
+ padding: var(--cmp-input-padding-block, 0.625rem) var(--cmp-input-padding-inline, 0.75rem);
761
+ border: 1px solid var(--cmp-input-border, var(--cmp-border-default, currentColor));
762
+ border-radius: var(--cmp-input-radius, 0.5rem);
763
+ background: var(--cmp-input-background, Canvas);
764
+ color: var(--cmp-input-text, CanvasText);
765
+ font: inherit;
766
+ }
767
+
768
+ .oods-field-control::placeholder { color: var(--cmp-input-placeholder, GrayText); }
769
+ .oods-field-control[aria-invalid='true'] { border-color: var(--cmp-input-message-border, Mark); }
770
+ .oods-field-help { color: var(--cmp-input-support-text, var(--cmp-text-muted, GrayText)); }
771
+ .oods-field-error { color: var(--cmp-input-message-text, MarkText); }
772
+
773
+ .oods-banner-dismiss {
774
+ display: inline-flex;
775
+ inline-size: var(--cmp-button-height, 2.5rem);
776
+ block-size: var(--cmp-button-height, 2.5rem);
777
+ align-items: center;
778
+ justify-content: center;
779
+ align-self: start;
780
+ padding: 0;
781
+ border: 1px solid currentColor;
782
+ border-radius: var(--cmp-button-radius, 0.5rem);
783
+ background: transparent;
784
+ color: inherit;
785
+ font: inherit;
786
+ cursor: pointer;
787
+ }
788
+
789
+ :where(.oods-checkbox, [data-oods-component='Checkbox']) {
790
+ display: inline-grid;
791
+ grid-template-columns: auto 1fr;
792
+ align-items: start;
793
+ gap: var(--cmp-checkbox-gap, 0.5rem);
794
+ color: var(--cmp-checkbox-text, var(--cmp-text-body, CanvasText));
795
+ }
796
+
797
+ :where(.oods-checkbox input, [data-oods-component='Checkbox']) {
798
+ accent-color: var(--cmp-checkbox-background-checked, Highlight);
799
+ }
800
+
801
+ :where(.oods-grid, [data-oods-component='Grid']) {
802
+ display: grid;
803
+ grid-template-columns: repeat(var(--oods-grid-columns, auto-fit), minmax(min(100%, var(--oods-grid-min-column, 16rem)), 1fr));
804
+ gap: var(--oods-layout-gap, var(--cmp-spacing-stack-default, 1rem));
805
+ align-items: var(--oods-layout-align, stretch);
806
+ justify-content: var(--oods-layout-justify, normal);
807
+ }
808
+
809
+ /*
810
+ * s206-m01: a numeric column count is a MAXIMUM. The grid keeps that many columns while each still fits its minimum
811
+ * width and wraps to fewer below that, so it never overflows its container (four fixed 16rem columns made thirteen
812
+ * dashboards 1,024px wide at 390 and 820). auto-fill keeps a lone item one column wide on a wide screen.
813
+ */
814
+ :where(.oods-grid[data-max-columns], [data-oods-component='Grid'][data-max-columns]) {
815
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, max(var(--oods-grid-min-column, 16rem), (100% - (var(--oods-grid-columns) - 1) * var(--oods-layout-gap, var(--cmp-spacing-stack-default, 1rem))) / var(--oods-grid-columns))), 1fr));
816
+ }
817
+
818
+ :where(.oods-stack, [data-oods-component='Stack']) {
819
+ display: flex;
820
+ flex-direction: var(--oods-stack-direction, column);
821
+ flex-wrap: var(--oods-stack-wrap, nowrap);
822
+ gap: var(--oods-layout-gap, var(--cmp-spacing-stack-default, 1rem));
823
+ align-items: var(--oods-layout-align, stretch);
824
+ justify-content: var(--oods-layout-justify, flex-start);
825
+ }
826
+
827
+ :where(.oods-table, [data-oods-component='Table']) {
828
+ inline-size: 100%;
829
+ border-collapse: collapse;
830
+ background: var(--cmp-surface-panel, Canvas);
831
+ color: var(--cmp-text-body, CanvasText);
832
+ }
833
+
834
+ :where(.oods-table, [data-oods-component='Table'])[data-density='compact'] {
835
+ --oods-table-cell-padding-block: var(--sys-space-inset-compact, 0.5rem);
836
+ --oods-table-cell-padding-inline: var(--sys-space-inline-sm, 0.875rem);
837
+ font-size: var(--sys-text-size-sm, 0.875rem);
838
+ }
839
+
840
+ :where(.oods-table, [data-oods-component='Table'])[data-density='default'],
841
+ :where(.oods-table, [data-oods-component='Table'])[data-density='comfortable'] {
842
+ --oods-table-cell-padding-block: var(--cmp-spacing-inset-sm, 0.75rem);
843
+ --oods-table-cell-padding-inline: var(--sys-space-inset-default, 1.5rem);
844
+ font-size: var(--sys-text-size-md, 1rem);
845
+ }
846
+
847
+ :where(.oods-table, [data-oods-component='Table']) :is(th, td) {
848
+ padding: var(--oods-table-cell-padding-block, var(--cmp-spacing-inset-compact, 0.75rem))
849
+ var(--oods-table-cell-padding-inline, var(--cmp-spacing-inset-default, 1rem));
850
+ border-block-end: 1px solid var(--cmp-border-default, currentColor);
851
+ text-align: start;
852
+ }
853
+
854
+ :where(.oods-tabs, [data-oods-component='Tabs']) {
855
+ --oods-tabs-font-size: var(--sys-text-size-md, 1rem);
856
+ --oods-tabs-padding-block: var(--cmp-tabs-padding-block, 0.625rem);
857
+ --oods-tabs-padding-inline: var(--cmp-tabs-padding-inline, 0.75rem);
858
+ color: var(--cmp-text-body, CanvasText);
859
+ }
860
+
861
+ :where(.oods-tabs, [data-oods-component='Tabs'])[data-size='sm'] {
862
+ --oods-tabs-font-size: var(--sys-text-size-sm, 0.875rem);
863
+ --oods-tabs-padding-block: var(--cmp-tabs-padding-block-sm, 0.5rem);
864
+ --oods-tabs-padding-inline: var(--cmp-tabs-padding-inline-sm, 0.625rem);
865
+ }
866
+
867
+ :where(.oods-tabs, [data-oods-component='Tabs'])[data-size='md'] {
868
+ --oods-tabs-font-size: var(--sys-text-size-md, 1rem);
869
+ --oods-tabs-padding-block: var(--cmp-tabs-padding-block, 0.625rem);
870
+ --oods-tabs-padding-inline: var(--cmp-tabs-padding-inline, 0.75rem);
871
+ }
872
+
873
+ :where(.oods-tabs, [data-oods-component='Tabs'])[data-size='lg'] {
874
+ --oods-tabs-font-size: var(--sys-text-size-lg, 1.25rem);
875
+ --oods-tabs-padding-block: var(--cmp-tabs-padding-block-lg, 0.75rem);
876
+ --oods-tabs-padding-inline: var(--cmp-tabs-padding-inline-lg, 1rem);
877
+ }
878
+
879
+ :where(.oods-tabs, [data-oods-component='Tabs']) [role='menu'] {
880
+ display: grid;
881
+ gap: var(--sys-control-gap-compact, 0.25rem);
882
+ padding: var(--sys-control-gap-compact, 0.25rem);
883
+ border: 1px solid var(--cmp-border-default, currentColor);
884
+ border-radius: var(--cmp-button-radius, 0.5rem);
885
+ background: var(--cmp-surface-panel, Canvas);
886
+ box-shadow: var(--cmp-shadow-overlay-offset-x, 0px) var(--cmp-shadow-overlay-offset-y, 24px) var(--cmp-shadow-overlay-blur, 56px) var(--cmp-shadow-overlay-spread, -16px) var(--cmp-shadow-overlay-color, rgba(15, 23, 42, 0.24));
887
+ }
888
+
889
+ .oods-tab-list { display: flex; gap: var(--cmp-spacing-inline-xs, 0.5rem); overflow-x: auto; border-block-end: 1px solid var(--cmp-border-default, currentColor); }
890
+ .oods-tab { padding: var(--oods-tabs-padding-block) var(--oods-tabs-padding-inline); border: 0; border-block-end: var(--cmp-tabs-indicator-width, 0.1875rem) solid transparent; background: transparent; color: inherit; font: inherit; font-size: var(--oods-tabs-font-size); line-height: var(--sys-text-line-height-standard, 1.4); }
891
+ :where(.oods-tabs-overflow-trigger, .tabs__overflow-trigger) { padding: var(--oods-tabs-padding-block) var(--oods-tabs-padding-inline); font: inherit; font-size: var(--oods-tabs-font-size); line-height: var(--sys-text-line-height-standard, 1.4); }
892
+ .oods-tab[aria-selected='true'] { border-block-end-color: var(--cmp-text-accent, Highlight); font-weight: var(--ref-typography-weights-semibold, 600); }
893
+ .oods-tab-panel { padding-block: var(--cmp-spacing-stack-default, 1rem); }
894
+
895
+ :where(.oods-text, [data-oods-component='Text']) {
896
+ color: var(--cmp-text-body, CanvasText);
897
+ font: inherit;
898
+ }
899
+
900
+ :where(.oods-text, [data-oods-component='Text'])[data-size='sm'] {
901
+ font-size: var(--sys-text-size-sm, 0.875rem);
902
+ line-height: var(--sys-text-line-height-relaxed, 1.5);
903
+ }
904
+
905
+ :where(.oods-text, [data-oods-component='Text'])[data-size='md'] {
906
+ font-size: var(--sys-text-size-md, 1rem);
907
+ line-height: var(--sys-text-line-height-relaxed, 1.5);
908
+ }
909
+
910
+ :where(.oods-text, [data-oods-component='Text'])[data-size='lg'] {
911
+ font-size: var(--sys-text-size-lg, 1.25rem);
912
+ line-height: var(--sys-text-line-height-standard, 1.4);
913
+ }
914
+
915
+ :where(.oods-text, [data-oods-component='Text'])[data-weight='regular'],
916
+ :where(.oods-text, [data-oods-component='Text'])[data-weight='normal'] {
917
+ font-weight: var(--ref-typography-weights-regular, 400);
918
+ }
919
+
920
+ :where(.oods-text, [data-oods-component='Text'])[data-weight='medium'] {
921
+ font-weight: var(--ref-typography-weights-medium, 500);
922
+ }
923
+
924
+ :where(.oods-text, [data-oods-component='Text'])[data-weight='semibold'] {
925
+ font-weight: var(--ref-typography-weights-semibold, 600);
926
+ }
927
+
928
+ @media (max-width: 40rem) {
929
+ /* Generated single-screen layouts also need the workflow's phone reflow. */
930
+ [data-layout='sidebar'] { grid-template-columns: minmax(0, 1fr) !important; }
931
+ :where(.oods-banner, [data-oods-component='Banner']) { grid-template-columns: 1fr; }
932
+ :where(.oods-table, [data-oods-component='Table']):not([data-density]) { font-size: var(--sys-text-size-sm, 0.875rem); }
933
+ }
934
+
935
+ @media (forced-colors: active) {
936
+ :where(.oods-badge, .oods-banner, .oods-button, .oods-card, .oods-field-control, .oods-tab, .oods-table) {
937
+ forced-color-adjust: none;
938
+ }
939
+
940
+ :is([data-oods-component='ColorSwatch'], [data-oods-component='ColorizedBadge'], [data-oods-component='ArchivePill'], [data-oods-component='CancellationBadge'], [data-oods-component='OwnerBadge'], [data-oods-component='ClassificationBadge'], [data-oods-component='AddressSummaryBadge'], [data-oods-component='MessageStatusBadge'], [data-oods-component='PreferenceSummaryBadge'], [data-oods-component='RoleBadgeList'], [data-oods-component='TagPills']) {
941
+ forced-color-adjust: none;
942
+ border-color: CanvasText;
943
+ background: Canvas;
944
+ color: CanvasText;
945
+ }
946
+
947
+ :where([data-oods-component='ColorSwatch']) > [data-oods-swatch-chip],
948
+ :where([data-oods-component='ColorizedBadge']) [data-oods-badge-marker] {
949
+ border-color: CanvasText;
950
+ background: CanvasText;
951
+ }
952
+ }
953
+
954
+ [data-theme='hc'] :where([data-oods-component='ColorSwatch'], [data-oods-component='ColorizedBadge'], [data-oods-component='ArchivePill'], [data-oods-component='CancellationBadge'], [data-oods-component='OwnerBadge'], [data-oods-component='ClassificationBadge'], [data-oods-component='AddressSummaryBadge'], [data-oods-component='MessageStatusBadge'], [data-oods-component='PreferenceSummaryBadge'], [data-oods-component='RoleBadgeList'], [data-oods-component='TagPills']) {
955
+ border-color: CanvasText;
956
+ background: Canvas;
957
+ color: CanvasText;
958
+ }
959
+
960
+ [data-theme='hc'] :where([data-oods-component='ColorSwatch']) > [data-oods-swatch-chip],
961
+ [data-theme='hc'] :where([data-oods-component='ColorizedBadge']) [data-oods-badge-marker] {
962
+ border-color: CanvasText;
963
+ background: CanvasText;
964
+ }
965
+
966
+ /*
967
+ * High-contrast brand tokens intentionally flatten status surfaces to Canvas.
968
+ * Keep their foreground on the matching CanvasText system colour rather than
969
+ * HighlightText (which is only guaranteed against a Highlight background).
970
+ */
971
+ [data-theme='hc'] :where(
972
+ .oods-badge,
973
+ [data-oods-component='Badge'],
974
+ .oods-banner,
975
+ [data-oods-component='Banner']
976
+ ) {
977
+ border-color: Highlight;
978
+ background: Canvas;
979
+ color: CanvasText;
980
+ }
981
+
982
+ [data-theme='hc'] .oods-field-error {
983
+ color: CanvasText;
984
+ }
985
+
986
+ [data-theme='hc'] :where(.oods-button, [data-oods-component='Button']):not(:disabled) {
987
+ border-color: Highlight;
988
+ background: Highlight;
989
+ color: HighlightText;
990
+ }
991
+
992
+ [data-theme='hc'] :where(.oods-button, [data-oods-component='Button']):disabled {
993
+ border-color: GrayText;
994
+ background: Canvas;
995
+ color: GrayText;
996
+ }
997
+
998
+ @media (forced-colors: active) {
999
+ :is([data-oods-component='AddressCollectionPanel'], [data-oods-component='ClassificationPanel'], [data-oods-component='MembershipPanel'], [data-oods-component='PreferencePanel'], [data-oods-component='FilterPanel'], [data-oods-component='ArchiveSummary'], [data-oods-component='OwnershipSummary'], [data-oods-component='TagSummary'], [data-oods-component='PriceSummary'], [data-oods-component='TagManager'], [data-oods-component='AddressValidationTimeline'], [data-oods-component='MembershipAuditTimeline'], [data-oods-component='MessageEventTimeline'], [data-oods-component='PreferenceTimeline'], [data-oods-component='AuditEvent'], [data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='StatusSelector'], [data-oods-component='TagInput'], [data-oods-component='TemplatePicker']) {
1000
+ forced-color-adjust: none;
1001
+ border-color: CanvasText;
1002
+ background: Canvas;
1003
+ color: CanvasText;
1004
+ }
1005
+ }
1006
+
1007
+ [data-theme='hc'] :where([data-oods-component='AddressCollectionPanel'], [data-oods-component='ClassificationPanel'], [data-oods-component='MembershipPanel'], [data-oods-component='PreferencePanel'], [data-oods-component='FilterPanel'], [data-oods-component='ArchiveSummary'], [data-oods-component='OwnershipSummary'], [data-oods-component='TagSummary'], [data-oods-component='PriceSummary'], [data-oods-component='TagManager'], [data-oods-component='AddressValidationTimeline'], [data-oods-component='MembershipAuditTimeline'], [data-oods-component='MessageEventTimeline'], [data-oods-component='PreferenceTimeline'], [data-oods-component='AuditEvent'], [data-oods-component='AddressEditor'], [data-oods-component='CancellationForm'], [data-oods-component='ClassificationEditor'], [data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='StatusSelector'], [data-oods-component='TagInput'], [data-oods-component='TemplatePicker']) {
1008
+ border-color: CanvasText;
1009
+ background: Canvas;
1010
+ color: CanvasText;
1011
+ }
1012
+
1013
+ /* Former ported families share the canonical root stylesheet. */
1014
+ :where(
1015
+ [data-oods-component='StatusBadge'],
1016
+ [data-oods-component='PriceBadge']
1017
+ ) {
1018
+ display: inline-flex;
1019
+ align-items: center;
1020
+ gap: var(--cmp-badge-gap, 0.25rem);
1021
+ min-block-size: var(--cmp-badge-height, 1.5rem);
1022
+ box-sizing: border-box;
1023
+ padding: var(--cmp-badge-padding-block, 0.125rem) var(--cmp-badge-padding-inline, 0.5rem);
1024
+ border: 1px solid var(--cmp-badge-border, var(--cmp-border-default, currentColor));
1025
+ border-radius: var(--cmp-badge-radius, 999px);
1026
+ background: var(--cmp-badge-background, var(--cmp-surface-subtle, transparent));
1027
+ color: var(--cmp-badge-text, var(--cmp-text-body, currentColor));
1028
+ font-size: var(--cmp-badge-font-size, 0.875rem);
1029
+ font-weight: var(--cmp-badge-font-weight, 600);
1030
+ line-height: var(--sys-text-line-height-tight, 1.2);
1031
+ }
1032
+
1033
+ :where([data-oods-component='StatusBadge'])[data-status='active'],
1034
+ :where([data-oods-component='StatusBadge'])[data-status='success'] {
1035
+ --cmp-badge-background: var(--sys-status-success-surface, Canvas);
1036
+ --cmp-badge-border: var(--sys-status-success-border, currentColor);
1037
+ --cmp-badge-text: var(--sys-status-success-text, CanvasText);
1038
+ }
1039
+
1040
+ :where([data-oods-component='StatusBadge'])[data-status='past_due'],
1041
+ :where([data-oods-component='StatusBadge'])[data-status='warning'] {
1042
+ --cmp-badge-background: var(--sys-status-warning-surface, Canvas);
1043
+ --cmp-badge-border: var(--sys-status-warning-border, currentColor);
1044
+ --cmp-badge-text: var(--sys-status-warning-text, CanvasText);
1045
+ }
1046
+
1047
+ :where([data-oods-component='StatusBadge'])[data-status='cancelled'],
1048
+ :where([data-oods-component='StatusBadge'])[data-status='error'] {
1049
+ --cmp-badge-background: var(--sys-status-critical-surface, Canvas);
1050
+ --cmp-badge-border: var(--sys-status-critical-border, currentColor);
1051
+ --cmp-badge-text: var(--sys-status-critical-text, CanvasText);
1052
+ }
1053
+
1054
+ :where(
1055
+ [data-oods-component='StatusTimeline'],
1056
+ [data-oods-component='AuditTimeline']
1057
+ ) {
1058
+ display: grid;
1059
+ gap: var(--cmp-spacing-stack-md, 1rem);
1060
+ color: var(--cmp-text-body, CanvasText);
1061
+ }
1062
+
1063
+ :where(
1064
+ [data-oods-component='StatusTimeline'],
1065
+ [data-oods-component='AuditTimeline']
1066
+ ) :where(ol, ul) {
1067
+ display: grid;
1068
+ gap: var(--cmp-spacing-stack-sm, 0.75rem);
1069
+ margin: 0;
1070
+ padding-inline-start: var(--cmp-spacing-stack-lg, 1.5rem);
1071
+ }
1072
+
1073
+ :where(
1074
+ [data-oods-component='StatusTimeline'],
1075
+ [data-oods-component='AuditTimeline']
1076
+ ) :where(article, li) {
1077
+ border-inline-start: var(--ref-border-width-bold, 2px) solid var(--cmp-border-subtle, currentColor);
1078
+ padding-inline-start: var(--cmp-spacing-inline-sm, 0.75rem);
1079
+ }
1080
+
1081
+ :where([data-oods-component='CancellationSummary']) {
1082
+ display: grid;
1083
+ gap: var(--cmp-spacing-stack-sm, 0.75rem);
1084
+ padding: var(--cmp-spacing-inset-default, 1rem);
1085
+ border: 1px solid var(--cmp-border-default, currentColor);
1086
+ border-radius: var(--cmp-input-radius, 0.5rem);
1087
+ background: var(--cmp-surface-panel, Canvas);
1088
+ color: var(--cmp-text-body, CanvasText);
1089
+ }
1090
+
1091
+ :where([data-oods-component='CancellationSummary']) :where(dl, [data-summary-fields]) {
1092
+ display: grid;
1093
+ grid-template-columns: minmax(max-content, 1fr) minmax(0, 2fr);
1094
+ gap: var(--cmp-spacing-stack-xs, 0.5rem) var(--cmp-spacing-inline-md, 1rem);
1095
+ margin: 0;
1096
+ }
1097
+
1098
+ :where([data-oods-component='CancellationSummary']) :where(dt, [data-summary-term]) {
1099
+ font-weight: var(--ref-typography-weights-semibold, 600);
1100
+ }
1101
+
1102
+ :where([data-oods-component='CancellationSummary']) :where(dd, [data-summary-value]) {
1103
+ margin: 0;
1104
+ }
1105
+
1106
+ :where([data-oods-component='SearchInput']) {
1107
+ display: flex;
1108
+ align-items: center;
1109
+ gap: var(--cmp-spacing-inline-xs, 0.5rem);
1110
+ }
1111
+
1112
+ :where([data-oods-component='SearchInput']) input[type='search'] {
1113
+ inline-size: 100%;
1114
+ box-sizing: border-box;
1115
+ padding: var(--cmp-input-padding-block, 0.625rem) var(--cmp-input-padding-inline, 0.75rem);
1116
+ border: 1px solid var(--cmp-input-border, var(--cmp-border-default, currentColor));
1117
+ border-radius: var(--cmp-input-radius, 0.5rem);
1118
+ background: var(--cmp-input-background, Canvas);
1119
+ color: var(--cmp-input-text, CanvasText);
1120
+ font: inherit;
1121
+ }
1122
+
1123
+ :where([data-oods-component='SearchInput']) button,
1124
+ :where([data-oods-component='PaginationBar']) button {
1125
+ display: inline-flex;
1126
+ min-inline-size: var(--cmp-button-height, 2.5rem);
1127
+ min-block-size: var(--cmp-button-height, 2.5rem);
1128
+ align-items: center;
1129
+ justify-content: center;
1130
+ border: 1px solid var(--cmp-button-border, var(--cmp-border-default, currentColor));
1131
+ border-radius: var(--cmp-button-radius, 0.5rem);
1132
+ background: var(--cmp-button-background, Canvas);
1133
+ color: var(--cmp-button-text, CanvasText);
1134
+ font: inherit;
1135
+ }
1136
+
1137
+ :where([data-oods-component='PaginationBar']) {
1138
+ display: flex;
1139
+ align-items: center;
1140
+ justify-content: space-between;
1141
+ gap: var(--cmp-spacing-inline-sm, 0.75rem);
1142
+ color: var(--cmp-text-body, CanvasText);
1143
+ }
1144
+
1145
+ :where([data-oods-component='PaginationBar']) button:disabled {
1146
+ color: var(--cmp-button-text-disabled, GrayText);
1147
+ cursor: not-allowed;
1148
+ }
1149
+
1150
+ /* Narrow widths: the record count and range share the first line; the page controls stay together on the second. */
1151
+ @media (max-width: 600px) {
1152
+ :where([data-oods-component='PaginationBar']) {
1153
+ display: grid;
1154
+ grid-template-columns: auto auto auto minmax(0, 1fr);
1155
+ grid-template-areas: 'count count range range' 'prev pages next current';
1156
+ align-items: center;
1157
+ justify-items: start;
1158
+ row-gap: var(--cmp-spacing-stack-xs, 0.5rem);
1159
+ }
1160
+ :where([data-oods-component='PaginationBar']) [data-pagination-count] { grid-area: count; }
1161
+ :where([data-oods-component='PaginationBar']) [data-pagination-range] { grid-area: range; justify-self: end; }
1162
+ :where([data-oods-component='PaginationBar']) [data-pagination-prev] { grid-area: prev; }
1163
+ :where([data-oods-component='PaginationBar']) .oods-pagination-bar__pages { grid-area: pages; }
1164
+ :where([data-oods-component='PaginationBar']) [data-pagination-next] { grid-area: next; }
1165
+ :where([data-oods-component='PaginationBar']) [data-pagination-current] { grid-area: current; }
1166
+ :where([data-oods-component='PaginationBar']) label { grid-column: 1 / -1; }
1167
+ }
1168
+
1169
+ :where([data-oods-component='RelativeTimestamp']) {
1170
+ color: var(--cmp-text-muted, GrayText);
1171
+ font-size: var(--sys-text-size-sm, 0.875rem);
1172
+ }
1173
+
1174
+
1175
+ @media (forced-colors: active) {
1176
+ :where(
1177
+ [data-oods-component='StatusBadge'],
1178
+ [data-oods-component='PriceBadge'],
1179
+ [data-oods-component='CancellationSummary'],
1180
+ [data-oods-component='SearchInput'] input,
1181
+ [data-oods-component='PaginationBar'] button
1182
+ ) {
1183
+ forced-color-adjust: none;
1184
+ border-color: CanvasText;
1185
+ background: Canvas;
1186
+ color: CanvasText;
1187
+ }
1188
+ }
1189
+
1190
+ /* Fresh composition naming families share the same semantic token cascade. */
1191
+ :where([data-oods-component='LabelCell'], [data-oods-component='InlineLabel'], [data-oods-component='FormLabelGroup']) {
1192
+ --cmp-text-primary: var(--sys-text-primary);
1193
+ color: var(--cmp-text-primary, CanvasText);
1194
+ font: inherit;
1195
+ }
1196
+ :where([data-oods-component='LabelCell'], [data-oods-component='FormLabelGroup']) {
1197
+ display: inline-flex;
1198
+ flex-direction: column;
1199
+ gap: var(--sys-spacing-stack-compact, 0.75rem);
1200
+ }
1201
+ :where([data-oods-component='LabelCell']) [data-oods-label-cell-description],
1202
+ :where([data-oods-component='FormLabelGroup']) [data-oods-form-hint] {
1203
+ color: var(--cmp-text-secondary, GrayText);
1204
+ font-size: var(--sys-text-size-sm, 0.875rem);
1205
+ }
1206
+ :where([data-oods-form-label]) { font-weight: var(--ref-typography-weights-medium, 500); }
1207
+
1208
+ :where([data-oods-component='LabelCell'], [data-oods-component='FormLabelGroup']) {
1209
+ --cmp-text-secondary: var(--sys-text-secondary);
1210
+ }
1211
+
1212
+ :where([data-oods-component='PriceCardMeta'], [data-oods-component='OwnershipMeta']) {
1213
+ --cmp-meta-text: var(--sys-text-primary);
1214
+ --cmp-meta-label: var(--sys-text-secondary);
1215
+ display: flex;
1216
+ flex-wrap: wrap;
1217
+ gap: var(--cmp-spacing-inline-sm, 0.75rem);
1218
+ color: var(--cmp-meta-text, CanvasText);
1219
+ }
1220
+ :where([data-oods-component='PriceCardMeta'], [data-oods-component='OwnershipMeta']) [data-meta-title],
1221
+ :where([data-oods-component='PriceCardMeta'], [data-oods-component='OwnershipMeta']) strong {
1222
+ color: var(--cmp-meta-label, CanvasText);
1223
+ font-weight: var(--ref-typography-weights-semibold, 600);
1224
+ }
1225
+ /* Billable list/form surfaces share the trait's semantic token roles. */
1226
+ [data-oods-component='BillingSummaryBadge'] {
1227
+ display: inline-block;
1228
+ flex-shrink: 0;
1229
+ white-space: nowrap;
1230
+ color: var(--cmp-billing-amount-text, var(--sys-text-strong));
1231
+ font-variant-numeric: tabular-nums;
1232
+ }
1233
+ :where([data-oods-component='BillingAmountInput'], [data-oods-component='BillingIntervalSelector']) {
1234
+ display: grid;
1235
+ gap: var(--space-2);
1236
+ min-width: 0;
1237
+ color: var(--cmp-billing-amount-text, var(--sys-text-strong));
1238
+ }
1239
+ :where([data-oods-component='BillingAmountInput'], [data-oods-component='BillingIntervalSelector']) > span {
1240
+ color: var(--cmp-billing-currency-text, var(--sys-text-subtle));
1241
+ }
1242
+ :where([data-oods-component='BillingAmountInput'], [data-oods-component='BillingIntervalSelector']) > input,
1243
+ :where([data-oods-component='BillingAmountInput'], [data-oods-component='BillingIntervalSelector']) > select {
1244
+ width: 100%;
1245
+ min-width: 0;
1246
+ box-sizing: border-box;
1247
+ padding: var(--space-2) var(--space-3);
1248
+ font: inherit;
1249
+ color: inherit;
1250
+ background: var(--sys-surface-default);
1251
+ border: 1px solid var(--sys-border-default);
1252
+ border-radius: var(--radius-md);
1253
+ }
1254
+ :where([data-oods-component='BillingAmountInput'], [data-oods-component='BillingIntervalSelector']) > select {
1255
+ color: var(--cmp-billing-interval-text, var(--sys-text-subtle));
1256
+ }
1257
+ :where([data-oods-component='BillingAmountInput'], [data-oods-component='BillingIntervalSelector']) > [aria-invalid='true'] {
1258
+ border-color: var(--sys-status-critical-border);
1259
+ }
1260
+ :where([data-oods-component='BillingAmountInput'], [data-oods-component='BillingIntervalSelector']) > [role='alert'] {
1261
+ color: var(--sys-status-critical-text);
1262
+ margin: 0;
1263
+ }
1264
+
1265
+ /* Billable cycle/payment and Archivable row surfaces. */
1266
+ [data-oods-component='CycleProgressCard'],
1267
+ :where([data-oods-component='PaymentTimeline'], [data-oods-component='PaymentEventTimeline']) {
1268
+ min-width: 0;
1269
+ padding: var(--space-4, 1rem);
1270
+ border: 1px solid var(--sys-border-default, GrayText);
1271
+ border-radius: var(--radius-md, 0.5rem);
1272
+ background: var(--sys-surface-default, Canvas);
1273
+ color: var(--cmp-billing-timeline-text, var(--sys-text-default, CanvasText));
1274
+ }
1275
+ [data-oods-component='CycleProgressCard'] h2,
1276
+ :where([data-oods-component='PaymentTimeline'], [data-oods-component='PaymentEventTimeline']) h2 { margin: 0 0 var(--space-3, 0.75rem); }
1277
+ [data-oods-component='CycleProgressCard'] p,
1278
+ :where([data-oods-component='PaymentTimeline'], [data-oods-component='PaymentEventTimeline']) p { margin: var(--space-2, 0.5rem) 0; }
1279
+ /* s213-m01: the track takes the border role, so the whole cycle reads against the card in both themes (raised surface
1280
+ was whiter than the light card, 1.04:1) while the accent fill keeps at least 3:1 against it. */
1281
+ [data-oods-component='CycleProgressCard'] progress {
1282
+ width: 100%;
1283
+ height: var(--cmp-billing-cycle-progress-height, 0.5rem);
1284
+ appearance: none;
1285
+ border: 0;
1286
+ border-radius: var(--sys-radius-control, 0.5rem);
1287
+ overflow: hidden;
1288
+ background: var(--sys-border-default, Canvas);
1289
+ color: var(--cmp-billing-cycle-progress-fill, var(--sys-text-accent, Highlight));
1290
+ }
1291
+ [data-oods-component='CycleProgressCard'] progress::-webkit-progress-bar {
1292
+ background: var(--sys-border-default, Canvas);
1293
+ }
1294
+ [data-oods-component='CycleProgressCard'] progress::-webkit-progress-value {
1295
+ background: var(--cmp-billing-cycle-progress-fill, var(--sys-text-accent, Highlight));
1296
+ }
1297
+ [data-oods-component='CycleProgressCard'] progress::-moz-progress-bar {
1298
+ background: var(--cmp-billing-cycle-progress-fill, var(--sys-text-accent, Highlight));
1299
+ }
1300
+ @media (forced-colors: active) {
1301
+ [data-oods-component='CycleProgressCard'] progress { background: Canvas; color: Highlight; border: 1px solid CanvasText; forced-color-adjust: none; }
1302
+ [data-oods-component='CycleProgressCard'] progress::-webkit-progress-bar { background: Canvas; }
1303
+ [data-oods-component='CycleProgressCard'] progress::-webkit-progress-value { background: Highlight; }
1304
+ [data-oods-component='CycleProgressCard'] progress::-moz-progress-bar { background: Highlight; }
1305
+ }
1306
+ .oods-billing-muted { color: var(--sys-text-subtle, GrayText); }
1307
+ :where([data-oods-component='PaymentTimeline'], [data-oods-component='PaymentEventTimeline']) ol { margin: var(--space-4, 1rem) 0 0; padding-left: var(--space-4, 1rem); }
1308
+ :where([data-oods-component='PaymentTimeline'], [data-oods-component='PaymentEventTimeline']) li { padding: var(--space-2, 0.5rem) 0; }
1309
+ :where([data-oods-component='PaymentTimeline'], [data-oods-component='PaymentEventTimeline']) li > strong { display: block; }
1310
+ [data-oods-component='BillingCardMeta'] {
1311
+ color: var(--cmp-billing-amount-text, var(--sys-text-strong, CanvasText));
1312
+ font-variant-numeric: tabular-nums;
1313
+ }
1314
+ [data-oods-component='ArchivedRowOverlay'] { display: contents; }
1315
+ [data-oods-component='ArchivedRowOverlay'][data-archived='true'] {
1316
+ display: flex;
1317
+ width: 100%;
1318
+ align-items: center;
1319
+ gap: var(--space-2, 0.5rem);
1320
+ /* Retain archived dimming without dropping its label below 4.5:1. */
1321
+ opacity: var(--status-archive-overlay-opacity, 0.7);
1322
+ }
1323
+ [data-oods-component='ArchivedRowOverlay'] > .oods-collection-row { flex: 1; min-width: 0; }
1324
+ /* The archived card owns both the interactive row and its status badge. */
1325
+ [data-oods-component='ArchivedRowOverlay'][data-archived='true']:has(> .oods-collection-row) {
1326
+ box-sizing: border-box;
1327
+ border: 1px solid var(--sys-border-strong, CanvasText);
1328
+ border-radius: var(--cmp-button-radius, 0.5rem);
1329
+ background: var(--sys-surface-raised, Canvas);
1330
+ padding-inline-end: var(--space-4, 1rem);
1331
+ }
1332
+ [data-oods-component='ArchivedRowOverlay'][data-archived='true'] > .oods-collection-row { border: 0; background: transparent; }
1333
+ .oods-archive-badge {
1334
+ display: inline-block;
1335
+ white-space: nowrap;
1336
+ flex-shrink: 0;
1337
+ padding: var(--space-1, 0.25rem) var(--space-2, 0.5rem);
1338
+ border-radius: var(--radius-sm, 0.5rem);
1339
+ color: var(--status-archive-text, var(--sys-text-primary));
1340
+ background: var(--status-archive-bg, var(--sys-surface-raised));
1341
+ }
1342
+
1343
+ [data-oods-component='CancellationSummary'] dl {
1344
+ display: grid;
1345
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
1346
+ gap: var(--space-4, 1rem);
1347
+ }
1348
+ [data-oods-component='CancellationSummary'] [data-summary-item] { min-width: 0; }
1349
+ [data-oods-component='CancellationSummary'] dd { margin: 0; overflow-wrap: break-word; }
1350
+ .oods-field-help { display: block; margin: var(--cmp-input-gap, 0.375rem) 0 var(--cmp-spacing-stack-md, 1rem); font-size: var(--sys-text-size-sm, 0.875rem); color: var(--sys-text-subtle, GrayText); }
1351
+ .oods-cancellation-form { margin: 0; min-width: 0; }
1352
+ .oods-field:has(input[type='checkbox']) { display: block; }
1353
+ .oods-field label:has(input[type='checkbox']) { display: flex; flex-direction: row; align-items: center; gap: var(--cmp-checkbox-gap, 0.5rem); }
1354
+
1355
+ /* Generated collection screens share one row/event presentation in both frameworks. */
1356
+ .oods-collection { list-style: none; margin: var(--cmp-spacing-stack-md, 1rem) 0; padding: 0; display: grid; gap: var(--cmp-spacing-stack-xs, 0.5rem); }
1357
+ [data-oods-collection-toolbar] { flex-wrap: wrap; min-width: 0; }
1358
+ [data-oods-collection-toolbar] > [data-oods-component='SearchInput'],
1359
+ [data-oods-collection-toolbar] > [data-oods-component='Select'],
1360
+ [data-oods-collection-toolbar] > .oods-field:has(select),
1361
+ .workflow-content [data-oods-collection-toolbar] > [data-oods-component='SearchInput'],
1362
+ .workflow-content [data-oods-collection-toolbar] > [data-oods-component='Select'],
1363
+ .workflow-content [data-oods-collection-toolbar] > .oods-field:has(select) { flex: 1 1 180px; min-width: min(180px, 100%); }
1364
+ [data-oods-collection-toolbar] select { width: 100%; box-sizing: border-box; }
1365
+ [data-oods-component='Stack']:has(> [data-oods-collection-toolbar]) { font-family: var(--ref-typography-families-sans, system-ui, sans-serif); }
1366
+ .oods-collection-row { --oods-button-background: var(--sys-surface-raised); --oods-button-background-hover: var(--sys-surface-subtle); --oods-button-border: var(--sys-border-subtle); --oods-button-text: var(--sys-text-primary); width: 100%; display: flex; flex-wrap: wrap; align-items: center; gap: var(--cmp-spacing-inline-sm, 0.75rem); text-align: left; padding: var(--cmp-spacing-inset-default, 1rem); }
1367
+ [data-theme='hc'] .oods-collection-row:not(:disabled) { background: var(--sys-surface-raised); color: var(--sys-text-primary); }
1368
+ .oods-collection-row > :first-child { min-width: 0; flex: 1 1 140px; font-weight: var(--ref-typography-weights-semibold, 600); }
1369
+ .oods-collection-row .oods-badge { max-width: 100%; width: fit-content; flex: 0 0 auto; text-transform: none; letter-spacing: normal; }
1370
+ [data-oods-collection="events"] time { display: block; margin-top: var(--cmp-spacing-stack-xs, 0.5rem); font-size: var(--sys-text-size-sm, 0.875rem); }
1371
+ .oods-pagination-bar__pages { display: flex; gap: var(--sys-control-gap-tight, 0.375rem); list-style: none; margin: 0; padding: 0; }
1372
+ @media (max-width: 600px) { .oods-collection-row { flex-direction: column; align-items: flex-start; } .oods-collection-row > :first-child { flex-basis: auto; width: 100%; } }
1373
+
1374
+ :where(.oods-audit-summary, [data-oods-component='AuditSummaryCard']) { padding: var(--cmp-spacing-inset-default); border: 1px solid var(--cmp-border-default); border-radius: var(--cmp-input-radius); background: var(--cmp-surface-panel); color: var(--cmp-text-body); }
1375
+ .oods-audit-summary h2 { margin-top: 0; }
1376
+ .oods-audit-summary dl { display: grid; grid-template-columns: auto 1fr; gap: var(--cmp-spacing-inline-sm); }
1377
+ .oods-audit-summary dd { margin: 0; }
1378
+ :where(.oods-sort-indicator, [data-oods-component='SortIndicator']) { border-collapse: collapse; color: var(--cmp-text-body); }
1379
+ .oods-sort-indicator button { padding: var(--cmp-spacing-inline-sm); background: var(--cmp-surface-panel); color: var(--cmp-text-body); border: 1px solid var(--cmp-border-default); border-radius: var(--cmp-input-radius); cursor: pointer; }
1380
+ [data-oods-component='TimelineEntryLabel'] { color: var(--cmp-text-body); }
1381
+
1382
+ .oods-trait-recipe, :where([data-oods-component='ArchiveEvent'], [data-oods-component='CancellationEvent'], [data-oods-component='ColorStatePicker'], [data-oods-component='CommunicationDetailPanel'], [data-oods-component='GeoFieldMappingForm'], [data-oods-component='GeocodablePreview'], [data-oods-component='StateTransitionEvent'], [data-oods-component='StatusColorLegend'], [data-oods-component='VizAreaControls'], [data-oods-component='VizAxisControls'], [data-oods-component='VizAxisSummary'], [data-oods-component='VizColorControls'], [data-oods-component='VizColorLegendConfig'], [data-oods-component='VizHeatmapControls'], [data-oods-component='VizLineControls'], [data-oods-component='VizMarkControls'], [data-oods-component='VizOpacityControls'], [data-oods-component='VizOpacitySummary'], [data-oods-component='VizPointControls'], [data-oods-component='VizScaleControls'], [data-oods-component='VizScaleSummary'], [data-oods-component='VizScatterControls'], [data-oods-component='VizShapeControls'], [data-oods-component='VizShapeLegend'], [data-oods-component='VizSizeControls'], [data-oods-component='VizSizeSummary']) { min-width: 0; margin: 0; padding: var(--cmp-spacing-inset-default); border: 1px solid var(--cmp-border-default); border-radius: var(--cmp-input-radius); background: var(--cmp-surface-panel); color: var(--cmp-text-body); overflow-wrap: anywhere; }
1383
+ .oods-trait-recipe h2 { margin-top: 0; }
1384
+ .oods-trait-recipe dd { margin: 0 0 var(--cmp-spacing-inline-sm); }
1385
+ .oods-trait-recipe dt { font-weight: var(--ref-typography-weights-semibold, 600); }
1386
+ .oods-trait-recipe .oods-field { margin-block: var(--cmp-spacing-inline-sm); }
1387
+ .oods-geo-resolution, :where([data-oods-component='GeoResolutionBadge'], [data-oods-component='VizEncodingBadge'], [data-oods-component='VizRoleBadge']) { color: var(--cmp-text-body); }
1388
+
1389
+ .oods-viz-swatches { display: flex; flex-wrap: wrap; gap: var(--cmp-spacing-inline-sm) var(--cmp-spacing-inset-default); }
1390
+
1391
+ /* Producer-owned read fields stay labelled and readable in every context. */
1392
+ [data-oods-component='Stack'][id$='-read-field'] { gap: var(--sys-control-gap-compact, 0.25rem); min-width: 0; }
1393
+ [data-oods-component='Stack'][id$='-read-fields'] { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: var(--sys-space-scale-lg, 1.25rem); }
1394
+ [data-oods-component='Stack'][id$='-read-fields'] > :not([id$='-read-field']) { grid-column: 1 / -1; }
1395
+ [data-oods-component='Stack'][id$='-read-field'] > :first-child { color: var(--sys-text-secondary); }
1396
+ [data-oods-component='Stack'][id$='-read-field'] > :last-child { overflow-wrap: anywhere; align-self: flex-start; max-width: 100%; }
1397
+ /* s213-m03: a declared major-unit amount reads through PriceBadge in a detail row; its pill hugs the amount instead of
1398
+ stretching across the row. */
1399
+ [data-oods-component='Stack'][id$='-read-field'] > [data-oods-component='PriceBadge'] { align-self: flex-start; }
1400
+ [data-oods-component='StatusBadge'] { text-transform: none; letter-spacing: normal; width: fit-content; }
1401
+
1402
+ /* Keep the frozen ported block intact; current recipe roles follow semantic fallbacks. */
1403
+ :where([data-oods-component='CancellationSummary']) {
1404
+ display: grid;
1405
+ gap: var(--cmp-spacing-stack-sm, 0.75rem);
1406
+ padding: var(--cmp-spacing-inset-default, 1rem);
1407
+ border: 1px solid var(--cmp-border-default, var(--sys-border-subtle));
1408
+ border-radius: var(--cmp-input-radius, 0.5rem);
1409
+ background: var(--cmp-surface-panel, var(--sys-surface-raised));
1410
+ color: var(--cmp-text-body, var(--sys-text-primary));
1411
+ }
1412
+
1413
+ /* Form labels and required marks share one line in both framework field frames. */
1414
+ .form-field__label,
1415
+ .oods-field > .oods-field-label {
1416
+ display: flex;
1417
+ align-items: baseline;
1418
+ gap: var(--sys-control-gap-compact, 0.25rem);
1419
+ }
1420
+ .oods-field.oods-checkbox,
1421
+ div.oods-field[data-oods-component='Checkbox'] { display: grid; grid-template-columns: minmax(0, 1fr); }
1422
+ .oods-field.oods-checkbox > label,
1423
+ .oods-field > label.oods-checkbox { display: flex; align-items: center; gap: var(--cmp-checkbox-gap, 0.5rem); }
1424
+ input[data-oods-component='Checkbox'], .oods-field input[type='checkbox'] { margin: 0; flex: 0 0 auto; inline-size: var(--cmp-input-height, 3rem); block-size: var(--cmp-input-height, 3rem); }
1425
+ .workflow-field > input { width: 100%; min-width: 0; box-sizing: border-box; font: inherit; }
1426
+
1427
+ /* Catalog choices may have long labels; form grids must shrink with their screen. */
1428
+ :where([data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TemplatePicker']) { min-inline-size: 0; max-inline-size: 100%; box-sizing: border-box; }
1429
+ :where([data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TemplatePicker']) :is([data-form-content], [data-form-control]) { min-inline-size: 0; }
1430
+ :where([data-oods-component='PreferenceEditor'], [data-oods-component='RoleAssignmentForm'], [data-oods-component='TemplatePicker']) :is(select, input, textarea) { min-inline-size: 0; inline-size: 100%; max-inline-size: 100%; box-sizing: border-box; }
1431
+
1432
+ /* s211-m02: one left edge. A generated page (the main landmark a standalone screen renders in) insets everything it
1433
+ * places by the page gutter, and the composer's page-level regions carry no side padding of their own, so a heading,
1434
+ * the controls under it and the cards below share one edge. The page's own heading reads as a detail page's does. */
1435
+ [data-oods-shell] { display: block; box-sizing: border-box; padding: var(--sys-page-gutter, 1.5rem); }
1436
+ [data-oods-shell-heading] {
1437
+ margin: 0 0 var(--sys-stack-md, 1rem);
1438
+ font-size: var(--sys-text-scale-heading-lg-font-size, 1.5rem);
1439
+ font-weight: var(--ref-typography-weights-semibold, 600);
1440
+ line-height: var(--sys-text-scale-heading-lg-line-height, 1.2);
1441
+ }
1442
+
1443
+ /* s211-m02: a tab label never breaks inside a word ("Ru/n" at 390); a list with more tabs than fit scrolls instead, and
1444
+ * the tabs never widen the flex or grid container they sit in. */
1445
+ .oods-tab { white-space: nowrap; flex: none; }
1446
+ :where(.oods-tabs, [data-oods-component='Tabs']) { min-inline-size: 0; }
1447
+
1448
+ /* s211-m02: a status or audit timeline reads as one compact list: no browser paragraph margins, one rule beside each
1449
+ * event (on the event, not also on its list item) and a quieter time under its label. The frozen block above stays. */
1450
+ :where([data-oods-component='StatusTimeline'], [data-oods-component='AuditTimeline']) { gap: var(--sys-stack-sm, 0.75rem); }
1451
+ :where([data-oods-component='StatusTimeline'], [data-oods-component='AuditTimeline']) > :is(h2, p) { margin: 0; }
1452
+ :where([data-oods-component='StatusTimeline'], [data-oods-component='AuditTimeline']) ol { list-style: none; padding-inline-start: 0; }
1453
+ :where([data-oods-component='StatusTimeline'], [data-oods-component='AuditTimeline']) li { border-inline-start: 0; padding-inline-start: 0; }
1454
+ :where([data-oods-component='StatusTimeline'], [data-oods-component='AuditTimeline']) article {
1455
+ display: grid;
1456
+ gap: var(--sys-stack-xs, 0.5rem);
1457
+ border-inline-start: var(--ref-border-width-bold, 2px) solid var(--sys-border-subtle, currentColor);
1458
+ padding-inline-start: var(--cmp-spacing-inline-sm, 0.75rem);
1459
+ }
1460
+ :where([data-oods-component='StatusTimeline'], [data-oods-component='AuditTimeline']) article p { margin: 0; }
1461
+ :where([data-oods-component='StatusTimeline'], [data-oods-component='AuditTimeline']) article time { color: var(--sys-text-secondary, GrayText); font-size: var(--sys-text-size-sm, 0.875rem); }
1462
+
1463
+ /* s211-m02: a screen's actions sit together in one bar of design-system buttons. */
1464
+ .oods-action-bar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sys-control-gap, 0.5rem); }
1465
+
1466
+ /* s211-m02: a search field fills the room its toolbar gives it, as the selects beside it do. */
1467
+ :where([data-oods-component='SearchInput']) > :not(button) { flex: 1 1 auto; min-inline-size: 0; }
1468
+
1469
+ /* s211-m02: the summary's heading sits on the card's own inset, not on the browser's heading margins. */
1470
+ :where([data-oods-component='CancellationSummary']) > :is(h2, h3) { margin: 0; }
1471
+
1472
+ /* Reference values remain inspectable without making UUIDs the primary labels. */
1473
+ [data-oods-reference-inspection] { margin-block-start: var(--cmp-spacing-stack-md, 1rem); }
1474
+ [data-oods-reference-inspection] summary { cursor: pointer; font-weight: var(--ref-typography-weights-semibold, 600); }
1475
+ [data-oods-reference-inspection] dl { display: grid; gap: var(--cmp-spacing-stack-sm, 0.75rem); }
1476
+ [data-oods-reference-inspection] dt { font-weight: var(--ref-typography-weights-semibold, 600); }
1477
+ [data-oods-reference-inspection] dd { margin: 0; }
1478
+ [data-oods-reference-inspection] code { overflow-wrap: anywhere; }
1479
+
1480
+ /* A destructive action remains distinguishable when every action uses the
1481
+ * user's HC system colors: shape and a warning glyph carry the distinction. */
1482
+ [data-theme='hc'] :where(.oods-button, [data-oods-component='Button'])[data-intent='danger']:not(:disabled) {
1483
+ border: 3px double CanvasText;
1484
+ background: Canvas;
1485
+ color: CanvasText;
1486
+ }
1487
+ [data-theme='hc'] :where(.oods-button, [data-oods-component='Button'])[data-intent='danger']::before {
1488
+ content: "⚠" / "";
1489
+ }