@sbkbs/ui 2.0.0-beta.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +57 -57
  2. package/dist/assets/favicon/site.webmanifest +21 -21
  3. package/dist/base.css +38 -38
  4. package/dist/components/Accordion/Accordion.js.map +1 -1
  5. package/dist/components/Alert/Alert.js.map +1 -1
  6. package/dist/components/Avatar/Avatar.js.map +1 -1
  7. package/dist/components/Badge/Badge.js.map +1 -1
  8. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
  9. package/dist/components/Button/Button.js.map +1 -1
  10. package/dist/components/Card/Card.js.map +1 -1
  11. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  12. package/dist/components/Chip/Chip.js.map +1 -1
  13. package/dist/components/Combobox/Combobox.js.map +1 -1
  14. package/dist/components/Divider/Divider.js.map +1 -1
  15. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
  16. package/dist/components/EmptyState/EmptyState.js.map +1 -1
  17. package/dist/components/Field/Field.js.map +1 -1
  18. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  19. package/dist/components/Footer/Footer.js.map +1 -1
  20. package/dist/components/GlassPanel/GlassPanel.js.map +1 -1
  21. package/dist/components/Header/Header.js.map +1 -1
  22. package/dist/components/Highlight/Highlight.js.map +1 -1
  23. package/dist/components/Icon/Icon.js.map +1 -1
  24. package/dist/components/IconButton/IconButton.js.map +1 -1
  25. package/dist/components/Input/Input.js.map +1 -1
  26. package/dist/components/Layout/Layout.js.map +1 -1
  27. package/dist/components/Logo/Logo.js.map +1 -1
  28. package/dist/components/MiniCard/MiniCard.js.map +1 -1
  29. package/dist/components/Modal/Modal.js.map +1 -1
  30. package/dist/components/Navigation/Navigation.js.map +1 -1
  31. package/dist/components/NumberInput/NumberInput.js.map +1 -1
  32. package/dist/components/PageHeader/PageHeader.js.map +1 -1
  33. package/dist/components/Pagination/Pagination.js.map +1 -1
  34. package/dist/components/Paragraph/Paragraph.js.map +1 -1
  35. package/dist/components/Popover/Popover.js.map +1 -1
  36. package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
  37. package/dist/components/Radio/Radio.js.map +1 -1
  38. package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
  39. package/dist/components/Select/Select.js.map +1 -1
  40. package/dist/components/SideNav/SideNav.js.map +1 -1
  41. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  42. package/dist/components/Spinner/Spinner.js.map +1 -1
  43. package/dist/components/Stepper/Stepper.js.map +1 -1
  44. package/dist/components/Subtitle/Subtitle.js.map +1 -1
  45. package/dist/components/Switch/Switch.js.map +1 -1
  46. package/dist/components/Table/Table.js.map +1 -1
  47. package/dist/components/Tabs/Tabs.js.map +1 -1
  48. package/dist/components/Tag/Tag.js.map +1 -1
  49. package/dist/components/Textarea/Textarea.js.map +1 -1
  50. package/dist/components/Title/Title.js.map +1 -1
  51. package/dist/components/Toast/Toast.js.map +1 -1
  52. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  53. package/dist/components/Typography/weight.js.map +1 -1
  54. package/dist/fonts.css +8 -8
  55. package/dist/index.cjs.map +1 -1
  56. package/dist/reset.css +9 -9
  57. package/dist/tailwind.css +153 -153
  58. package/dist/theme/ThemeProvider.js.map +1 -1
  59. package/dist/theme/tokens.js.map +1 -1
  60. package/dist/theme.css +327 -327
  61. package/dist/tokens.css +327 -327
  62. package/dist/utils/cn.js.map +1 -1
  63. package/dist/utils/styles.js.map +1 -1
  64. package/package.json +1 -1
package/dist/tokens.css CHANGED
@@ -1,327 +1,327 @@
1
- /* ============================================================
2
- @sbkbs/ui · Design tokens (Brand Book SBK 2026)
3
- Fonte de verdade: docs/SBK_BRAND_GUIDE.md
4
-
5
- Camadas:
6
- 1. Paleta oficial --sbk-<nome> (valores literais do brand book)
7
- 2. Semânticos --sbk-color-<uso> (o que os componentes consomem)
8
- 3. Escalas --sbk-radius-*, --sbk-shadow-*, --sbk-font-*, --sbk-duration-*
9
- 4. Aliases legados --md-*, --brand-*, --bg-*, --text-* (deprecados, removidos na 3.0)
10
-
11
- Temas:
12
- - Padrão: SBK IA (produto digital)
13
- - [data-brand='sbk']: SBK institucional (marca-mãe)
14
- - [data-theme='dark']: modo escuro (proposta, a validar com marca)
15
- ============================================================ */
16
-
17
- /* ---------- 1. Paleta oficial ---------- */
18
- :root {
19
- /* Primária */
20
- --sbk-verde-escuro: #023631;
21
- --sbk-ciano-escuro: #075056;
22
- --sbk-off-white: #eceff3;
23
-
24
- /* Secundária */
25
- --sbk-verde-claro: #0a5a52;
26
- --sbk-verde-profundo: #012824;
27
- --sbk-ciano: #2a7c79;
28
- --sbk-ciano-profundo: #0e4442;
29
- --sbk-chumbo-leve: #4a545e;
30
- --sbk-preto: #000000;
31
- --sbk-branco: #ffffff;
32
-
33
- /* Estados: fora do brand book, PROPOSTA pendente de aprovação da marca.
34
- Tons sóbrios, todos com contraste AA (>= 4.5:1) sobre branco. */
35
- --sbk-estado-sucesso: #1d6b43;
36
- --sbk-estado-alerta: #b45309;
37
- --sbk-estado-erro: #b42318;
38
- --sbk-estado-info: var(--sbk-ciano-escuro);
39
- }
40
-
41
- /* ---------- 2 e 3. Semânticos e escalas (tema SBK IA, claro) ---------- */
42
- :root {
43
- /* Fundos e superfícies */
44
- --sbk-color-bg: var(--sbk-off-white);
45
- --sbk-color-surface: var(--sbk-branco);
46
- --sbk-color-surface-sunken: var(--sbk-off-white);
47
- --sbk-color-surface-hover: color-mix(in srgb, var(--sbk-verde-escuro) 5%, var(--sbk-branco));
48
- --sbk-color-surface-inverse: var(--sbk-verde-escuro);
49
- --sbk-color-overlay: color-mix(in srgb, var(--sbk-verde-profundo) 60%, transparent);
50
-
51
- /* Texto */
52
- --sbk-color-fg: var(--sbk-preto);
53
- --sbk-color-fg-heading: var(--sbk-verde-escuro);
54
- --sbk-color-fg-muted: var(--sbk-chumbo-leve);
55
- --sbk-color-fg-inverse: var(--sbk-branco);
56
-
57
- /* Linhas: derivadas da paleta. line-strong tem >= 3:1 sobre branco (WCAG 1.4.11) */
58
- --sbk-color-line: color-mix(in srgb, var(--sbk-chumbo-leve) 22%, var(--sbk-branco));
59
- --sbk-color-line-strong: color-mix(in srgb, var(--sbk-chumbo-leve) 65%, var(--sbk-branco));
60
-
61
- /* Marca */
62
- --sbk-color-primary: var(--sbk-verde-claro);
63
- --sbk-color-primary-hover: var(--sbk-verde-escuro);
64
- --sbk-color-on-primary: var(--sbk-branco);
65
- --sbk-color-primary-subtle: color-mix(in srgb, var(--sbk-verde-claro) 10%, var(--sbk-branco));
66
- --sbk-color-secondary: var(--sbk-ciano-escuro);
67
- --sbk-color-secondary-hover: var(--sbk-ciano-profundo);
68
- --sbk-color-on-secondary: var(--sbk-branco);
69
- --sbk-color-accent: var(--sbk-ciano);
70
- --sbk-color-highlight-bg: var(--sbk-ciano-escuro);
71
- --sbk-color-highlight-fg: var(--sbk-branco);
72
- --sbk-color-focus: var(--sbk-ciano);
73
-
74
- /* Estados */
75
- --sbk-color-success: var(--sbk-estado-sucesso);
76
- --sbk-color-success-subtle: color-mix(in srgb, var(--sbk-estado-sucesso) 10%, var(--sbk-branco));
77
- --sbk-color-warning: var(--sbk-estado-alerta);
78
- --sbk-color-warning-subtle: color-mix(in srgb, var(--sbk-estado-alerta) 10%, var(--sbk-branco));
79
- --sbk-color-error: var(--sbk-estado-erro);
80
- --sbk-color-error-subtle: color-mix(in srgb, var(--sbk-estado-erro) 10%, var(--sbk-branco));
81
- --sbk-color-info: var(--sbk-estado-info);
82
- --sbk-color-info-subtle: color-mix(in srgb, var(--sbk-estado-info) 10%, var(--sbk-branco));
83
- --sbk-color-on-state: var(--sbk-branco);
84
- /* Cores de estado para TEXTO e ícones (no escuro ficam mais claras para manter contraste) */
85
- --sbk-color-success-fg: var(--sbk-estado-sucesso);
86
- --sbk-color-warning-fg: var(--sbk-estado-alerta);
87
- --sbk-color-error-fg: var(--sbk-estado-erro);
88
- --sbk-color-info-fg: var(--sbk-estado-info);
89
-
90
- /* Tipografia: somente dois pesos (brand book) */
91
- --sbk-font-family: 'Plus Jakarta Sans', Calibri, system-ui, sans-serif;
92
- --sbk-font-weight-heading: 600; /* Seminegrito */
93
- --sbk-font-weight-body: 300; /* Leve */
94
-
95
- /* Raio: brand book define 8 a 16 para cards e blocos.
96
- xs (4px) existe apenas para controles de 16px, como checkbox. */
97
- --sbk-radius-xs: 0.25rem;
98
- --sbk-radius-sm: 0.5rem;
99
- --sbk-radius-md: 0.75rem;
100
- --sbk-radius-lg: 1rem;
101
-
102
- /* Sombras leves, tingidas de verde escuro (sem sombras pesadas) */
103
- --sbk-shadow-sm: 0 0.0625rem 0.125rem rgb(2 54 49 / 0.06), 0 0.5rem 1.5rem rgb(2 54 49 / 0.05);
104
- --sbk-shadow-md: 0 0.25rem 0.5rem rgb(2 54 49 / 0.06), 0 0.75rem 2rem rgb(2 54 49 / 0.1);
105
-
106
- /* Opacidade de cards sobrepostos (brand book: 60% a 90%) */
107
- --sbk-card-layer-opacity-1: 0.9;
108
- --sbk-card-layer-opacity-2: 0.75;
109
- --sbk-card-layer-opacity-3: 0.6;
110
-
111
- /* Movimento */
112
- --sbk-duration-fast: 150ms;
113
- --sbk-duration-normal: 250ms;
114
- --sbk-duration-slow: 400ms;
115
- --sbk-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
116
-
117
- /* Liquid Glass (opt-in): translucidez tingida de verde, desfoque com saturação,
118
- borda especular e brilho interno. Fallback opaco em prefers-reduced-transparency
119
- e em navegadores sem backdrop-filter (ver styles/glass.css). */
120
- --sbk-glass-bg: color-mix(in srgb, var(--sbk-branco) 55%, transparent);
121
- --sbk-glass-bg-strong: color-mix(in srgb, var(--sbk-branco) 72%, transparent);
122
- --sbk-glass-tint: color-mix(in srgb, var(--sbk-verde-claro) 6%, transparent);
123
- --sbk-glass-border: color-mix(in srgb, var(--sbk-branco) 70%, transparent);
124
- --sbk-glass-highlight: color-mix(in srgb, var(--sbk-branco) 85%, transparent);
125
- --sbk-glass-blur: 20px;
126
- --sbk-glass-saturate: 180%;
127
- --sbk-glass-shadow: 0 0.5rem 2rem rgb(2 54 49 / 0.12);
128
- --sbk-glass-fallback: var(--sbk-color-surface);
129
-
130
- /* Camadas */
131
- --sbk-z-dropdown: 1000;
132
- --sbk-z-sticky: 1010;
133
- --sbk-z-modal: 1050;
134
- --sbk-z-toast: 1100;
135
- --sbk-z-tooltip: 1200;
136
- }
137
-
138
- /* ---------- Tema institucional SBK (marca-mãe) ---------- */
139
- [data-brand='sbk'] {
140
- --sbk-color-primary: var(--sbk-verde-escuro);
141
- --sbk-color-primary-hover: var(--sbk-verde-profundo);
142
- --sbk-color-primary-subtle: color-mix(in srgb, var(--sbk-verde-escuro) 10%, var(--sbk-branco));
143
- --sbk-color-accent: var(--sbk-ciano-escuro);
144
- }
145
-
146
- /* ---------- Modo escuro (proposta: o brand book não define tema dark completo) ---------- */
147
- [data-theme='dark'],
148
- .theme-dark {
149
- --sbk-color-bg: var(--sbk-verde-profundo);
150
- --sbk-color-surface: color-mix(in srgb, var(--sbk-verde-escuro) 70%, var(--sbk-verde-profundo));
151
- --sbk-color-surface-sunken: var(--sbk-verde-profundo);
152
- --sbk-color-surface-hover: color-mix(in srgb, var(--sbk-off-white) 6%, var(--sbk-verde-escuro));
153
- /* Blocos de marca (Header, SideNav escuro, Card inverse) continuam escuros no tema escuro */
154
- --sbk-color-surface-inverse: var(--sbk-ciano-profundo);
155
- --sbk-color-overlay: color-mix(in srgb, var(--sbk-preto) 65%, transparent);
156
-
157
- --sbk-color-fg: var(--sbk-off-white);
158
- --sbk-color-fg-heading: var(--sbk-branco);
159
- --sbk-color-fg-muted: color-mix(in srgb, var(--sbk-off-white) 72%, var(--sbk-verde-escuro));
160
- --sbk-color-fg-inverse: var(--sbk-branco);
161
-
162
- --sbk-color-line: color-mix(in srgb, var(--sbk-off-white) 16%, var(--sbk-verde-escuro));
163
- --sbk-color-line-strong: color-mix(in srgb, var(--sbk-off-white) 45%, var(--sbk-verde-escuro));
164
-
165
- --sbk-color-primary: var(--sbk-ciano);
166
- --sbk-color-primary-hover: var(--sbk-verde-claro);
167
- --sbk-color-on-primary: var(--sbk-branco);
168
- --sbk-color-primary-subtle: color-mix(in srgb, var(--sbk-ciano) 22%, var(--sbk-verde-profundo));
169
- --sbk-color-secondary: var(--sbk-verde-claro);
170
- --sbk-color-secondary-hover: var(--sbk-ciano-escuro);
171
- --sbk-color-focus: var(--sbk-off-white);
172
-
173
- --sbk-color-success-fg: color-mix(in srgb, var(--sbk-estado-sucesso) 45%, var(--sbk-branco));
174
- --sbk-color-warning-fg: color-mix(in srgb, var(--sbk-estado-alerta) 50%, var(--sbk-branco));
175
- --sbk-color-error-fg: color-mix(in srgb, var(--sbk-estado-erro) 45%, var(--sbk-branco));
176
- --sbk-color-info-fg: color-mix(in srgb, var(--sbk-ciano) 45%, var(--sbk-branco));
177
-
178
- --sbk-color-success-subtle: color-mix(
179
- in srgb,
180
- var(--sbk-estado-sucesso) 28%,
181
- var(--sbk-verde-profundo)
182
- );
183
- --sbk-color-warning-subtle: color-mix(
184
- in srgb,
185
- var(--sbk-estado-alerta) 28%,
186
- var(--sbk-verde-profundo)
187
- );
188
- --sbk-color-error-subtle: color-mix(
189
- in srgb,
190
- var(--sbk-estado-erro) 28%,
191
- var(--sbk-verde-profundo)
192
- );
193
- --sbk-color-info-subtle: color-mix(in srgb, var(--sbk-ciano) 28%, var(--sbk-verde-profundo));
194
-
195
- --sbk-shadow-sm: 0 0.0625rem 0.125rem rgb(0 0 0 / 0.3), 0 0.5rem 1.5rem rgb(0 0 0 / 0.25);
196
- --sbk-shadow-md: 0 0.25rem 0.5rem rgb(0 0 0 / 0.3), 0 0.75rem 2rem rgb(0 0 0 / 0.4);
197
-
198
- --sbk-glass-bg: color-mix(in srgb, var(--sbk-verde-escuro) 45%, transparent);
199
- --sbk-glass-bg-strong: color-mix(in srgb, var(--sbk-verde-escuro) 65%, transparent);
200
- --sbk-glass-tint: color-mix(in srgb, var(--sbk-ciano) 10%, transparent);
201
- --sbk-glass-border: color-mix(in srgb, var(--sbk-branco) 18%, transparent);
202
- --sbk-glass-highlight: color-mix(in srgb, var(--sbk-branco) 28%, transparent);
203
- --sbk-glass-shadow: 0 0.5rem 2rem rgb(0 0 0 / 0.35);
204
- }
205
-
206
- /* ============================================================
207
- 4. ALIASES LEGADOS (1.x): deprecados, serão removidos na 3.0.
208
- Mantidos para CSS de consumidores que lê essas variáveis.
209
- Os componentes da 2.x NÃO leem estes nomes: sobrescrever
210
- --md-primary não altera mais o Button. Use --sbk-color-primary.
211
- ============================================================ */
212
- :root {
213
- --brand-verde-vibrante: var(--sbk-verde-claro);
214
- --brand-verde-profundo: var(--sbk-verde-escuro);
215
- --brand-verde-medio: var(--sbk-ciano);
216
- --brand-grafite-azulado: var(--sbk-ciano-profundo);
217
- --brand-azul-acinzentado: var(--sbk-chumbo-leve);
218
- --brand-cinza-medio: var(--sbk-chumbo-leve);
219
- --brand-cinza-escuro: var(--sbk-verde-profundo);
220
- --brand-off-white: var(--sbk-off-white);
221
- --brand-off-white-gelo: var(--sbk-off-white);
222
- --brand-branco: var(--sbk-branco);
223
- --brand-preto: var(--sbk-preto);
224
-
225
- --font-primary: var(--sbk-font-family);
226
- --font-heading: var(--sbk-font-family);
227
- --font-body: var(--sbk-font-family);
228
- --font-weight-light: 300;
229
- --font-weight-semibold: 600;
230
-
231
- --border-radius-sm: var(--sbk-radius-sm);
232
- --border-radius-md: var(--sbk-radius-sm);
233
- --border-radius-lg: var(--sbk-radius-md);
234
- --border-radius-2xl: var(--sbk-radius-lg);
235
-
236
- --z-index-dropdown: var(--sbk-z-dropdown);
237
- --z-index-modal-backdrop: var(--sbk-z-modal);
238
- --z-index-modal: var(--sbk-z-modal);
239
-
240
- --border-width-thin: 0.0625rem;
241
-
242
- --spacing-xs: 0.25rem;
243
- --spacing-sm: 0.5rem;
244
- --spacing-md: 0.75rem;
245
- --spacing-lg: 1rem;
246
- --spacing-xl: 1.5rem;
247
- --spacing-2xl: 2rem;
248
- --spacing-3xl: 2.5rem;
249
-
250
- --font-size-xs: 0.75rem;
251
- --font-size-sm: 0.875rem;
252
- --font-size-base: 1rem;
253
- --font-size-md: 1.125rem;
254
- --font-size-lg: 1.25rem;
255
- --font-size-xl: 1.5rem;
256
- --font-size-2xl: 1.75rem;
257
- --font-size-3xl: 2rem;
258
- --font-size-4xl: 2.5rem;
259
- /* --font-weight-normal/medium/bold não são redefinidos: colidiriam com as variáveis
260
- do Tailwind 4 (font-normal, font-medium, font-bold) nos apps consumidores. */
261
- --line-height-tight: 1.2;
262
- --line-height-normal: 1.5;
263
- --line-height-relaxed: 1.6;
264
- --line-height-loose: 1.8;
265
-
266
- --transition-base: var(--sbk-duration-normal) ease;
267
- --transition-all: all var(--transition-base);
268
- --transition-colors:
269
- color var(--transition-base), background-color var(--transition-base),
270
- border-color var(--transition-base);
271
-
272
- --motion-duration-fast: var(--sbk-duration-fast);
273
- --motion-duration-normal: var(--sbk-duration-normal);
274
- --motion-duration-slow: var(--sbk-duration-slow);
275
- --motion-easing-standard: var(--sbk-easing-standard);
276
- }
277
-
278
- :root,
279
- [data-brand='sbk'],
280
- [data-theme='dark'],
281
- .theme-dark {
282
- --primary-color: var(--sbk-color-primary);
283
- --primary-color-hover: var(--sbk-color-primary-hover);
284
- --secondary-color: var(--sbk-color-accent);
285
- --accent-color: var(--sbk-color-accent);
286
- --md-primary: var(--sbk-color-primary);
287
- --md-on-primary: var(--sbk-color-on-primary);
288
- --md-primary-container: var(--sbk-color-primary-subtle);
289
- --md-secondary: var(--sbk-color-secondary);
290
- --md-on-secondary: var(--sbk-branco);
291
- --md-surface: var(--sbk-color-surface);
292
- --md-on-surface: var(--sbk-color-fg);
293
- --md-on-surface-variant: var(--sbk-color-fg-muted);
294
- --md-surface-container: var(--sbk-color-surface-sunken);
295
- --md-surface-container-high: var(--sbk-color-surface-sunken);
296
- --md-outline: var(--sbk-color-line-strong);
297
- --md-outline-variant: var(--sbk-color-line);
298
- --md-error: var(--sbk-color-error);
299
- --md-on-error: var(--sbk-color-on-state);
300
- --color-primary: var(--sbk-color-primary);
301
- --color-on-primary: var(--sbk-color-on-primary);
302
- --color-surface: var(--sbk-color-surface);
303
- --color-on-surface: var(--sbk-color-fg);
304
- --success-color: var(--sbk-color-success);
305
- --warning-color: var(--sbk-color-warning);
306
- --error-color: var(--sbk-color-error);
307
- --info-color: var(--sbk-color-info);
308
- --bg-page: var(--sbk-color-bg);
309
- --bg-primary: var(--sbk-color-bg);
310
- --bg-secondary: var(--sbk-color-surface);
311
- --bg-tertiary: var(--sbk-color-surface-sunken);
312
- --bg-card: var(--sbk-color-surface);
313
- --bg-card-border: var(--sbk-color-line);
314
- --bg-hover: var(--sbk-color-surface-hover);
315
- --text-primary: var(--sbk-color-fg);
316
- --text-secondary: var(--sbk-color-fg-muted);
317
- --text-muted: var(--sbk-color-fg-muted);
318
- --text-on-primary: var(--sbk-color-on-primary);
319
- --border-color: var(--sbk-color-line);
320
- --border-color-hover: var(--sbk-color-line-strong);
321
- --border-color-focus: var(--sbk-color-focus);
322
- --shadow-sm: var(--sbk-shadow-sm);
323
- --shadow-md: var(--sbk-shadow-md);
324
- --shadow-lg: var(--sbk-shadow-md);
325
- --shadow-xs: var(--sbk-shadow-sm);
326
- --md-on-primary-container: var(--sbk-color-fg-heading);
327
- }
1
+ /* ============================================================
2
+ @sbkbs/ui · Design tokens (Brand Book SBK 2026)
3
+ Fonte de verdade: docs/SBK_BRAND_GUIDE.md
4
+
5
+ Camadas:
6
+ 1. Paleta oficial --sbk-<nome> (valores literais do brand book)
7
+ 2. Semânticos --sbk-color-<uso> (o que os componentes consomem)
8
+ 3. Escalas --sbk-radius-*, --sbk-shadow-*, --sbk-font-*, --sbk-duration-*
9
+ 4. Aliases legados --md-*, --brand-*, --bg-*, --text-* (deprecados, removidos na 3.0)
10
+
11
+ Temas:
12
+ - Padrão: SBK IA (produto digital)
13
+ - [data-brand='sbk']: SBK institucional (marca-mãe)
14
+ - [data-theme='dark']: modo escuro (proposta, a validar com marca)
15
+ ============================================================ */
16
+
17
+ /* ---------- 1. Paleta oficial ---------- */
18
+ :root {
19
+ /* Primária */
20
+ --sbk-verde-escuro: #023631;
21
+ --sbk-ciano-escuro: #075056;
22
+ --sbk-off-white: #eceff3;
23
+
24
+ /* Secundária */
25
+ --sbk-verde-claro: #0a5a52;
26
+ --sbk-verde-profundo: #012824;
27
+ --sbk-ciano: #2a7c79;
28
+ --sbk-ciano-profundo: #0e4442;
29
+ --sbk-chumbo-leve: #4a545e;
30
+ --sbk-preto: #000000;
31
+ --sbk-branco: #ffffff;
32
+
33
+ /* Estados: fora do brand book, PROPOSTA pendente de aprovação da marca.
34
+ Tons sóbrios, todos com contraste AA (>= 4.5:1) sobre branco. */
35
+ --sbk-estado-sucesso: #1d6b43;
36
+ --sbk-estado-alerta: #b45309;
37
+ --sbk-estado-erro: #b42318;
38
+ --sbk-estado-info: var(--sbk-ciano-escuro);
39
+ }
40
+
41
+ /* ---------- 2 e 3. Semânticos e escalas (tema SBK IA, claro) ---------- */
42
+ :root {
43
+ /* Fundos e superfícies */
44
+ --sbk-color-bg: var(--sbk-off-white);
45
+ --sbk-color-surface: var(--sbk-branco);
46
+ --sbk-color-surface-sunken: var(--sbk-off-white);
47
+ --sbk-color-surface-hover: color-mix(in srgb, var(--sbk-verde-escuro) 5%, var(--sbk-branco));
48
+ --sbk-color-surface-inverse: var(--sbk-verde-escuro);
49
+ --sbk-color-overlay: color-mix(in srgb, var(--sbk-verde-profundo) 60%, transparent);
50
+
51
+ /* Texto */
52
+ --sbk-color-fg: var(--sbk-preto);
53
+ --sbk-color-fg-heading: var(--sbk-verde-escuro);
54
+ --sbk-color-fg-muted: var(--sbk-chumbo-leve);
55
+ --sbk-color-fg-inverse: var(--sbk-branco);
56
+
57
+ /* Linhas: derivadas da paleta. line-strong tem >= 3:1 sobre branco (WCAG 1.4.11) */
58
+ --sbk-color-line: color-mix(in srgb, var(--sbk-chumbo-leve) 22%, var(--sbk-branco));
59
+ --sbk-color-line-strong: color-mix(in srgb, var(--sbk-chumbo-leve) 65%, var(--sbk-branco));
60
+
61
+ /* Marca */
62
+ --sbk-color-primary: var(--sbk-verde-claro);
63
+ --sbk-color-primary-hover: var(--sbk-verde-escuro);
64
+ --sbk-color-on-primary: var(--sbk-branco);
65
+ --sbk-color-primary-subtle: color-mix(in srgb, var(--sbk-verde-claro) 10%, var(--sbk-branco));
66
+ --sbk-color-secondary: var(--sbk-ciano-escuro);
67
+ --sbk-color-secondary-hover: var(--sbk-ciano-profundo);
68
+ --sbk-color-on-secondary: var(--sbk-branco);
69
+ --sbk-color-accent: var(--sbk-ciano);
70
+ --sbk-color-highlight-bg: var(--sbk-ciano-escuro);
71
+ --sbk-color-highlight-fg: var(--sbk-branco);
72
+ --sbk-color-focus: var(--sbk-ciano);
73
+
74
+ /* Estados */
75
+ --sbk-color-success: var(--sbk-estado-sucesso);
76
+ --sbk-color-success-subtle: color-mix(in srgb, var(--sbk-estado-sucesso) 10%, var(--sbk-branco));
77
+ --sbk-color-warning: var(--sbk-estado-alerta);
78
+ --sbk-color-warning-subtle: color-mix(in srgb, var(--sbk-estado-alerta) 10%, var(--sbk-branco));
79
+ --sbk-color-error: var(--sbk-estado-erro);
80
+ --sbk-color-error-subtle: color-mix(in srgb, var(--sbk-estado-erro) 10%, var(--sbk-branco));
81
+ --sbk-color-info: var(--sbk-estado-info);
82
+ --sbk-color-info-subtle: color-mix(in srgb, var(--sbk-estado-info) 10%, var(--sbk-branco));
83
+ --sbk-color-on-state: var(--sbk-branco);
84
+ /* Cores de estado para TEXTO e ícones (no escuro ficam mais claras para manter contraste) */
85
+ --sbk-color-success-fg: var(--sbk-estado-sucesso);
86
+ --sbk-color-warning-fg: var(--sbk-estado-alerta);
87
+ --sbk-color-error-fg: var(--sbk-estado-erro);
88
+ --sbk-color-info-fg: var(--sbk-estado-info);
89
+
90
+ /* Tipografia: somente dois pesos (brand book) */
91
+ --sbk-font-family: 'Plus Jakarta Sans', Calibri, system-ui, sans-serif;
92
+ --sbk-font-weight-heading: 600; /* Seminegrito */
93
+ --sbk-font-weight-body: 300; /* Leve */
94
+
95
+ /* Raio: brand book define 8 a 16 para cards e blocos.
96
+ xs (4px) existe apenas para controles de 16px, como checkbox. */
97
+ --sbk-radius-xs: 0.25rem;
98
+ --sbk-radius-sm: 0.5rem;
99
+ --sbk-radius-md: 0.75rem;
100
+ --sbk-radius-lg: 1rem;
101
+
102
+ /* Sombras leves, tingidas de verde escuro (sem sombras pesadas) */
103
+ --sbk-shadow-sm: 0 0.0625rem 0.125rem rgb(2 54 49 / 0.06), 0 0.5rem 1.5rem rgb(2 54 49 / 0.05);
104
+ --sbk-shadow-md: 0 0.25rem 0.5rem rgb(2 54 49 / 0.06), 0 0.75rem 2rem rgb(2 54 49 / 0.1);
105
+
106
+ /* Opacidade de cards sobrepostos (brand book: 60% a 90%) */
107
+ --sbk-card-layer-opacity-1: 0.9;
108
+ --sbk-card-layer-opacity-2: 0.75;
109
+ --sbk-card-layer-opacity-3: 0.6;
110
+
111
+ /* Movimento */
112
+ --sbk-duration-fast: 150ms;
113
+ --sbk-duration-normal: 250ms;
114
+ --sbk-duration-slow: 400ms;
115
+ --sbk-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
116
+
117
+ /* Liquid Glass (opt-in): translucidez tingida de verde, desfoque com saturação,
118
+ borda especular e brilho interno. Fallback opaco em prefers-reduced-transparency
119
+ e em navegadores sem backdrop-filter (ver styles/glass.css). */
120
+ --sbk-glass-bg: color-mix(in srgb, var(--sbk-branco) 55%, transparent);
121
+ --sbk-glass-bg-strong: color-mix(in srgb, var(--sbk-branco) 72%, transparent);
122
+ --sbk-glass-tint: color-mix(in srgb, var(--sbk-verde-claro) 6%, transparent);
123
+ --sbk-glass-border: color-mix(in srgb, var(--sbk-branco) 70%, transparent);
124
+ --sbk-glass-highlight: color-mix(in srgb, var(--sbk-branco) 85%, transparent);
125
+ --sbk-glass-blur: 20px;
126
+ --sbk-glass-saturate: 180%;
127
+ --sbk-glass-shadow: 0 0.5rem 2rem rgb(2 54 49 / 0.12);
128
+ --sbk-glass-fallback: var(--sbk-color-surface);
129
+
130
+ /* Camadas */
131
+ --sbk-z-dropdown: 1000;
132
+ --sbk-z-sticky: 1010;
133
+ --sbk-z-modal: 1050;
134
+ --sbk-z-toast: 1100;
135
+ --sbk-z-tooltip: 1200;
136
+ }
137
+
138
+ /* ---------- Tema institucional SBK (marca-mãe) ---------- */
139
+ [data-brand='sbk'] {
140
+ --sbk-color-primary: var(--sbk-verde-escuro);
141
+ --sbk-color-primary-hover: var(--sbk-verde-profundo);
142
+ --sbk-color-primary-subtle: color-mix(in srgb, var(--sbk-verde-escuro) 10%, var(--sbk-branco));
143
+ --sbk-color-accent: var(--sbk-ciano-escuro);
144
+ }
145
+
146
+ /* ---------- Modo escuro (proposta: o brand book não define tema dark completo) ---------- */
147
+ [data-theme='dark'],
148
+ .theme-dark {
149
+ --sbk-color-bg: var(--sbk-verde-profundo);
150
+ --sbk-color-surface: color-mix(in srgb, var(--sbk-verde-escuro) 70%, var(--sbk-verde-profundo));
151
+ --sbk-color-surface-sunken: var(--sbk-verde-profundo);
152
+ --sbk-color-surface-hover: color-mix(in srgb, var(--sbk-off-white) 6%, var(--sbk-verde-escuro));
153
+ /* Blocos de marca (Header, SideNav escuro, Card inverse) continuam escuros no tema escuro */
154
+ --sbk-color-surface-inverse: var(--sbk-ciano-profundo);
155
+ --sbk-color-overlay: color-mix(in srgb, var(--sbk-preto) 65%, transparent);
156
+
157
+ --sbk-color-fg: var(--sbk-off-white);
158
+ --sbk-color-fg-heading: var(--sbk-branco);
159
+ --sbk-color-fg-muted: color-mix(in srgb, var(--sbk-off-white) 72%, var(--sbk-verde-escuro));
160
+ --sbk-color-fg-inverse: var(--sbk-branco);
161
+
162
+ --sbk-color-line: color-mix(in srgb, var(--sbk-off-white) 16%, var(--sbk-verde-escuro));
163
+ --sbk-color-line-strong: color-mix(in srgb, var(--sbk-off-white) 45%, var(--sbk-verde-escuro));
164
+
165
+ --sbk-color-primary: var(--sbk-ciano);
166
+ --sbk-color-primary-hover: var(--sbk-verde-claro);
167
+ --sbk-color-on-primary: var(--sbk-branco);
168
+ --sbk-color-primary-subtle: color-mix(in srgb, var(--sbk-ciano) 22%, var(--sbk-verde-profundo));
169
+ --sbk-color-secondary: var(--sbk-verde-claro);
170
+ --sbk-color-secondary-hover: var(--sbk-ciano-escuro);
171
+ --sbk-color-focus: var(--sbk-off-white);
172
+
173
+ --sbk-color-success-fg: color-mix(in srgb, var(--sbk-estado-sucesso) 45%, var(--sbk-branco));
174
+ --sbk-color-warning-fg: color-mix(in srgb, var(--sbk-estado-alerta) 50%, var(--sbk-branco));
175
+ --sbk-color-error-fg: color-mix(in srgb, var(--sbk-estado-erro) 45%, var(--sbk-branco));
176
+ --sbk-color-info-fg: color-mix(in srgb, var(--sbk-ciano) 45%, var(--sbk-branco));
177
+
178
+ --sbk-color-success-subtle: color-mix(
179
+ in srgb,
180
+ var(--sbk-estado-sucesso) 28%,
181
+ var(--sbk-verde-profundo)
182
+ );
183
+ --sbk-color-warning-subtle: color-mix(
184
+ in srgb,
185
+ var(--sbk-estado-alerta) 28%,
186
+ var(--sbk-verde-profundo)
187
+ );
188
+ --sbk-color-error-subtle: color-mix(
189
+ in srgb,
190
+ var(--sbk-estado-erro) 28%,
191
+ var(--sbk-verde-profundo)
192
+ );
193
+ --sbk-color-info-subtle: color-mix(in srgb, var(--sbk-ciano) 28%, var(--sbk-verde-profundo));
194
+
195
+ --sbk-shadow-sm: 0 0.0625rem 0.125rem rgb(0 0 0 / 0.3), 0 0.5rem 1.5rem rgb(0 0 0 / 0.25);
196
+ --sbk-shadow-md: 0 0.25rem 0.5rem rgb(0 0 0 / 0.3), 0 0.75rem 2rem rgb(0 0 0 / 0.4);
197
+
198
+ --sbk-glass-bg: color-mix(in srgb, var(--sbk-verde-escuro) 45%, transparent);
199
+ --sbk-glass-bg-strong: color-mix(in srgb, var(--sbk-verde-escuro) 65%, transparent);
200
+ --sbk-glass-tint: color-mix(in srgb, var(--sbk-ciano) 10%, transparent);
201
+ --sbk-glass-border: color-mix(in srgb, var(--sbk-branco) 18%, transparent);
202
+ --sbk-glass-highlight: color-mix(in srgb, var(--sbk-branco) 28%, transparent);
203
+ --sbk-glass-shadow: 0 0.5rem 2rem rgb(0 0 0 / 0.35);
204
+ }
205
+
206
+ /* ============================================================
207
+ 4. ALIASES LEGADOS (1.x): deprecados, serão removidos na 3.0.
208
+ Mantidos para CSS de consumidores que lê essas variáveis.
209
+ Os componentes da 2.x NÃO leem estes nomes: sobrescrever
210
+ --md-primary não altera mais o Button. Use --sbk-color-primary.
211
+ ============================================================ */
212
+ :root {
213
+ --brand-verde-vibrante: var(--sbk-verde-claro);
214
+ --brand-verde-profundo: var(--sbk-verde-escuro);
215
+ --brand-verde-medio: var(--sbk-ciano);
216
+ --brand-grafite-azulado: var(--sbk-ciano-profundo);
217
+ --brand-azul-acinzentado: var(--sbk-chumbo-leve);
218
+ --brand-cinza-medio: var(--sbk-chumbo-leve);
219
+ --brand-cinza-escuro: var(--sbk-verde-profundo);
220
+ --brand-off-white: var(--sbk-off-white);
221
+ --brand-off-white-gelo: var(--sbk-off-white);
222
+ --brand-branco: var(--sbk-branco);
223
+ --brand-preto: var(--sbk-preto);
224
+
225
+ --font-primary: var(--sbk-font-family);
226
+ --font-heading: var(--sbk-font-family);
227
+ --font-body: var(--sbk-font-family);
228
+ --font-weight-light: 300;
229
+ --font-weight-semibold: 600;
230
+
231
+ --border-radius-sm: var(--sbk-radius-sm);
232
+ --border-radius-md: var(--sbk-radius-sm);
233
+ --border-radius-lg: var(--sbk-radius-md);
234
+ --border-radius-2xl: var(--sbk-radius-lg);
235
+
236
+ --z-index-dropdown: var(--sbk-z-dropdown);
237
+ --z-index-modal-backdrop: var(--sbk-z-modal);
238
+ --z-index-modal: var(--sbk-z-modal);
239
+
240
+ --border-width-thin: 0.0625rem;
241
+
242
+ --spacing-xs: 0.25rem;
243
+ --spacing-sm: 0.5rem;
244
+ --spacing-md: 0.75rem;
245
+ --spacing-lg: 1rem;
246
+ --spacing-xl: 1.5rem;
247
+ --spacing-2xl: 2rem;
248
+ --spacing-3xl: 2.5rem;
249
+
250
+ --font-size-xs: 0.75rem;
251
+ --font-size-sm: 0.875rem;
252
+ --font-size-base: 1rem;
253
+ --font-size-md: 1.125rem;
254
+ --font-size-lg: 1.25rem;
255
+ --font-size-xl: 1.5rem;
256
+ --font-size-2xl: 1.75rem;
257
+ --font-size-3xl: 2rem;
258
+ --font-size-4xl: 2.5rem;
259
+ /* --font-weight-normal/medium/bold não são redefinidos: colidiriam com as variáveis
260
+ do Tailwind 4 (font-normal, font-medium, font-bold) nos apps consumidores. */
261
+ --line-height-tight: 1.2;
262
+ --line-height-normal: 1.5;
263
+ --line-height-relaxed: 1.6;
264
+ --line-height-loose: 1.8;
265
+
266
+ --transition-base: var(--sbk-duration-normal) ease;
267
+ --transition-all: all var(--transition-base);
268
+ --transition-colors:
269
+ color var(--transition-base), background-color var(--transition-base),
270
+ border-color var(--transition-base);
271
+
272
+ --motion-duration-fast: var(--sbk-duration-fast);
273
+ --motion-duration-normal: var(--sbk-duration-normal);
274
+ --motion-duration-slow: var(--sbk-duration-slow);
275
+ --motion-easing-standard: var(--sbk-easing-standard);
276
+ }
277
+
278
+ :root,
279
+ [data-brand='sbk'],
280
+ [data-theme='dark'],
281
+ .theme-dark {
282
+ --primary-color: var(--sbk-color-primary);
283
+ --primary-color-hover: var(--sbk-color-primary-hover);
284
+ --secondary-color: var(--sbk-color-accent);
285
+ --accent-color: var(--sbk-color-accent);
286
+ --md-primary: var(--sbk-color-primary);
287
+ --md-on-primary: var(--sbk-color-on-primary);
288
+ --md-primary-container: var(--sbk-color-primary-subtle);
289
+ --md-secondary: var(--sbk-color-secondary);
290
+ --md-on-secondary: var(--sbk-branco);
291
+ --md-surface: var(--sbk-color-surface);
292
+ --md-on-surface: var(--sbk-color-fg);
293
+ --md-on-surface-variant: var(--sbk-color-fg-muted);
294
+ --md-surface-container: var(--sbk-color-surface-sunken);
295
+ --md-surface-container-high: var(--sbk-color-surface-sunken);
296
+ --md-outline: var(--sbk-color-line-strong);
297
+ --md-outline-variant: var(--sbk-color-line);
298
+ --md-error: var(--sbk-color-error);
299
+ --md-on-error: var(--sbk-color-on-state);
300
+ --color-primary: var(--sbk-color-primary);
301
+ --color-on-primary: var(--sbk-color-on-primary);
302
+ --color-surface: var(--sbk-color-surface);
303
+ --color-on-surface: var(--sbk-color-fg);
304
+ --success-color: var(--sbk-color-success);
305
+ --warning-color: var(--sbk-color-warning);
306
+ --error-color: var(--sbk-color-error);
307
+ --info-color: var(--sbk-color-info);
308
+ --bg-page: var(--sbk-color-bg);
309
+ --bg-primary: var(--sbk-color-bg);
310
+ --bg-secondary: var(--sbk-color-surface);
311
+ --bg-tertiary: var(--sbk-color-surface-sunken);
312
+ --bg-card: var(--sbk-color-surface);
313
+ --bg-card-border: var(--sbk-color-line);
314
+ --bg-hover: var(--sbk-color-surface-hover);
315
+ --text-primary: var(--sbk-color-fg);
316
+ --text-secondary: var(--sbk-color-fg-muted);
317
+ --text-muted: var(--sbk-color-fg-muted);
318
+ --text-on-primary: var(--sbk-color-on-primary);
319
+ --border-color: var(--sbk-color-line);
320
+ --border-color-hover: var(--sbk-color-line-strong);
321
+ --border-color-focus: var(--sbk-color-focus);
322
+ --shadow-sm: var(--sbk-shadow-sm);
323
+ --shadow-md: var(--sbk-shadow-md);
324
+ --shadow-lg: var(--sbk-shadow-md);
325
+ --shadow-xs: var(--sbk-shadow-sm);
326
+ --md-on-primary-container: var(--sbk-color-fg-heading);
327
+ }