@echelon-foundry/design-system 0.2.0-main.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +82 -0
  2. package/dist/all.css +3461 -0
  3. package/dist/assessment.css +1123 -0
  4. package/dist/brands/echelon.css +91 -0
  5. package/dist/brands/example-harbor.css +91 -0
  6. package/dist/brands/index.json +17 -0
  7. package/dist/build-metrics.json +152 -0
  8. package/dist/components.css +2123 -0
  9. package/dist/foundations.css +113 -0
  10. package/dist/patterns/alert.html +8 -0
  11. package/dist/patterns/allocation.html +24 -0
  12. package/dist/patterns/best-worst.html +21 -0
  13. package/dist/patterns/binary-choice.html +15 -0
  14. package/dist/patterns/checkbox.html +13 -0
  15. package/dist/patterns/choice-group.html +27 -0
  16. package/dist/patterns/collection-toolbar.html +22 -0
  17. package/dist/patterns/combobox.html +13 -0
  18. package/dist/patterns/command-palette.html +14 -0
  19. package/dist/patterns/composer.html +19 -0
  20. package/dist/patterns/conflict-review.html +17 -0
  21. package/dist/patterns/conversation.html +23 -0
  22. package/dist/patterns/dashboard-grid.html +5 -0
  23. package/dist/patterns/data-grid.html +30 -0
  24. package/dist/patterns/date-range.html +13 -0
  25. package/dist/patterns/dialog.html +15 -0
  26. package/dist/patterns/diff-viewer.html +22 -0
  27. package/dist/patterns/disclosure.html +6 -0
  28. package/dist/patterns/empty-state.html +6 -0
  29. package/dist/patterns/file-upload.html +19 -0
  30. package/dist/patterns/flyout.html +72 -0
  31. package/dist/patterns/hierarchical-choice.html +25 -0
  32. package/dist/patterns/hierarchical-multi-choice.html +27 -0
  33. package/dist/patterns/image-choice.html +25 -0
  34. package/dist/patterns/master-detail.html +16 -0
  35. package/dist/patterns/matrix-single.html +26 -0
  36. package/dist/patterns/menu.html +8 -0
  37. package/dist/patterns/metric-card.html +6 -0
  38. package/dist/patterns/mobile-action-bar.html +4 -0
  39. package/dist/patterns/multi-choice.html +23 -0
  40. package/dist/patterns/numeric-stepper.html +5 -0
  41. package/dist/patterns/obligation-panel.html +36 -0
  42. package/dist/patterns/operation-status.html +12 -0
  43. package/dist/patterns/ordinal-scale.html +42 -0
  44. package/dist/patterns/pagination.html +12 -0
  45. package/dist/patterns/pairwise-choice.html +21 -0
  46. package/dist/patterns/popover.html +6 -0
  47. package/dist/patterns/preview-surface.html +14 -0
  48. package/dist/patterns/provenance-trail.html +9 -0
  49. package/dist/patterns/question.html +13 -0
  50. package/dist/patterns/range-entry.html +18 -0
  51. package/dist/patterns/ranking.html +32 -0
  52. package/dist/patterns/readiness-checklist.html +12 -0
  53. package/dist/patterns/record-header.html +17 -0
  54. package/dist/patterns/rule-builder.html +37 -0
  55. package/dist/patterns/search.html +8 -0
  56. package/dist/patterns/segmented-control.html +13 -0
  57. package/dist/patterns/select.html +12 -0
  58. package/dist/patterns/semantic-differential.html +23 -0
  59. package/dist/patterns/skeleton.html +7 -0
  60. package/dist/patterns/slider.html +11 -0
  61. package/dist/patterns/special-choice.html +15 -0
  62. package/dist/patterns/status-lozenge.html +6 -0
  63. package/dist/patterns/survey-progress.html +8 -0
  64. package/dist/patterns/switch.html +14 -0
  65. package/dist/patterns/symbol-rating.html +31 -0
  66. package/dist/patterns/tabs.html +11 -0
  67. package/dist/patterns/timeline.html +19 -0
  68. package/dist/patterns/toast.html +10 -0
  69. package/dist/patterns/understanding.html +32 -0
  70. package/dist/patterns/validation-message.html +4 -0
  71. package/dist/patterns/validation-summary.html +10 -0
  72. package/dist/patterns/wizard.html +19 -0
  73. package/dist/patterns/work-queue.html +20 -0
  74. package/dist/skins.css +29 -0
  75. package/dist/tokens.css +99 -0
  76. package/docs/BRANDING.md +148 -0
  77. package/package.json +60 -0
  78. package/patterns/alert.html +8 -0
  79. package/patterns/allocation.html +24 -0
  80. package/patterns/assessment.manifest.md +93 -0
  81. package/patterns/best-worst.html +21 -0
  82. package/patterns/binary-choice.html +15 -0
  83. package/patterns/checkbox.html +13 -0
  84. package/patterns/choice-group.html +27 -0
  85. package/patterns/collection-toolbar.html +22 -0
  86. package/patterns/combobox.html +13 -0
  87. package/patterns/command-palette.html +14 -0
  88. package/patterns/composer.html +19 -0
  89. package/patterns/composer.manifest.md +27 -0
  90. package/patterns/conflict-review.html +17 -0
  91. package/patterns/conversation.html +23 -0
  92. package/patterns/conversation.manifest.md +21 -0
  93. package/patterns/dashboard-grid.html +5 -0
  94. package/patterns/data-grid.html +30 -0
  95. package/patterns/date-range.html +13 -0
  96. package/patterns/dialog.html +15 -0
  97. package/patterns/diff-viewer.html +22 -0
  98. package/patterns/disclosure.html +6 -0
  99. package/patterns/empty-state.html +6 -0
  100. package/patterns/file-upload.html +19 -0
  101. package/patterns/flyout.html +72 -0
  102. package/patterns/flyout.manifest.md +43 -0
  103. package/patterns/hierarchical-choice.html +25 -0
  104. package/patterns/hierarchical-multi-choice.html +27 -0
  105. package/patterns/image-choice.html +25 -0
  106. package/patterns/manifest.md +46 -0
  107. package/patterns/master-detail.html +16 -0
  108. package/patterns/matrix-single.html +26 -0
  109. package/patterns/menu.html +8 -0
  110. package/patterns/metric-card.html +6 -0
  111. package/patterns/mobile-action-bar.html +4 -0
  112. package/patterns/multi-choice.html +23 -0
  113. package/patterns/numeric-stepper.html +5 -0
  114. package/patterns/obligation-panel.html +36 -0
  115. package/patterns/operation-status.html +12 -0
  116. package/patterns/ordinal-scale.html +42 -0
  117. package/patterns/pagination.html +12 -0
  118. package/patterns/pairwise-choice.html +21 -0
  119. package/patterns/popover.html +6 -0
  120. package/patterns/preview-surface.html +14 -0
  121. package/patterns/provenance-trail.html +9 -0
  122. package/patterns/question.html +13 -0
  123. package/patterns/range-entry.html +18 -0
  124. package/patterns/ranking.html +32 -0
  125. package/patterns/readiness-checklist.html +12 -0
  126. package/patterns/record-header.html +17 -0
  127. package/patterns/rule-builder.html +37 -0
  128. package/patterns/search.html +8 -0
  129. package/patterns/segmented-control.html +13 -0
  130. package/patterns/select.html +12 -0
  131. package/patterns/semantic-differential.html +23 -0
  132. package/patterns/skeleton.html +7 -0
  133. package/patterns/slider.html +11 -0
  134. package/patterns/special-choice.html +15 -0
  135. package/patterns/status-lozenge.html +6 -0
  136. package/patterns/survey-progress.html +8 -0
  137. package/patterns/switch.html +14 -0
  138. package/patterns/symbol-rating.html +31 -0
  139. package/patterns/tabs.html +11 -0
  140. package/patterns/timeline.html +19 -0
  141. package/patterns/toast.html +10 -0
  142. package/patterns/understanding.html +32 -0
  143. package/patterns/understanding.manifest.md +26 -0
  144. package/patterns/validation-message.html +4 -0
  145. package/patterns/validation-summary.html +10 -0
  146. package/patterns/wizard.html +19 -0
  147. package/patterns/work-queue.html +20 -0
  148. package/schemas/brand-manifest.schema.json +152 -0
@@ -0,0 +1,1123 @@
1
+ @layer echelon.assessment {
2
+ /* Question shell ------------------------------------------------------ */
3
+ .ef-question {
4
+ display: grid;
5
+ gap: var(--ef-primitive-spacing-4, 1rem);
6
+ padding-block: var(--ef-primitive-spacing-5, 1.5rem);
7
+ border-block-end: 1px solid var(--ef-color-border-subtle, #e3e0d7);
8
+ }
9
+
10
+ .ef-question__header {
11
+ display: grid;
12
+ grid-template-columns: auto minmax(0, 1fr);
13
+ align-items: start;
14
+ gap: var(--ef-primitive-spacing-3, 0.75rem);
15
+ }
16
+
17
+ .ef-question__number {
18
+ min-inline-size: 2rem;
19
+ block-size: 2rem;
20
+ display: grid;
21
+ place-items: center;
22
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
23
+ border-radius: 50%;
24
+ font-family: var(--ef-primitive-font-family-mono, ui-monospace, monospace);
25
+ font-size: 0.75rem;
26
+ font-weight: 700;
27
+ }
28
+
29
+ .ef-question__prompt {
30
+ margin: 0;
31
+ color: var(--ef-color-text-heading, #202421);
32
+ font-family: var(--ef-primitive-font-family-sans, system-ui, sans-serif);
33
+ font-size: clamp(1rem, 0.95rem + 0.25vw, 1.2rem);
34
+ font-weight: 700;
35
+ letter-spacing: 0;
36
+ line-height: 1.35;
37
+ }
38
+
39
+ .ef-question__help {
40
+ margin: 0.35rem 0 0;
41
+ color: var(--ef-color-text-secondary, #686d68);
42
+ font-size: 0.875rem;
43
+ }
44
+
45
+ .ef-question__body { min-inline-size: 0; }
46
+
47
+ /* Ordinal / Likert scale --------------------------------------------- */
48
+ .ef-ordinal-scale,
49
+ .ef-choice-group,
50
+ .ef-special-choice-group,
51
+ .ef-ranking,
52
+ .ef-allocation {
53
+ min-inline-size: 0;
54
+ margin: 0;
55
+ padding: 0;
56
+ border: 0;
57
+ }
58
+
59
+ .ef-ordinal-scale__legend,
60
+ .ef-choice-group__legend,
61
+ .ef-ranking__legend,
62
+ .ef-allocation__legend {
63
+ margin-block-end: var(--ef-primitive-spacing-3, 0.75rem);
64
+ color: var(--ef-color-text-primary, #171a18);
65
+ font-size: 1rem;
66
+ font-weight: 700;
67
+ line-height: 1.4;
68
+ }
69
+
70
+ .ef-ordinal-scale__options {
71
+ display: grid;
72
+ grid-template-columns: repeat(5, minmax(0, 1fr));
73
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
74
+ }
75
+
76
+ .ef-ordinal-scale--3 .ef-ordinal-scale__options { grid-template-columns: repeat(3, minmax(0, 1fr)); }
77
+ .ef-ordinal-scale--4 .ef-ordinal-scale__options { grid-template-columns: repeat(4, minmax(0, 1fr)); }
78
+ .ef-ordinal-scale--5 .ef-ordinal-scale__options { grid-template-columns: repeat(5, minmax(0, 1fr)); }
79
+ .ef-ordinal-scale--6 .ef-ordinal-scale__options { grid-template-columns: repeat(6, minmax(0, 1fr)); }
80
+ .ef-ordinal-scale--7 .ef-ordinal-scale__options { grid-template-columns: repeat(7, minmax(0, 1fr)); }
81
+ .ef-ordinal-scale--10 .ef-ordinal-scale__options { grid-template-columns: repeat(10, minmax(0, 1fr)); }
82
+ .ef-ordinal-scale--11 .ef-ordinal-scale__options { grid-template-columns: repeat(11, minmax(0, 1fr)); }
83
+
84
+ .ef-ordinal-option {
85
+ position: relative;
86
+ min-inline-size: 0;
87
+ min-block-size: 5.5rem;
88
+ display: grid;
89
+ grid-template-rows: auto 1fr;
90
+ place-items: center;
91
+ gap: 0.45rem;
92
+ padding: 0.75rem 0.45rem;
93
+ background: var(--ef-color-surface-primary, #f2efe7);
94
+ color: var(--ef-color-text-primary, #171a18);
95
+ text-align: center;
96
+ cursor: pointer;
97
+ transition:
98
+ background var(--ef-primitive-motion-duration-fast, 120ms) var(--ef-primitive-motion-easing-standard, ease),
99
+ color var(--ef-primitive-motion-duration-fast, 120ms) var(--ef-primitive-motion-easing-standard, ease),
100
+ transform var(--ef-primitive-motion-duration-fast, 120ms) var(--ef-primitive-motion-easing-standard, ease);
101
+ }
102
+
103
+ .ef-ordinal-option + .ef-ordinal-option {
104
+ border-inline-start: 1px solid var(--ef-color-border-subtle, #e3e0d7);
105
+ }
106
+
107
+ .ef-ordinal-option input,
108
+ .ef-choice input,
109
+ .ef-special-choice input {
110
+ position: absolute;
111
+ inline-size: 1px;
112
+ block-size: 1px;
113
+ opacity: 0;
114
+ }
115
+
116
+ .ef-ordinal-option__marker {
117
+ inline-size: 2rem;
118
+ block-size: 2rem;
119
+ display: grid;
120
+ place-items: center;
121
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
122
+ border-radius: 50%;
123
+ background: var(--ef-color-surface-primary, #f2efe7);
124
+ color: var(--ef-color-text-primary, #171a18);
125
+ font-family: var(--ef-primitive-font-family-mono, ui-monospace, monospace);
126
+ font-size: 0.75rem;
127
+ font-weight: 700;
128
+ }
129
+
130
+ .ef-ordinal-option__label {
131
+ align-self: start;
132
+ font-size: 0.8125rem;
133
+ line-height: 1.25;
134
+ overflow-wrap: anywhere;
135
+ }
136
+
137
+ .ef-ordinal-option:hover { background: var(--ef-color-surface-secondary, #e3e0d7); }
138
+ .ef-ordinal-option:has(input:active) { transform: scale(0.985); }
139
+
140
+ .ef-ordinal-option:has(input:checked) {
141
+ background: var(--ef-color-surface-inverse, #202421);
142
+ color: var(--ef-color-text-inverse, #f2efe7);
143
+ }
144
+
145
+ .ef-ordinal-option:has(input:checked) .ef-ordinal-option__marker {
146
+ background: var(--ef-color-accent-primary, #905831);
147
+ color: var(--ef-color-text-inverse, #f2efe7);
148
+ border-color: currentColor;
149
+ }
150
+
151
+ .ef-ordinal-option:has(input:focus-visible),
152
+ .ef-choice:has(input:focus-visible),
153
+ .ef-special-choice:has(input:focus-visible) {
154
+ z-index: 1;
155
+ outline: 3px solid var(--ef-color-focus-gap, #f2efe7);
156
+ outline-offset: 2px;
157
+ box-shadow: 0 0 0 5px var(--ef-color-focus-ring, #171a18);
158
+ }
159
+
160
+ /* Special answer states ---------------------------------------------- */
161
+ .ef-special-choices {
162
+ display: flex;
163
+ flex-wrap: wrap;
164
+ gap: var(--ef-primitive-spacing-2, 0.5rem);
165
+ margin-block-start: var(--ef-primitive-spacing-3, 0.75rem);
166
+ padding-block-start: var(--ef-primitive-spacing-3, 0.75rem);
167
+ border-block-start: 1px dashed var(--ef-color-border-functional, #3a403c);
168
+ }
169
+
170
+ .ef-special-choice {
171
+ position: relative;
172
+ min-block-size: 2.75rem;
173
+ display: inline-flex;
174
+ align-items: center;
175
+ padding: 0.55rem 0.85rem;
176
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
177
+ background: var(--ef-color-surface-primary, #f2efe7);
178
+ color: var(--ef-color-text-primary, #171a18);
179
+ cursor: pointer;
180
+ }
181
+
182
+ .ef-special-choice:has(input:checked) {
183
+ background: var(--ef-color-surface-inverse, #202421);
184
+ color: var(--ef-color-text-inverse, #f2efe7);
185
+ }
186
+
187
+ /* Choice cards -------------------------------------------------------- */
188
+ .ef-choice-group {
189
+ display: grid;
190
+ gap: var(--ef-primitive-spacing-2, 0.5rem);
191
+ }
192
+
193
+ .ef-choice {
194
+ position: relative;
195
+ min-block-size: 3.25rem;
196
+ display: grid;
197
+ align-items: center;
198
+ padding: 0.8rem 1rem 0.8rem 3rem;
199
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
200
+ background: var(--ef-color-surface-primary, #f2efe7);
201
+ cursor: pointer;
202
+ transition:
203
+ background var(--ef-primitive-motion-duration-fast, 120ms) var(--ef-primitive-motion-easing-standard, ease),
204
+ border-color var(--ef-primitive-motion-duration-fast, 120ms) var(--ef-primitive-motion-easing-standard, ease);
205
+ }
206
+
207
+ .ef-choice::before {
208
+ content: "";
209
+ position: absolute;
210
+ inset-block-start: 50%;
211
+ inset-inline-start: 1rem;
212
+ transform: translateY(-50%);
213
+ inline-size: 1.125rem;
214
+ block-size: 1.125rem;
215
+ border: 2px solid var(--ef-color-border-functional, #3a403c);
216
+ border-radius: 50%;
217
+ background: var(--ef-color-surface-primary, #f2efe7);
218
+ }
219
+
220
+ .ef-choice:has(input[type="checkbox"])::before { border-radius: 0.2rem; }
221
+
222
+ .ef-choice:has(input:checked) {
223
+ border-color: var(--ef-color-accent-primary, #905831);
224
+ background: var(--ef-color-surface-secondary, #e3e0d7);
225
+ }
226
+
227
+ .ef-choice:has(input:checked)::before {
228
+ background:
229
+ radial-gradient(circle, var(--ef-color-accent-primary, #905831) 0 42%, transparent 44%);
230
+ border-color: var(--ef-color-accent-primary, #905831);
231
+ }
232
+
233
+ .ef-choice:has(input[type="checkbox"]:checked)::before {
234
+ background: var(--ef-color-accent-primary, #905831);
235
+ box-shadow: inset 0 0 0 3px var(--ef-color-surface-primary, #f2efe7);
236
+ }
237
+
238
+ .ef-ordinal-option:has(input:disabled),
239
+ .ef-choice:has(input:disabled),
240
+ .ef-special-choice:has(input:disabled) {
241
+ opacity: 0.62;
242
+ cursor: not-allowed;
243
+ }
244
+
245
+ .ef-choice__content {
246
+ display: grid;
247
+ gap: 0.15rem;
248
+ }
249
+
250
+ .ef-choice__content > span {
251
+ color: var(--ef-color-text-secondary, #686d68);
252
+ font-size: 0.8125rem;
253
+ }
254
+
255
+ /* Validation ---------------------------------------------------------- */
256
+ .ef-validation-message {
257
+ display: flex;
258
+ align-items: flex-start;
259
+ gap: var(--ef-primitive-spacing-2, 0.5rem);
260
+ margin: 0.5rem 0 0;
261
+ color: var(--ef-color-text-primary, #171a18);
262
+ font-size: 0.875rem;
263
+ font-weight: 650;
264
+ }
265
+
266
+ .ef-validation-message__mark,
267
+ .ef-validation-summary__icon {
268
+ flex: 0 0 auto;
269
+ inline-size: 1.5rem;
270
+ block-size: 1.5rem;
271
+ display: grid;
272
+ place-items: center;
273
+ border: 1px solid currentColor;
274
+ border-radius: 50%;
275
+ font-family: var(--ef-primitive-font-family-mono, ui-monospace, monospace);
276
+ font-weight: 800;
277
+ }
278
+
279
+ .ef-validation-summary {
280
+ display: grid;
281
+ grid-template-columns: auto minmax(0, 1fr);
282
+ gap: var(--ef-primitive-spacing-3, 0.75rem);
283
+ padding: var(--ef-primitive-spacing-4, 1rem);
284
+ border: 2px solid var(--ef-color-accent-primary, #905831);
285
+ background: var(--ef-color-surface-secondary, #e3e0d7);
286
+ color: var(--ef-color-text-on-secondary-surface, #3a403c);
287
+ }
288
+
289
+ .ef-validation-summary__title {
290
+ margin: 0;
291
+ font-family: var(--ef-primitive-font-family-sans, system-ui, sans-serif);
292
+ font-size: 1rem;
293
+ letter-spacing: 0;
294
+ line-height: 1.35;
295
+ }
296
+
297
+ .ef-validation-summary__list {
298
+ margin: 0.5rem 0 0;
299
+ padding-inline-start: 1.25rem;
300
+ }
301
+
302
+ .ef-validation-summary a {
303
+ color: var(--ef-color-text-on-secondary-surface, #3a403c);
304
+ font-weight: 700;
305
+ }
306
+
307
+ /* Survey progress ----------------------------------------------------- */
308
+ .ef-survey-progress {
309
+ display: grid;
310
+ gap: var(--ef-primitive-spacing-2, 0.5rem);
311
+ }
312
+
313
+ .ef-survey-progress__header {
314
+ min-inline-size: 0;
315
+ display: flex;
316
+ flex-wrap: wrap;
317
+ justify-content: space-between;
318
+ gap: 1rem;
319
+ align-items: baseline;
320
+ }
321
+
322
+ .ef-survey-progress__label { font-weight: 700; }
323
+ .ef-survey-progress__value {
324
+ color: var(--ef-color-text-secondary, #686d68);
325
+ font-family: var(--ef-primitive-font-family-mono, ui-monospace, monospace);
326
+ font-size: 0.75rem;
327
+ }
328
+
329
+ .ef-survey-progress__bar {
330
+ inline-size: 100%;
331
+ block-size: 0.65rem;
332
+ accent-color: var(--ef-color-accent-primary, #905831);
333
+ }
334
+
335
+ .ef-survey-progress__context {
336
+ margin: 0;
337
+ color: var(--ef-color-text-secondary, #686d68);
338
+ font-size: 0.8125rem;
339
+ }
340
+
341
+ /* Ranking visual contract -------------------------------------------- */
342
+ .ef-ranking__list {
343
+ display: grid;
344
+ gap: var(--ef-primitive-spacing-2, 0.5rem);
345
+ margin: var(--ef-primitive-spacing-3, 0.75rem) 0 0;
346
+ padding: 0;
347
+ list-style: none;
348
+ }
349
+
350
+ .ef-ranking__item {
351
+ display: grid;
352
+ grid-template-columns: auto minmax(0, 1fr) auto;
353
+ align-items: center;
354
+ gap: var(--ef-primitive-spacing-3, 0.75rem);
355
+ min-block-size: 3.25rem;
356
+ padding: 0.6rem 0.75rem;
357
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
358
+ background: var(--ef-color-surface-primary, #f2efe7);
359
+ }
360
+
361
+ .ef-ranking__position {
362
+ inline-size: 2rem;
363
+ block-size: 2rem;
364
+ display: grid;
365
+ place-items: center;
366
+ background: var(--ef-color-surface-inverse, #202421);
367
+ color: var(--ef-color-text-inverse, #f2efe7);
368
+ font-family: var(--ef-primitive-font-family-mono, ui-monospace, monospace);
369
+ font-size: 0.75rem;
370
+ font-weight: 800;
371
+ }
372
+
373
+ .ef-ranking__label {
374
+ min-inline-size: 0;
375
+ font-weight: 650;
376
+ overflow-wrap: anywhere;
377
+ }
378
+
379
+ .ef-ranking__actions {
380
+ display: inline-flex;
381
+ gap: 0.25rem;
382
+ }
383
+
384
+ .ef-ranking__actions button {
385
+ min-inline-size: 2.75rem;
386
+ min-block-size: 2.75rem;
387
+ padding: 0;
388
+ }
389
+
390
+ .ef-ranking__announcement {
391
+ position: absolute;
392
+ inline-size: 1px;
393
+ block-size: 1px;
394
+ margin: -1px;
395
+ padding: 0;
396
+ overflow: hidden;
397
+ clip: rect(0 0 0 0);
398
+ clip-path: inset(50%);
399
+ white-space: nowrap;
400
+ border: 0;
401
+ }
402
+
403
+ /* Allocation ---------------------------------------------------------- */
404
+ .ef-allocation__items {
405
+ display: grid;
406
+ gap: var(--ef-primitive-spacing-2, 0.5rem);
407
+ }
408
+
409
+ .ef-allocation__item {
410
+ display: grid;
411
+ grid-template-columns: minmax(0, 1fr) minmax(5rem, 7rem);
412
+ align-items: center;
413
+ gap: var(--ef-primitive-spacing-3, 0.75rem);
414
+ }
415
+
416
+ .ef-allocation__item input {
417
+ text-align: end;
418
+ font-variant-numeric: tabular-nums;
419
+ }
420
+
421
+ .ef-allocation__total {
422
+ display: flex;
423
+ flex-wrap: wrap;
424
+ justify-content: space-between;
425
+ gap: 1rem;
426
+ margin-block-start: var(--ef-primitive-spacing-3, 0.75rem);
427
+ padding-block-start: var(--ef-primitive-spacing-3, 0.75rem);
428
+ border-block-start: 1px solid var(--ef-color-border-functional, #3a403c);
429
+ font-weight: 750;
430
+ }
431
+
432
+ .ef-allocation__total output {
433
+ font-family: var(--ef-primitive-font-family-mono, ui-monospace, monospace);
434
+ font-variant-numeric: tabular-nums;
435
+ }
436
+
437
+ .ef-allocation__total[data-ef-state="invalid"] {
438
+ border-block-start-width: 2px;
439
+ color: var(--ef-color-accent-primary, #905831);
440
+ }
441
+
442
+ /* Rule builder visual contract --------------------------------------- */
443
+ .ef-rule-builder {
444
+ min-inline-size: 0;
445
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
446
+ background: var(--ef-color-surface-primary, #f2efe7);
447
+ }
448
+
449
+ .ef-rule-builder__header {
450
+ display: flex;
451
+ justify-content: space-between;
452
+ align-items: flex-start;
453
+ gap: 1rem;
454
+ padding: var(--ef-primitive-spacing-4, 1rem);
455
+ border-block-end: 1px solid var(--ef-color-border-subtle, #e3e0d7);
456
+ }
457
+
458
+ .ef-rule-builder__header h2,
459
+ .ef-rule-builder__header p { margin: 0; }
460
+
461
+ .ef-rule-builder__header h2 {
462
+ font-family: var(--ef-primitive-font-family-sans, system-ui, sans-serif);
463
+ font-size: 1rem;
464
+ letter-spacing: 0;
465
+ }
466
+
467
+ .ef-rule-builder__header p {
468
+ margin-block-start: 0.25rem;
469
+ font-size: 0.8125rem;
470
+ }
471
+
472
+ .ef-rule-group {
473
+ position: relative;
474
+ display: grid;
475
+ gap: var(--ef-primitive-spacing-3, 0.75rem);
476
+ padding: var(--ef-primitive-spacing-4, 1rem);
477
+ }
478
+
479
+ .ef-rule-group__operator {
480
+ justify-self: start;
481
+ padding: 0.25rem 0.45rem;
482
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
483
+ font-family: var(--ef-primitive-font-family-mono, ui-monospace, monospace);
484
+ font-size: 0.6875rem;
485
+ font-weight: 800;
486
+ letter-spacing: 0.08em;
487
+ }
488
+
489
+ .ef-rule-clause {
490
+ min-inline-size: 0;
491
+ display: grid;
492
+ grid-template-columns: minmax(8rem, 1.25fr) minmax(8rem, 1fr) minmax(8rem, 1fr) auto;
493
+ gap: var(--ef-primitive-spacing-2, 0.5rem);
494
+ align-items: end;
495
+ }
496
+
497
+ .ef-rule-clause label {
498
+ display: grid;
499
+ gap: 0.3rem;
500
+ font-size: 0.75rem;
501
+ font-weight: 700;
502
+ }
503
+
504
+ .ef-rule-builder__summary {
505
+ margin: 0;
506
+ padding: var(--ef-primitive-spacing-3, 0.75rem) var(--ef-primitive-spacing-4, 1rem);
507
+ border-block-start: 1px solid var(--ef-color-border-subtle, #e3e0d7);
508
+ background: var(--ef-color-surface-secondary, #e3e0d7);
509
+ color: var(--ef-color-text-on-secondary-surface, #3a403c);
510
+ font-size: 0.8125rem;
511
+ }
512
+
513
+ /* Ordo obligation panel ---------------------------------------------- */
514
+ .ef-obligation-panel {
515
+ min-inline-size: 0;
516
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
517
+ background: var(--ef-color-surface-primary, #f2efe7);
518
+ }
519
+
520
+ .ef-obligation-panel__header {
521
+ display: flex;
522
+ justify-content: space-between;
523
+ align-items: flex-start;
524
+ gap: 1rem;
525
+ padding: var(--ef-primitive-spacing-4, 1rem);
526
+ border-block-end: 1px solid var(--ef-color-border-subtle, #e3e0d7);
527
+ }
528
+
529
+ .ef-obligation-panel__header h2,
530
+ .ef-obligation-panel__header p { margin: 0; }
531
+
532
+ .ef-obligation-panel__header h2 {
533
+ font-family: var(--ef-primitive-font-family-sans, system-ui, sans-serif);
534
+ font-size: 1rem;
535
+ letter-spacing: 0;
536
+ }
537
+
538
+ .ef-obligation-panel__header p {
539
+ margin-block-start: 0.25rem;
540
+ font-size: 0.8125rem;
541
+ }
542
+
543
+ .ef-obligation-panel__count {
544
+ min-inline-size: 2rem;
545
+ block-size: 2rem;
546
+ display: grid;
547
+ place-items: center;
548
+ background: var(--ef-color-surface-inverse, #202421);
549
+ color: var(--ef-color-text-inverse, #f2efe7);
550
+ font-family: var(--ef-primitive-font-family-mono, ui-monospace, monospace);
551
+ font-size: 0.75rem;
552
+ font-weight: 800;
553
+ }
554
+
555
+ .ef-obligation-list {
556
+ display: grid;
557
+ margin: 0;
558
+ padding: 0;
559
+ list-style: none;
560
+ }
561
+
562
+ .ef-obligation {
563
+ display: grid;
564
+ grid-template-columns: auto minmax(0, 1fr) auto;
565
+ align-items: start;
566
+ gap: var(--ef-primitive-spacing-3, 0.75rem);
567
+ padding: var(--ef-primitive-spacing-4, 1rem);
568
+ border-inline-start: 4px solid var(--ef-color-border-functional, #3a403c);
569
+ }
570
+
571
+ .ef-obligation + .ef-obligation {
572
+ border-block-start: 1px solid var(--ef-color-border-subtle, #e3e0d7);
573
+ }
574
+
575
+ .ef-obligation[data-ef-severity="blocking"] { border-inline-start-color: var(--ef-color-accent-primary, #905831); }
576
+ .ef-obligation[data-ef-severity="warning"] { border-inline-start-style: double; }
577
+ .ef-obligation[data-ef-severity="information"] { border-inline-start-color: var(--ef-color-accent-secondary, #47756b); }
578
+
579
+ .ef-obligation__status {
580
+ min-inline-size: 5.5rem;
581
+ padding: 0.2rem 0.4rem;
582
+ border: 1px solid currentColor;
583
+ font-family: var(--ef-primitive-font-family-mono, ui-monospace, monospace);
584
+ font-size: 0.625rem;
585
+ font-weight: 800;
586
+ letter-spacing: 0.06em;
587
+ text-align: center;
588
+ text-transform: uppercase;
589
+ }
590
+
591
+ .ef-obligation p {
592
+ margin: 0.25rem 0 0;
593
+ font-size: 0.8125rem;
594
+ }
595
+
596
+
597
+ /* Selector completeness ---------------------------------------------- */
598
+ .ef-sr-only {
599
+ position: absolute;
600
+ inline-size: 1px;
601
+ block-size: 1px;
602
+ margin: -1px;
603
+ padding: 0;
604
+ overflow: hidden;
605
+ clip: rect(0 0 0 0);
606
+ clip-path: inset(50%);
607
+ white-space: nowrap;
608
+ border: 0;
609
+ }
610
+
611
+ .ef-binary-choice,
612
+ .ef-semantic-differential,
613
+ .ef-symbol-rating,
614
+ .ef-range-entry,
615
+ .ef-matrix,
616
+ .ef-best-worst,
617
+ .ef-hierarchy {
618
+ min-inline-size: 0;
619
+ margin: 0;
620
+ padding: 0;
621
+ border: 0;
622
+ }
623
+
624
+ .ef-binary-choice__legend,
625
+ .ef-semantic-differential__legend,
626
+ .ef-symbol-rating__legend,
627
+ .ef-range-entry__legend,
628
+ .ef-matrix__legend,
629
+ .ef-best-worst__legend,
630
+ .ef-hierarchy__legend {
631
+ margin-block-end: var(--ef-primitive-spacing-3, 0.75rem);
632
+ font-size: 1rem;
633
+ font-weight: 700;
634
+ line-height: 1.4;
635
+ }
636
+
637
+ .ef-binary-choice__options {
638
+ max-inline-size: 100%;
639
+ display: inline-grid;
640
+ grid-auto-flow: column;
641
+ grid-auto-columns: minmax(6rem, 1fr);
642
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
643
+ }
644
+
645
+ .ef-binary-option {
646
+ position: relative;
647
+ min-block-size: 2.75rem;
648
+ display: grid;
649
+ place-items: center;
650
+ padding: 0.55rem 1rem;
651
+ cursor: pointer;
652
+ background: var(--ef-color-surface-primary, #f2efe7);
653
+ }
654
+
655
+ .ef-binary-option + .ef-binary-option { border-inline-start: 1px solid var(--ef-color-border-functional, #3a403c); }
656
+ .ef-binary-option input,
657
+ .ef-symbol-rating__option input,
658
+ .ef-semantic-differential__scale input {
659
+ position: absolute;
660
+ inline-size: 1px;
661
+ block-size: 1px;
662
+ opacity: 0;
663
+ }
664
+
665
+ .ef-binary-option:has(input:checked),
666
+ .ef-symbol-rating__option:has(input:checked),
667
+ .ef-semantic-differential__scale label:has(input:checked) {
668
+ background: var(--ef-color-surface-inverse, #202421);
669
+ color: var(--ef-color-text-inverse, #f2efe7);
670
+ }
671
+
672
+ .ef-binary-option:has(input:focus-visible),
673
+ .ef-symbol-rating__option:has(input:focus-visible),
674
+ .ef-semantic-differential__scale label:has(input:focus-visible) {
675
+ z-index: 1;
676
+ outline: 3px solid var(--ef-color-focus-gap, #f2efe7);
677
+ outline-offset: 2px;
678
+ box-shadow: 0 0 0 5px var(--ef-color-focus-ring, #171a18);
679
+ }
680
+
681
+ .ef-semantic-differential__endpoints {
682
+ display: flex;
683
+ justify-content: space-between;
684
+ gap: 1rem;
685
+ margin-block-end: 0.4rem;
686
+ color: var(--ef-color-text-secondary, #686d68);
687
+ font-size: 0.8125rem;
688
+ font-weight: 650;
689
+ }
690
+
691
+ .ef-semantic-differential__endpoints--mobile { display: none; }
692
+
693
+ .ef-semantic-differential__scale {
694
+ max-inline-size: 100%;
695
+ display: grid;
696
+ grid-template-columns: repeat(7, minmax(2.75rem, 1fr));
697
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
698
+ }
699
+
700
+ .ef-semantic-differential__scale label {
701
+ position: relative;
702
+ min-block-size: 3rem;
703
+ display: grid;
704
+ place-items: center;
705
+ cursor: pointer;
706
+ font-family: var(--ef-primitive-font-family-mono, ui-monospace, monospace);
707
+ font-weight: 750;
708
+ }
709
+
710
+ .ef-semantic-differential__scale label + label { border-inline-start: 1px solid var(--ef-color-border-subtle, #e3e0d7); }
711
+ .ef-semantic-differential__scale label > span[aria-hidden="true"] { pointer-events: none; }
712
+
713
+ .ef-semantic-differential__scale input {
714
+ inset: 0;
715
+ z-index: 1;
716
+ inline-size: 100%;
717
+ block-size: 100%;
718
+ margin: 0;
719
+ cursor: pointer;
720
+ }
721
+
722
+ .ef-symbol-rating__options {
723
+ max-inline-size: 100%;
724
+ display: inline-flex;
725
+ flex-wrap: wrap;
726
+ gap: 0.25rem;
727
+ }
728
+
729
+ .ef-symbol-rating__option {
730
+ position: relative;
731
+ min-inline-size: 2.75rem;
732
+ min-block-size: 2.75rem;
733
+ display: grid;
734
+ place-items: center;
735
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
736
+ cursor: pointer;
737
+ }
738
+
739
+ .ef-symbol-rating__symbol {
740
+ font-size: 1.35rem;
741
+ line-height: 1;
742
+ }
743
+
744
+ .ef-numeric-stepper {
745
+ display: grid;
746
+ gap: var(--ef-primitive-spacing-2, 0.5rem);
747
+ }
748
+
749
+ .ef-numeric-stepper__label { font-weight: 700; }
750
+ .ef-numeric-stepper input { max-inline-size: 10rem; font-variant-numeric: tabular-nums; }
751
+
752
+ .ef-range-entry__inputs {
753
+ display: grid;
754
+ grid-template-columns: minmax(7rem, 1fr) auto minmax(7rem, 1fr);
755
+ align-items: end;
756
+ gap: var(--ef-primitive-spacing-2, 0.5rem);
757
+ max-inline-size: 30rem;
758
+ }
759
+
760
+ .ef-range-entry__inputs label {
761
+ display: grid;
762
+ gap: 0.3rem;
763
+ font-size: 0.8125rem;
764
+ font-weight: 700;
765
+ }
766
+
767
+ .ef-range-entry__separator { padding-block-end: 0.65rem; color: var(--ef-color-text-secondary, #686d68); }
768
+
769
+ .ef-range-entry__status,
770
+ .ef-selection-status,
771
+ .ef-best-worst__status {
772
+ margin: 0.5rem 0 0;
773
+ font-size: 0.8125rem;
774
+ font-weight: 650;
775
+ }
776
+
777
+ .ef-selection-guidance {
778
+ margin: 0 0 var(--ef-primitive-spacing-2, 0.5rem);
779
+ color: var(--ef-color-text-secondary, #686d68);
780
+ font-size: 0.8125rem;
781
+ }
782
+
783
+ .ef-choice--exclusive {
784
+ border-style: dashed;
785
+ }
786
+
787
+ .ef-choice--media {
788
+ grid-template-columns: minmax(5rem, 8rem) minmax(0, 1fr);
789
+ padding-inline-start: 1rem;
790
+ }
791
+
792
+ .ef-choice--media::before { display: none; }
793
+
794
+ .ef-choice__media {
795
+ display: grid;
796
+ place-items: center;
797
+ overflow: hidden;
798
+ border: 1px solid var(--ef-color-border-subtle, #e3e0d7);
799
+ background: var(--ef-color-surface-secondary, #e3e0d7);
800
+ aspect-ratio: 4 / 3;
801
+ }
802
+
803
+ .ef-choice__media img {
804
+ max-inline-size: 100%;
805
+ max-block-size: 100%;
806
+ object-fit: cover;
807
+ }
808
+
809
+ .ef-matrix__rows {
810
+ display: grid;
811
+ gap: var(--ef-primitive-spacing-2, 0.5rem);
812
+ margin-block-start: var(--ef-primitive-spacing-3, 0.75rem);
813
+ }
814
+
815
+ .ef-matrix__row {
816
+ display: grid;
817
+ grid-template-columns: minmax(10rem, 1.1fr) minmax(0, 3fr);
818
+ gap: var(--ef-primitive-spacing-3, 0.75rem);
819
+ align-items: stretch;
820
+ margin: 0;
821
+ padding: 0.6rem;
822
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
823
+ }
824
+
825
+ .ef-matrix__row > legend {
826
+ float: inline-start;
827
+ inline-size: auto;
828
+ margin: 0;
829
+ padding: 0;
830
+ font-weight: 700;
831
+ }
832
+
833
+ .ef-matrix__choices {
834
+ display: grid;
835
+ grid-auto-flow: column;
836
+ grid-auto-columns: minmax(5rem, 1fr);
837
+ gap: 0.25rem;
838
+ }
839
+
840
+ .ef-matrix__choices label {
841
+ position: relative;
842
+ min-block-size: 2.75rem;
843
+ display: grid;
844
+ place-items: center;
845
+ padding: 0.4rem;
846
+ border: 1px solid var(--ef-color-border-subtle, #e3e0d7);
847
+ text-align: center;
848
+ cursor: pointer;
849
+ font-size: 0.75rem;
850
+ }
851
+
852
+ .ef-matrix__choices input {
853
+ position: absolute;
854
+ inline-size: 1px;
855
+ block-size: 1px;
856
+ opacity: 0;
857
+ }
858
+
859
+ .ef-matrix__choices label:has(input:checked) {
860
+ background: var(--ef-color-surface-inverse, #202421);
861
+ color: var(--ef-color-text-inverse, #f2efe7);
862
+ }
863
+
864
+ .ef-matrix__choices label:has(input:focus-visible) {
865
+ outline: 3px solid var(--ef-color-focus-gap, #f2efe7);
866
+ outline-offset: 1px;
867
+ box-shadow: 0 0 0 4px var(--ef-color-focus-ring, #171a18);
868
+ }
869
+
870
+ .ef-best-worst__header,
871
+ .ef-best-worst__row {
872
+ display: grid;
873
+ grid-template-columns: minmax(10rem, 1fr) 4.5rem 4.5rem;
874
+ align-items: center;
875
+ gap: 0.25rem;
876
+ }
877
+
878
+ .ef-best-worst__header {
879
+ padding: 0.35rem 0.6rem;
880
+ color: var(--ef-color-text-secondary, #686d68);
881
+ font-size: 0.75rem;
882
+ font-weight: 700;
883
+ text-align: center;
884
+ }
885
+
886
+ .ef-best-worst__header > :first-child { text-align: start; }
887
+
888
+ .ef-best-worst__row {
889
+ min-block-size: 3rem;
890
+ padding: 0.5rem 0.6rem;
891
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
892
+ }
893
+
894
+ .ef-best-worst__row + .ef-best-worst__row { border-block-start: 0; }
895
+ .ef-best-worst__row label { display: grid; place-items: center; min-block-size: 2.75rem; }
896
+ .ef-best-worst__row input { inline-size: 1.25rem; block-size: 1.25rem; accent-color: var(--ef-color-accent-primary, #905831); }
897
+
898
+ .ef-pairwise {
899
+ min-inline-size: 0;
900
+ margin: 0;
901
+ padding: 0;
902
+ border: 0;
903
+ }
904
+
905
+ .ef-pairwise__legend {
906
+ margin-block-end: var(--ef-primitive-spacing-3, 0.75rem);
907
+ font-size: 1rem;
908
+ font-weight: 700;
909
+ line-height: 1.4;
910
+ }
911
+
912
+ .ef-pairwise__options {
913
+ display: grid;
914
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
915
+ align-items: stretch;
916
+ gap: var(--ef-primitive-spacing-2, 0.5rem);
917
+ }
918
+
919
+ .ef-pairwise__option {
920
+ position: relative;
921
+ min-block-size: 5rem;
922
+ display: grid;
923
+ align-content: center;
924
+ gap: 0.2rem;
925
+ padding: 0.85rem 1rem;
926
+ border: 1px solid var(--ef-color-border-functional, #3a403c);
927
+ background: var(--ef-color-surface-primary, #f2efe7);
928
+ cursor: pointer;
929
+ }
930
+
931
+ .ef-pairwise__option input {
932
+ position: absolute;
933
+ inline-size: 1px;
934
+ block-size: 1px;
935
+ opacity: 0;
936
+ }
937
+
938
+ .ef-pairwise__option:has(input:checked) {
939
+ background: var(--ef-color-surface-inverse, #202421);
940
+ color: var(--ef-color-text-inverse, #f2efe7);
941
+ }
942
+
943
+ .ef-pairwise__option:has(input:focus-visible) {
944
+ outline: 3px solid var(--ef-color-focus-gap, #f2efe7);
945
+ outline-offset: 2px;
946
+ box-shadow: 0 0 0 5px var(--ef-color-focus-ring, #171a18);
947
+ }
948
+
949
+ .ef-pairwise__eyebrow {
950
+ font-family: var(--ef-primitive-font-family-mono, ui-monospace, monospace);
951
+ font-size: 0.6875rem;
952
+ font-weight: 800;
953
+ letter-spacing: 0.05em;
954
+ text-transform: uppercase;
955
+ }
956
+
957
+ .ef-pairwise__option > span:last-child { font-size: 0.8125rem; }
958
+ .ef-pairwise__versus { align-self: center; color: var(--ef-color-text-secondary, #686d68); font-size: 0.8125rem; }
959
+
960
+ .ef-hierarchy__tree,
961
+ .ef-hierarchy__tree ul {
962
+ margin: 0;
963
+ padding-inline-start: 1.25rem;
964
+ list-style: none;
965
+ }
966
+
967
+ .ef-hierarchy__tree { padding-inline-start: 0; }
968
+ .ef-hierarchy details { border-inline-start: 2px solid var(--ef-color-border-subtle, #e3e0d7); padding-inline-start: 0.75rem; }
969
+ .ef-hierarchy summary { min-block-size: 2.75rem; display: flex; align-items: center; cursor: pointer; font-weight: 700; }
970
+ .ef-hierarchy label { min-block-size: 2.75rem; display: flex; align-items: center; gap: 0.5rem; }
971
+
972
+ @media (max-width: 44rem) {
973
+ .ef-ordinal-scale__options,
974
+ .ef-ordinal-scale--3 .ef-ordinal-scale__options,
975
+ .ef-ordinal-scale--4 .ef-ordinal-scale__options,
976
+ .ef-ordinal-scale--5 .ef-ordinal-scale__options,
977
+ .ef-ordinal-scale--6 .ef-ordinal-scale__options,
978
+ .ef-ordinal-scale--7 .ef-ordinal-scale__options,
979
+ .ef-ordinal-scale--10 .ef-ordinal-scale__options,
980
+ .ef-ordinal-scale--11 .ef-ordinal-scale__options {
981
+ grid-template-columns: 1fr;
982
+ }
983
+
984
+ .ef-ordinal-option {
985
+ min-block-size: 3.25rem;
986
+ grid-template-columns: auto minmax(0, 1fr);
987
+ grid-template-rows: auto;
988
+ place-items: center start;
989
+ text-align: start;
990
+ padding-inline: 0.75rem;
991
+ }
992
+
993
+ .ef-ordinal-option + .ef-ordinal-option {
994
+ border-inline-start: 0;
995
+ border-block-start: 1px solid var(--ef-color-border-subtle, #e3e0d7);
996
+ }
997
+
998
+ .ef-rule-builder__header,
999
+ .ef-obligation-panel__header {
1000
+ align-items: stretch;
1001
+ flex-direction: column;
1002
+ }
1003
+
1004
+ .ef-rule-clause { grid-template-columns: 1fr; }
1005
+ .ef-obligation { grid-template-columns: 1fr; }
1006
+ .ef-obligation__status { justify-self: start; }
1007
+
1008
+ .ef-ranking__item {
1009
+ grid-template-columns: auto minmax(0, 1fr);
1010
+ align-items: start;
1011
+ }
1012
+
1013
+ .ef-ranking__actions {
1014
+ grid-column: 1 / -1;
1015
+ inline-size: 100%;
1016
+ display: grid;
1017
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1018
+ }
1019
+
1020
+ .ef-ranking__actions button {
1021
+ min-inline-size: 0;
1022
+ inline-size: 100%;
1023
+ }
1024
+
1025
+ .ef-allocation__item {
1026
+ grid-template-columns: 1fr;
1027
+ align-items: stretch;
1028
+ }
1029
+
1030
+ .ef-binary-choice__options {
1031
+ inline-size: 100%;
1032
+ grid-auto-flow: row;
1033
+ grid-template-columns: 1fr;
1034
+ grid-auto-columns: auto;
1035
+ }
1036
+
1037
+ .ef-binary-option + .ef-binary-option {
1038
+ border-inline-start: 0;
1039
+ border-block-start: 1px solid var(--ef-color-border-functional, #3a403c);
1040
+ }
1041
+
1042
+ .ef-semantic-differential__endpoints:not(.ef-semantic-differential__endpoints--mobile) { display: none; }
1043
+ .ef-semantic-differential__endpoints--mobile { display: flex; }
1044
+ .ef-semantic-differential__scale {
1045
+ grid-template-columns: repeat(7, minmax(2.75rem, 1fr));
1046
+ overflow-x: auto;
1047
+ overscroll-behavior-inline: contain;
1048
+ scrollbar-gutter: stable;
1049
+ }
1050
+ .ef-range-entry__inputs { grid-template-columns: 1fr; }
1051
+ .ef-range-entry__separator { padding: 0; }
1052
+ .ef-choice--media { grid-template-columns: 1fr; }
1053
+ .ef-matrix__row { grid-template-columns: 1fr; }
1054
+ .ef-matrix__choices { grid-auto-flow: row; grid-template-columns: 1fr; }
1055
+ .ef-matrix__choices label { grid-template-columns: auto 1fr; justify-items: start; text-align: start; }
1056
+ .ef-best-worst__header { display: none; }
1057
+ .ef-best-worst__row {
1058
+ grid-template-columns: minmax(0, 1fr) minmax(2.75rem, auto) minmax(2.75rem, auto);
1059
+ padding-inline: 0.4rem;
1060
+ }
1061
+
1062
+ .ef-pairwise__options { grid-template-columns: 1fr; }
1063
+ .ef-pairwise__versus { justify-self: center; }
1064
+
1065
+ .ef-hierarchy__tree ul {
1066
+ padding-inline-start: 0.75rem;
1067
+ }
1068
+
1069
+ .ef-hierarchy details {
1070
+ padding-inline-start: 0.5rem;
1071
+ }
1072
+ }
1073
+
1074
+ @media (prefers-reduced-motion: reduce) {
1075
+ .ef-ordinal-option,
1076
+ .ef-choice,
1077
+ .ef-binary-option,
1078
+ .ef-symbol-rating__option {
1079
+ transition-duration: 0.01ms;
1080
+ }
1081
+ }
1082
+
1083
+ @media (forced-colors: active) {
1084
+ .ef-ordinal-scale__options,
1085
+ .ef-ordinal-option,
1086
+ .ef-special-choice,
1087
+ .ef-choice,
1088
+ .ef-validation-summary,
1089
+ .ef-ranking__item,
1090
+ .ef-rule-builder,
1091
+ .ef-obligation-panel,
1092
+ .ef-binary-choice__options,
1093
+ .ef-semantic-differential__scale,
1094
+ .ef-symbol-rating__option,
1095
+ .ef-matrix__row,
1096
+ .ef-best-worst__row,
1097
+ .ef-pairwise__option {
1098
+ border-color: CanvasText;
1099
+ }
1100
+
1101
+ .ef-ordinal-option:has(input:checked),
1102
+ .ef-special-choice:has(input:checked),
1103
+ .ef-choice:has(input:checked),
1104
+ .ef-binary-option:has(input:checked),
1105
+ .ef-symbol-rating__option:has(input:checked),
1106
+ .ef-semantic-differential__scale label:has(input:checked),
1107
+ .ef-matrix__choices label:has(input:checked),
1108
+ .ef-pairwise__option:has(input:checked) {
1109
+ background: Highlight;
1110
+ color: HighlightText;
1111
+ }
1112
+
1113
+ .ef-ordinal-option:has(input:checked) .ef-ordinal-option__marker {
1114
+ background: Highlight;
1115
+ color: HighlightText;
1116
+ border-color: HighlightText;
1117
+ }
1118
+
1119
+ .ef-obligation {
1120
+ border-inline-start-color: CanvasText;
1121
+ }
1122
+ }
1123
+ }