zark-design 2.0.0 → 3.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.
@@ -14,19 +14,19 @@
14
14
  ============================================================ */
15
15
  :root {
16
16
  /* Brand / Ember */
17
- --ember-50: #fff3e9;
18
- --ember-100: #ffe1c8;
19
- --ember-200: #ffc28e;
20
- --ember-300: #ffa056;
21
- --ember-400: #ff8a3a;
22
- --ember-500: #f56f10;
23
- --ember-600: #d45e0d;
24
- --ember-700: #ad4a09;
25
- --ember-800: #843706;
26
- --ember-900: #5e2704;
27
- --liquid-lava: #f56f10;
28
- --dark-void: #151419;
29
- --glucon-grey: #1b1a1e;
17
+ --brand-50: #fff3e9;
18
+ --brand-100: #ffe1c8;
19
+ --brand-200: #ffc28e;
20
+ --brand-300: #ffa056;
21
+ --brand-400: #ff8a3a;
22
+ --brand-500: #f56f10;
23
+ --brand-600: #d45e0d;
24
+ --brand-700: #ad4a09;
25
+ --brand-800: #843706;
26
+ --brand-900: #5e2704;
27
+ --brand: #f56f10;
28
+ --bg-void: #151419;
29
+ --bg-glucon: #1b1a1e;
30
30
 
31
31
  /* Neutrals */
32
32
  --paper: #fafaf8;
@@ -118,7 +118,7 @@
118
118
  /* ---------- SPACE / CLIENTE COLORS (CRM) ----------
119
119
  Cor única por espaço — usada em ícone, tag, avatar, accent.
120
120
  Sempre tom mais saturado (500) + tom suave (50/100) para bg leve. */
121
- --space-zark: #f56f10; /* ember-500 — brand */
121
+ --space-zark: #f56f10; /* brand-500 — brand */
122
122
  --space-zark-soft: #fff3e9;
123
123
  --space-allsec: #c2410c; /* burnt orange */
124
124
  --space-allsec-soft: #fff3e9;
@@ -135,10 +135,10 @@
135
135
  }
136
136
 
137
137
  [data-theme="dark"] {
138
- --ember-50: #2a1810; --ember-100: #3d2114; --ember-200: #5e2704;
139
- --ember-300: #843706; --ember-400: #ad4a09; --ember-500: #f56f10;
140
- --ember-600: #ff8a3a; --ember-700: #ffa056; --ember-800: #ffc28e;
141
- --ember-900: #ffe1c8;
138
+ --brand-50: #2a1810; --brand-100: #3d2114; --brand-200: #5e2704;
139
+ --brand-300: #843706; --brand-400: #ad4a09; --brand-500: #f56f10;
140
+ --brand-600: #ff8a3a; --brand-700: #ffa056; --brand-800: #ffc28e;
141
+ --brand-900: #ffe1c8;
142
142
 
143
143
  --paper: #0e0d11; --canvas: #151419; --surface: #1b1a1e;
144
144
  --line-100: #232227; --line-200: #2c2b32; --line-300: #3a383f;
@@ -182,7 +182,7 @@ html, body {
182
182
  -webkit-font-smoothing: antialiased;
183
183
  text-rendering: optimizeLegibility;
184
184
  }
185
- ::selection { background: var(--ember-200); color: var(--ink-700); }
185
+ ::selection { background: var(--brand-200); color: var(--ink-700); }
186
186
  a { color: inherit; text-decoration: none; }
187
187
  button { font-family: inherit; }
188
188
 
@@ -240,8 +240,8 @@ button { font-family: inherit; }
240
240
  }
241
241
  .sidebar-link:hover { background: var(--ink-50); color: var(--ink-700); }
242
242
  .sidebar-link.active {
243
- color: var(--ember-700);
244
- background: var(--ember-50);
243
+ color: var(--brand-700);
244
+ background: var(--brand-50);
245
245
  font-weight: 500;
246
246
  }
247
247
  .sidebar-link .num {
@@ -251,7 +251,7 @@ button { font-family: inherit; }
251
251
  letter-spacing: var(--ls-wide);
252
252
  width: 18px;
253
253
  }
254
- .sidebar-link.active .num { color: var(--ember-600); }
254
+ .sidebar-link.active .num { color: var(--brand-600); }
255
255
 
256
256
  .sidebar-footer {
257
257
  margin-top: auto;
@@ -303,7 +303,7 @@ main { background: var(--paper); }
303
303
  font-size: var(--fs-xs);
304
304
  letter-spacing: var(--ls-widest);
305
305
  text-transform: uppercase;
306
- color: var(--ember-600);
306
+ color: var(--brand-600);
307
307
  margin-bottom: 14px;
308
308
  }
309
309
  .section h2 {
@@ -393,10 +393,10 @@ main { background: var(--paper); }
393
393
  .btn-lg { height: 40px; padding: 0 16px; font-size: var(--fs-base); border-radius: var(--r-lg); gap: 8px; }
394
394
 
395
395
  .btn-primary {
396
- background: var(--ember-600); color: #fff;
396
+ background: var(--brand-600); color: #fff;
397
397
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.18), 0 1px 2px rgba(168, 53, 8, 0.18);
398
398
  }
399
- .btn-primary:hover { background: var(--ember-700); }
399
+ .btn-primary:hover { background: var(--brand-700); }
400
400
  .btn-secondary {
401
401
  background: var(--surface); color: var(--ink-700);
402
402
  border-color: var(--line-300);
@@ -404,9 +404,9 @@ main { background: var(--paper); }
404
404
  }
405
405
  .btn-secondary:hover { background: var(--paper); }
406
406
  .btn-soft {
407
- background: var(--ember-50); color: var(--ember-700);
407
+ background: var(--brand-50); color: var(--brand-700);
408
408
  }
409
- .btn-soft:hover { background: var(--ember-100); }
409
+ .btn-soft:hover { background: var(--brand-100); }
410
410
  .btn-ghost {
411
411
  background: transparent; color: var(--ink-600);
412
412
  }
@@ -438,7 +438,7 @@ main { background: var(--paper); }
438
438
  width: 100%;
439
439
  transition: box-shadow var(--t-fast), border-color var(--t-fast);
440
440
  }
441
- .input:focus-within { box-shadow: var(--ring-focus); border-color: var(--ember-400); }
441
+ .input:focus-within { box-shadow: var(--ring-focus); border-color: var(--brand-400); }
442
442
  .input.invalid { border-color: var(--danger-500); }
443
443
  .input.invalid:focus-within { box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.18); }
444
444
  .input-sm { height: 28px; padding: 0 8px; font-size: var(--fs-sm); }
@@ -489,7 +489,7 @@ main { background: var(--paper); }
489
489
  .tag-sm { height: 22px; padding: 0 8px; font-size: var(--fs-xs); }
490
490
  .tag-md { height: 26px; padding: 0 10px; font-size: var(--fs-sm); }
491
491
  .tag-square { border-radius: var(--r-xs); }
492
- .tag-ember { background: var(--ember-50); color: var(--ember-700); }
492
+ .tag-ember { background: var(--brand-50); color: var(--brand-700); }
493
493
  .tag-mono { background: var(--tag-bg); color: var(--tag-fg); }
494
494
  .tag-success { background: var(--success-50); color: var(--success-700); }
495
495
  .tag-warning { background: var(--warning-50); color: var(--warning-700); }
@@ -500,7 +500,7 @@ main { background: var(--paper); }
500
500
  .badge {
501
501
  display: inline-flex; align-items: center; justify-content: center;
502
502
  min-width: 18px; height: 18px; padding: 0 5px;
503
- background: var(--ember-500); color: #fff;
503
+ background: var(--brand-500); color: #fff;
504
504
  font-size: var(--fs-2xs); font-weight: 600;
505
505
  border-radius: var(--r-sm);
506
506
  }
@@ -514,7 +514,7 @@ main { background: var(--paper); }
514
514
  border: none; cursor: pointer; position: relative;
515
515
  transition: background var(--t-base) var(--ease-out);
516
516
  }
517
- .toggle.on { background: var(--ember-500); }
517
+ .toggle.on { background: var(--brand-500); }
518
518
  .toggle .knob {
519
519
  position: absolute; top: 2px; left: 2px;
520
520
  width: 16px; height: 16px; border-radius: var(--r-xs);
@@ -552,7 +552,7 @@ main { background: var(--paper); }
552
552
  /* --- Avatar --- */
553
553
  .avatar {
554
554
  width: 24px; height: 24px;
555
- background: var(--ember-500); color: #fff;
555
+ background: var(--brand-500); color: #fff;
556
556
  border-radius: 50%;
557
557
  display: inline-flex; align-items: center; justify-content: center;
558
558
  font-size: 11px; font-weight: 600;
@@ -614,7 +614,7 @@ main { background: var(--paper); }
614
614
  .type-token {
615
615
  font-family: var(--font-mono);
616
616
  font-size: var(--fs-xs);
617
- color: var(--ember-600);
617
+ color: var(--brand-600);
618
618
  }
619
619
  .type-px {
620
620
  font-family: var(--font-mono);
@@ -628,9 +628,9 @@ main { background: var(--paper); }
628
628
  display: grid; grid-template-columns: 80px 60px 1fr; gap: 16px; align-items: center;
629
629
  padding: 8px 0;
630
630
  }
631
- .sp-token { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--ember-600); }
631
+ .sp-token { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--brand-600); }
632
632
  .sp-px { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--ink-300); text-align: right; }
633
- .sp-bar { height: 12px; background: var(--ember-300); border-radius: var(--r-xs); }
633
+ .sp-bar { height: 12px; background: var(--brand-300); border-radius: var(--r-xs); }
634
634
 
635
635
  /* --- Shadow demo --- */
636
636
  .shadow-demo {
@@ -655,13 +655,13 @@ main { background: var(--paper); }
655
655
 
656
656
  /* --- Radius demo --- */
657
657
  .radius-demo {
658
- background: var(--ember-50);
659
- border: 1px solid var(--ember-200);
658
+ background: var(--brand-50);
659
+ border: 1px solid var(--brand-200);
660
660
  height: 80px;
661
661
  display: flex; align-items: center; justify-content: center;
662
662
  font-family: var(--font-mono);
663
663
  font-size: var(--fs-sm);
664
- color: var(--ember-700);
664
+ color: var(--brand-700);
665
665
  }
666
666
 
667
667
  /* ============================================================
@@ -692,12 +692,12 @@ main { background: var(--paper); }
692
692
  }
693
693
  .ds-side-item:hover { background: var(--ink-50); }
694
694
  .ds-side-item.active {
695
- color: var(--ember-700);
696
- background: var(--ember-50);
695
+ color: var(--brand-700);
696
+ background: var(--brand-50);
697
697
  font-weight: 500;
698
698
  }
699
699
  .ds-side-item .ico { color: var(--ink-400); }
700
- .ds-side-item.active .ico { color: var(--ember-600); }
700
+ .ds-side-item.active .ico { color: var(--brand-600); }
701
701
  .ds-side-card {
702
702
  margin: 4px; padding: 12px;
703
703
  background: var(--surface);
@@ -721,7 +721,7 @@ main { background: var(--paper); }
721
721
  }
722
722
  .endpoint .label { font-size: var(--fs-base); font-weight: 600; color: var(--ink-700); }
723
723
  .endpoint .desc { font-size: var(--fs-sm); color: var(--ink-400); line-height: 1.5; }
724
- .endpoint .ico { color: var(--ember-600); }
724
+ .endpoint .ico { color: var(--brand-600); }
725
725
 
726
726
  /* --- Stat card --- */
727
727
  .stat-card {
@@ -841,14 +841,14 @@ main { background: var(--paper); }
841
841
  .modal-progress { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
842
842
  .modal-progress .bars { display: flex; gap: 4px; }
843
843
  .modal-progress .bars span { width: 12px; height: 4px; border-radius: 2px; background: var(--ink-100); }
844
- .modal-progress .bars .first { width: 28px; background: var(--ember-500); }
844
+ .modal-progress .bars .first { width: 28px; background: var(--brand-500); }
845
845
  .modal-list { padding: 4px; }
846
846
  .modal-item {
847
847
  padding: 12px 20px; border-radius: var(--r-md);
848
848
  display: flex; align-items: center; justify-content: space-between;
849
849
  }
850
850
  .modal-item:hover { background: var(--paper); }
851
- .modal-item .t { font-size: var(--fs-md); font-weight: 500; color: var(--ember-700); }
851
+ .modal-item .t { font-size: var(--fs-md); font-weight: 500; color: var(--brand-700); }
852
852
  .modal-item.done .t { color: var(--success-700); }
853
853
  .modal-item .d { font-size: var(--fs-xs); color: var(--ink-400); margin-top: 2px; }
854
854
  .modal-item .credits { font-size: var(--fs-sm); color: var(--ink-500); font-family: var(--font-mono); }
@@ -892,7 +892,7 @@ main { background: var(--paper); }
892
892
  font-size: var(--fs-md);
893
893
  color: var(--ink-600);
894
894
  }
895
- .announce a { color: var(--ember-700); text-decoration: underline; }
895
+ .announce a { color: var(--brand-700); text-decoration: underline; }
896
896
  .tip {
897
897
  display: flex; gap: 12px; padding: 14px;
898
898
  background: var(--surface);
@@ -901,7 +901,7 @@ main { background: var(--paper); }
901
901
  max-width: 320px;
902
902
  box-shadow: var(--shadow-md);
903
903
  }
904
- .tip .ico { color: var(--ember-500); margin-top: 2px; }
904
+ .tip .ico { color: var(--brand-500); margin-top: 2px; }
905
905
  .tip .what {
906
906
  font-size: var(--fs-xs); font-family: var(--font-mono);
907
907
  letter-spacing: var(--ls-wider);
@@ -976,7 +976,7 @@ main { background: var(--paper); }
976
976
 
977
977
  /* Status (matrix oficial: 5 estados de tarefa) */
978
978
  .s-todo { background: #fff8e6; color: #9a6500; }
979
- .s-progress { background: var(--ember-50); color: var(--ember-700); }
979
+ .s-progress { background: var(--brand-50); color: var(--brand-700); }
980
980
  .s-review { background: var(--info-50); color: var(--info-700); }
981
981
  .s-done { background: var(--success-50); color: var(--success-700); }
982
982
  .s-canceled { background: var(--ink-50); color: var(--ink-500); }
@@ -984,7 +984,7 @@ main { background: var(--paper); }
984
984
  /* Modificadores (sobrescrevem status: ATRASADA = vermelho, PARADO = âmbar) */
985
985
  .s-overdue { background: var(--danger-50); color: var(--danger-700); }
986
986
  .s-paused { background: var(--warning-50); color: var(--warning-700); }
987
- .s-followup { background: var(--ember-50); color: var(--ember-700); }
987
+ .s-followup { background: var(--brand-50); color: var(--brand-700); }
988
988
 
989
989
  /* Prioridade (4 níveis) */
990
990
  .p-urgent { background: var(--danger-50); color: var(--danger-700); }
@@ -1031,7 +1031,7 @@ main { background: var(--paper); }
1031
1031
  color: #fff;
1032
1032
  }
1033
1033
  .stat-icon.green { background: var(--success-500); }
1034
- .stat-icon.orange { background: var(--ember-500); }
1034
+ .stat-icon.orange { background: var(--brand-500); }
1035
1035
  .stat-icon.blue { background: var(--info-500); }
1036
1036
  .stat-icon.purple { background: #7c3aed; }
1037
1037
  .stat-icon.red { background: var(--danger-500); }
@@ -1170,7 +1170,7 @@ main { background: var(--paper); }
1170
1170
  cursor: pointer;
1171
1171
  transition: all var(--t-fast);
1172
1172
  }
1173
- .k-add:hover { color: var(--ember-700); border-color: var(--ember-300); background: var(--ember-50); }
1173
+ .k-add:hover { color: var(--brand-700); border-color: var(--brand-300); background: var(--brand-50); }
1174
1174
 
1175
1175
  /* ---------- LEAD CARD ---------- */
1176
1176
  .lead-card {
@@ -1192,7 +1192,7 @@ main { background: var(--paper); }
1192
1192
  display: inline-flex; align-items: center; gap: 6px;
1193
1193
  font-size: var(--fs-md); font-weight: 600; color: var(--ink-700);
1194
1194
  }
1195
- .lead-card-name .flame { color: var(--ember-500); }
1195
+ .lead-card-name .flame { color: var(--brand-500); }
1196
1196
  .lead-card-sub {
1197
1197
  font-size: var(--fs-xs); color: var(--ink-400);
1198
1198
  }
@@ -1211,7 +1211,7 @@ main { background: var(--paper); }
1211
1211
  }
1212
1212
  .lead-card-followup {
1213
1213
  display: inline-flex; align-items: center; gap: 4px;
1214
- font-size: var(--fs-xs); color: var(--ember-700); font-weight: 500;
1214
+ font-size: var(--fs-xs); color: var(--brand-700); font-weight: 500;
1215
1215
  }
1216
1216
 
1217
1217
  /* ---------- FILTER CHIPS ---------- */
@@ -1235,9 +1235,9 @@ main { background: var(--paper); }
1235
1235
  }
1236
1236
  .chip:hover { background: var(--ink-50); color: var(--ink-700); }
1237
1237
  .chip.active {
1238
- background: var(--ember-50);
1239
- color: var(--ember-700);
1240
- border-color: var(--ember-200);
1238
+ background: var(--brand-50);
1239
+ color: var(--brand-700);
1240
+ border-color: var(--brand-200);
1241
1241
  }
1242
1242
  .chip .count {
1243
1243
  font-family: var(--font-mono);
@@ -1321,7 +1321,7 @@ main { background: var(--paper); }
1321
1321
  .bc-item.current { color: var(--ink-700); font-weight: 500; cursor: default; }
1322
1322
  .bc-dot {
1323
1323
  width: 6px; height: 6px; border-radius: 50%;
1324
- background: var(--ember-500);
1324
+ background: var(--brand-500);
1325
1325
  }
1326
1326
 
1327
1327
  /* ---------- ICON GRID ---------- */
@@ -1343,8 +1343,8 @@ main { background: var(--paper); }
1343
1343
  transition: background var(--t-fast);
1344
1344
  color: var(--ink-700);
1345
1345
  }
1346
- .icon-cell:hover { background: var(--paper); color: var(--ember-600); }
1347
- .icon-cell:hover .icon-name { color: var(--ember-700); }
1346
+ .icon-cell:hover { background: var(--paper); color: var(--brand-600); }
1347
+ .icon-cell:hover .icon-name { color: var(--brand-700); }
1348
1348
  .icon-cell svg { display: block; }
1349
1349
  .icon-name {
1350
1350
  font-family: var(--font-mono);
@@ -1589,7 +1589,7 @@ main { background: var(--paper); }
1589
1589
  <div class="eyebrow">03 — Foundations</div>
1590
1590
  <h2>Espaçamento</h2>
1591
1591
  </div>
1592
- <p class="section-desc">Base 4px. Default de stack vertical: <code style="font-family:var(--font-mono);color:var(--ember-700)">--sp-12</code> (24px). Default de gap em flex: <code style="font-family:var(--font-mono);color:var(--ember-700)">--sp-8</code> (16px). Padding interno de card: <code style="font-family:var(--font-mono);color:var(--ember-700)">--sp-16</code> ou <code style="font-family:var(--font-mono);color:var(--ember-700)">--sp-20</code>.</p>
1592
+ <p class="section-desc">Base 4px. Default de stack vertical: <code style="font-family:var(--font-mono);color:var(--brand-700)">--sp-12</code> (24px). Default de gap em flex: <code style="font-family:var(--font-mono);color:var(--brand-700)">--sp-8</code> (16px). Padding interno de card: <code style="font-family:var(--font-mono);color:var(--brand-700)">--sp-16</code> ou <code style="font-family:var(--font-mono);color:var(--brand-700)">--sp-20</code>.</p>
1593
1593
  </div>
1594
1594
  <div class="panel">
1595
1595
  <div class="panel-head"><div class="panel-title">Escala de spacing</div><div class="panel-kicker">--sp-0 → --sp-48</div></div>
@@ -1606,7 +1606,7 @@ main { background: var(--paper); }
1606
1606
  <div class="eyebrow">04 — Foundations</div>
1607
1607
  <h2>Border radius</h2>
1608
1608
  </div>
1609
- <p class="section-desc">xs em status dots, badges e progress bars · sm em tags, chips e botões pequenos · md em botões e inputs padrão · lg em cards · xl/2xl em modals e hero panels · 3xl raramente. Avatares usam <code style="font-family:var(--font-mono);color:var(--ember-700)">border-radius: 50%</code> direto (são círculos geométricos, não tags).</p>
1609
+ <p class="section-desc">xs em status dots, badges e progress bars · sm em tags, chips e botões pequenos · md em botões e inputs padrão · lg em cards · xl/2xl em modals e hero panels · 3xl raramente. Avatares usam <code style="font-family:var(--font-mono);color:var(--brand-700)">border-radius: 50%</code> direto (são círculos geométricos, não tags).</p>
1610
1610
  </div>
1611
1611
  <div class="panel">
1612
1612
  <div class="panel-body">
@@ -1624,7 +1624,7 @@ main { background: var(--paper); }
1624
1624
  <div class="eyebrow">05 — Foundations</div>
1625
1625
  <h2>Sombras</h2>
1626
1626
  </div>
1627
- <p class="section-desc">Sempre warm (rgba 20,17,12) — nunca azul-frio (rgba 0,0,0). Curtas em cards, largas em modais. <code style="font-family:var(--font-mono);color:var(--ember-700)">--ring-focus</code> sempre presente em elementos interativos via teclado.</p>
1627
+ <p class="section-desc">Sempre warm (rgba 20,17,12) — nunca azul-frio (rgba 0,0,0). Curtas em cards, largas em modais. <code style="font-family:var(--font-mono);color:var(--brand-700)">--ring-focus</code> sempre presente em elementos interativos via teclado.</p>
1628
1628
  </div>
1629
1629
  <div class="panel">
1630
1630
  <div class="panel-body">
@@ -1703,8 +1703,8 @@ main { background: var(--paper); }
1703
1703
  <div class="row"><div class="sub-label" style="width:100%; margin-bottom:0">Estados</div></div>
1704
1704
  <div class="row">
1705
1705
  <button class="btn btn-primary btn-md">Default</button>
1706
- <button class="btn btn-primary btn-md" style="background:var(--ember-700)">Hover</button>
1707
- <button class="btn btn-primary btn-md" style="background:var(--ember-800)">Pressed</button>
1706
+ <button class="btn btn-primary btn-md" style="background:var(--brand-700)">Hover</button>
1707
+ <button class="btn btn-primary btn-md" style="background:var(--brand-800)">Pressed</button>
1708
1708
  <button class="btn btn-secondary btn-md" disabled>Disabled</button>
1709
1709
  <button class="btn btn-primary btn-md"><span class="spinner"></span> Loading…</button>
1710
1710
  </div>
@@ -1712,7 +1712,7 @@ main { background: var(--paper); }
1712
1712
  <div class="divider"></div>
1713
1713
  <div class="spec"><span class="l">Heights</span><span class="v">22 / 28 / 32 / 40 px</span></div>
1714
1714
  <div class="spec"><span class="l">Border radius</span><span class="v">--r-sm → --r-lg</span></div>
1715
- <div class="spec"><span class="l">Primary fill</span><span class="v">ember-600 → ember-700 hover</span></div>
1715
+ <div class="spec"><span class="l">Primary fill</span><span class="v">brand-600 → brand-700 hover</span></div>
1716
1716
  <div class="spec"><span class="l">Focus ring</span><span class="v">--ring-focus (3px ember 20%)</span></div>
1717
1717
  </div>
1718
1718
  </div>
@@ -1727,7 +1727,7 @@ main { background: var(--paper); }
1727
1727
  <div class="eyebrow">07 — Primitives</div>
1728
1728
  <h2>Inputs</h2>
1729
1729
  </div>
1730
- <p class="section-desc">Border <code style="font-family:var(--font-mono);color:var(--ember-700)">--line-300</code>, raio <code style="font-family:var(--font-mono);color:var(--ember-700)">--r-lg</code>. Focus eleva o ring ember. Estado <code style="font-family:var(--font-mono);color:var(--ember-700)">invalid</code> troca a borda pra danger. URL input full-width é o padrão para campos de URL em hero.</p>
1730
+ <p class="section-desc">Border <code style="font-family:var(--font-mono);color:var(--brand-700)">--line-300</code>, raio <code style="font-family:var(--font-mono);color:var(--brand-700)">--r-lg</code>. Focus eleva o ring ember. Estado <code style="font-family:var(--font-mono);color:var(--brand-700)">invalid</code> troca a borda pra danger. URL input full-width é o padrão para campos de URL em hero.</p>
1731
1731
  </div>
1732
1732
 
1733
1733
  <div class="panel">
@@ -1817,7 +1817,7 @@ main { background: var(--paper); }
1817
1817
  <div class="eyebrow">08 — Primitives</div>
1818
1818
  <h2>Tags, badges, kbd</h2>
1819
1819
  </div>
1820
- <p class="section-desc">Tags curtos com raio --r-sm (4px) pra status e estados. Variante <code style="font-family:var(--font-mono);color:var(--ember-700)">.tag-square</code> usa raio --r-xs (3px) ainda mais sharp pra data labels técnicos (linguagens, endpoints, IDs). Mono uppercase com letter-spacing wide é a assinatura.</p>
1820
+ <p class="section-desc">Tags curtos com raio --r-sm (4px) pra status e estados. Variante <code style="font-family:var(--font-mono);color:var(--brand-700)">.tag-square</code> usa raio --r-xs (3px) ainda mais sharp pra data labels técnicos (linguagens, endpoints, IDs). Mono uppercase com letter-spacing wide é a assinatura.</p>
1821
1821
  </div>
1822
1822
 
1823
1823
  <div class="panel">
@@ -1914,7 +1914,7 @@ main { background: var(--paper); }
1914
1914
  </div>
1915
1915
  <div class="divider"></div>
1916
1916
  <div class="spec"><span class="l">Off bg</span><span class="v">--ink-200</span></div>
1917
- <div class="spec"><span class="l">On bg</span><span class="v">--ember-500</span></div>
1917
+ <div class="spec"><span class="l">On bg</span><span class="v">--brand-500</span></div>
1918
1918
  <div class="spec"><span class="l">Animation</span><span class="v">--t-base ease-out</span></div>
1919
1919
  </div>
1920
1920
  </div>
@@ -2023,7 +2023,7 @@ main { background: var(--paper); }
2023
2023
  <div class="eyebrow">11 — Patterns</div>
2024
2024
  <h2>Sidebar de aplicação</h2>
2025
2025
  </div>
2026
- <p class="section-desc">Largura 240px, bg <code style="font-family:var(--font-mono);color:var(--ember-700)">--canvas</code>, items com altura ~32px. Active state usa <code style="font-family:var(--font-mono);color:var(--ember-700)">--ember-50</code> bg + <code style="font-family:var(--font-mono);color:var(--ember-700)">--ember-700</code> texto. Footer leve com avatar + email do user.</p>
2026
+ <p class="section-desc">Largura 240px, bg <code style="font-family:var(--font-mono);color:var(--brand-700)">--canvas</code>, items com altura ~32px. Active state usa <code style="font-family:var(--font-mono);color:var(--brand-700)">--brand-50</code> bg + <code style="font-family:var(--font-mono);color:var(--brand-700)">--brand-700</code> texto. Footer leve com avatar + email do user.</p>
2027
2027
  </div>
2028
2028
 
2029
2029
  <div class="panel">
@@ -2079,9 +2079,9 @@ main { background: var(--paper); }
2079
2079
 
2080
2080
  <div class="ds-side-card">
2081
2081
  <div style="display:flex; align-items:center; gap:6px; margin-bottom:4px">
2082
- <svg width="12" height="12" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" style="color:var(--ember-500)"><path d="M9 2l1.5 4.5L15 8l-4.5 1.5L9 14l-1.5-4.5L3 8l4.5-1.5z"/></svg>
2082
+ <svg width="12" height="12" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" style="color:var(--brand-500)"><path d="M9 2l1.5 4.5L15 8l-4.5 1.5L9 14l-1.5-4.5L3 8l4.5-1.5z"/></svg>
2083
2083
  <span style="font-size:var(--fs-sm); font-weight:600; color:var(--ink-700)">What's New</span>
2084
- <span style="font-size:var(--fs-2xs); color:var(--ember-600); font-family:var(--font-mono)">(6)</span>
2084
+ <span style="font-size:var(--fs-2xs); color:var(--brand-600); font-family:var(--font-mono)">(6)</span>
2085
2085
  </div>
2086
2086
  <div style="font-size:var(--fs-xs); color:var(--ink-400)">View our latest update</div>
2087
2087
  </div>
@@ -2095,10 +2095,10 @@ main { background: var(--paper); }
2095
2095
  <!-- Topbar preview do app -->
2096
2096
  <div class="ds-main">
2097
2097
  <div style="height:56px; padding:0 24px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line-200)">
2098
- <div style="display:inline-flex; align-items:center; gap:8px; padding:6px 12px; background:var(--ember-50); border:1px solid var(--ember-200); border-radius:var(--r-md)">
2098
+ <div style="display:inline-flex; align-items:center; gap:8px; padding:6px 12px; background:var(--brand-50); border:1px solid var(--brand-200); border-radius:var(--r-md)">
2099
2099
  <span class="avatar avatar-sq" style="width:18px; height:18px; font-size:9px">P</span>
2100
- <span style="font-size:var(--fs-md); color:var(--ember-700); font-weight:500">Personal Team</span>
2101
- <svg width="12" height="12" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" style="color:var(--ember-700)"><path d="M5 7l4 4 4-4"/></svg>
2100
+ <span style="font-size:var(--fs-md); color:var(--brand-700); font-weight:500">Personal Team</span>
2101
+ <svg width="12" height="12" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" style="color:var(--brand-700)"><path d="M5 7l4 4 4-4"/></svg>
2102
2102
  </div>
2103
2103
  <div style="display:flex; gap:6px; align-items:center">
2104
2104
  <button class="btn btn-ghost btn-icon-only btn-sm">
@@ -2137,7 +2137,7 @@ main { background: var(--paper); }
2137
2137
  <div class="divider"></div>
2138
2138
  <div class="spec"><span class="l">Width</span><span class="v">240px</span></div>
2139
2139
  <div class="spec"><span class="l">Background</span><span class="v">--canvas</span></div>
2140
- <div class="spec"><span class="l">Active fill</span><span class="v">--ember-50 + --ember-700</span></div>
2140
+ <div class="spec"><span class="l">Active fill</span><span class="v">--brand-50 + --brand-700</span></div>
2141
2141
  <div class="spec"><span class="l">Item height</span><span class="v">~32px</span></div>
2142
2142
  </div>
2143
2143
  </div>
@@ -2211,14 +2211,14 @@ main { background: var(--paper); }
2211
2211
  </div>
2212
2212
  <div class="stat-card-num">2.418</div>
2213
2213
  </div>
2214
- <div style="margin-top:18px; height:40px; background: linear-gradient(180deg, var(--ember-50), transparent); border-radius:var(--r-md); display:flex; align-items:flex-end; padding:4px; gap:3px">
2215
- <div style="flex:1; height:30%; background:var(--ember-300); border-radius:2px"></div>
2216
- <div style="flex:1; height:50%; background:var(--ember-400); border-radius:2px"></div>
2217
- <div style="flex:1; height:40%; background:var(--ember-300); border-radius:2px"></div>
2218
- <div style="flex:1; height:70%; background:var(--ember-400); border-radius:2px"></div>
2219
- <div style="flex:1; height:55%; background:var(--ember-400); border-radius:2px"></div>
2220
- <div style="flex:1; height:85%; background:var(--ember-500); border-radius:2px"></div>
2221
- <div style="flex:1; height:100%; background:var(--ember-600); border-radius:2px"></div>
2214
+ <div style="margin-top:18px; height:40px; background: linear-gradient(180deg, var(--brand-50), transparent); border-radius:var(--r-md); display:flex; align-items:flex-end; padding:4px; gap:3px">
2215
+ <div style="flex:1; height:30%; background:var(--brand-300); border-radius:2px"></div>
2216
+ <div style="flex:1; height:50%; background:var(--brand-400); border-radius:2px"></div>
2217
+ <div style="flex:1; height:40%; background:var(--brand-300); border-radius:2px"></div>
2218
+ <div style="flex:1; height:70%; background:var(--brand-400); border-radius:2px"></div>
2219
+ <div style="flex:1; height:55%; background:var(--brand-400); border-radius:2px"></div>
2220
+ <div style="flex:1; height:85%; background:var(--brand-500); border-radius:2px"></div>
2221
+ <div style="flex:1; height:100%; background:var(--brand-600); border-radius:2px"></div>
2222
2222
  </div>
2223
2223
  <div style="margin-top:8px; display:flex; justify-content:space-between; font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--ink-300)">
2224
2224
  <span>04/29</span><span>05/02</span><span>05/05</span>
@@ -2410,7 +2410,7 @@ main { background: var(--paper); }
2410
2410
  <div class="eyebrow">15 — Patterns</div>
2411
2411
  <h2>Code Block</h2>
2412
2412
  </div>
2413
- <p class="section-desc">Bg <code style="font-family:var(--font-mono);color:var(--ember-700)">--code-bg</code> warm. Strings em success-700, keys em code-fg ember. Sempre com botões de eye/copy no canto top-right.</p>
2413
+ <p class="section-desc">Bg <code style="font-family:var(--font-mono);color:var(--brand-700)">--code-bg</code> warm. Strings em success-700, keys em code-fg ember. Sempre com botões de eye/copy no canto top-right.</p>
2414
2414
  </div>
2415
2415
 
2416
2416
  <div class="panel">
@@ -2738,7 +2738,7 @@ main { background: var(--paper); }
2738
2738
  <div class="funnel">
2739
2739
  <span style="width:0%; background:#3b82f6"></span>
2740
2740
  <span style="width:36%; background:#7c3aed"></span>
2741
- <span style="width:18%; background:var(--ember-500)"></span>
2741
+ <span style="width:18%; background:var(--brand-500)"></span>
2742
2742
  <span style="width:0%; background:#06b6d4"></span>
2743
2743
  <span style="width:0%; background:var(--success-500)"></span>
2744
2744
  <span style="width:46%; background:var(--ink-200)"></span>
@@ -2746,7 +2746,7 @@ main { background: var(--paper); }
2746
2746
  <div class="funnel-stages">
2747
2747
  <div class="funnel-stage"><span class="funnel-stage-label" style="display:flex;align-items:center;gap:4px"><span style="width:6px;height:6px;border-radius:50%;background:#3b82f6"></span>Novo</span><span class="funnel-stage-count">0</span></div>
2748
2748
  <div class="funnel-stage"><span class="funnel-stage-label" style="display:flex;align-items:center;gap:4px"><span style="width:6px;height:6px;border-radius:50%;background:#7c3aed"></span>Qualificando</span><span class="funnel-stage-count">4</span></div>
2749
- <div class="funnel-stage"><span class="funnel-stage-label" style="display:flex;align-items:center;gap:4px"><span style="width:6px;height:6px;border-radius:50%;background:var(--ember-500)"></span>Reunião</span><span class="funnel-stage-count">1</span></div>
2749
+ <div class="funnel-stage"><span class="funnel-stage-label" style="display:flex;align-items:center;gap:4px"><span style="width:6px;height:6px;border-radius:50%;background:var(--brand-500)"></span>Reunião</span><span class="funnel-stage-count">1</span></div>
2750
2750
  <div class="funnel-stage"><span class="funnel-stage-label" style="display:flex;align-items:center;gap:4px"><span style="width:6px;height:6px;border-radius:50%;background:#06b6d4"></span>Proposta</span><span class="funnel-stage-count">0</span></div>
2751
2751
  <div class="funnel-stage"><span class="funnel-stage-label" style="display:flex;align-items:center;gap:4px"><span style="width:6px;height:6px;border-radius:50%;background:var(--success-500)"></span>Won</span><span class="funnel-stage-count">0</span></div>
2752
2752
  <div class="funnel-stage"><span class="funnel-stage-label" style="display:flex;align-items:center;gap:4px"><span style="width:6px;height:6px;border-radius:50%;background:var(--ink-300)"></span>Perdido</span><span class="funnel-stage-count">0</span></div>
@@ -2760,7 +2760,7 @@ main { background: var(--paper); }
2760
2760
  <div class="sub-label">Meta mensal</div>
2761
2761
  <div style="display:flex; align-items:center; gap:12px; margin-bottom:18px">
2762
2762
  <span style="flex:1; font-size:var(--fs-sm); color:var(--ink-600)">0/14 tarefas</span>
2763
- <span style="font-family:var(--font-mono); font-size:var(--fs-sm); color:var(--ember-700); font-weight:600">0%</span>
2763
+ <span style="font-family:var(--font-mono); font-size:var(--fs-sm); color:var(--brand-700); font-weight:600">0%</span>
2764
2764
  </div>
2765
2765
  <div class="stat-progress" style="height:6px"><span style="width:0%"></span></div>
2766
2766
 
@@ -2775,7 +2775,7 @@ main { background: var(--paper); }
2775
2775
 
2776
2776
  <div class="divider"></div>
2777
2777
  <div class="spec"><span class="l">Cor padrão</span><span class="v">--success-500 (positivo)</span></div>
2778
- <div class="spec"><span class="l">Cor alternativa</span><span class="v">--ember-500 (neutro/em andamento)</span></div>
2778
+ <div class="spec"><span class="l">Cor alternativa</span><span class="v">--brand-500 (neutro/em andamento)</span></div>
2779
2779
  <div class="spec"><span class="l">Cor de alerta</span><span class="v">--danger-500 (estoura limite)</span></div>
2780
2780
  </div>
2781
2781
  </div>
@@ -2826,7 +2826,7 @@ main { background: var(--paper); }
2826
2826
 
2827
2827
  <div class="k-col">
2828
2828
  <div class="k-col-head">
2829
- <span class="lh"><span class="dot" style="background:var(--ember-500)"></span>EM PROGRESSO</span>
2829
+ <span class="lh"><span class="dot" style="background:var(--brand-500)"></span>EM PROGRESSO</span>
2830
2830
  <span class="count">2</span>
2831
2831
  </div>
2832
2832
  <button class="k-add"><svg width="12" height="12" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M9 4v10M4 9h10"/></svg> Nova tarefa</button>
@@ -2895,7 +2895,7 @@ main { background: var(--paper); }
2895
2895
  <div class="eyebrow">23 — App Patterns · CRM</div>
2896
2896
  <h2>Lead Card (Pipeline)</h2>
2897
2897
  </div>
2898
- <p class="section-desc">Card compacto para Pipeline de Vendas. Nome + flame icon (temperatura) + status tag. Ícones de canal (telefone, instagram, email). Footer com follow-up date em ember quando há agenda. Variante <code style="font-family:var(--font-mono);color:var(--ember-700)">.is-paused</code> adiciona border-left amber para PARADO.</p>
2898
+ <p class="section-desc">Card compacto para Pipeline de Vendas. Nome + flame icon (temperatura) + status tag. Ícones de canal (telefone, instagram, email). Footer com follow-up date em ember quando há agenda. Variante <code style="font-family:var(--font-mono);color:var(--brand-700)">.is-paused</code> adiciona border-left amber para PARADO.</p>
2899
2899
  </div>
2900
2900
 
2901
2901
  <div class="panel">
@@ -3033,7 +3033,7 @@ main { background: var(--paper); }
3033
3033
  <div class="spec"><span class="l">Altura</span><span class="v">28px</span></div>
3034
3034
  <div class="spec"><span class="l">Padding</span><span class="v">0 12px</span></div>
3035
3035
  <div class="spec"><span class="l">Border-radius</span><span class="v">--r-sm (4px)</span></div>
3036
- <div class="spec"><span class="l">Active</span><span class="v">bg ember-50 · color ember-700 · border ember-200</span></div>
3036
+ <div class="spec"><span class="l">Active</span><span class="v">bg ember-50 · color brand-700 · border ember-200</span></div>
3037
3037
  <div class="spec"><span class="l">Limite recomendado</span><span class="v">≤ 6 chips · acima disso use dropdown</span></div>
3038
3038
  </div>
3039
3039
  </div>
@@ -3095,7 +3095,7 @@ main { background: var(--paper); }
3095
3095
  <div class="eyebrow">26 — App Patterns · CRM</div>
3096
3096
  <h2>Biblioteca de Ícones</h2>
3097
3097
  </div>
3098
- <p class="section-desc">Set oficial — outline, stroke 1.5px, viewBox 18×18, sempre em <code style="font-family:var(--font-mono);color:var(--ember-700)">currentColor</code>. Nunca trocar por filled, nunca misturar com Lucide ou Heroicons num mesmo contexto. Quando faltar ícone, criar seguindo as mesmas regras.</p>
3098
+ <p class="section-desc">Set oficial — outline, stroke 1.5px, viewBox 18×18, sempre em <code style="font-family:var(--font-mono);color:var(--brand-700)">currentColor</code>. Nunca trocar por filled, nunca misturar com Lucide ou Heroicons num mesmo contexto. Quando faltar ícone, criar seguindo as mesmas regras.</p>
3099
3099
  </div>
3100
3100
 
3101
3101
  <div class="panel">
@@ -3189,7 +3189,7 @@ main { background: var(--paper); }
3189
3189
  <svg width="16" height="16" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9 2l7 13H2L9 2z"/><path d="M9 7v3"/><circle cx="9" cy="13" r="0.6" fill="currentColor"/></svg>
3190
3190
  <span style="font-size:var(--fs-sm); font-weight:500">Atrasada</span>
3191
3191
  </div>
3192
- <div style="display:flex; align-items:center; gap:8px; padding:8px 12px; background:var(--ember-50); border-radius:var(--r-md); color:var(--ember-700)">
3192
+ <div style="display:flex; align-items:center; gap:8px; padding:8px 12px; background:var(--brand-50); border-radius:var(--r-md); color:var(--brand-700)">
3193
3193
  <svg width="16" height="16" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9 2l1.5 4.5L15 8l-4.5 1.5L9 14l-1.5-4.5L3 8l4.5-1.5L9 2z"/></svg>
3194
3194
  <span style="font-size:var(--fs-sm); font-weight:500">Highlight</span>
3195
3195
  </div>
@@ -3317,8 +3317,8 @@ links.forEach(l => l.addEventListener('click', e => {
3317
3317
  /* --- Color swatches --- */
3318
3318
  const ember = [
3319
3319
  ['ember-50', '#fff3e9'], ['ember-100', '#ffe1c8'], ['ember-200', '#ffc28e'],
3320
- ['ember-300', '#ffa056'], ['ember-400', '#ff8a3a'], ['ember-500', '#f56f10'],
3321
- ['ember-600', '#d45e0d'], ['ember-700', '#ad4a09'], ['ember-800', '#843706'],
3320
+ ['ember-300', '#ffa056'], ['ember-400', '#ff8a3a'], ['brand-500', '#f56f10'],
3321
+ ['brand-600', '#d45e0d'], ['brand-700', '#ad4a09'], ['ember-800', '#843706'],
3322
3322
  ['ember-900', '#5e2704'],
3323
3323
  ];
3324
3324
  const surface = [
@@ -124,7 +124,7 @@ export default function App() {
124
124
  <Funnel stages={[
125
125
  { label: 'Novo', count: 0, color: '#3b82f6', percent: 0 },
126
126
  { label: 'Qualificando', count: 4, color: '#7c3aed', percent: 36 },
127
- { label: 'Reunião', count: 1, color: 'var(--ember-500)', percent: 18 },
127
+ { label: 'Reunião', count: 1, color: 'var(--brand-500)', percent: 18 },
128
128
  { label: 'Proposta', count: 0, color: '#06b6d4', percent: 0 },
129
129
  { label: 'Won', count: 0, color: 'var(--success-500)', percent: 0 },
130
130
  { label: 'Perdido', count: 0, color: 'var(--ink-300)', percent: 0 },
@@ -159,7 +159,7 @@ export default function App() {
159
159
  />
160
160
  </KanbanColumn>
161
161
 
162
- <KanbanColumn title="EM PROGRESSO" count={1} dotColor="var(--ember-500)" onAddClick={() => {}}>
162
+ <KanbanColumn title="EM PROGRESSO" count={1} dotColor="var(--brand-500)" onAddClick={() => {}}>
163
163
  <LeadCard
164
164
  hot
165
165
  name="Paulo Turismo"
@@ -197,7 +197,7 @@ export default function App() {
197
197
  </div>
198
198
 
199
199
  <Spec label="Heights" value="22 / 28 / 32 / 40 px"/>
200
- <Spec label="Primary fill" value="ember-600 → ember-700 hover"/>
200
+ <Spec label="Primary fill" value="brand-600 → brand-700 hover"/>
201
201
  </Panel>
202
202
 
203
203
  <div style={{ height: 32 }}/>
@@ -5,11 +5,11 @@ import React from 'react';
5
5
  *
6
6
  * @param name string — primeira letra é renderizada
7
7
  * @param size number (px) default 24
8
- * @param color CSS color default --ember-500
8
+ * @param color CSS color default --brand-500
9
9
  * @param square boolean — usa raio --r-sm em vez de 50%
10
10
  * @param src string — se passada, renderiza <img>
11
11
  */
12
- export function Avatar({ name, size = 24, color = 'var(--ember-500)', square = false, src, className = '', ...rest }) {
12
+ export function Avatar({ name, size = 24, color = 'var(--brand-500)', square = false, src, className = '', ...rest }) {
13
13
  const cls = ['avatar', square && 'avatar-sq', className].filter(Boolean).join(' ');
14
14
  const style = {
15
15
  width: size,