Figma para CSS Puro em Arquivo Único (Zero Script e Tudo em Um)
Esta skill orienta o Agente a converter designs do Figma em 1 único arquivo HTML independente (Single-File), usando apenas tag <style> interna e imagens/SVG, absolutamente SEM qualquer tag <script>, perfeitamente otimizado para exibição em navegadores e impressão A4 / exportação de PDF com proporção áurea e sem desalinhamento de margens.
1. Propósito e Escopo de Aplicação
Use esta skill quando:
- O usuário solicitar a criação de HTML/CSS sem usar script (No-Script / Zero-JS).
- For necessário exportar tudo em 1 único arquivo HTML (All-in-one HTML).
- O template de interface for usado para: Impressão de documentos / Contratos A4 (Print to PDF), formulários de seguro/sinistros, Email Template HTML, incorporação em Webview de aplicativos móveis com JavaScript bloqueado, ou CMS/Sandbox de alta segurança que proíbe scripts.
2. Regras Obrigatórias (Hard Constraints)
-
Zero tags
<script>absoluto (Strict Zero-Script):- PROIBIDO:
<script src="https://cdn.tailwindcss.com"></script>ou qualquer CDN de script. - PROIBIDO: Tag
<script>inline para configurar Tailwind ou executar JavaScript. - PROIBIDO: Atributos inline de eventos JS como
onclick="...",onload="...".
- PROIBIDO:
-
Todo CSS dentro de uma única tag
<style>interna:- Todo o código de formatação CSS deve estar dentro da tag
<style>localizada no<head>do arquivo.html. - Não importar CSS externo (exceto Google Fonts se o usuário precisar de fontes padrão do Figma).
- Todo o código de formatação CSS deve estar dentro da tag
-
Gerenciamento de Imagens e Vetores:
- Imagens bitmap (PNG/JPG/WebP): Baixar para o diretório interno
assets/<slug>/e referenciar via tag<img src="assets/<slug>/nome-da-imagem.png" alt="..." />. - Ícones vetoriais / Icones / Logos: Priorizar incorporação direta como Inline
<svg>ou<img src="assets/<slug>/icon.svg">.
- Imagens bitmap (PNG/JPG/WebP): Baixar para o diretório interno
-
Não usar coordenadas Canvas absolutas:
- Proibido usar
position: absolute; top: ...px; left: ...px;para o quadro de layout geral. - Obrigatório usar CSS Grid e Flexbox para criar estrutura de layout natural.
- Proibido usar
-
Variáveis CSS e Design Tokens:
- Declarar todas as cores, tamanhos, fontes extraídas do Figma em
:root::root { --color-primary: #0E4E96; --color-secondary: #F58220; --color-text-main: #1E293B; --color-border: #E2E8F0; --font-main: 'Barlow', -apple-system, BlinkMacSystemFont, sans-serif; }
- Declarar todas as cores, tamanhos, fontes extraídas do Figma em
-
PADRÃO DE IMPRESSÃO A4 & EXPORTAÇÃO DE PDF 100% CORRETO (REGRAS ANTI-DESVIO A4):
- Natureza da unidade do Figma para o formato A4:
- A prancheta A4 no Figma sempre tem tamanho padrão de impressão: $595.28 \times 841.89$ pontos gráficos (PostScript Points -
pt), equivalente exato a $210\text{mm} \times 297\text{mm}$ (ISO 216). - PROIBIDO: Atribuir diretamente a medida do Figma para
px(exemplowidth: 595.28px). Em 96 DPI da web, $595.28\text{px}$ equivale a apenas $157.5\text{mm}$ (ocupa apenas $75%$ da página A4), resultando em uma Visualização de Impressão A4 ($210\text{mm}$) encolhida e deixando um espaço em branco de $52.5\text{mm}$ na margem direita. - OBRIGATÓRIO: Usar a unidade
pt(ou padrãomm) para todos os parâmetros de tamanho, tamanho de fonte, padding, margin. O quadro A4 deve terwidth: 595.28pt(ou210mm) eheight: 841.89pt(ou297mm).
- A prancheta A4 no Figma sempre tem tamanho padrão de impressão: $595.28 \times 841.89$ pontos gráficos (PostScript Points -
- Barra de Rodapé e Cabeçalho com largura 100%:
- A faixa de cor do rodapé (footer) ou barra de título (header) deve obrigatoriamente ter
width: 100%;combinado composition: absolute; bottom: 0; left: 0; right: 0;em vez de definirwidth: 595.28px/ptfixo, garantindo que a faixa de cor cubra sempre $100%$ da borda esquerda até a borda direita do papel.
- A faixa de cor do rodapé (footer) ou barra de título (header) deve obrigatoriamente ter
- Obrigatório ativar o modo de impressão com cores de fundo (Print Background Colors):
- Declarar
-webkit-print-color-adjust: exact !important; print-color-adjust: exact !important;em*, *::before, *::aftere@media print.
- Declarar
- Bloco
@pagee@media printobrigatórios:@page { size: A4 portrait; margin: 0; } @media print { *, *::before, *::after { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; } html, body { width: 210mm !important; height: 297mm !important; margin: 0 !important; padding: 0 !important; background: #FFFFFF !important; overflow: hidden !important; } .a4-page { width: 210mm !important; height: 297mm !important; min-width: 210mm !important; min-height: 297mm !important; max-width: 210mm !important; max-height: 297mm !important; margin: 0 !important; padding: 0 !important; box-shadow: none !important; page-break-after: avoid !important; page-break-inside: avoid !important; } }
- Natureza da unidade do Figma para o formato A4:
3. Estrutura de modelo de arquivo HTML Single-File (Pure CSS A4 Print Ready)
<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Título da Página / Formulário</title>
<!-- Opcional: Google Fonts se o Figma exigir fontes específicas -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Barlow:ital,wght@0,400;0,600;0,700;0,800;1,400;1,600;1,700&display=swap" rel="stylesheet" />
<style>
/* 1. RESET BÁSICO */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
-webkit-print-color-adjust: exact !important;
print-color-adjust: exact !important;
}
/* 2. DESIGN TOKENS */
:root {
--color-primary: #0E4E96;
--color-accent: #F58220;
--color-text: #111827;
--color-text-muted: #6B7280;
--color-bg: #FFFFFF;
--color-border: #231F20;
--font-family: 'Barlow', -apple-system, BlinkMacSystemFont, sans-serif;
}
/* 3. BODY BASE: Exibição bonita na tela */
body {
font-family: var(--font-family);
color: var(--color-text);
background-color: #E2E8F0;
margin: 0;
padding: 24px 0;
display: flex;
justify-content: center;
align-items: flex-start;
-webkit-font-smoothing: antialiased;
}
/* 4. QUADRO A4 PADRÃO (595.28pt x 841.89pt = 210mm x 297mm) */
.a4-page {
position: relative;
width: 595.28pt;
height: 841.89pt;
min-width: 595.28pt;
min-height: 841.89pt;
background-color: var(--color-bg);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
box-sizing: border-box;
overflow: hidden;
margin: 0 auto;
}
.page-content {
position: relative;
z-index: 2;
width: 532.96pt;
margin: 0 auto;
padding-top: 21.97pt;
}
/* Barra de rodapé com largura 100% */
.footer-bar {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 19.63pt;
background-color: var(--color-primary);
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 28.94pt;
box-sizing: border-box;
z-index: 10;
}
/* 5. CONFIGURAÇÃO DE IMPRESSÃO A4 & EXPORTAÇÃO DE PDF ANTI-DESVIO */
@page {
size: A4 portrait;
margin: 0;
}
@media print {
html, body {
width: 210mm !important;
height: 297mm !important;
margin: 0 !important;
padding: 0 !important;
background: #FFFFFF !important;
overflow: hidden !important;
}
.a4-page {
width: 210mm !important;
height: 297mm !important;
min-width: 210mm !important;
min-height: 297mm !important;
max-width: 210mm !important;
max-height: 297mm !important;
margin: 0 !important;
padding: 0 !important;
box-shadow: none !important;
page-break-after: avoid !important;
page-break-inside: avoid !important;
}
}
</style>
</head>
<body>
<!-- HTML5 Semântico: Nenhuma tag <script> -->
<main class="a4-page" id="print-page">
<div class="page-content">
<!-- Conteúdo do layout convertido do Figma -->
</div>
<footer class="footer-bar">
<!-- Barra de rodapé com largura 100% -->
</footer>
</main>
</body>
</html>
4. Processo de execução em 5 etapas (Pure CSS Single-File)
- Etapa 1 (Ler dados do Figma): Chamar
get_figma_datapara extrair a estrutura de camadas, Auto-Layout, fontes, cores e tamanhos. Identificar o formato A4 ($595.28\text{pt} \times 841.89\text{pt}$). - Etapa 2 (Baixar recursos): Baixar imagens PNG/JPG e SVG para
assets/<slug>/. - Etapa 3 (Construir HTML +
<style>puro):- Escrever todo CSS dentro da tag
<style>do arquivo HTML. - Aplicar o sistema de unidades
pt(ou converter paramm), usarwidth: 100%para a barra de rodapé com largura total. - Garantir 100% de NENHUMA tag
<script>inserida.
- Escrever todo CSS dentro da tag
- Etapa 4 (Iniciar Navegador e Verificar Impressão):
- Abrir o arquivo HTML via servidor local ou URL de arquivo.
- Verificar a interface na tela (Screen view).
- Obrigatório verificar a Visualização de Impressão: Usar Playwright
emulateMedia({ media: 'print' })ou exportar PDF compage.pdf({ format: 'A4', margin: { top: 0, bottom: 0, left: 0, right: 0 }, printBackground: true })para validar: exatamente 1 página única (1/1), sem desalinhamento de margens, rodapé com largura 100%.
- Etapa 5 (Auditoria de desvios em 6 pontos): Comparar a correspondência 1:1, corrigir CSS dentro de
<style>automaticamente até atingir 100% de fidelidade.
