@inchurch/matcha-theme 22.38.2 → 22.38.3

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 (93) hide show
  1. package/abstracts/_colors.scss +291 -291
  2. package/abstracts/_elevation.scss +108 -108
  3. package/abstracts/_functions.scss +321 -321
  4. package/abstracts/_media-breakpoint.scss +26 -26
  5. package/abstracts/_theme-api.scss +224 -224
  6. package/abstracts/_typography.scss +128 -128
  7. package/base/_reset.scss +487 -487
  8. package/components/app-page-header.scss +260 -260
  9. package/components/matcha-accordion.scss +297 -297
  10. package/components/matcha-audio-player.scss +31 -31
  11. package/components/matcha-autocomplete.scss +145 -145
  12. package/components/matcha-avatar.scss +426 -426
  13. package/components/matcha-badge.scss +120 -120
  14. package/components/matcha-breadcrumb.scss +231 -231
  15. package/components/matcha-button-toggle.scss +484 -484
  16. package/components/matcha-buttons.scss +973 -973
  17. package/components/matcha-calendar.scss +253 -253
  18. package/components/matcha-cards.scss +212 -212
  19. package/components/matcha-chart-card.scss +53 -53
  20. package/components/matcha-checkbox.scss +266 -266
  21. package/components/matcha-chip.scss +311 -311
  22. package/components/matcha-color-pick.scss +34 -34
  23. package/components/matcha-command-palette.scss +316 -316
  24. package/components/matcha-crop.scss +419 -419
  25. package/components/matcha-date.scss +81 -81
  26. package/components/matcha-divider.scss +100 -100
  27. package/components/matcha-draggable.scss +23 -23
  28. package/components/matcha-drawer.scss +376 -376
  29. package/components/matcha-drop-image.scss +14 -14
  30. package/components/matcha-drop-list.scss +430 -430
  31. package/components/matcha-emoji.scss +69 -69
  32. package/components/matcha-empty-state.scss +230 -230
  33. package/components/matcha-file-uploader.scss +650 -637
  34. package/components/matcha-flag.scss +103 -103
  35. package/components/matcha-footer.scss +91 -91
  36. package/components/matcha-form-field.scss +883 -883
  37. package/components/matcha-form-section.scss +100 -100
  38. package/components/matcha-header.scss +135 -135
  39. package/components/matcha-highlight.scss +164 -164
  40. package/components/matcha-hint-text.scss +90 -90
  41. package/components/matcha-horizontal-tree.scss +247 -247
  42. package/components/matcha-icon.scss +111 -111
  43. package/components/matcha-image.scss +60 -60
  44. package/components/matcha-list.scss +211 -211
  45. package/components/matcha-menu.scss +99 -99
  46. package/components/matcha-modal.scss +210 -210
  47. package/components/matcha-nav.scss +770 -770
  48. package/components/matcha-notification.scss +417 -417
  49. package/components/matcha-option.scss +170 -170
  50. package/components/matcha-page-builder.scss +4196 -4196
  51. package/components/matcha-paginator.scss +699 -699
  52. package/components/matcha-panel.scss +216 -216
  53. package/components/matcha-period.scss +174 -174
  54. package/components/matcha-profile-card.scss +50 -50
  55. package/components/matcha-progress-bar.scss +355 -355
  56. package/components/matcha-radio.scss +325 -325
  57. package/components/matcha-ripple.scss +7 -7
  58. package/components/matcha-scrollbar.scss +33 -33
  59. package/components/matcha-scrollbox-shadow.scss +120 -120
  60. package/components/matcha-section.scss +102 -102
  61. package/components/matcha-select-multiple.scss +56 -56
  62. package/components/matcha-select.scss +629 -629
  63. package/components/matcha-skeleton.scss +182 -182
  64. package/components/matcha-slide-toggle.scss +369 -369
  65. package/components/matcha-slider.scss +285 -285
  66. package/components/matcha-snack-bar.scss +259 -259
  67. package/components/matcha-spin.scss +164 -164
  68. package/components/matcha-spinner.scss +97 -97
  69. package/components/matcha-stepper.scss +376 -376
  70. package/components/matcha-table-cell.scss +107 -107
  71. package/components/matcha-table.scss +722 -722
  72. package/components/matcha-tabs.scss +642 -642
  73. package/components/matcha-text-editor.scss +111 -111
  74. package/components/matcha-time.scss +33 -33
  75. package/components/matcha-timepicker.scss +13 -13
  76. package/components/matcha-toolbar.scss +366 -366
  77. package/components/matcha-tooltip.scss +235 -235
  78. package/components/matcha-tree-view.scss +636 -636
  79. package/layout/matcha-page-layout.scss +778 -778
  80. package/main.scss +334 -334
  81. package/package.json +1 -1
  82. package/tokens/_animations-tokens.scss +37 -37
  83. package/tokens/_breakpoints-tokens.scss +35 -35
  84. package/tokens/_color-tokens.scss +288 -288
  85. package/tokens/_elevation-tokens.scss +33 -33
  86. package/tokens/_emit-tokens.scss +329 -329
  87. package/tokens/_material-palette.scss +1149 -1149
  88. package/tokens/_primitives.scss +98 -98
  89. package/tokens/_semantic-aliases.scss +120 -120
  90. package/tokens/_spacing-tokens.scss +94 -94
  91. package/tokens/_static-tokens.scss +137 -137
  92. package/tokens/_typography-tokens.scss +65 -65
  93. package/vendors/charts.scss +90 -90
@@ -1,216 +1,216 @@
1
- @use "sass:map";
2
-
3
- // Estrutura Overlay Local
4
- .matcha-panel-overlay {
5
- position: fixed;
6
- inset: 0;
7
- width: 100%;
8
- height: 100%;
9
- // Acima de modal (999) e overlay base (1000) — panel pode ser aberto dentro de modal
10
- z-index: var(--matcha-z-popover-floating, 10001);
11
- pointer-events: none !important; // Permite clicar "através" do overlay (interação com inputs, scroll da página)
12
- display: block;
13
- }
14
-
15
- .matcha-panel-overlay[hidden] {
16
- overflow: hidden;
17
- }
18
-
19
- .matcha-panel-pane {
20
- position: absolute;
21
- display: block;
22
- max-height: 100%;
23
- pointer-events: auto; // Reativa cliques para o painel em si
24
- box-sizing: border-box;
25
- }
26
-
27
- .matcha-panel {
28
- // Figma matcha/panel (14276:67): radius xl, padding 8/0, max-height 280
29
- border-radius: var(--matcha-radius-xl, 16px);
30
- overflow-y: auto;
31
- display: flex;
32
- flex-direction: column;
33
- max-height: var(--matcha-panel-max-height, 280px);
34
- width: 100%;
35
- padding: var(--matcha-space-100, 8px) 0;
36
-
37
- // Animações (fade + scale leve, easing standard)
38
- opacity: 0;
39
- transform: scale(0.96) translateY(calc(-1 * var(--matcha-space-050, 4px)));
40
- transition: opacity var(--matcha-duration-fast, 200ms) var(--matcha-easing-standard, cubic-bezier(0.4, 0, 0.2, 1)),
41
- transform var(--matcha-duration-fast, 200ms) var(--matcha-easing-standard, cubic-bezier(0.4, 0, 0.2, 1));
42
-
43
- position: relative;
44
- z-index: auto;
45
-
46
- // Estados de abertura
47
- &.matcha-panel-open {
48
- opacity: 1;
49
- transform: scale(1) translateY(0);
50
- }
51
-
52
- // Posicionamento vertical
53
- &.matcha-panel-top {
54
- transform-origin: bottom center;
55
- }
56
-
57
- &.matcha-panel-bottom {
58
- transform-origin: top center;
59
- }
60
- }
61
-
62
- @media (prefers-reduced-motion: reduce) {
63
- .matcha-panel {
64
- transition: none;
65
- }
66
- }
67
-
68
- // Conteúdo do painel
69
- .matcha-panel-content {
70
- overflow-y: auto;
71
- flex: 1;
72
- }
73
-
74
- // Painéis de menu nunca rolam na horizontal. Como .matcha-panel declara só
75
- // `overflow-y: auto`, o `overflow-x` computa como `auto` (regra CSS: um eixo
76
- // visible + o outro não-visible → o visible vira auto). Numa lista longa (scroll
77
- // vertical) o scrollbar vertical reduz a largura útil e os itens em `nowrap`
78
- // induzem um scrollbar horizontal fantasma. Fixar overflow-x hidden elimina a
79
- // barra sem cortar texto (fica sob o padding do item). Escopado a menu porque
80
- // submenus são portados pro <body> (não são descendentes) — logo não são clipados;
81
- // select/autocomplete/calendar ficam intactos.
82
- .matcha-panel:has(> .matcha-menu-content),
83
- .matcha-panel:has(.matcha-select-options) {
84
- overflow-x: hidden;
85
- }
86
-
87
- // Quando o painel envolve um componente que já carrega surface + shadow + radius próprios
88
- // (ex: matcha-calendar, matcha-time-panel), o panel deve ser transparente e servir
89
- // apenas de container de posicionamento — evita "duplicar" visual do cartão.
90
- // IMPORTANTE: !important porque o mixin matcha-panel-theme pode ser aplicado com
91
- // wrapper de tema (ex: body.theme-dark .matcha-panel), elevando especificidade pra
92
- // 0-2-0, empatando com :has() e vencendo por ordem no cascade.
93
- // FILHO DIRETO (`> `), não descendente: o alvo é "o conteúdo do painel É um
94
- // calendário/time-panel". Um painel COMPOSTO que só contém um campo de data mais
95
- // embaixo (matcha-period: presets + dois matcha-date) tem o calendar aninhado no
96
- // DOM mesmo com o picker fechado — com `:has(.matcha-calendar)` descendente ele
97
- // perdia fundo, sombra, padding e o max-height (virava lista solta e transbordava
98
- // a viewport).
99
- .matcha-panel:has(> .matcha-calendar),
100
- .matcha-panel:has(> matcha-time-panel),
101
- .matcha-panel:has(> .matcha-time-panel) {
102
- background: transparent !important;
103
- box-shadow: none !important;
104
- border: none !important;
105
- border-radius: 0 !important;
106
- padding: 0 !important;
107
- max-height: none !important;
108
- overflow: visible !important;
109
- }
110
-
111
- // ── Bottom-sheet em mobile (≤ 600px) ────────────────────────
112
- // O panel com calendar vira um painel full-width grudado no rodapé da tela,
113
- // com backdrop translúcido e slide-up. Sobrescreve o transform inline do JS.
114
- //
115
- // IMPORTANTE: escopar ao overlay ABERTO (`:not([hidden])`). O overlay fica sempre
116
- // no DOM (o `display: block` da base anula o atributo [hidden] de propósito — o
117
- // posicionamento mede o conteúdo fechado), e o <matcha-calendar> do matcha-date é
118
- // renderizado mesmo com o picker fechado. Sem o escopo, qualquer página com um
119
- // matcha-date pintava o scrim blurred permanente em mobile e o `pointer-events:
120
- // auto` bloqueava TODOS os cliques da tela.
121
- @media (max-width: 639px) {
122
- // Cadeia completa (`> pane > panel > calendar`): o alvo é o overlay do PRÓPRIO
123
- // painel-calendário. Sem a cadeia, um painel composto que só aninha um
124
- // matcha-date (matcha-period) casava pelo calendar do filho e ganhava scrim
125
- // + blur em mobile sem nunca virar sheet.
126
- .matcha-panel-overlay:not([hidden]):has(> .matcha-panel-pane > .matcha-panel > .matcha-calendar) {
127
- pointer-events: auto !important; // precisa capturar o backdrop
128
- background: var(--matcha-scrim-drawer, rgba(0, 0, 0, 0.3));
129
- backdrop-filter: blur(var(--matcha-scrim-drawer-blur, 4px));
130
- animation: matcha-panel-backdrop-fade var(--matcha-duration-fast, 200ms) var(--matcha-easing-standard, cubic-bezier(0.4, 0, 0.2, 1));
131
- }
132
-
133
- .matcha-panel-overlay:not([hidden]) .matcha-panel-pane:has(> .matcha-panel > .matcha-calendar) {
134
- position: fixed !important;
135
- inset: auto 0 0 0 !important;
136
- top: auto !important;
137
- left: 0 !important;
138
- right: 0 !important;
139
- bottom: 0 !important;
140
- width: 100% !important;
141
- min-width: 0 !important;
142
- transform: none !important;
143
- max-height: 90vh;
144
- animation: matcha-panel-sheet-up var(--matcha-duration-normal, 220ms) var(--matcha-easing-standard, cubic-bezier(0.4, 0, 0.2, 1));
145
- }
146
-
147
- // Cartão do calendar ocupa a largura toda, com radius só em cima
148
- .matcha-panel:has(> .matcha-calendar) > .matcha-calendar {
149
- width: 100%;
150
- min-width: 0;
151
- border-radius: var(--matcha-radius-xl, 16px) var(--matcha-radius-xl, 16px) 0 0;
152
- padding: var(--matcha-space-250, 20px);
153
- }
154
-
155
- // Dual-month cai pra empilhado em mobile
156
- .matcha-panel:has(> .matcha-calendar) > .matcha-calendar.is-dual {
157
- min-width: 0;
158
- }
159
- .matcha-panel:has(> .matcha-calendar) > .matcha-calendar.is-dual .matcha-calendar-months {
160
- flex-direction: column;
161
- }
162
- }
163
-
164
- @keyframes matcha-panel-sheet-up {
165
- from { transform: translateY(100%); }
166
- to { transform: translateY(0); }
167
- }
168
-
169
- @keyframes matcha-panel-backdrop-fade {
170
- from { opacity: 0; }
171
- to { opacity: 1; }
172
- }
173
-
174
- @mixin matcha-panel-theme($theme) {
175
-
176
- .matcha-panel {
177
- // Floating overlay (dropdown/popover) — surface-card-strong (pure white
178
- // light, lifted dark). Inline cards usam soft default; panel flutua.
179
- background: var(--matcha-color-surface-card-strong, var(--matcha-color-surface-card, var(--matcha-color-surface)));
180
- color: var(--matcha-color-text-primary, var(--matcha-color-fg));
181
-
182
- // Shadow level 3 (floating panels — Figma DSV3 elevation/level-3)
183
- box-shadow: var(--matcha-shadow-3);
184
- border: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, rgba(255, 255, 255, 0.12));
185
-
186
- &:focus-within {
187
- box-shadow: var(--matcha-shadow-4);
188
- }
189
- }
190
-
191
- // Responsividade — em mobile, panel mais compacto
192
- @media (max-width: 768px) {
193
- .matcha-panel {
194
- max-height: var(--matcha-space-1600, 192px);
195
- min-width: var(--matcha-space-1200, 96px);
196
- border-radius: var(--matcha-radius-lg, 12px);
197
- }
198
- }
199
- }
200
-
201
- // ── Forced colors ──
202
- @media (forced-colors: active) {
203
- .matcha-panel {
204
- background: Canvas !important;
205
- border: 1px solid CanvasText !important;
206
- box-shadow: none !important;
207
- }
208
- }
209
-
210
- // ── Print ──
211
- // Panels são floating/popover — somem em papel.
212
- @media print {
213
- .matcha-panel {
214
- display: none !important;
215
- }
216
- }
1
+ @use "sass:map";
2
+
3
+ // Estrutura Overlay Local
4
+ .matcha-panel-overlay {
5
+ position: fixed;
6
+ inset: 0;
7
+ width: 100%;
8
+ height: 100%;
9
+ // Acima de modal (999) e overlay base (1000) — panel pode ser aberto dentro de modal
10
+ z-index: var(--matcha-z-popover-floating, 10001);
11
+ pointer-events: none !important; // Permite clicar "através" do overlay (interação com inputs, scroll da página)
12
+ display: block;
13
+ }
14
+
15
+ .matcha-panel-overlay[hidden] {
16
+ overflow: hidden;
17
+ }
18
+
19
+ .matcha-panel-pane {
20
+ position: absolute;
21
+ display: block;
22
+ max-height: 100%;
23
+ pointer-events: auto; // Reativa cliques para o painel em si
24
+ box-sizing: border-box;
25
+ }
26
+
27
+ .matcha-panel {
28
+ // Figma matcha/panel (14276:67): radius xl, padding 8/0, max-height 280
29
+ border-radius: var(--matcha-radius-xl, 16px);
30
+ overflow-y: auto;
31
+ display: flex;
32
+ flex-direction: column;
33
+ max-height: var(--matcha-panel-max-height, 280px);
34
+ width: 100%;
35
+ padding: var(--matcha-space-100, 8px) 0;
36
+
37
+ // Animações (fade + scale leve, easing standard)
38
+ opacity: 0;
39
+ transform: scale(0.96) translateY(calc(-1 * var(--matcha-space-050, 4px)));
40
+ transition: opacity var(--matcha-duration-fast, 200ms) var(--matcha-easing-standard, cubic-bezier(0.4, 0, 0.2, 1)),
41
+ transform var(--matcha-duration-fast, 200ms) var(--matcha-easing-standard, cubic-bezier(0.4, 0, 0.2, 1));
42
+
43
+ position: relative;
44
+ z-index: auto;
45
+
46
+ // Estados de abertura
47
+ &.matcha-panel-open {
48
+ opacity: 1;
49
+ transform: scale(1) translateY(0);
50
+ }
51
+
52
+ // Posicionamento vertical
53
+ &.matcha-panel-top {
54
+ transform-origin: bottom center;
55
+ }
56
+
57
+ &.matcha-panel-bottom {
58
+ transform-origin: top center;
59
+ }
60
+ }
61
+
62
+ @media (prefers-reduced-motion: reduce) {
63
+ .matcha-panel {
64
+ transition: none;
65
+ }
66
+ }
67
+
68
+ // Conteúdo do painel
69
+ .matcha-panel-content {
70
+ overflow-y: auto;
71
+ flex: 1;
72
+ }
73
+
74
+ // Painéis de menu nunca rolam na horizontal. Como .matcha-panel declara só
75
+ // `overflow-y: auto`, o `overflow-x` computa como `auto` (regra CSS: um eixo
76
+ // visible + o outro não-visible → o visible vira auto). Numa lista longa (scroll
77
+ // vertical) o scrollbar vertical reduz a largura útil e os itens em `nowrap`
78
+ // induzem um scrollbar horizontal fantasma. Fixar overflow-x hidden elimina a
79
+ // barra sem cortar texto (fica sob o padding do item). Escopado a menu porque
80
+ // submenus são portados pro <body> (não são descendentes) — logo não são clipados;
81
+ // select/autocomplete/calendar ficam intactos.
82
+ .matcha-panel:has(> .matcha-menu-content),
83
+ .matcha-panel:has(.matcha-select-options) {
84
+ overflow-x: hidden;
85
+ }
86
+
87
+ // Quando o painel envolve um componente que já carrega surface + shadow + radius próprios
88
+ // (ex: matcha-calendar, matcha-time-panel), o panel deve ser transparente e servir
89
+ // apenas de container de posicionamento — evita "duplicar" visual do cartão.
90
+ // IMPORTANTE: !important porque o mixin matcha-panel-theme pode ser aplicado com
91
+ // wrapper de tema (ex: body.theme-dark .matcha-panel), elevando especificidade pra
92
+ // 0-2-0, empatando com :has() e vencendo por ordem no cascade.
93
+ // FILHO DIRETO (`> `), não descendente: o alvo é "o conteúdo do painel É um
94
+ // calendário/time-panel". Um painel COMPOSTO que só contém um campo de data mais
95
+ // embaixo (matcha-period: presets + dois matcha-date) tem o calendar aninhado no
96
+ // DOM mesmo com o picker fechado — com `:has(.matcha-calendar)` descendente ele
97
+ // perdia fundo, sombra, padding e o max-height (virava lista solta e transbordava
98
+ // a viewport).
99
+ .matcha-panel:has(> .matcha-calendar),
100
+ .matcha-panel:has(> matcha-time-panel),
101
+ .matcha-panel:has(> .matcha-time-panel) {
102
+ background: transparent !important;
103
+ box-shadow: none !important;
104
+ border: none !important;
105
+ border-radius: 0 !important;
106
+ padding: 0 !important;
107
+ max-height: none !important;
108
+ overflow: visible !important;
109
+ }
110
+
111
+ // ── Bottom-sheet em mobile (≤ 600px) ────────────────────────
112
+ // O panel com calendar vira um painel full-width grudado no rodapé da tela,
113
+ // com backdrop translúcido e slide-up. Sobrescreve o transform inline do JS.
114
+ //
115
+ // IMPORTANTE: escopar ao overlay ABERTO (`:not([hidden])`). O overlay fica sempre
116
+ // no DOM (o `display: block` da base anula o atributo [hidden] de propósito — o
117
+ // posicionamento mede o conteúdo fechado), e o <matcha-calendar> do matcha-date é
118
+ // renderizado mesmo com o picker fechado. Sem o escopo, qualquer página com um
119
+ // matcha-date pintava o scrim blurred permanente em mobile e o `pointer-events:
120
+ // auto` bloqueava TODOS os cliques da tela.
121
+ @media (max-width: 639px) {
122
+ // Cadeia completa (`> pane > panel > calendar`): o alvo é o overlay do PRÓPRIO
123
+ // painel-calendário. Sem a cadeia, um painel composto que só aninha um
124
+ // matcha-date (matcha-period) casava pelo calendar do filho e ganhava scrim
125
+ // + blur em mobile sem nunca virar sheet.
126
+ .matcha-panel-overlay:not([hidden]):has(> .matcha-panel-pane > .matcha-panel > .matcha-calendar) {
127
+ pointer-events: auto !important; // precisa capturar o backdrop
128
+ background: var(--matcha-scrim-drawer, rgba(0, 0, 0, 0.3));
129
+ backdrop-filter: blur(var(--matcha-scrim-drawer-blur, 4px));
130
+ animation: matcha-panel-backdrop-fade var(--matcha-duration-fast, 200ms) var(--matcha-easing-standard, cubic-bezier(0.4, 0, 0.2, 1));
131
+ }
132
+
133
+ .matcha-panel-overlay:not([hidden]) .matcha-panel-pane:has(> .matcha-panel > .matcha-calendar) {
134
+ position: fixed !important;
135
+ inset: auto 0 0 0 !important;
136
+ top: auto !important;
137
+ left: 0 !important;
138
+ right: 0 !important;
139
+ bottom: 0 !important;
140
+ width: 100% !important;
141
+ min-width: 0 !important;
142
+ transform: none !important;
143
+ max-height: 90vh;
144
+ animation: matcha-panel-sheet-up var(--matcha-duration-normal, 220ms) var(--matcha-easing-standard, cubic-bezier(0.4, 0, 0.2, 1));
145
+ }
146
+
147
+ // Cartão do calendar ocupa a largura toda, com radius só em cima
148
+ .matcha-panel:has(> .matcha-calendar) > .matcha-calendar {
149
+ width: 100%;
150
+ min-width: 0;
151
+ border-radius: var(--matcha-radius-xl, 16px) var(--matcha-radius-xl, 16px) 0 0;
152
+ padding: var(--matcha-space-250, 20px);
153
+ }
154
+
155
+ // Dual-month cai pra empilhado em mobile
156
+ .matcha-panel:has(> .matcha-calendar) > .matcha-calendar.is-dual {
157
+ min-width: 0;
158
+ }
159
+ .matcha-panel:has(> .matcha-calendar) > .matcha-calendar.is-dual .matcha-calendar-months {
160
+ flex-direction: column;
161
+ }
162
+ }
163
+
164
+ @keyframes matcha-panel-sheet-up {
165
+ from { transform: translateY(100%); }
166
+ to { transform: translateY(0); }
167
+ }
168
+
169
+ @keyframes matcha-panel-backdrop-fade {
170
+ from { opacity: 0; }
171
+ to { opacity: 1; }
172
+ }
173
+
174
+ @mixin matcha-panel-theme($theme) {
175
+
176
+ .matcha-panel {
177
+ // Floating overlay (dropdown/popover) — surface-card-strong (pure white
178
+ // light, lifted dark). Inline cards usam soft default; panel flutua.
179
+ background: var(--matcha-color-surface-card-strong, var(--matcha-color-surface-card, var(--matcha-color-surface)));
180
+ color: var(--matcha-color-text-primary, var(--matcha-color-fg));
181
+
182
+ // Shadow level 3 (floating panels — Figma DSV3 elevation/level-3)
183
+ box-shadow: var(--matcha-shadow-3);
184
+ border: var(--matcha-border-hairline, 1px) solid var(--matcha-color-surface-border, rgba(255, 255, 255, 0.12));
185
+
186
+ &:focus-within {
187
+ box-shadow: var(--matcha-shadow-4);
188
+ }
189
+ }
190
+
191
+ // Responsividade — em mobile, panel mais compacto
192
+ @media (max-width: 768px) {
193
+ .matcha-panel {
194
+ max-height: var(--matcha-space-1600, 192px);
195
+ min-width: var(--matcha-space-1200, 96px);
196
+ border-radius: var(--matcha-radius-lg, 12px);
197
+ }
198
+ }
199
+ }
200
+
201
+ // ── Forced colors ──
202
+ @media (forced-colors: active) {
203
+ .matcha-panel {
204
+ background: Canvas !important;
205
+ border: 1px solid CanvasText !important;
206
+ box-shadow: none !important;
207
+ }
208
+ }
209
+
210
+ // ── Print ──
211
+ // Panels são floating/popover — somem em papel.
212
+ @media print {
213
+ .matcha-panel {
214
+ display: none !important;
215
+ }
216
+ }