@horizon-framework/website-dev-docs 2.3.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.
@@ -0,0 +1,151 @@
1
+ # CRMs e Integrações — Pacotes de Conversão
2
+
3
+ > Referência sobre os pacotes de integração CRM disponíveis e como acessar suas documentações internas.
4
+
5
+ ---
6
+
7
+ ## CONCEITO
8
+
9
+ Cada CRM suportado pelo Horizon tem um **pacote npm** dedicado em `@horizon-integrations/[crm]`. Esses pacotes são a ponte entre o CRM externo e o Horizon.
10
+
11
+ O pacote NÃO é parte do site — é uma dependência npm. O site instala o pacote e usa seus exports.
12
+
13
+ ---
14
+
15
+ ## PACOTES DISPONÍVEIS
16
+
17
+ | Pacote npm | CRM | Localização local |
18
+ |---|---|---|
19
+ | `@horizon-integrations/si9-crm` | SI9 Sistemas | `horizon-integrations/lista-crms/si9` |
20
+ | `@horizon-integrations/jetimob-crm` | Jetimob | `horizon-integrations/lista-crms/jetimob` |
21
+ | `@horizon-integrations/publisher-crm` | Publisher | `horizon-integrations/lista-crms/publisher` |
22
+ | `@horizon-integrations/arbo-crm` | Arbo | `horizon-integrations/lista-crms/arbo` |
23
+
24
+ ---
25
+
26
+ ## O QUE CADA PACOTE EXPORTA
27
+
28
+ | Export | Função |
29
+ |---|---|
30
+ | Schema Zod de validação | Valida dados convertidos antes do sync |
31
+ | EntitySchema com source tracking | Schema da entidade com metadados de origem |
32
+ | Conversor de dados | Função que transforma dados crus → formato Horizon |
33
+ | `FICHA_TECNICA_INTEGRACAO.md` | **DOC PRINCIPAL** — campos, tipos SQL, badges, filtros, transformações |
34
+
35
+ ---
36
+
37
+ ## NORMALIZAÇÃO DOS CAMPOS EXTRAS
38
+
39
+ Cada CRM tem campos que vão além dos 45 base do Horizon. O conversor normaliza esses campos excedentes seguindo regras padronizadas:
40
+
41
+ | Regra | Exemplo CRM | Resultado Horizon |
42
+ |---|---|---|
43
+ | Ponto → underscore | `insurance.letter` | `insurance_letter` |
44
+ | Hífen → underscore | `air-conditioner` | `air_conditioner` |
45
+ | Objeto aninhado → prefixo | `features.room` | `features_room` |
46
+ | Booleans agrupados → array TEXT[] | `features.shed=true, features.elevator=true` | `features: ["Galpão", "Elevador"]` (labels PT-BR) |
47
+ | Tudo snake_case minúsculo | `SuperHighlight` | `super_highlight` |
48
+
49
+ Os arrays de labels (features, security, recreation, rural) são traduzidos pra PT-BR pelo conversor usando mapas de labels internos.
50
+
51
+ ---
52
+
53
+ ## PRESET DE EXIBIÇÃO — OBRIGATÓRIO EM TODA FICHA_TECNICA
54
+
55
+ Toda FICHA_TECNICA_INTEGRACAO.md **DEVE** ter uma seção "Preset de Exibição Recomendado" que define:
56
+
57
+ 1. **Card de listagem** — Quais campos viram tarja, badge, atributo com ícone
58
+ 2. **Página de detalhe — Ficha** — Como organizar as seções de atributos (principal, características, segurança, lazer, dimensões, rural, etc.)
59
+ 3. **Página de detalhe — Valores** — Como organizar a caixa de valores lateral por operação
60
+
61
+ Este preset é **agnóstico de tecnologia** — não menciona framework, componente ou site específico. Apenas descreve a organização recomendada dos dados pra qualquer interface.
62
+
63
+ O agente de configuração de dados lê este preset e o traduz pra configuração específica do site (fields-lists, PropertyInfoBlock, ValuesBox, etc.).
64
+
65
+ ---
66
+
67
+ ## FICHA TÉCNICA — O QUE CONTÉM
68
+
69
+ A FICHA_TECNICA_INTEGRACAO.md de cada CRM é a **bíblia** da integração. Contém:
70
+
71
+ 1. **Campos base** (45 campos Horizon) — como cada campo do CRM mapeia pro Horizon
72
+ 2. **Campos extras** — campos específicos do CRM com tipos SQL recomendados
73
+ 3. **Situações do site** — quais campos viram badge, tarja, flag
74
+ 4. **Transformações recomendadas** — subtipo, valor_m2, etc.
75
+ 5. **Mapeamento de labels** — tradução de enums pra PT-BR
76
+ 6. **Filtros de busca sugeridos** — quais campos usar como filtro e de que tipo
77
+ 7. **FTS** — quais campos incluir no full-text search
78
+ 8. **Índices recomendados** — B-tree, GIN, GIST
79
+ 9. **Limitações do CRM** — o que a API NÃO fornece
80
+
81
+ ---
82
+
83
+ ## REGRA OBRIGATÓRIA
84
+
85
+ **SEMPRE ler a FICHA_TECNICA_INTEGRACAO.md do CRM ANTES de qualquer configuração.**
86
+
87
+ O agente deve:
88
+ 1. Localizar o pacote npm do CRM (local ou via `node_modules`)
89
+ 2. Ler a FICHA_TECNICA completamente
90
+ 3. Usar as informações dela pra configurar banco, API e frontend
91
+ 4. NÃO inventar campos — usar apenas o que está documentado na ficha
92
+
93
+ ---
94
+
95
+ ## COMO ACESSAR A FICHA TÉCNICA
96
+
97
+ ### Via pacote local (desenvolvimento)
98
+ ```
99
+ [repo-horizon-integrations]/lista-crms/[crm]/FICHA_TECNICA_INTEGRACAO.md
100
+ ```
101
+
102
+ ### Via node_modules (projeto do site)
103
+ ```
104
+ apps/api/node_modules/@horizon-integrations/[crm]/FICHA_TECNICA_INTEGRACAO.md
105
+ ```
106
+
107
+ ### Docs internas do pacote (quando existem)
108
+ ```
109
+ [pacote]/docs/
110
+ ├── API_CAMPOS_PUBLICOS.md → Campos da API mapeados
111
+ ├── LACUNAS_E_PENDENCIAS.md → O que falta na integração
112
+ ├── PLANO_CONVERSOR.md → Plano de desenvolvimento do conversor
113
+ └── PROGRESSO.md → Status de implementação
114
+ ```
115
+
116
+ ---
117
+
118
+ ## SCRIPTS DE DESENVOLVIMENTO
119
+
120
+ Cada pacote CRM tem seus próprios scripts no `package.json`. Os comandos podem variar entre CRMs — **sempre consultar o `package.json` ou `README.md` do pacote específico** pra saber quais scripts existem e como usá-los.
121
+
122
+ Todos os pacotes CRM provavelmente possuem funções para:
123
+ - **Download** — Baixar dados da API do CRM
124
+ - **Conversão** — Converter dados crus pro formato Horizon
125
+ - **Profiling** — Analisar os dados crus e convertidos (distribuição de campos, valores únicos)
126
+ - **Upload** — Enviar dados convertidos pra API do site
127
+
128
+ Os nomes dos scripts e os detalhes de cada um variam por CRM.
129
+
130
+ ### Regras de upload
131
+
132
+ - **Autenticação:** O endpoint de sync da API exige header de autenticação. O valor está no `.env` da API como `API_SECRET_KEY`.
133
+ - **Batching obrigatório:** A API aceita no máximo ~50 itens por request (transação Prisma tem timeout de 5s). Enviar mais causa `Transaction already closed`.
134
+ - **Script de upload do pacote pode não fazer batching** — se der timeout, enviar manualmente em lotes de 50.
135
+ - **API precisa estar rodando** na porta configurada.
136
+ - **Após upload:** Regenerar schema no frontend se houve mudança no pacote CRM.
137
+
138
+ - **API precisa estar rodando** na porta configurada (geralmente 5000)
139
+ - **Após upload:** Regenerar schema no frontend se houve mudança no pacote CRM
140
+
141
+ ---
142
+
143
+ ## CAMPOS CUSTOMIZADOS (fields[])
144
+
145
+ Alguns CRMs (como SI9) têm campos customizados que o cliente cria livremente. Estes vêm como array JSONB `{field, value}`.
146
+
147
+ O conversor pode ter **campos reconhecidos** — fields customizados que são mapeados automaticamente pra campos Horizon. Exemplo no SI9:
148
+ - Campo custom "Corretor" → alimenta `corretor_nome`
149
+ - Campo custom "Corretor ID" → alimenta `corretor_key`
150
+
151
+ Os campos não reconhecidos são preservados no array `fields` pra exibição na página do imóvel.
@@ -0,0 +1,403 @@
1
+ # Design Avancado — Estilo de Design Horizon (Estilo Jefferson)
2
+
3
+ > Padroes visuais, composicoes, animacoes e estilo de design extraidos das paginas avancadas.
4
+ > Este documento ensina COMO criar paginas e secoes que seguem o estilo Horizon.
5
+
6
+ ---
7
+
8
+ ## Assinatura Visual — 15 Padroes Recorrentes
9
+
10
+ 1. Hero com imagem 70% a direita + conteudo alinhado a esquerda
11
+ 2. Gradientes sutis (primary → primary-l1)
12
+ 3. Orbs decorativos (blur-3xl) em cantos/backgrounds
13
+ 4. Tipografia bold e clara (type-headline com gradiente)
14
+ 5. Alternancia background/surface entre secoes
15
+ 6. Cards com border + hover glow primary
16
+ 7. Carousels com autoplay 4000ms
17
+ 8. Spacing generoso (py-24, space-y-32)
18
+ 9. Icones em backgrounds arredondados (rounded-2xl + bg-primary/10)
19
+ 10. Somente 2 CTAs por section (primary + secondary)
20
+ 11. Imagens com overlay gradientes em camadas
21
+ 12. Stats com contadores animados (Intersection Observer)
22
+ 13. Badges/overlines com icone antes de headlines
23
+ 14. Testimonials com avatares e ratings
24
+ 15. Gallery em masonry com fade bottom
25
+
26
+ ---
27
+
28
+ ## HERO SECTIONS
29
+
30
+ ### Estrutura Base (padrao recorrente)
31
+
32
+ ```
33
+ [Background Image 70% direita] → [Gradient Overlay camadas] → [Conteudo Esquerda]
34
+ ```
35
+
36
+ ### Camadas do Hero (de baixo pra cima)
37
+
38
+ 1. **Imagem** — posicionada com `left-[20%]`, ocupa ~70% da tela
39
+ 2. **Dark overlay** — `bg-background/40`
40
+ 3. **Gradiente lateral** — `linear-gradient(to right, black 20%, transparent 70%)`
41
+ 4. **Glow ball primary** — radial-gradient com blur-3xl, opacity-50
42
+
43
+ ```tsx
44
+ {/* Camada 1: Imagem a direita */}
45
+ <div className="absolute inset-0 left-[20%]">
46
+ <div className="w-full h-full bg-cover bg-center"
47
+ style={{backgroundImage: "url(...)"}} />
48
+ </div>
49
+
50
+ {/* Camada 2: Dark overlay */}
51
+ <div className="absolute inset-0 bg-background/40" />
52
+
53
+ {/* Camada 3: Gradiente lateral */}
54
+ <div className="absolute inset-0"
55
+ style={{background: "linear-gradient(to right, black 20%, transparent 70%)"}} />
56
+
57
+ {/* Camada 4: Glow ball */}
58
+ <div className="absolute top-[-10%] left-[0%] w-[600px] h-[600px] rounded-full opacity-50 blur-3xl"
59
+ style={{background: "radial-gradient(circle, var(--primary) 0%, transparent 70%)"}} />
60
+ ```
61
+
62
+ ### Elementos do Hero (de cima pra baixo)
63
+
64
+ 1. **Overline/Badge** — pill com icone + texto
65
+ 2. **Headline (h1)** — 4xl mobile → 7xl desktop, linha 2 em gradiente primary
66
+ 3. **Body Copy** — text-lg, white/90%, max-w-2xl
67
+ 4. **2 CTAs** — primary + outline com backdrop-blur
68
+
69
+ ```tsx
70
+ {/* Overline */}
71
+ <div className="inline-flex items-center gap-2 px-4 py-2 rounded-full bg-primary/10">
72
+ <Icon className="size-4 text-primary" />
73
+ <span className="text-sm font-semibold">Label</span>
74
+ </div>
75
+
76
+ {/* Headline com gradiente */}
77
+ <h1 className="type-headline leading-tight leading-trim text-4xl md:text-5xl lg:text-7xl font-bold">
78
+ Texto Normal
79
+ <span className="text-transparent bg-clip-text bg-linear-to-r from-primary to-primary-l1">
80
+ Texto em Gradiente
81
+ </span>
82
+ </h1>
83
+
84
+ {/* CTAs */}
85
+ <Button size="lg" className="bg-primary hover:bg-primary/90">
86
+ Acao Principal
87
+ </Button>
88
+ <Button size="lg" variant="outline"
89
+ className="bg-white/10 backdrop-blur-sm text-white border-white/30">
90
+ Acao Secundaria
91
+ </Button>
92
+ ```
93
+
94
+ ---
95
+
96
+ ## LAYERS FLUTUANTES (Orbs Decorativos)
97
+
98
+ Padrao mais marcante do estilo. Orbs de cor com blur gigante que flutuam atras do conteudo.
99
+
100
+ ### Tipos de Layers
101
+
102
+ **1. Glow Ball Primary (mais comum)**
103
+ ```tsx
104
+ <div className="absolute top-20 left-10 w-96 h-96 bg-primary/5 rounded-full blur-3xl" />
105
+ ```
106
+
107
+ **2. Glow Ball Secondary**
108
+ ```tsx
109
+ <div className="absolute bottom-20 right-10 w-96 h-96 bg-secondary/5 rounded-full blur-3xl" />
110
+ ```
111
+
112
+ **3. Radial Gradient (Hero)**
113
+ ```tsx
114
+ <div className="absolute top-[-10%] left-[0%] w-[600px] h-[600px] rounded-full opacity-50 blur-3xl"
115
+ style={{background: "radial-gradient(circle, var(--primary) 0%, transparent 70%)"}} />
116
+ ```
117
+
118
+ ### Regras dos Orbs
119
+ - SEMPRE `position: absolute` dentro de secao `relative overflow-hidden`
120
+ - SEMPRE `blur-3xl` (nunca blur menor)
121
+ - Opacidade: 5-15% para bg-primary/bg-secondary, 30-50% para radial-gradient
122
+ - Tamanho: w-96 h-96 (padrao) ou w-[600px] h-[600px] (hero)
123
+ - Posicao: cantos opostos da secao (top-left + bottom-right)
124
+ - NUNCA mais que 2 orbs por secao
125
+
126
+ ---
127
+
128
+ ## BACKGROUNDS E TRANSICOES ENTRE SECOES
129
+
130
+ ### Paleta de Backgrounds
131
+
132
+ ```
133
+ bg-background → Cor base (escura em dark mode)
134
+ bg-surface → Ligeiramente mais clara
135
+ bg-surface/30 → Surface com transparencia
136
+ bg-card → Fundo de card
137
+ ```
138
+
139
+ ### Padrao de Alternancia
140
+
141
+ ```
142
+ Secao 1: bg-background
143
+ Secao 2: bg-linear-to-br from-background via-surface/30 to-background
144
+ Secao 3: bg-surface
145
+ Secao 4: bg-background
146
+ Secao 5: bg-linear-to-br from-surface/30 via-background to-surface/30
147
+ ```
148
+
149
+ ### Gradientes de Background
150
+
151
+ ```tsx
152
+ {/* Diagonal suave */}
153
+ className="bg-linear-to-br from-background via-surface/30 to-background"
154
+
155
+ {/* Bottom fade */}
156
+ className="bg-linear-to-b from-background to-surface"
157
+
158
+ {/* Right fade */}
159
+ className="bg-linear-to-r from-background to-surface/30"
160
+ ```
161
+
162
+ ---
163
+
164
+ ## TIPOGRAFIA
165
+
166
+ ### Classes Custom (SEMPRE usar)
167
+
168
+ ```
169
+ type-headline → Bold, leading-tight, leading-trim
170
+ type-body → Normal weight, leading-normal, leading-trim
171
+ type-title → Semibold, leading-tight
172
+ type-overline → Uppercase, tracking-wider, font-semibold
173
+ type-button → font-semibold, leading-trim
174
+ type-display → Muito grande, bold
175
+ ```
176
+
177
+ ### Escala Responsiva
178
+
179
+ | Contexto | Mobile | Tablet | Desktop |
180
+ |---|---|---|---|
181
+ | h1 (Hero) | text-4xl | text-5xl | text-6xl a text-7xl |
182
+ | h2 (Section Title) | text-3xl | text-4xl | text-5xl |
183
+ | h3 (Card Title) | text-xl | text-2xl | text-2xl a text-3xl |
184
+ | Body | text-base | text-lg | text-lg a text-xl |
185
+ | Overline | text-xs | text-sm | text-sm |
186
+
187
+ ### Padrao de Headline com Gradiente
188
+
189
+ ```tsx
190
+ <h2 className="type-headline leading-tight leading-trim text-3xl md:text-4xl lg:text-5xl">
191
+ Linha Normal de Texto
192
+ <span className="text-transparent bg-clip-text bg-linear-to-r from-primary to-primary-l1">
193
+ Texto Destacado em Gradiente
194
+ </span>
195
+ </h2>
196
+ ```
197
+
198
+ ### Largura Maxima de Texto
199
+ - Headlines: sem limite (mas ficam dentro de container)
200
+ - Body/descricao: `max-w-2xl` ou `max-w-3xl` + `mx-auto` se centralizado
201
+
202
+ ---
203
+
204
+ ## COLORIMETRIA
205
+
206
+ ### Uso Proporcional
207
+
208
+ - **Primary:** 70% (headlines, icones, botoes, acentos, gradientes)
209
+ - **Secondary:** 20% (CTAs alternativas, highlights, variacao)
210
+ - **Neutros:** 10% (borders, muted-foreground, separadores)
211
+
212
+ ### Cores Recorrentes
213
+
214
+ ```tsx
215
+ // Textos
216
+ text-primary // Destaque principal
217
+ text-foreground // Texto padrao
218
+ text-muted-foreground // Texto secundario
219
+ text-white // Sobre fundos escuros
220
+
221
+ // Backgrounds
222
+ bg-primary/10 // Fundo suave de icone/badge
223
+ bg-surface // Fundo alternativo de secao
224
+ bg-card // Fundo de card
225
+
226
+ // Borders
227
+ border-border // Borda padrao
228
+ border-primary/50 // Borda hover
229
+
230
+ // Sombras
231
+ shadow-primary/10 // Sombra colorida no hover
232
+ ```
233
+
234
+ ### Gradientes de Texto
235
+ ```tsx
236
+ // Gradiente primary (mais usado)
237
+ className="text-transparent bg-clip-text bg-linear-to-r from-primary to-primary-l1"
238
+
239
+ // Gradiente primary-secondary (raro)
240
+ className="text-transparent bg-clip-text bg-linear-to-r from-primary to-secondary"
241
+ ```
242
+
243
+ ---
244
+
245
+ ## ESPACAMENTO PADRAO
246
+
247
+ ### Padding de Secoes
248
+ ```tsx
249
+ className="py-16 md:py-20 lg:py-24" // Padrao
250
+ className="py-24 md:py-32" // Secoes grandes (hero, CTA final)
251
+ ```
252
+
253
+ ### Gaps
254
+ ```
255
+ Entre secoes: space-y-32 ou cada secao com seu py-24
256
+ Entre elementos da secao: gap-12 a gap-20
257
+ Cards em grid: gap-4 a gap-8
258
+ Elementos dentro de card: gap-2 a gap-4
259
+ ```
260
+
261
+ ### Container
262
+ ```tsx
263
+ <div className="container"> {/* max-width automatico + padding lateral */}
264
+ ```
265
+
266
+ ---
267
+
268
+ ## CARDS
269
+
270
+ ### Card Padrao (border + hover glow)
271
+
272
+ ```tsx
273
+ <div className="p-6 rounded-2xl bg-card border border-border
274
+ hover:border-primary/50 hover:shadow-lg hover:shadow-primary/10
275
+ transition-all duration-300">
276
+ {/* Icone */}
277
+ <div className="inline-flex items-center justify-center size-16 rounded-2xl bg-primary/10">
278
+ <Icon className="size-8 text-primary" />
279
+ </div>
280
+ {/* Titulo */}
281
+ <h3 className="type-title text-lg font-bold mt-4">{title}</h3>
282
+ {/* Descricao */}
283
+ <p className="type-body text-sm text-muted-foreground mt-2">{description}</p>
284
+ </div>
285
+ ```
286
+
287
+ ### Variacoes
288
+ - **Com imagem top:** imagem acima, conteudo abaixo
289
+ - **Com gradiente:** `bg-linear-to-br from-primary/5 to-transparent`
290
+ - **Com quote icon:** icone de aspas flutuando no top-right
291
+ - **Com badge:** status badge no canto
292
+
293
+ ---
294
+
295
+ ## ANIMACOES (Framer Motion)
296
+
297
+ ### Fade-in on Scroll (mais usado)
298
+ ```tsx
299
+ <motion.div
300
+ initial={{ opacity: 0, y: 20 }}
301
+ whileInView={{ opacity: 1, y: 0 }}
302
+ viewport={{ once: true }}
303
+ transition={{ duration: 0.6 }}
304
+ >
305
+ ```
306
+
307
+ ### Stagger Children (items em sequencia)
308
+ ```tsx
309
+ transition={{ duration: 0.6, delay: index * 0.1 }}
310
+ ```
311
+
312
+ ### Hover Scale (imagens e icones)
313
+ ```tsx
314
+ className="group-hover:scale-105 transition-transform duration-500"
315
+ ```
316
+
317
+ ### Counter Animation (stats)
318
+ ```tsx
319
+ // Intersection Observer detecta visibilidade
320
+ // requestAnimationFrame anima de 0 ate o valor
321
+ // Duracao: ~2000ms
322
+ ```
323
+
324
+ ### Carousel Autoplay
325
+ ```tsx
326
+ plugins={[Autoplay({ delay: 4000, stopOnInteraction: true })]}
327
+ ```
328
+
329
+ ---
330
+
331
+ ## IMAGENS
332
+
333
+ ### Overlays em Camadas (padrao mais usado)
334
+ ```tsx
335
+ {/* Bottom-to-top (para texto sobre imagem) */}
336
+ <div className="absolute inset-0 bg-linear-to-t from-black/80 via-black/10 to-transparent" />
337
+
338
+ {/* Hover reveal */}
339
+ <div className="absolute inset-0 bg-black/0 group-hover:bg-black/40 transition-colors" />
340
+
341
+ {/* Fade lateral (hero) */}
342
+ <div style={{background: "linear-gradient(to right, var(--background) 0%, transparent 25%, transparent 75%, var(--background) 100%)"}} />
343
+ ```
344
+
345
+ ### Aspect Ratios
346
+ - Hero: full-width, min-h-[90vh]
347
+ - Features: aspect-[4/3]
348
+ - Gallery: aspect-square
349
+ - Video: aspect-video
350
+
351
+ ### Masonry Gallery
352
+ ```css
353
+ column-count: 2; /* mobile */
354
+ column-gap: 12px;
355
+ @media (min-width: 768px) { column-count: 3; }
356
+ ```
357
+
358
+ ---
359
+
360
+ ## ESTRUTURA PADRAO DE PAGINA
361
+
362
+ ### Pagina Simples (4-5 secoes)
363
+ 1. Hero Section
364
+ 2. Features/Benefits (carousel ou grid alternado)
365
+ 3. CTA Section
366
+ 4. (Opcional) Testimonials ou FAQ
367
+
368
+ ### Pagina Completa (10+ secoes, ex: Institucional)
369
+ 1. Hero
370
+ 2. About
371
+ 3. Stats (contadores animados)
372
+ 4. Video
373
+ 5. History
374
+ 6. Differentials (carousel 6 items)
375
+ 7. Gallery (masonry)
376
+ 8. Services (grid 4 colunas)
377
+ 9. Team (carousel autoplay)
378
+ 10. Awards
379
+ 11. Units
380
+ 12. Testimonials (carousel)
381
+ 13. CTA Final
382
+
383
+ ### Densidade de Conteudo
384
+ - Pouco texto por secao (max-w-2xl a max-w-3xl)
385
+ - Grande espacamento vertical (py-24, gap-12)
386
+ - Hierarquia clara: Overline → Headline → Body → CTA
387
+ - Whitespace como componente de design
388
+ - Tamanho de imagens: 50% da tela, nunca 100% (exceto hero)
389
+
390
+ ---
391
+
392
+ ## FLUXO DE CRIACAO
393
+
394
+ 1. Definir objetivo e conteudo da pagina
395
+ 2. Desenhar wireframe (ASCII) com secoes
396
+ 3. Escolher secoes do catalogo (DESIGN_TEMPLATES_CATALOG.md)
397
+ 4. Compor a pagina combinando secoes
398
+ 5. Aplicar layers flutuantes (orbs decorativos)
399
+ 6. Aplicar gradientes entre secoes (alternancia background/surface)
400
+ 7. Adicionar animacoes (fade-in on scroll)
401
+ 8. Customizar textos, imagens, cores
402
+ 9. Testar responsividade (mobile, tablet, desktop)
403
+ 10. Rodar checklist do AGENTE_LAYOUT_DESIGNER (18 itens)