diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index 529a226..26c46aa 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -117,6 +117,115 @@ sshpass -p 'Master9354' ssh -o StrictHostKeyChecking=no root@213.165.93.60 "mysq
❌ NUNCA usar `ssh root@213.165.93.60` sem sshpass (vai travar esperando senha)
+## 🎨 Padrão Visual de Modais
+
+**TODOS os modais de formulário devem seguir este padrão elegante:**
+
+### Estrutura Base
+```jsx
+
+
+
+
+ {/* Header sem borda */}
+
+
+
+
+ Título
+
+
Subtítulo
+
+
+
+
+ {/* Body com scroll */}
+
+ {/* Preview Card - SEMPRE no topo */}
+
+ {/* Preview visual do item sendo criado/editado */}
+
+
+ {/* Campos em cards com background #0f172a */}
+ {/* Labels com ícones coloridos */}
+ {/* Badges "Opcional" quando necessário */}
+
+
+ {/* Footer sem borda */}
+
+
+
+
+
+
+
+```
+
+### Cores do Sistema
+- **Background modal**: `#1e293b`
+- **Background campos/cards**: `#0f172a`
+- **Texto principal**: `text-white`
+- **Texto secundário**: `text-slate-400`
+- **Texto desabilitado**: `text-slate-500`
+
+### Labels com Ícones
+```jsx
+
+```
+
+### Badge Opcional
+```jsx
+
+ {t('common.optional')}
+
+```
+
+### Seleção Visual com Cards
+Para seleções (categorias, ícones), usar cards clicáveis:
+```jsx
+ handleSelect(item)}
+ className="p-2 rounded text-center"
+ style={{
+ background: isSelected ? 'rgba(59, 130, 246, 0.15)' : '#0f172a',
+ cursor: 'pointer',
+ border: isSelected ? '2px solid #3b82f6' : '2px solid transparent'
+ }}
+>
+
+ {label}
+
+```
+
+### Seção de Keywords/Tags
+```jsx
+
+
+
+
+
+
+ {/* Tags com cor do item */}
+
+
+```
+
+### Switch de Status
+```jsx
+
+
+
+
+```
+
## Documentação
Consulte `.DIRETRIZES_DESENVOLVIMENTO_v5` para regras completas.
diff --git a/frontend/src/i18n/locales/en.json b/frontend/src/i18n/locales/en.json
index 211a7e2..36b5ac3 100644
--- a/frontend/src/i18n/locales/en.json
+++ b/frontend/src/i18n/locales/en.json
@@ -412,8 +412,13 @@
"budget": "Budget",
"keywords": "Keywords",
"addKeyword": "Add Keyword",
- "keywordPlaceholder": "Type a keyword",
- "keywordHelp": "Keywords help automatically assign transactions",
+ "keywordPlaceholder": "Type and press Enter...",
+ "keywordHelp": "E.g.: \"UBER\", \"iFood\" - Transactions with these words are auto-assigned",
+ "noKeywords": "No keywords. Transactions will be assigned manually.",
+ "namePlaceholder": "E.g.: Project Alpha, Marketing Dept...",
+ "descPlaceholder": "Describe the purpose of this cost center...",
+ "visualSettings": "Appearance",
+ "autoAssignLabel": "Auto-assign",
"createSuccess": "Cost center created successfully",
"updateSuccess": "Cost center updated successfully",
"deleteSuccess": "Cost center deleted successfully",
diff --git a/frontend/src/i18n/locales/es.json b/frontend/src/i18n/locales/es.json
index 5cabdeb..c7ecde2 100644
--- a/frontend/src/i18n/locales/es.json
+++ b/frontend/src/i18n/locales/es.json
@@ -415,8 +415,13 @@
"budget": "Presupuesto",
"keywords": "Palabras Clave",
"addKeyword": "Agregar Palabra Clave",
- "keywordPlaceholder": "Escribe una palabra clave",
- "keywordHelp": "Las palabras clave ayudan a asignar transacciones automáticamente",
+ "keywordPlaceholder": "Escribe y presiona Enter...",
+ "keywordHelp": "Ej: \"UBER\", \"iFood\" - Transacciones con estas palabras se asignan automáticamente",
+ "noKeywords": "Sin palabras clave. Las transacciones se asignarán manualmente.",
+ "namePlaceholder": "Ej: Proyecto Alpha, Dpto. Marketing...",
+ "descPlaceholder": "Describe el propósito de este centro de costo...",
+ "visualSettings": "Apariencia",
+ "autoAssignLabel": "Auto-asignación",
"createSuccess": "Centro de costo creado correctamente",
"updateSuccess": "Centro de costo actualizado correctamente",
"deleteSuccess": "Centro de costo eliminado correctamente",
diff --git a/frontend/src/i18n/locales/pt-BR.json b/frontend/src/i18n/locales/pt-BR.json
index ec8cb66..30f4a04 100644
--- a/frontend/src/i18n/locales/pt-BR.json
+++ b/frontend/src/i18n/locales/pt-BR.json
@@ -417,8 +417,13 @@
"budget": "Orçamento",
"keywords": "Palavras-chave",
"addKeyword": "Adicionar Palavra-chave",
- "keywordPlaceholder": "Digite uma palavra-chave",
- "keywordHelp": "Palavras-chave ajudam a atribuir transações automaticamente",
+ "keywordPlaceholder": "Digite e pressione Enter...",
+ "keywordHelp": "Ex: \"UBER\", \"iFood\" - Transações com essas palavras são atribuídas automaticamente",
+ "noKeywords": "Sem palavras-chave. Transações serão atribuídas manualmente.",
+ "namePlaceholder": "Ex: Projeto Alpha, Dpto. Marketing...",
+ "descPlaceholder": "Descreva o propósito deste centro de custo...",
+ "visualSettings": "Aparência",
+ "autoAssignLabel": "Auto-atribuição",
"createSuccess": "Centro de custo criado com sucesso",
"updateSuccess": "Centro de custo atualizado com sucesso",
"deleteSuccess": "Centro de custo excluído com sucesso",
diff --git a/frontend/src/pages/CostCenters.jsx b/frontend/src/pages/CostCenters.jsx
index 8dfa8d1..034ec82 100644
--- a/frontend/src/pages/CostCenters.jsx
+++ b/frontend/src/pages/CostCenters.jsx
@@ -357,170 +357,242 @@ const CostCenters = () => {
)}
- {/* Modal de Criar/Editar */}
+ {/* Modal de Criar/Editar - Design Elegante */}
{showModal && (
-
-
-
-
-
-
- {selectedItem ? t('costCenters.editCostCenter') : t('costCenters.newCostCenter')}
-
+
+
+
+ {/* Header elegante */}
+
+
+
+
+ {selectedItem ? t('costCenters.editCostCenter') : t('costCenters.newCostCenter')}
+
+
+ {t('costCenters.title')}
+
+
+