CURSOR.md - Guia de Regras e Diretrizes para Desenvolvimento
📋 Índice
- Visão Geral
- Regras de Layout e Design
- Diretrizes de Acessibilidade
- Responsividade
- Harmonia Visual
- Navegação e UX
- Tom Profissional
- Otimizações de Performance
- Padrões de Código
- Checklist de Qualidade
🎯 Visão Geral
Este documento estabelece as regras e diretrizes utilizadas para criar interfaces web profissionais, acessíveis e responsivas. Todas as regras foram testadas e aplicadas em projetos reais, garantindo consistência e qualidade.
Princípios Fundamentais
- Acessibilidade First: Sempre considerar usuários com diferentes necessidades
- Mobile First: Design responsivo começando pelo mobile
- Performance: Otimização contínua para melhor experiência
- Consistência: Padrões visuais e de código uniformes
- Usabilidade: Interface intuitiva e fácil de usar
🎨 Regras de Layout e Design
1. Estrutura de Grid Responsivo
/* Desktop (1200px+) */
.grid-desktop {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 2rem;
}
/* Tablet (768px-1199px) */
.grid-tablet {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1.5rem;
}
/* Mobile (<768px) */
.grid-mobile {
display: grid;
grid-template-columns: 1fr;
gap: 1rem;
}
2. Harmonia Visual - Layout 3x2
Regra: Para telas de 1024px, sempre buscar layout com 3 cards por linha em 2 linhas (total 6 cards).
<!-- Exemplo de estrutura harmoniosa -->
<div class="feature-grid">
<!-- Linha 1: 3 cards -->
<div class="feature-card">Card 1</div>
<div class="feature-card">Card 2</div>
<div class="feature-card">Card 3</div>
<!-- Linha 2: 3 cards -->
<div class="feature-card">Card 4</div>
<div class="feature-card">Card 5</div>
<div class="feature-card">Card 6</div>
</div>
3. Espaçamentos Consistentes
/* Sistema de espaçamento */
.spacing-xs { padding: 0.5rem; }
.spacing-sm { padding: 1rem; }
.spacing-md { padding: 1.5rem; }
.spacing-lg { padding: 2rem; }
.spacing-xl { padding: 3rem; }
/* Gaps de grid */
.gap-sm { gap: 1rem; }
.gap-md { gap: 1.5rem; }
.gap-lg { gap: 2rem; }
4. Cores e Temas
/* Paleta de cores profissional */
:root {
--primary: #0ea5e9;
--secondary: #8b5cf6;
--success: #10b981;
--warning: #f59e0b;
--danger: #ef4444;
--info: #3b82f6;
--dark: #1e293b;
--light: #f8fafc;
}
/* Uso de cores por categoria */
.category-problem { border-left-color: var(--primary); }
.category-solution { border-left-color: var(--success); }
.category-market { border-left-color: var(--secondary); }
.category-business { border-left-color: var(--warning); }
♿ Diretrizes de Acessibilidade
1. Labels e ARIA
<!-- Sempre incluir labels ocultos -->
<label for="campo-id" class="sr-only">Descrição do Campo</label>
<input id="campo-id" type="text" aria-label="Descrição clara do campo" />
<!-- Para elementos editáveis -->
<div id="campo-editavel"
contenteditable="true"
role="textbox"
aria-label="Descrição do que o usuário deve inserir"
data-placeholder="Texto do placeholder">
</div>
2. Navegação por Teclado
/* Estilos de foco obrigatórios */
.focusable:focus {
outline: 2px solid var(--primary);
outline-offset: 2px;
}
/* Indicadores visuais de foco */
.focus-indicator:focus {
box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1);
border-color: var(--primary);
}
3. Screen Readers
/* Classe para elementos ocultos visualmente mas acessíveis */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
4. Contraste e Legibilidade
/* Contraste mínimo WCAG AA */
.text-primary { color: #0ea5e9; } /* 4.5:1 ratio */
.text-dark { color: #1e293b; } /* 7:1 ratio */
.text-muted { color: #64748b; } /* 4.5:1 ratio */
/* Tamanhos de fonte acessíveis */
.text-sm { font-size: 0.875rem; } /* 14px */
.text-base { font-size: 1rem; } /* 16px */
.text-lg { font-size: 1.125rem; } /* 18px */
📱 Responsividade
1. Breakpoints Padrão
/* Mobile First Approach */
@media (min-width: 640px) { /* sm */ }
@media (min-width: 768px) { /* md */ }
@media (min-width: 1024px) { /* lg */ }
@media (min-width: 1280px) { /* xl */ }
@media (min-width: 1536px) { /* 2xl */ }
2. Grid Responsivo
.responsive-grid {
display: grid;
grid-template-columns: 1fr; /* Mobile: 1 coluna */
gap: 1rem;
}
@media (min-width: 768px) {
.responsive-grid {
grid-template-columns: repeat(2, 1fr); /* Tablet: 2 colunas */
gap: 1.5rem;
}
}
@media (min-width: 1024px) {
.responsive-grid {
grid-template-columns: repeat(3, 1fr); /* Desktop: 3 colunas */
gap: 2rem;
}
}
3. Tipografia Responsiva
.responsive-text {
font-size: 1rem; /* Base mobile */
line-height: 1.5;
}
@media (min-width: 768px) {
.responsive-text {
font-size: 1.125rem; /* Tablet */
}
}
@media (min-width: 1024px) {
.responsive-text {
font-size: 1.25rem; /* Desktop */
}
}
🎨 Harmonia Visual
1. Cards Consistentes
.feature-card {
background: white;
border-radius: 20px;
padding: 2rem;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
min-height: 200px;
}
.feature-card:hover {
transform: translateY(-5px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
2. Ícones e Cores por Categoria
/* Sistema de cores por categoria */
.icon-problem {
background: rgba(14, 165, 233, 0.1);
color: #0ea5e9;
}
.icon-solution {
background: rgba(16, 185, 129, 0.1);
color: #10b981;
}
.icon-market {
background: rgba(139, 92, 246, 0.1);
color: #8b5cf6;
}
.icon-business {
background: rgba(245, 158, 11, 0.1);
color: #f59e0b;
}
3. Espaçamentos Harmoniosos
/* Sistema de espaçamento 8px */
.spacing-1 { padding: 0.25rem; } /* 4px */
.spacing-2 { padding: 0.5rem; } /* 8px */
.spacing-3 { padding: 0.75rem; } /* 12px */
.spacing-4 { padding: 1rem; } /* 16px */
.spacing-6 { padding: 1.5rem; } /* 24px */
.spacing-8 { padding: 2rem; } /* 32px */
🧭 Navegação e UX
1. Links Funcionais
Regra: Nunca usar href="#" - sempre links reais e funcionais.
<!-- ❌ ERRADO -->
<a href="#">Link quebrado</a>
<!-- ✅ CORRETO -->
<a href="https://exemplo.com" target="_blank" class="footer-link">
<i class="fas fa-external-link-alt me-2"></i>
Link Funcional
</a>
2. Navegação Suave
// Smooth scrolling para links âncora
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
document.querySelector(this.getAttribute('href')).scrollIntoView({
behavior: 'smooth'
});
});
});
3. Estados de Loading
.loading {
opacity: 0.6;
pointer-events: none;
}
.loading::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 20px;
height: 20px;
margin: -10px 0 0 -10px;
border: 2px solid #f3f3f3;
border-top: 2px solid var(--primary);
border-radius: 50%;
animation: spin 1s linear infinite;
}
💼 Tom Profissional
1. Tipografia Hierárquica
/* Títulos */
.display-6 {
font-size: 3.5rem;
font-weight: 800;
line-height: 1.1;
}
.display-5 {
font-size: 3rem;
font-weight: 700;
line-height: 1.2;
}
/* Subtítulos */
.section-title {
font-size: 2.5rem;
font-weight: 700;
margin-bottom: 2.5rem;
position: relative;
}
.section-title::after {
content: "";
position: absolute;
bottom: -10px;
left: 0;
width: 60px;
height: 4px;
background: linear-gradient(to right, var(--primary), var(--secondary));
border-radius: 2px;
}
2. Cores Profissionais
/* Gradientes sutis */
.hero-gradient {
background: linear-gradient(90deg, #0ea5e9 0%, #8b5cf6 100%);
}
/* Sombras profissionais */
.card-shadow {
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
0 2px 4px -1px rgba(0, 0, 0, 0.06);
}
.card-shadow-hover {
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1),
0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
3. Microinterações
/* Transições suaves */
.smooth-transition {
transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
/* Hover effects */
.hover-lift:hover {
transform: translateY(-5px);
}
.hover-scale:hover {
transform: scale(1.05);
}
⚡ Otimizações de Performance
1. Animações Otimizadas
/* Reduzir animações em dispositivos com preferência */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
/* Animações performáticas */
@keyframes fadeIn {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-fade-in {
animation: fadeIn 0.8s ease forwards;
}
2. Lazy Loading
// Intersection Observer para animações
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
}, { threshold: 0.1 });
document.querySelectorAll('.animate-fade-in').forEach(element => {
observer.observe(element);
});
3. Auto-save Inteligente
// Debounced auto-save
let saveTimeout;
function autoSave(data) {
clearTimeout(saveTimeout);
saveTimeout = setTimeout(() => {
localStorage.setItem('app-data', JSON.stringify(data));
showSaveIndicator();
}, 1000);
}
📝 Padrões de Código
1. Estrutura HTML Semântica
<!-- Estrutura recomendada -->
<header class="hero-section">
<div class="container">
<div class="row">
<div class="col-lg-8">
<h1 class="display-4">Título Principal</h1>
<p class="lead">Descrição</p>
</div>
</div>
</div>
</header>
<main>
<section class="py-5">
<div class="container">
<!-- Conteúdo -->
</div>
</section>
</main>
<footer class="bg-dark text-white py-5">
<div class="container">
<!-- Footer content -->
</div>
</footer>
2. CSS Organizado
/* 1. Reset e Base */
* { box-sizing: border-box; }
/* 2. Variáveis CSS */
:root {
--primary: #0ea5e9;
--secondary: #8b5cf6;
}
/* 3. Layout */
.container { max-width: 1200px; }
/* 4. Componentes */
.feature-card { /* estilos */ }
/* 5. Estados */
.feature-card:hover { /* estilos */ }
/* 6. Responsividade */
@media (min-width: 768px) { /* estilos */ }
3. JavaScript Modular
// Estrutura modular
const App = {
init() {
this.setupEventListeners();
this.loadSavedData();
this.setupAnimations();
},
setupEventListeners() {
// Event listeners
},
loadSavedData() {
// Auto-save functionality
},
setupAnimations() {
// Animation setup
}
};
// Inicialização
document.addEventListener('DOMContentLoaded', () => {
App.init();
});
✅ Checklist de Qualidade
Acessibilidade
- Todos os campos têm labels apropriados
- Navegação por teclado funcional
- Contraste de cores WCAG AA
- Screen readers compatíveis
- Foco visível em todos os elementos
Responsividade
- Mobile first implementado
- Breakpoints consistentes
- Grid adaptativo funcional
- Tipografia responsiva
- Touch targets adequados (44px mínimo)
Performance
- Animações otimizadas
- Lazy loading implementado
- Auto-save com debounce
- Imagens otimizadas
- CSS/JS minificado
UX/UI
- Links funcionais (nunca href=”#”)
- Estados de loading
- Feedback visual
- Navegação intuitiva
- Consistência visual
Código
- HTML semântico
- CSS organizado
- JavaScript modular
- Comentários adequados
- Padrões consistentes
🚀 Implementação Rápida
Template Base
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Seu Projeto</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body>
<!-- Conteúdo seguindo as diretrizes -->
</body>
</html>
CSS Base
/* Reset e base */
* { box-sizing: border-box; }
body {
font-family: 'Inter', sans-serif;
background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
color: #1e293b;
overflow-x: hidden;
}
/* Grid responsivo */
.responsive-grid {
display: grid;
grid-template-columns: 1fr;
gap: 1rem;
}
@media (min-width: 768px) {
.responsive-grid {
grid-template-columns: repeat(2, 1fr);
gap: 1.5rem;
}
}
@media (min-width: 1024px) {
.responsive-grid {
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
}
}
📚 Recursos Adicionais
Bibliotecas Recomendadas
- Bootstrap 5.3+: Framework CSS
- Font Awesome 6.4+: Ícones
- Tailwind CSS: Utility-first CSS
- jsPDF: Geração de PDF
- html2canvas: Captura de tela
Ferramentas de Teste
- Lighthouse: Performance e acessibilidade
- WAVE: Avaliação de acessibilidade
- Chrome DevTools: Debugging
- Responsive Design Mode: Teste de dispositivos
Referências
📞 Suporte
Para dúvidas sobre implementação ou melhorias, consulte:
- Este documento como referência principal
- Exemplos de código nos comentários
- Padrões estabelecidos em projetos existentes
- Testes de acessibilidade e responsividade
Última atualização: Janeiro 2025
Versão: 1.0
Status: Ativo e em uso