Categorias
Projetos
CSS

A IA gera CSS, mas você sabe se é bom?

A IA gera CSS, mas você sabe se é bom?

Abra o ChatGPT, Claude, Codex, Copilot, qualquer um. Peça para criar um componente de card com imagem, título, descrição e botão. Em segundos, você recebe um bloco de CSS funcional.

Funcional, sim. Bom? Aí é outra história.

Hoje, a maioria dos desenvolvedores comemora o CSS que a IA gera porque funciona visualmente. O card aparece na tela, o layout (às vezes) fica bonito, o botão muda de cor no hover. “Missão cumprida”.

Mas “funcionar” é o critério mais baixo que existe para avaliar CSS.

Uma div com style="margin-left: 300px" também “funciona”. Nem por isso é uma boa decisão.

O problema não aparece no dia em que você cola o código. Aparece semanas, meses depois, quando o projeto cresce e ninguém sabe mais o que aquele CSS faz, por que existe ou como modificá-lo sem quebrar outra coisa.

O que a IA realmente gera

Vamos ao experimento. Pedi para uma IA criar um sistema de cards para um blog. Eis o resultado (simplificado):

.card {
background: white;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
overflow: hidden;
width: 350px;
}
.card img {
height: 200px;
object-fit: cover;
width: 100%;
}
.card .content {
padding: 20px;
}
.card .content h3 {
color: #333;
font-size: 18px;
margin-bottom: 10px;
}
.card .content p {
color: #666;
font-size: 14px;
margin-bottom: 15px;
}
.card .content .btn {
background: #007bff;
border-radius: 4px;
color: white;
display: inline-block;
padding: 10px 20px;
text-decoration: none;
}
.card .content .btn:hover {
background: #0056b3;
}

À primeira vista, parece razoável. O card funciona. Mas olhe com mais atenção:

  • Seletores encadeados demais (.card .content h3): alta especificidade sem necessidade, o que dificulta sobrescritas e manutenção
  • Valores mágicos por toda parte: 350px, 200px, 20px, 18px, 14px, #333, #007bff… sem “fonte de verdade” e/ou nenhuma relação com um design system
  • Nomes genéricos: .content, .btn são bombas-relógio em qualquer projeto com mais de uma página
  • Nenhuma separação de responsabilidades: estrutura, skin e estado misturados no mesmo bloco
  • Largura fixa: width: 350px em pleno 2026, onde responsividade é premissa básica
  • Zero reuso: esse CSS só serve para esse card específico; qualquer variação exige duplicação

Agora imagine isso multiplicado por 50 componentes ao longo de 6 meses de projeto.

Cada um gerado pela IA em momentos diferentes, sem coesão entre eles.

Cada um com seus próprios valores mágicos e convenções inventadas.

Isso não é CSS. É débito técnico empacotado com syntax highlighting.

O mesmo card, com arquitetura

Agora, o mesmo componente escrito por alguém que entende de arquitetura CSS:

/* Objeto de mídia — estrutura reutilizável */
.o-card {
border-radius: var(--radius-md);
display: flex;
flex-direction: column;
overflow: hidden;
}
.o-card__media {
aspect-ratio: 16 / 9;
}
.o-card__media img {
block-size: 100%;
inline-size: 100%;
object-fit: cover;
}
.o-card__body {
display: flex;
flex-direction: column;
gap: var(--space-sm);
padding: var(--space-md);
}
/* Componente visual — skin específica */
.c-card--blog {
background-color: var(--color-surface);
box-shadow: var(--shadow-sm);
}
.c-card--blog .o-card__body {
color: var(--color-text-secondary);
}

Visualmente, o resultado pode ser idêntico. Mas a diferença é enorme:

  • Nomenclatura com intenção: prefixos o- (objeto) e c- (componente) comunicam responsabilidade
  • Design tokens: var(--space-md), var(--radius-md) em vez de valores mágicos; mude o token, mude o sistema inteiro
  • Separação estrutura vs. skin: o objeto .o-card define como o card se comporta; o componente .c-card--blog define como ele se parece
  • Baixa especificidade: seletores simples, fáceis de sobrescrever quando necessário
  • Reutilizável: o objeto card serve para cards de blog, de produto, de perfil, de qualquer coisa
  • Propriedades lógicas: inline-size e block-size em vez de width e height, preparando para internacionalização
  • Sem largura fixa: o card se adapta ao container, como deveria ser

A IA não escreveu isso porque ela não tem opinião sobre arquitetura.

Ela gera o que estatisticamente aparece mais nos dados de treinamento — que é, em grande parte, CSS sem critério.

Por que a IA não resolve isso sozinha?

A IA é, fundamentalmente, uma máquina de probabilidade. Ela gera o CSS mais provável, não o mais adequado.

E o CSS mais provável na internet é, justamente, CSS sem arquitetura.

Tutoriais, respostas de Stack Overflow, projetos de nível iniciante… A maior parte do CSS que existe online não segue nenhuma metodologia.

É o que a IA aprendeu, e é o que ela reproduz.

Você pode até instruir a IA: “Use BEM”, “Siga ITCSS”, “Aplique princípios de OOCSS”. E ela vai tentar. Mas tentar não é o mesmo que entender.

A IA pode gerar classes com __ e -- que parecem BEM, mas que não respeitam a lógica de Bloco, Elemento e Modificador.

Pode criar uma estrutura de pastas que lembra ITCSS, mas com componentes na camada errada e Objetos misturados com Utilitários.

Sem alguém que entenda essas metodologias de verdade, o output da IA é apenas uma imitação superficial; e imitação superficial é perigosa, pois dá falsa sensação de organização.

O custo invisível do CSS sem critério

Quando o CSS não tem arquitetura, os problemas não aparecem imediatamente. Eles se acumulam silenciosamente:

Especificidade fora de controle: cada novo componente precisa de seletores mais específicos para “vencer” os anteriores. !important em cima de !important, numa batalha onde ninguém ganha.

Medo de mexer: ninguém sabe o que um seletor afeta além do componente atual. Mudar uma classe pode quebrar algo em outra página. O resultado é que ninguém remove CSS, só adiciona. O arquivo só cresce.

Duplicação invisível: sem padrões de reuso, cada desenvolvedor (ou cada sessão de IA) recria os mesmos padrões de formas diferentes. O projeto acaba com 15 variações de botão que fazem essencialmente a mesma coisa.

Onboarding lento: um novo desenvolvedor olha para o projeto e não consegue entender a lógica (porque não há lógica). É uma colcha de retalhos que só faz sentido para quem estava lá quando foi escrito — muitas vezes, nem para essa pessoa.

Esses problemas existiam antes da IA. Mas a IA os acelera dramaticamente, porque a velocidade de geração de código aumentou, mas a velocidade de reflexão sobre esse código, não.

Arquitetura CSS não é o oposto da IA

Aqui está o ponto que muita gente não percebe: arquitetura CSS e IA não competem; complementam-se.

Quando você domina metodologias como OOCSS, BEM, SMACSS, ITCSS, você consegue:

  1. Avaliar se o CSS que a IA gerou é bom ou precisa ser refeito
  2. Instruir a IA com prompts melhores, porque você sabe exatamente o que pedir
  3. Integrar o output da IA no seu projeto de forma coesa, adaptando-o ao sistema que já existe
  4. Refatorar código gerado em minutos, porque você tem um modelo mental claro de onde cada coisa deve ficar

Sem esse conhecimento, você é refém do output. Aceita o que vem, cola no projeto e torce para funcionar.

Com esse conhecimento, você usa a IA como ferramenta, não como muleta.

A IA acelera a execução. Arquitetura CSS garante a direção.

Velocidade sem direção é só bagunça rápida.

A habilidade que a IA não substitui

Ferramentas de IA vão continuar evoluindo. O CSS que elas geram vai sim melhorar.

Mas a necessidade de alguém que entenda por que organizar CSS de determinada forma, quando usar cada metodologia e como manter a coesão de um projeto ao longo do tempo, isso não é automatizável.

É pensamento crítico aplicado a CSS. É saber que:

  • Um seletor muito específico hoje é um problema de manutenção amanhã
  • Nomear classes é uma forma de documentação
  • A ordem das camadas no seu CSS determina quão previsível ele será
  • A diferença entre um objeto e um componente não é semântica, é arquitetural

Esse tipo de conhecimento não vem de tutorial de 10 minutos nem de prompt engineering. Vem de estudo deliberado, de entender os princípios por trás das decisões.

E, ironicamente, é exatamente esse conhecimento que torna o uso da IA mais produtivo, porque você para de perder tempo corrigindo código ruim e passa a usar a IA como acelerador de decisões que você já sabe tomar.

Conclusão: pare de aceitar qualquer CSS

A IA é uma aliada poderosa. Mas aliada poderosa sem direção causa mais estrago do que ajuda.

O CSS que a IA gera hoje é o equivalente a um estagiário muito rápido, mas sem mentoria: entrega volume, mas sem consistência, sem visão de longo prazo e sem critério arquitetural.

Seu papel não é competir com a IA em velocidade de escrita. É ser o profissional que sabe avaliar, direcionar e garantir qualidade.

Isso exige um repertório que vai além de propriedades e valores. Exige entender o porquê e o como organizar CSS.

Quem domina arquitetura CSS não tem medo da IA. Pelo contrário: usa a IA melhor do que qualquer pessoa que só sabe copiar e colar.

E aí, o CSS que a IA gera para você é bom mesmo ou você só não sabe avaliar?