@inchurch/matcha-theme 20.0.8 → 20.276.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/abstracts/_colors.scss +404 -404
  2. package/abstracts/_elevation.scss +102 -102
  3. package/abstracts/_functions.scss +1212 -1212
  4. package/abstracts/_media-breakpoint.scss +23 -23
  5. package/abstracts/_typography.scss +127 -127
  6. package/base/_reset.scss +438 -438
  7. package/components/app-page-header.scss +260 -0
  8. package/components/matcha-accordion.scss +294 -157
  9. package/components/matcha-avatar.scss +171 -31
  10. package/components/matcha-badge.scss +4 -4
  11. package/components/matcha-breadcrumb.scss +232 -126
  12. package/components/matcha-button-toggle.scss +44 -0
  13. package/components/matcha-buttons.scss +908 -784
  14. package/components/matcha-calendar.scss +70 -2
  15. package/components/matcha-cards.scss +28 -2
  16. package/components/matcha-checkbox.scss +191 -490
  17. package/components/matcha-chip.scss +297 -212
  18. package/components/matcha-command-palette.scss +291 -63
  19. package/components/matcha-crop.scss +407 -172
  20. package/components/matcha-date.scss +81 -81
  21. package/components/matcha-divider.scss +86 -31
  22. package/components/matcha-drawer.scss +201 -50
  23. package/components/matcha-drop-image.scss +14 -0
  24. package/components/matcha-drop-list.scss +42 -1
  25. package/components/matcha-empty-state.scss +195 -83
  26. package/components/matcha-flag.scss +93 -52
  27. package/components/matcha-footer.scss +68 -164
  28. package/components/matcha-form-field.scss +52 -0
  29. package/components/matcha-form-section.scss +101 -101
  30. package/components/matcha-header.scss +135 -325
  31. package/components/matcha-highlight.scss +65 -197
  32. package/components/matcha-hint-text.scss +21 -0
  33. package/components/matcha-horizontal-tree.scss +317 -317
  34. package/components/matcha-icon.scss +17 -25
  35. package/components/matcha-list.scss +5 -5
  36. package/components/matcha-menu.scss +13 -0
  37. package/components/matcha-modal.scss +58 -84
  38. package/components/matcha-nav.scss +361 -230
  39. package/components/matcha-notification.scss +413 -197
  40. package/components/matcha-option.scss +79 -23
  41. package/components/matcha-paginator.scss +689 -235
  42. package/components/matcha-panel.scss +42 -26
  43. package/components/matcha-profile-card.scss +50 -50
  44. package/components/matcha-progress-bar.scss +257 -153
  45. package/components/matcha-radio.scss +244 -452
  46. package/components/matcha-scrollbox-shadow.scss +122 -122
  47. package/components/matcha-select.scss +3 -3
  48. package/components/matcha-skeleton.scss +18 -0
  49. package/components/matcha-slide-toggle.scss +47 -2
  50. package/components/matcha-slider.scss +172 -75
  51. package/components/matcha-snack-bar.scss +114 -121
  52. package/components/matcha-spinner.scss +76 -57
  53. package/components/matcha-status-pill.scss +82 -0
  54. package/components/matcha-stepper.scss +377 -177
  55. package/components/matcha-table.scss +569 -785
  56. package/components/matcha-tabs.scss +624 -469
  57. package/components/matcha-text-editor.scss +98 -144
  58. package/components/matcha-toolbar.scss +359 -206
  59. package/components/matcha-tooltip.scss +156 -62
  60. package/components/matcha-tree-view.scss +189 -0
  61. package/components/matcha-uploader.scss +240 -62
  62. package/fonts/manrope/manrope-latin-ext.woff2 +0 -0
  63. package/fonts/manrope/manrope-latin.woff2 +0 -0
  64. package/layout/matcha-page-layout.scss +776 -0
  65. package/main.scss +232 -261
  66. package/package.json +1 -1
  67. package/tokens/_animations-tokens.scss +37 -37
  68. package/tokens/_breakpoints-tokens.scss +35 -26
  69. package/tokens/_color-tokens.scss +1152 -1152
  70. package/tokens/_css-custom-properties.scss +650 -568
  71. package/tokens/_spacing-tokens.scss +94 -94
  72. package/vendors/angular-editor.scss +56 -56
  73. package/vendors/angular-material-fixes.scss +297 -297
  74. package/vendors/charts.scss +92 -92
  75. package/vendors/ng5-slider.scss +56 -56
  76. package/vendors/ngx-material-timepicker.scss +50 -50
  77. package/fonts/CircularStd-Black.eot +0 -0
  78. package/fonts/CircularStd-Black.svg +0 -3426
  79. package/fonts/CircularStd-Black.ttf +0 -0
  80. package/fonts/CircularStd-Black.woff +0 -0
  81. package/fonts/CircularStd-Black.woff2 +0 -0
  82. package/fonts/CircularStd-Bold.eot +0 -0
  83. package/fonts/CircularStd-Bold.otf +0 -0
  84. package/fonts/CircularStd-Bold.svg +0 -13532
  85. package/fonts/CircularStd-Bold.ttf +0 -0
  86. package/fonts/CircularStd-Bold.woff +0 -0
  87. package/fonts/CircularStd-Bold.woff2 +0 -0
  88. package/fonts/CircularStd-Medium.eot +0 -0
  89. package/fonts/CircularStd-Medium.otf +0 -0
  90. package/fonts/CircularStd-Medium.svg +0 -13511
  91. package/fonts/CircularStd-Medium.ttf +0 -0
  92. package/fonts/CircularStd-Medium.woff +0 -0
  93. package/fonts/CircularStd-Medium.woff2 +0 -0
  94. package/fonts/CircularStd-Regular.eot +0 -0
  95. package/fonts/CircularStd-Regular.otf +0 -0
  96. package/fonts/CircularStd-Regular.svg +0 -2378
  97. package/fonts/CircularStd-Regular.ttf +0 -0
  98. package/fonts/CircularStd-Regular.woff +0 -0
  99. package/fonts/CircularStd-Regular.woff2 +0 -0
@@ -1,177 +1,377 @@
1
- @use "sass:map";
2
-
3
- // =============================================================================
4
- // matcha-stepper.scss — Step progress indicator
5
- // Aligned with Figma matcha/stepper/step:
6
- // Estado(4: Completo, Ativo, Pendente, Disabled) × Tamanho(2: SM, MD)
7
- // Connector lines between steps via CSS
8
- // =============================================================================
9
-
10
- @mixin matcha-stepper-theme($theme) {
11
- $is-dark: map.get($theme, is-dark);
12
-
13
- matcha-stepper {
14
- // ── Step indicators ──
15
- .step-indicator-completo {
16
- background: var(--matcha-color-accent, #{getAccent($theme)});
17
- color: var(--matcha-color-accent-contrast, #{getAccentContrast($theme)});
18
- }
19
-
20
- .step-indicator-ativo {
21
- background: var(--matcha-color-fg, #{getForeground($theme)});
22
- color: var(--matcha-color-bg, #{getBackground($theme)});
23
- }
24
-
25
- .step-indicator-pendente,
26
- .step-indicator-disabled {
27
- background: var(--matcha-color-disabled, #{getDisabled($theme)});
28
- color: var(--matcha-color-bg, #{getBackground($theme)});
29
- }
30
-
31
- // ── Labels ──
32
- .step-label-completo {
33
- color: var(--matcha-color-accent, #{getAccent($theme)});
34
- }
35
-
36
- .step-label-ativo {
37
- color: var(--matcha-color-fg, #{getForeground($theme)});
38
- }
39
-
40
- .step-label-pendente,
41
- .step-label-disabled {
42
- color: var(--matcha-color-text-placeholder, #{getBlueGrey($theme)});
43
- }
44
-
45
- // ── Connector lines ──
46
- .step-connector {
47
- background: var(--matcha-color-disabled, #{getDisabled($theme)});
48
- }
49
-
50
- .step-connector-complete {
51
- background: var(--matcha-color-accent, #{getAccent($theme)});
52
- }
53
-
54
- // ── Focus ──
55
- .step-item:focus-visible {
56
- outline: var(--matcha-state-focus-ring-width, 2px) solid var(--matcha-color-accent, #{getAccent($theme)});
57
- outline-offset: var(--matcha-state-focus-ring-offset, 2px);
58
- border-radius: var(--matcha-radius-md, 4px);
59
- }
60
- }
61
- }
62
-
63
- // ── Layout ──────────────────────────────────────────────────────────────────
64
-
65
- matcha-stepper {
66
- display: flex;
67
- width: 100%;
68
-
69
- // ── Horizontal (default) ──
70
- &:not([orientation="vertical"]) {
71
- flex-direction: row;
72
- align-items: center;
73
- gap: var(--matcha-space-200, 16px);
74
- }
75
-
76
- // ── Vertical ──
77
- &[orientation="vertical"] {
78
- flex-direction: column;
79
- gap: var(--matcha-space-200, 16px);
80
- }
81
- }
82
-
83
- // ── Step item ──
84
- .step-item {
85
- display: flex;
86
- align-items: center;
87
- gap: var(--matcha-space-100, 8px);
88
- cursor: default;
89
- white-space: nowrap;
90
-
91
- &.step-clickable {
92
- cursor: pointer;
93
- }
94
-
95
- &.step-disabled {
96
- opacity: 0.5;
97
- pointer-events: none;
98
- }
99
- }
100
-
101
- // ── Indicator circle ──
102
- .step-indicator {
103
- display: flex;
104
- align-items: center;
105
- justify-content: center;
106
- border-radius: 50%;
107
- flex-shrink: 0;
108
- font-family: var(--matcha-font-family);
109
-
110
- &.step-sm {
111
- width: var(--matcha-icon-size-md, 24px);
112
- height: var(--matcha-icon-size-md, 24px);
113
- font-size: var(--matcha-text-body-md, 14px);
114
- font-weight: var(--matcha-weight-regular, 400);
115
- }
116
-
117
- &.step-md {
118
- width: var(--matcha-space-400, 32px);
119
- height: var(--matcha-space-400, 32px);
120
- font-size: var(--matcha-text-title-sm, 16px);
121
- font-weight: var(--matcha-weight-semibold, 600);
122
- }
123
-
124
- matcha-icon {
125
- flex-shrink: 0;
126
- }
127
- }
128
-
129
- // ── Label ──
130
- .step-label {
131
- font-family: var(--matcha-font-family);
132
-
133
- &.step-sm {
134
- font-size: var(--matcha-text-body-md, 14px);
135
- line-height: var(--matcha-leading-body-md, 20px);
136
- font-weight: var(--matcha-weight-regular, 400);
137
- }
138
-
139
- &.step-md {
140
- font-size: var(--matcha-text-title-sm, 16px);
141
- line-height: var(--matcha-leading-title-sm, 22px);
142
- font-weight: var(--matcha-weight-semibold, 600);
143
- }
144
-
145
- // Ativo SM gets medium weight
146
- .step-item-ativo &.step-sm {
147
- font-weight: var(--matcha-weight-medium, 500);
148
- }
149
- }
150
-
151
- // ── Connector line ──
152
- .step-connector {
153
- flex: 1;
154
- height: var(--matcha-border-thin, 2px);
155
- min-width: var(--matcha-space-200, 16px);
156
-
157
- // Vertical connector
158
- matcha-stepper[orientation="vertical"] & {
159
- width: var(--matcha-border-thin, 2px);
160
- height: var(--matcha-space-200, 16px);
161
- min-width: auto;
162
- flex: none;
163
- margin-left: calc(var(--matcha-icon-size-md, 24px) / 2 - 1px);
164
- }
165
-
166
- matcha-stepper[orientation="vertical"].step-md & {
167
- margin-left: calc(var(--matcha-space-400, 32px) / 2 - 1px);
168
- }
169
- }
170
-
171
- // ── Reduced motion ──────────────────────────────────────────────────────────
172
- @media (prefers-reduced-motion: reduce) {
173
- .step-indicator,
174
- .step-connector {
175
- transition: none;
176
- }
177
- }
1
+ @use "sass:map";
2
+
3
+ // =============================================================================
4
+ // matcha-stepper.scss — Step progress indicator
5
+ // Aligned with Figma matcha/stepper/step:
6
+ // Estado(4: Completo, Ativo, Pendente, Disabled) × Tamanho(2: SM, MD)
7
+ // Connector lines between steps via CSS — fill animation on complete
8
+ // =============================================================================
9
+
10
+ @mixin matcha-stepper-theme($theme) {
11
+ $is-dark: map.get($theme, is-dark);
12
+
13
+ matcha-stepper {
14
+ // ── Step indicators ──
15
+ // Completo: círculo verde sólido + matcha-icon messaging-check outlined
16
+ // (canon Figma DSV3: bola accent atrás, ícone outlined dentro).
17
+ // matcha-icon NÃO herda `color` do parent — usa `--matcha-icon-color`.
18
+ .step-indicator-completo {
19
+ background: var(--matcha-color-accent, #{getAccent($theme)});
20
+ color: var(--matcha-color-accent-text-on, var(--matcha-color-accent-contrast, #{getAccentContrast($theme)}));
21
+ --matcha-icon-color: var(--matcha-color-accent-text-on, var(--matcha-color-accent-contrast, #{getAccentContrast($theme)}));
22
+ }
23
+
24
+ .step-indicator-ativo {
25
+ background: var(--matcha-color-fg, #{getForeground($theme)});
26
+ color: var(--matcha-color-bg, #{getBackground($theme)});
27
+ }
28
+
29
+ .step-indicator-pendente,
30
+ .step-indicator-disabled {
31
+ background: var(--matcha-color-disabled, #{getDisabled($theme)});
32
+ color: var(--matcha-color-bg, #{getBackground($theme)});
33
+ }
34
+
35
+ // ── Labels ──
36
+ .step-label-completo {
37
+ color: var(--matcha-color-accent, #{getAccent($theme)});
38
+ }
39
+
40
+ .step-label-ativo {
41
+ color: var(--matcha-color-fg, #{getForeground($theme)});
42
+ }
43
+
44
+ .step-label-pendente,
45
+ .step-label-disabled {
46
+ color: var(--matcha-color-text-placeholder, #{getBlueGrey($theme)});
47
+ }
48
+
49
+ // ── Connector lines (track + fill animation) ──
50
+ .step-connector {
51
+ background: var(--matcha-color-disabled, #{getDisabled($theme)});
52
+
53
+ // Pseudo "fill" que cresce da esquerda → direita quando step completa.
54
+ &::before {
55
+ background: var(--matcha-color-accent, #{getAccent($theme)});
56
+ }
57
+ }
58
+
59
+ // ── Focus ring polido (offset 4px + halo) ──
60
+ .step-item:focus-visible {
61
+ outline: var(--matcha-state-focus-ring-width, 2px) solid
62
+ var(--matcha-color-accent, #{getAccent($theme)});
63
+ outline-offset: var(--matcha-state-focus-ring-offset, 4px);
64
+ border-radius: var(--matcha-radius-md, 8px);
65
+ box-shadow: 0 0 0 4px rgba(getAccent($theme), 0.16);
66
+ }
67
+
68
+ // ── Spinner color (loading state) — herda accent ──
69
+ .step-spinner {
70
+ color: var(--matcha-color-accent, #{getAccent($theme)});
71
+ }
72
+ }
73
+ }
74
+
75
+ // ── Layout ──────────────────────────────────────────────────────────────────
76
+
77
+ matcha-stepper {
78
+ display: flex;
79
+ width: 100%;
80
+
81
+ // ── Horizontal (default) ──
82
+ &:not([orientation="vertical"]) {
83
+ flex-direction: column;
84
+ align-items: stretch;
85
+ gap: var(--matcha-space-200, 16px);
86
+ }
87
+
88
+ // ── Vertical ──
89
+ &[orientation="vertical"] {
90
+ flex-direction: row;
91
+ align-items: flex-start;
92
+ gap: var(--matcha-space-300, 24px);
93
+ }
94
+ }
95
+
96
+ // O controller é flex próprio (canon: layout dos step-items/connectors).
97
+ // Horizontal default · Vertical quando [orientation="vertical"].
98
+ matcha-stepper-controller {
99
+ display: inline-flex;
100
+ align-items: center;
101
+ gap: 0;
102
+
103
+ &[aria-orientation="vertical"] {
104
+ flex-direction: column;
105
+ align-items: flex-start;
106
+ }
107
+
108
+ // ── Compact mode (esconde labels, mostra só indicators + connectors) ──
109
+ // Manual: <matcha-stepper-controller compact>
110
+ // Auto: viewports <480px via media query abaixo
111
+ &[compact] .step-label {
112
+ display: none;
113
+ }
114
+ }
115
+
116
+ // ── Step item (button native pra a11y de focus/Enter/Space) ──
117
+ .step-item {
118
+ display: inline-flex;
119
+ align-items: center;
120
+ gap: var(--matcha-space-100, 8px);
121
+ flex-shrink: 0;
122
+ // Reseta button defaults
123
+ background: none;
124
+ border: none;
125
+ padding: var(--matcha-space-075, 6px) var(--matcha-space-100, 8px);
126
+ margin: 0;
127
+ font: inherit;
128
+ color: inherit;
129
+ cursor: default;
130
+ white-space: nowrap;
131
+ border-radius: var(--matcha-radius-md, 8px);
132
+ transition: background-color 160ms ease, transform 160ms ease;
133
+
134
+ &.step-clickable {
135
+ cursor: pointer;
136
+
137
+ &:hover {
138
+ background: var(--matcha-color-surface-hover, rgba(232, 234, 237, 0.06));
139
+ transform: translateY(-1px);
140
+ }
141
+
142
+ &:active { transform: scale(0.98); }
143
+ }
144
+
145
+ &.step-disabled,
146
+ &.step-item-disabled {
147
+ opacity: var(--matcha-opacity-disabled, 0.4);
148
+ pointer-events: none;
149
+ }
150
+
151
+ &.step-item-loading {
152
+ pointer-events: none;
153
+ }
154
+ }
155
+
156
+ // ── Indicator circle (com transition de cor pra trocas suaves) ──
157
+ .step-indicator {
158
+ display: flex;
159
+ align-items: center;
160
+ justify-content: center;
161
+ border-radius: 50%;
162
+ flex-shrink: 0;
163
+ font-family: var(--matcha-font-family);
164
+ transition:
165
+ background-color 240ms cubic-bezier(0.4, 0, 0.2, 1),
166
+ color 240ms cubic-bezier(0.4, 0, 0.2, 1);
167
+
168
+ &.step-sm {
169
+ width: var(--matcha-icon-size-md, 24px);
170
+ height: var(--matcha-icon-size-md, 24px);
171
+ font-size: var(--matcha-text-body-md, 14px);
172
+ font-weight: var(--matcha-weight-regular, 400);
173
+ }
174
+
175
+ &.step-md {
176
+ width: var(--matcha-space-400, 32px);
177
+ height: var(--matcha-space-400, 32px);
178
+ font-size: var(--matcha-text-title-sm, 16px);
179
+ font-weight: var(--matcha-weight-semibold, 600);
180
+ }
181
+
182
+ matcha-icon {
183
+ flex-shrink: 0;
184
+ }
185
+ }
186
+
187
+ // ── Spinner (loading state) ──
188
+ .step-spinner {
189
+ display: inline-flex;
190
+ align-items: center;
191
+ justify-content: center;
192
+ width: 100%;
193
+ height: 100%;
194
+
195
+ svg {
196
+ width: 70%;
197
+ height: 70%;
198
+ animation: matcha-stepper-spin 800ms linear infinite;
199
+ }
200
+ }
201
+
202
+ @keyframes matcha-stepper-spin {
203
+ to { transform: rotate(360deg); }
204
+ }
205
+
206
+ // ── Label (com transition pra trocas de cor suaves) ──
207
+ .step-label {
208
+ font-family: var(--matcha-font-family);
209
+ transition: color 240ms cubic-bezier(0.4, 0, 0.2, 1);
210
+
211
+ &.step-sm {
212
+ font-size: var(--matcha-text-body-md, 14px);
213
+ line-height: var(--matcha-leading-body-md, 20px);
214
+ font-weight: var(--matcha-weight-regular, 400);
215
+ }
216
+
217
+ &.step-md {
218
+ font-size: var(--matcha-text-title-sm, 16px);
219
+ line-height: var(--matcha-leading-title-sm, 22px);
220
+ font-weight: var(--matcha-weight-semibold, 600);
221
+ }
222
+
223
+ // Ativo SM gets medium weight
224
+ .step-item-ativo &.step-sm {
225
+ font-weight: var(--matcha-weight-medium, 500);
226
+ }
227
+ }
228
+
229
+ // ── Connector line (track + animated fill) ──
230
+ //
231
+ // Track: fixed-width line (40px horizontal, 24px vertical) com bg disabled.
232
+ // Fill: ::before pseudo growing scaleX(0→1) quando state complete.
233
+ // Pattern Material 3 / iOS Wizard — feedback de progresso direto.
234
+ .step-connector {
235
+ flex: 0 0 var(--matcha-space-500, 40px);
236
+ height: var(--matcha-border-thin, 2px);
237
+ margin: 0 var(--matcha-space-050, 4px);
238
+ border-radius: var(--matcha-radius-pill, 9999px);
239
+ position: relative;
240
+ overflow: hidden;
241
+
242
+ &::before {
243
+ content: '';
244
+ position: absolute;
245
+ inset: 0;
246
+ border-radius: inherit;
247
+ transform: scaleX(0);
248
+ transform-origin: left center;
249
+ transition: transform 400ms cubic-bezier(0.4, 0, 0.2, 1);
250
+ }
251
+
252
+ &.step-connector-complete::before {
253
+ transform: scaleX(1);
254
+ }
255
+
256
+ // Vertical connector — fill cresce de cima → baixo
257
+ matcha-stepper[orientation="vertical"] & {
258
+ width: var(--matcha-border-thin, 2px);
259
+ height: var(--matcha-space-300, 24px);
260
+ flex: 0 0 var(--matcha-space-300, 24px);
261
+ margin: var(--matcha-space-050, 4px) 0 var(--matcha-space-050, 4px)
262
+ calc(var(--matcha-icon-size-md, 24px) / 2 - 1px);
263
+
264
+ &::before {
265
+ transform: scaleY(0);
266
+ transform-origin: top center;
267
+ }
268
+
269
+ &.step-connector-complete::before {
270
+ transform: scaleY(1);
271
+ }
272
+ }
273
+
274
+ matcha-stepper[orientation="vertical"].step-md & {
275
+ margin-left: calc(var(--matcha-space-400, 32px) / 2 - 1px);
276
+ }
277
+ }
278
+
279
+ // ── Mobile: auto-compact mode em viewports estreitos ────────────────────────
280
+ // Esconde labels (mantém só indicators + connectors) — canon iOS form wizard.
281
+ @media (max-width: 480px) {
282
+ matcha-stepper-controller:not([aria-orientation="vertical"]) .step-label {
283
+ display: none;
284
+ }
285
+ matcha-stepper:not([orientation="vertical"]) {
286
+ overflow-x: auto;
287
+ }
288
+ }
289
+
290
+ // ── Variant "progress": label inline à esquerda + N botões-pill clicáveis ──
291
+ // Cada botão É o pill (visual + click no mesmo elemento). Tokens canônicos
292
+ // DSV3 idem matcha-progress-bar[type=segmented]: empty=disabled-bg,
293
+ // filled=accent. Compacto, single-line, ideal pra toolbar-actions slot
294
+ // (1-line evita assimetria vertical com title 1-line do toolbar).
295
+ .step-progress {
296
+ display: flex;
297
+ flex-direction: row;
298
+ align-items: center;
299
+ gap: var(--matcha-space-100, 8px);
300
+ }
301
+
302
+ .step-progress-label {
303
+ font-family: var(--matcha-font-family);
304
+ font-size: var(--matcha-text-body-sm, 12px);
305
+ font-weight: var(--matcha-weight-semibold, 600);
306
+ line-height: var(--matcha-leading-body-sm, 16px);
307
+ color: var(--matcha-color-text-primary);
308
+ white-space: nowrap;
309
+ }
310
+
311
+ .step-progress-bar {
312
+ display: inline-flex;
313
+ align-items: center;
314
+ gap: var(--matcha-space-050, 4px);
315
+ }
316
+
317
+ // Botão-pill: visual canon DSV3 (8px tall, pill radius, disabled-bg base).
318
+ // Width fixo 32px = consistente entre steps. Cursor pointer. Tokens 1:1
319
+ // com matcha-progress-bar[type=segmented] pra parity visual.
320
+ .step-progress-pill {
321
+ display: block;
322
+ width: 32px;
323
+ height: 8px;
324
+ padding: 0;
325
+ border: 0;
326
+ background: var(--matcha-color-disabled-bg, #282C34);
327
+ cursor: pointer;
328
+ border-radius: var(--matcha-radius-pill, 9999px);
329
+ transition: background var(--matcha-duration-fast, 200ms) ease,
330
+ transform var(--matcha-duration-fast, 200ms) ease;
331
+ }
332
+
333
+ // is-filled: step ≤ activeStep (completos + ativo) ficam accent.
334
+ .step-progress-pill.is-filled {
335
+ background: var(--matcha-color-accent, #009400);
336
+ }
337
+
338
+ // Hover state: pendentes mostram preview accent com opacity; ativo/completos
339
+ // crescem 1.25× verticalmente pra feedback perceptivel.
340
+ .step-progress-pill:not([disabled]):not(.is-filled):hover {
341
+ background: var(--matcha-color-accent, #009400);
342
+ opacity: 0.5;
343
+ }
344
+
345
+ .step-progress-pill:not([disabled]).is-filled:hover {
346
+ transform: scaleY(1.25);
347
+ }
348
+
349
+ .step-progress-pill:not([disabled]):focus-visible {
350
+ outline: 2px solid var(--matcha-color-accent, #009400);
351
+ outline-offset: 2px;
352
+ }
353
+
354
+ .step-progress-pill[disabled] {
355
+ cursor: not-allowed;
356
+ opacity: 0.4;
357
+ }
358
+
359
+ // ── Reduced motion (WCAG 2.2.2) ─────────────────────────────────────────────
360
+ @media (prefers-reduced-motion: reduce) {
361
+ .step-item,
362
+ .step-indicator,
363
+ .step-label,
364
+ .step-connector,
365
+ .step-connector::before {
366
+ transition: none;
367
+ }
368
+ .step-spinner svg {
369
+ animation: none;
370
+ }
371
+ .step-item.step-clickable:hover {
372
+ transform: none;
373
+ }
374
+ .step-item.step-clickable:active {
375
+ transform: none;
376
+ }
377
+ }