<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos oklch css - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/oklch-css/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/oklch-css/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Wed, 21 Oct 2026 15:40:59 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://webzoneware.com/wp-content/uploads/icon-webzoneware-150x150.png</url>
	<title>Arquivos oklch css - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/oklch-css/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cores no CSS: Guia de HEX, RGB, HSL e OKLCH &#124; Web Academy</title>
		<link>https://webzoneware.com/web-academy/curso-css/cores-css-hex-rgb-hsl/</link>
					<comments>https://webzoneware.com/web-academy/curso-css/cores-css-hex-rgb-hsl/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Wed, 21 Oct 2026 15:40:59 +0000</pubDate>
				<category><![CDATA[Curso de CSS e CSS3]]></category>
		<category><![CDATA[cores no css]]></category>
		<category><![CDATA[design system cores]]></category>
		<category><![CDATA[hex css]]></category>
		<category><![CDATA[hsl hsla css]]></category>
		<category><![CDATA[oklch css]]></category>
		<category><![CDATA[rgb rgba css]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=29391</guid>

					<description><![CDATA[<p>A cor é a fundação da identidade visual e da hierarquia funcional de qualquer interface digital. No desenvolvimento web moderno, definir uma cor vai muito além de escolher um código visual atraente: envolve entender os modelos de cores aditivas, gerenciar canais de transparência alfa, garantir a conformidade com as diretrizes internacionais de acessibilidade (WCAG) e [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/cores-css-hex-rgb-hsl/">Cores no CSS: Guia de HEX, RGB, HSL e OKLCH | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wzw-lesson-lead">
    A cor é a fundação da identidade visual e da hierarquia funcional de qualquer interface digital. No desenvolvimento web moderno, definir uma cor vai muito além de escolher um código visual atraente: envolve entender os modelos de cores aditivas, gerenciar canais de transparência alfa, garantir a conformidade com as diretrizes internacionais de acessibilidade (WCAG) e arquitetar paletas escaláveis para modos claro e escuro. Nesta aula, dissecaremos todas as formas de declarar <strong>cores no CSS</strong> — desde o clássico Hexadecimal até o revolucionário espaço perceptual <code>oklch()</code>.
</p>
<h2>1. O Quadro Comparativo dos Formatos de Cor na Web</h2>
<p>
    O CSS oferece diferentes métodos para representar cores. Cada formato possui uma finalidade técnica onde se destaca com maior clareza e controle:
</p>
<div class="wzw-table-responsive">
<table class="wzw-tech-table">
<thead>
<tr>
<th>Formato</th>
<th>Sintaxe Clássica</th>
<th>Sintaxe Moderna (CSS Color 4)</th>
<th>Suporte a Alfa?</th>
<th>Melhor Cenário de Uso</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Nomes (Keywords)</strong></td>
<td><code>coral</code>, <code>crimson</code></td>
<td><code>rebeccapurple</code></td>
<td>Não (exceto <code>transparent</code>)</td>
<td>Prototipagem rápida e testes estruturais.</td>
</tr>
<tr>
<td><strong>Hexadecimal (HEX)</strong></td>
<td><code>#0284c7</code></td>
<td><code>#0284c780</code> (com alfa)</td>
<td>Sim (2 dígitos finais)</td>
<td>Cópia direta do Figma e bibliotecas de branding.</td>
</tr>
<tr>
<td><strong>RGB / RGBA</strong></td>
<td><code>rgba(2, 132, 199, 0.5)</code></td>
<td><code>rgb(2 132 199 / 50%)</code></td>
<td>Sim</td>
<td>Cálculo matemático de telas de luz emitida.</td>
</tr>
<tr>
<td><strong>HSL / HSLA</strong></td>
<td><code>hsla(200, 98%, 39%, 0.5)</code></td>
<td><code>hsl(200 98% 39% / 50%)</code></td>
<td>Sim</td>
<td>Design Systems e geração de tons claros/escuros.</td>
</tr>
<tr>
<td><strong>OKLCH (Moderno)</strong></td>
<td>—</td>
<td><code>oklch(0.6 0.25 210)</code></td>
<td>Sim</td>
<td>Uniformidade perceptual e telas Wide Gamut (P3).</td>
</tr>
</tbody>
</table>
</div>
<h2>2. Palavras-Chave de Cor e o Superpoder do <code>currentColor</code></h2>
<p>
    O W3C padroniza 148 palavras-chave de cores nomeadas (como <code>black</code>, <code>white</code>, <code>royalblue</code>). No entanto, duas palavras-chave dinâmicas merecem atenção especial na engenharia front-end:
</p>
<ul>
<li><code>transparent</code>: Representa uma cor totalmente invisível (equivalente a <code>rgba(0, 0, 0, 0)</code>). Muito usada para inicializar bordas invisíveis que ganham cor no <code>:hover</code> sem deslocar o layout.</li>
<li><code>currentColor</code>: <strong>Herda dinamicamente o valor da propriedade <code>color</code> do próprio elemento</strong>. Se o texto do elemento mudar de azul para vermelho no hover, qualquer borda ou ícone SVG que utilize <code>currentColor</code> mudará instantaneamente de cor junto, sem nenhuma linha extra de CSS!</li>
</ul>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">current-color.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-76426" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">15 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-76426', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-76426', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line">.btn-outline {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#0284c7</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* A borda e o ícone SVG herdam automaticamente a cor do texto */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">2px</span> solid currentColor;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: transparent;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">transition</span>: color <span class="wzw-tk-num">0.2s</span> ease;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.btn-outline<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#0369a1</span>; /* Ao mudar a cor aqui, a borda também muda automaticamente! */</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.btn-outline svg {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">fill</span>: currentColor; /* O SVG fica sincronizado com a cor da tipografia */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.btn-outline {
    color: #0284c7;
    /* A borda e o ícone SVG herdam automaticamente a cor do texto */
    border: 2px solid currentColor;
    background-color: transparent;
    transition: color 0.2s ease;
}

.btn-outline:hover {
    color: #0369a1; /* Ao mudar a cor aqui, a borda também muda automaticamente! */
}

.btn-outline svg {
    fill: currentColor; /* O SVG fica sincronizado com a cor da tipografia */
}</textarea>
        </div>
    </div>
    
</div>
<h2>3. Notação Hexadecimal (HEX): O Padrão Mais Popular</h2>
<p>
    A notação hexadecimal codifica as intensidades de Vermelho (Red), Verde (Green) e Azul (Blue) na base numérica 16, variando de <code>0</code> (zero absoluto) até <code>F</code> (intensidade máxima de 15, correspondente a 255 em decimal).
</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">hex-variants.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-98000" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">16 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-98000', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-98000', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* 1. Hexadecimal Completo de 6 dígitos (#RRGGBB) */</span></span>
<span class="wzw-code-line">.box-primaria {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#0284c7</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* 2. Hexadecimal Compacto de 3 dígitos (#RGB) */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* Quando os pares se repetem (#ffffff vira #fff; #0099cc vira #09c) */</span></span>
<span class="wzw-code-line">.box-branca {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#fff</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* 3. Hexadecimal com Canal Alfa de Transparência (#RRGGBBAA) */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* Os últimos 2 dígitos representam o canal alfa de 00 (0%) a FF (100%) */</span></span>
<span class="wzw-code-line">.box-com-transparencia {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#0284c780</span>; /* 80 em hex = 128 em decimal (~50% de opacidade) */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* 1. Hexadecimal Completo de 6 dígitos (#RRGGBB) */
.box-primaria {
    background-color: #0284c7;
}

/* 2. Hexadecimal Compacto de 3 dígitos (#RGB) */
/* Quando os pares se repetem (#ffffff vira #fff; #0099cc vira #09c) */
.box-branca {
    background-color: #fff;
}

/* 3. Hexadecimal com Canal Alfa de Transparência (#RRGGBBAA) */
/* Os últimos 2 dígitos representam o canal alfa de 00 (0%) a FF (100%) */
.box-com-transparencia {
    background-color: #0284c780; /* 80 em hex = 128 em decimal (~50% de opacidade) */
}</textarea>
        </div>
    </div>
    
</div>
<h2>4. Notação RGB: O Modelo de Cores Aditivas</h2>
<p>
    O modelo RGB opera diretamente na lógica física das telas de computador e smartphones, que emitem feixes de luz nas cores primárias aditivas. Cada canal varia de <code>0</code> a <code>255</code> (ou de <code>0%</code> a <code>100%</code>).
</p>
<h3>A Nova Sintaxe do CSS Color Module Level 4</h3>
<p>
    Na especificação moderna do CSS, as vírgulas foram substituídas por <strong>espaços em branco</strong>, e o canal alfa agora é delimitado por uma <strong>barra inclinada (<code>/</code>)</strong>. Além disso, a função <code>rgba()</code> tornou-se um alias legado: a própria função <code>rgb()</code> aceita transparência nativamente:
</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">modern-rgb.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-29524" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">9 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-29524', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-29524', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* Sintaxe Clássica (Legada, mas suportada por compatibilidade) */</span></span>
<span class="wzw-code-line">.card-antigo {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: rgba(2, 132, 199, 0.75);</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* Sintaxe Moderna do CSS4 (Mais limpa e recomendada) */</span></span>
<span class="wzw-code-line">.card-moderno {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: rgb(2 132 199 / 75%); /* Espaços e barra com porcentagem! */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Sintaxe Clássica (Legada, mas suportada por compatibilidade) */
.card-antigo {
    background-color: rgba(2, 132, 199, 0.75);
}

/* Sintaxe Moderna do CSS4 (Mais limpa e recomendada) */
.card-moderno {
    background-color: rgb(2 132 199 / 75%); /* Espaços e barra com porcentagem! */
}</textarea>
        </div>
    </div>
    
</div>
<h2>5. Notação HSL: O Formato Mais Intuitivo da Engenharia UI</h2>
<p>
    Enquanto o Hexadecimal e o RGB são práticos para computadores, eles são incompreensíveis para o raciocínio humano. Se você olhar para <code>#2a7561</code>, é quase impossível deduzir de cabeça qual é a cor exata ou como clareá-la em 20%.
</p>
<p>
    O modelo <strong>HSL</strong> resolve esse problema modelando as cores de acordo com a percepção humana:
</p>
<div class="wzw-table-responsive">
<table class="wzw-tech-table">
<thead>
<tr>
<th>Componente</th>
<th>Escala de Valores</th>
<th>Significado Visual</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>H (Hue / Matiz)</strong></td>
<td><code>0deg</code> a <code>360deg</code></td>
<td>O ângulo na roda de cores: 0° Vermelho, 60° Amarelo, 120° Verde, 180° Ciano, 240° Azul, 300° Magenta.</td>
</tr>
<tr>
<td><strong>S (Saturation / Saturação)</strong></td>
<td><code>0%</code> a <code>100%</code></td>
<td>Intensidade da cor: <code>0%</code> é tom de cinza neutro e <code>100%</code> é a cor com saturação pura e vívida.</td>
</tr>
<tr>
<td><strong>L (Lightness / Luminosidade)</strong></td>
<td><code>0%</code> a <code>100%</code></td>
<td>Claridade: <code>0%</code> é preto absoluto, <code>50%</code> é a cor normal e <code>100%</code> é branco puro.</td>
</tr>
</tbody>
</table>
</div>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">hsl-palette.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-94667" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">9 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-94667', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-94667', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* Criando uma família de tons no Design System alterando apenas o L (Lightness): */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-kw">:root</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--brand-h: 200; /* Azul */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--brand-s: 98%;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--brand-light:   hsl(var(--brand-h) var(--brand-s) 90%); /* Azul bem clarinho */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--brand-regular: hsl(var(--brand-h) var(--brand-s) 50%); /* Azul padrão */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--brand-dark:    hsl(var(--brand-h) var(--brand-s) 20%); /* Azul marinho escuro */</span></span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Criando uma família de tons no Design System alterando apenas o L (Lightness): */
:root {
    --brand-h: 200; /* Azul */
    --brand-s: 98%;

    --brand-light:   hsl(var(--brand-h) var(--brand-s) 90%); /* Azul bem clarinho */
    --brand-regular: hsl(var(--brand-h) var(--brand-s) 50%); /* Azul padrão */
    --brand-dark:    hsl(var(--brand-h) var(--brand-s) 20%); /* Azul marinho escuro */
}</textarea>
        </div>
    </div>
    
</div>
<h2>6. O Futuro das Cores: OKLCH e a Função <code>color-mix()</code></h2>
<p>
    Embora o HSL seja excelente, ele possui uma falha científica conhecida como <em>distorção de luminosidade não-perceptual</em>: para os olhos humanos, o amarelo parece muito mais claro que o azul, mesmo quando ambos estão com 50% de Lightness no HSL.
</p>
<p>
    Para solucionar isso, o CSS moderno introduziu o espaço <strong>OKLCH</strong> (<em>Lightness, Chroma, Hue</em>). O OKLCH é <strong>perceptualmente uniforme</strong>: 60% de luminosidade no OKLCH produz exatamente o mesmo brilho visual em qualquer tom, além de destravar a gama de cores <strong>Display P3</strong> (com 25% mais cores que o antigo sRGB de monitores antigos).
</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">oklch-colormix.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-29298" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">10 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-29298', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-29298', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* Sintaxe OKLCH: Luminosidade (0 a 1), Croma (0 a 0.4), Matiz (0 a 360) */</span></span>
<span class="wzw-code-line">.badge-moderna {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: oklch(0.65 0.22 142); /* Verde vibrante Display P3 */</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* Função color-mix(): Mistura duas cores nativamente no navegador sem pré-processador */</span></span>
<span class="wzw-code-line">.banner-promo {</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* Cria uma cor resultante de 80% do azul da marca com 20% de preto */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: color-mix(in srgb, <span class="wzw-tk-num">#0284c7</span> 80%, black);</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Sintaxe OKLCH: Luminosidade (0 a 1), Croma (0 a 0.4), Matiz (0 a 360) */
.badge-moderna {
    background-color: oklch(0.65 0.22 142); /* Verde vibrante Display P3 */
}

/* Função color-mix(): Mistura duas cores nativamente no navegador sem pré-processador */
.banner-promo {
    /* Cria uma cor resultante de 80% do azul da marca com 20% de preto */
    background-color: color-mix(in srgb, #0284c7 80%, black);
}</textarea>
        </div>
    </div>
    
</div>
<h2>7. Acessibilidade de Cores &#038; Diretrizes WCAG 2.1</h2>
<p>
    Uma interface bem projetada deve ser legível por qualquer indivíduo, incluindo pessoas com daltonismo, baixa visão ou usando telas sob luz solar direta. As diretrizes internacionais <strong>WCAG 2.1</strong> estabelecem taxas mínimas de contraste matemático entre a cor do texto e o fundo:
</p>
<div class="wzw-table-responsive">
<table class="wzw-tech-table">
<thead>
<tr>
<th>Nível de Conformidade</th>
<th>Texto Normal (Abaixo de 18pt / 24px)</th>
<th>Texto Grande (18pt+ ou 14pt negrito)</th>
<th>Componentes Gráficos e Bordas de Input</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Nível AA (Obrigatório)</strong></td>
<td>No mínimo <strong>4.5 : 1</strong></td>
<td>No mínimo <strong>3.0 : 1</strong></td>
<td>No mínimo <strong>3.0 : 1</strong></td>
</tr>
<tr>
<td><strong>Nível AAA (Excelência)</strong></td>
<td>No mínimo <strong>7.0 : 1</strong></td>
<td>No mínimo <strong>4.5 : 1</strong></td>
<td>Recomendável</td>
</tr>
</tbody>
</table>
</div>
<h2>8. Laboratório Prático: Paleta de Design System com Variáveis e Contraste</h2>
<p>
    Neste exemplo prático, construímos um componente de cartão corporativo estruturado com tokens de cores semânticas em HSL, aproveitando canais alfa e o poder do <code>currentColor</code>:
</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">HTML</span><br />
        <span class="wzw-code-file">color-palette-demo.html</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-46536" data-lang="html">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">HTML5</span>
                                <span class="wzw-ide-lines-count">22 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-46536', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-46536', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;pricing-card&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;pricing-badge&quot;</span><span class="wzw-tk-tag">&gt;</span>Plano Enterprise<span class="wzw-tk-tag">&lt;/span&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;h3</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;pricing-title&quot;</span><span class="wzw-tk-tag">&gt;</span>R$ 189<span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;pricing-period&quot;</span><span class="wzw-tk-tag">&gt;</span>/mês<span class="wzw-tk-tag">&lt;/span&gt;</span><span class="wzw-tk-tag">&lt;/h3&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;p</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;pricing-desc&quot;</span><span class="wzw-tk-tag">&gt;</span>Acesso total à Web Academy com suporte dedicado e certificação.<span class="wzw-tk-tag">&lt;/p&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;ul</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;pricing-features&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;li&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;svg</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;check-icon&quot;</span> <span class="wzw-tk-attr">viewBox</span>=<span class="wzw-tk-str">&quot;0 0 20 20&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;path</span> <span class="wzw-tk-attr">d</span>=<span class="wzw-tk-str">&quot;M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z&quot;</span><span class="wzw-tk-tag">/&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;/svg&gt;</span></span>
<span class="wzw-code-line">            Mais de 150 ferramentas liberadas</span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;/li&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;li&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;svg</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;check-icon&quot;</span> <span class="wzw-tk-attr">viewBox</span>=<span class="wzw-tk-str">&quot;0 0 20 20&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;path</span> <span class="wzw-tk-attr">d</span>=<span class="wzw-tk-str">&quot;M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z&quot;</span><span class="wzw-tk-tag">/&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;/svg&gt;</span></span>
<span class="wzw-code-line">            Playground IDE sem limites de execução</span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;/li&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;/ul&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;button</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;btn-action&quot;</span><span class="wzw-tk-tag">&gt;</span>Assinar Agora<span class="wzw-tk-tag">&lt;/button&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/div&gt;</span></span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>&lt;div class=&quot;pricing-card&quot;&gt;
    &lt;span class=&quot;pricing-badge&quot;&gt;Plano Enterprise&lt;/span&gt;
    &lt;h3 class=&quot;pricing-title&quot;&gt;R$ 189&lt;span class=&quot;pricing-period&quot;&gt;/mês&lt;/span&gt;&lt;/h3&gt;
    &lt;p class=&quot;pricing-desc&quot;&gt;Acesso total à Web Academy com suporte dedicado e certificação.&lt;/p&gt;

    &lt;ul class=&quot;pricing-features&quot;&gt;
        &lt;li&gt;
            &lt;svg class=&quot;check-icon&quot; viewBox=&quot;0 0 20 20&quot;&gt;
                &lt;path d=&quot;M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z&quot;/&gt;
            &lt;/svg&gt;
            Mais de 150 ferramentas liberadas
        &lt;/li&gt;
        &lt;li&gt;
            &lt;svg class=&quot;check-icon&quot; viewBox=&quot;0 0 20 20&quot;&gt;
                &lt;path d=&quot;M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z&quot;/&gt;
            &lt;/svg&gt;
            Playground IDE sem limites de execução
        &lt;/li&gt;
    &lt;/ul&gt;

    &lt;button class=&quot;btn-action&quot;&gt;Assinar Agora&lt;/button&gt;
&lt;/div&gt;</textarea>
        </div>
    </div>
    
</div>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">color-palette-demo.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-91486" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">112 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-91486', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-91486', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line">/* ==========================================================================</span>
<span class="wzw-code-line">   DESIGN TOKENS EM HSL COM CONTROLE ALFA</span>
<span class="wzw-code-line">   ========================================================================== */</span>
<span class="wzw-code-line"><span class="wzw-tk-kw">:root</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* Matiz e Saturação Mestres da Marca */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--h-brand: 200;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--s-brand: 98%;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* Tons Derivados */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--color-surface:    hsl(222 47% 11%);       /* Fundo escuro #0f172a */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--color-card-bg:    hsl(217 33% 17%);       /* Card #1e293b */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--color-card-border:hsl(215 25% 27%);       /* Borda sutil */</span></span>
<span class="wzw-code-line">    </span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--color-primary:    hsl(var(--h-brand) var(--s-brand) 39%); /* Azul vivo */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--color-primary-hover: hsl(var(--h-brand) var(--s-brand) 32%);</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--color-primary-soft: hsl(var(--h-brand) var(--s-brand) 39% / 15%); /* Fundo com 15% alfa */</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--color-text-main:  hsl(210 40% 98%);       /* Contraste 13:1 (AAA) */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--color-text-muted: hsl(215 20% 65%);       /* Contraste 5.5:1 (AA) */</span></span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">body {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: var(--color-surface);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-family</span>: -apple-system, BlinkMacSystemFont, <span class="wzw-tk-str">&#039;Segoe UI&#039;</span>, Roboto, sans-serif;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">display</span>: flex;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">justify-content</span>: center;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">align-items</span>: center;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">min-height</span>: <span class="wzw-tk-num">100vh</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">padding</span>: <span class="wzw-tk-num">1.5rem</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.pricing-card {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: var(--color-card-bg);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">1px</span> solid var(--color-card-border);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: <span class="wzw-tk-num">12px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">padding</span>: <span class="wzw-tk-num">2.25rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">max-width</span>: <span class="wzw-tk-num">380px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">width</span>: 100%;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: var(--color-text-main);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">box-shadow</span>: 0 <span class="wzw-tk-num">20px</span> <span class="wzw-tk-num">25px</span> -<span class="wzw-tk-num">5px</span> rgba(0, 0, 0, 0.5);</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.pricing-badge {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">display</span>: inline-block;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: var(--color-primary-soft);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: var(--color-primary);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">0.8rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-weight</span>: 700;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">padding</span>: <span class="wzw-tk-num">0.35rem</span> <span class="wzw-tk-num">0.75rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: <span class="wzw-tk-num">9999px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">margin-bottom</span>: <span class="wzw-tk-num">1.25rem</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.pricing-title {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">2.25rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-weight</span>: 800;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: var(--color-text-main);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">margin-bottom</span>: <span class="wzw-tk-num">0.5rem</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.pricing-period {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">1rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: var(--color-text-muted);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-weight</span>: 400;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.pricing-desc {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">0.9rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: var(--color-text-muted);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">line-height</span>: 1.5;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">margin-bottom</span>: <span class="wzw-tk-num">1.75rem</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.pricing-features {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">list-style</span>: none;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">margin-bottom</span>: <span class="wzw-tk-num">2rem</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.pricing-features li {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">display</span>: flex;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">align-items</span>: center;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">gap</span>: <span class="wzw-tk-num">0.75rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">0.875rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: var(--color-text-main);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">margin-bottom</span>: <span class="wzw-tk-num">0.85rem</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* O ícone SVG herda o preenchimento via currentColor da cor primária */</span></span>
<span class="wzw-code-line">.check-icon {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">width</span>: <span class="wzw-tk-num">18px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">height</span>: <span class="wzw-tk-num">18px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#22c55e</span>; /* Verde de sucesso */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">fill</span>: currentColor;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">flex-shrink</span>: 0;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.btn-action {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">width</span>: 100%;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: var(--color-primary);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#ffffff</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: none;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">padding</span>: <span class="wzw-tk-num">0.85rem</span> <span class="wzw-tk-num">1.5rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">0.95rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-weight</span>: 600;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: <span class="wzw-tk-num">6px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">cursor</span>: pointer;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">transition</span>: background-color <span class="wzw-tk-num">0.2s</span> ease;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.btn-action<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: var(--color-primary-hover);</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* ==========================================================================
   DESIGN TOKENS EM HSL COM CONTROLE ALFA
   ========================================================================== */
:root {
    /* Matiz e Saturação Mestres da Marca */
    --h-brand: 200;
    --s-brand: 98%;

    /* Tons Derivados */
    --color-surface:    hsl(222 47% 11%);       /* Fundo escuro #0f172a */
    --color-card-bg:    hsl(217 33% 17%);       /* Card #1e293b */
    --color-card-border:hsl(215 25% 27%);       /* Borda sutil */
    
    --color-primary:    hsl(var(--h-brand) var(--s-brand) 39%); /* Azul vivo */
    --color-primary-hover: hsl(var(--h-brand) var(--s-brand) 32%);
    --color-primary-soft: hsl(var(--h-brand) var(--s-brand) 39% / 15%); /* Fundo com 15% alfa */

    --color-text-main:  hsl(210 40% 98%);       /* Contraste 13:1 (AAA) */
    --color-text-muted: hsl(215 20% 65%);       /* Contraste 5.5:1 (AA) */
}

body {
    background-color: var(--color-surface);
    font-family: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, sans-serif;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    padding: 1.5rem;
}

.pricing-card {
    background-color: var(--color-card-bg);
    border: 1px solid var(--color-card-border);
    border-radius: 12px;
    padding: 2.25rem;
    max-width: 380px;
    width: 100%;
    color: var(--color-text-main);
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.5);
}

.pricing-badge {
    display: inline-block;
    background-color: var(--color-primary-soft);
    color: var(--color-primary);
    font-size: 0.8rem;
    font-weight: 700;
    padding: 0.35rem 0.75rem;
    border-radius: 9999px;
    margin-bottom: 1.25rem;
}

.pricing-title {
    font-size: 2.25rem;
    font-weight: 800;
    color: var(--color-text-main);
    margin-bottom: 0.5rem;
}

.pricing-period {
    font-size: 1rem;
    color: var(--color-text-muted);
    font-weight: 400;
}

.pricing-desc {
    font-size: 0.9rem;
    color: var(--color-text-muted);
    line-height: 1.5;
    margin-bottom: 1.75rem;
}

.pricing-features {
    list-style: none;
    margin-bottom: 2rem;
}

.pricing-features li {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 0.875rem;
    color: var(--color-text-main);
    margin-bottom: 0.85rem;
}

/* O ícone SVG herda o preenchimento via currentColor da cor primária */
.check-icon {
    width: 18px;
    height: 18px;
    color: #22c55e; /* Verde de sucesso */
    fill: currentColor;
    flex-shrink: 0;
}

.btn-action {
    width: 100%;
    background-color: var(--color-primary);
    color: #ffffff;
    border: none;
    padding: 0.85rem 1.5rem;
    font-size: 0.95rem;
    font-weight: 600;
    border-radius: 6px;
    cursor: pointer;
    transition: background-color 0.2s ease;
}

.btn-action:hover {
    background-color: var(--color-primary-hover);
}</textarea>
        </div>
    </div>
    
<div class="wzw-code-actions">
        <a href="https://webzoneware.com/web-academy/playground-web/" class="wzw-btn-playground" target="_blank" rel="noopener">⚡ Abrir no Playground IDE &rarr;</a>
    </div>
</div>
<h2>9. Boas Práticas da Indústria na Gestão de Cores</h2>
<ul>
<li>
        <strong>✅ Padronize um Formato Central no Projeto:</strong> Utilize Hexadecimal para valores estáticos diretos ou HSL/OKLCH com variáveis CSS para temas dinâmicos. Evite misturar aleatoriamente múltiplos formatos no mesmo componente.
    </li>
<li>
        <strong>✅ Nunca Transmita Informação Apenas pela Cor:</strong> Usuários daltônicos ou com baixa visão não distinguirão erros se um campo com falha tiver apenas a borda vermelha. Sempre combine cores com ícones explicativos ou mensagens textuais claras.
    </li>
<li>
        <strong>✅ Audite o Contraste com as Ferramentas DevTools:</strong> O Chrome e o Firefox DevTools exibem a pontuação WCAG diretamente ao clicar no conta-gotas de qualquer propriedade de cor. Verifique sempre se seus textos atingem no mínimo o nível AA (4.5:1).
    </li>
</ul>
<h2>10. Ferramentas Relacionadas &#038; Próximos Passos</h2>
<p>
    Aprimore seus conhecimentos e valide paletas de cores no ecossistema Web-ZoneWare:
</p>
<ul>
<li><a href="https://webzoneware.com/web-academy/playground-web/" target="_blank" rel="noopener"><strong>Playground Web IDE:</strong></a> Alterne matizes de HSL e OKLCH ao vivo no editor com recarregamento instantâneo.</li>
<li><a href="https://webzoneware.com/web-ferramentas/limpador-formatador-css/" target="_blank" rel="noopener"><strong>Limpador e Formatador CSS:</strong></a> Normalize notações de cores e formate seu CSS de acordo com os padrões da W3C.</li>
</ul>
<div class="wzw-callout wzw-callout-info">
<div class="wzw-callout-icon">🚀</div>
<div class="wzw-callout-content">
        <strong>Próxima Lição:</strong> Na <a href="https://webzoneware.com/web-academy/css/backgrounds-cores-imagens-css/"><strong>Lição 09: Backgrounds e Imagens de Fundo no CSS</strong></a>, aprenderemos a controlar cores de fundo, posicionamento de imagens com <code>background-image</code> e a propriedade <code>background-repeat</code>.
    </div>
</div>
<h2>11. Referências Técnicas &#038; Especificações Oficiais</h2>
<ul>
<li><a href="https://www.w3.org/TR/css-color-4/" target="_blank" rel="noopener"><strong>W3C CSS Color Module Level 4:</strong></a> A especificação que oficializou as novas sintaxes sem vírgulas e os espaços de cores modernos.</li>
<li><a href="https://www.w3.org/TR/WCAG21/#contrast-minimum" target="_blank" rel="noopener"><strong>W3C Web Content Accessibility Guidelines (WCAG) 2.1:</strong></a> Diretrizes técnicas do cálculo de contraste mínimo (Critério 1.4.3).</li>
<li><a href="https://developer.mozilla.org/pt-BR/docs/Web/CSS/color_value" target="_blank" rel="noopener"><strong>MDN Web Docs (Mozilla):</strong></a> Guia de referência sobre Valores e Tipos de Cor no CSS.</li>
</ul>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/cores-css-hex-rgb-hsl/">Cores no CSS: Guia de HEX, RGB, HSL e OKLCH | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webzoneware.com/web-academy/curso-css/cores-css-hex-rgb-hsl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Valores de Cor no HTML: Modelos e Espaços &#124; Web Academy</title>
		<link>https://webzoneware.com/web-academy/curso-html/valores-de-cor-e-modelos/</link>
					<comments>https://webzoneware.com/web-academy/curso-html/valores-de-cor-e-modelos/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Wed, 21 Oct 2026 02:08:42 +0000</pubDate>
				<category><![CDATA[Curso de HTML & HTML5]]></category>
		<category><![CDATA[display p3 css]]></category>
		<category><![CDATA[espacos de cor css]]></category>
		<category><![CDATA[modelos de cor css]]></category>
		<category><![CDATA[oklch css]]></category>
		<category><![CDATA[rgb vs hsl]]></category>
		<category><![CDATA[valores de cor html]]></category>
		<category><![CDATA[web academy]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=29303</guid>

					<description><![CDATA[<p>No desenvolvimento web contemporâneo, a representação de cores ultrapassou os limites dos códigos hexadecimais tradicionais. Compreender a diferença entre modelos de cor (como RGB e HSL), notações sintáticas modernas do CSS Color Module Level 4 e espaços cromáticos avançados (como sRGB, Display P3 e OKLCH) é indispensável para construir interfaces com fidelidade visual perfeita em [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-html/valores-de-cor-e-modelos/">Valores de Cor no HTML: Modelos e Espaços | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wzw-lesson-lead">No desenvolvimento web contemporâneo, a representação de cores ultrapassou os limites dos códigos hexadecimais tradicionais. Compreender a diferença entre <strong>modelos de cor</strong> (como RGB e HSL), <strong>notações sintáticas modernas</strong> do CSS Color Module Level 4 e <strong>espaços cromáticos avançados</strong> (como sRGB, Display P3 e OKLCH) é indispensável para construir interfaces com fidelidade visual perfeita em telas OLED, monitores Apple Retina e displays de alta gama de cores.</p>
<h2>1. Modelo vs Notação vs Espaço de Cor: Três Conceitos Distintos</h2>
<p>Muitos desenvolvedores confundem esses três conceitos fundamentais. Para dominar a engenharia de cores no front-end, é preciso separá-los claramente:</p>
<ul>
<li><strong>Modelo de Cor (Color Model):</strong> É a estrutura matemática ou conceitual que define como uma cor é composta. Exemplo: o modelo <strong>RGB</strong> combina Luz Vermelha, Verde e Azul; o modelo <strong>HSL</strong> organiza as cores em um cilindro de Matiz, Saturação e Luminosidade.</li>
<li><strong>Notação Sintática (Color Syntax):</strong> É a forma textual como declaramos a cor no código. Por exemplo, <code>#38bdf8</code>, <code>rgb(56 189 248)</code> e <code>hsl(198 93% 60%)</code> são notações diferentes para representar exatamente o mesmo ponto cromático.</li>
<li><strong>Espaço de Cor / Gama (Color Gamut):</strong> É a amplitude física total de cores que um monitor ou dispositivo consegue de fato reproduzir. O padrão histórico da web é o <strong>sRGB</strong> (criado em 1996). Telas modernas suportam o espaço <strong>Display P3</strong>, que exibe até 50% mais tons de verde e vermelho do que o sRGB clássico.</li>
</ul>
<div class="wzw-callout wzw-callout-info">
    <span class="wzw-callout-icon">💡</span></p>
<div class="wzw-callout-text">
        <strong>A Diferença Prática:</strong> Um código HEX tradicional (<code>#FF0000</code>) está confinado ao espaço sRGB. Mesmo que o usuário possua um monitor topo de linha com tela OLED ou Retina, o navegador não consegue exibir o vermelho mais puro que o display é capaz de emitir a menos que utilizemos uma função de espaço estendido, como <code>color(display-p3 1 0 0)</code> ou <code>oklch()</code>.
    </div>
</div>
<h2>2. A Nova Sintaxe CSS Color 4: Espaços e Barra para o Canal Alfa</h2>
<p>Historicamente, o CSS utilizava vírgulas para separar canais e requeria uma função diferente para transparência (<code>rgba()</code> e <code>hsla()</code>). A especificação moderna <em>CSS Color Module Level 4</em> unificou todas as funções cromáticas sob uma sintaxe mais limpa e consistente:</p>
<div class="wzw-table-responsive">
<table class="wzw-table">
<thead>
<tr>
<th style="width: 160px;">Modelo</th>
<th>Sintaxe Legada (com vírgulas)</th>
<th>Sintaxe Moderna Padronizada</th>
<th>Com Transparência Alfa</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>RGB</strong></td>
<td><code>rgb(15, 23, 42)</code></td>
<td><code>rgb(15 23 42)</code></td>
<td><code>rgb(15 23 42 / 0.8)</code> ou <code>rgb(15 23 42 / 80%)</code></td>
</tr>
<tr>
<td><strong>HSL</strong></td>
<td><code>hsl(215, 28%, 17%)</code></td>
<td><code>hsl(215 28% 17%)</code></td>
<td><code>hsl(215 28% 17% / 0.65)</code></td>
</tr>
<tr>
<td><strong>HWB</strong></td>
<td><em>(Não suportado em navegadores antigos)</em></td>
<td><code>hwb(215 15% 40%)</code></td>
<td><code>hwb(215 15% 40% / 0.5)</code></td>
</tr>
<tr>
<td><strong>OKLCH</strong></td>
<td><em>(Exclusivo do CSS Moderno)</em></td>
<td><code>oklch(0.65 0.22 250)</code></td>
<td><code>oklch(0.65 0.22 250 / 0.9)</code></td>
</tr>
</tbody>
</table>
</div>
<p>Na sintaxe moderna, você pode omitir as vírgulas usando apenas espaços em branco para separar os canais principais, e uma barra diagonal (<code>/</code>) para indicar a opacidade (canal alfa), podendo expressar o alfa em decimal (<code>0.5</code>) ou em porcentagem (<code>50%</code>).</p>
<h2>3. Por Que o Modelo HSL Tem Falhas Perceptivas?</h2>
<p>O modelo HSL foi muito celebrado nos anos 2000 por ser intuitivo para seres humanos. No entanto, ele sofre de um problema grave conhecido como <strong>não-uniformidade perceptiva</strong>.</p>
<p>Para o olho humano, a cor amarela é biologicamente muito mais brilhante do que a cor azul. No entanto, se você definir um amarelo puro em HSL com 50% de luminosidade (<code>hsl(60 100% 50%)</code>) e um azul puro também com 50% de luminosidade (<code>hsl(240 100% 50%)</code>), o computador diz que ambos têm a mesma luz, mas para a visão humana o amarelo parece ofuscante e o azul parece escuro e pesado.</p>
<div class="wzw-callout wzw-callout-pro">
    <span class="wzw-callout-icon">⚠️</span></p>
<div class="wzw-callout-text">
        <strong>O Impacto em Botões e Textos:</strong> Se você colocar texto branco sobre <code>hsl(60 100% 50%)</code> (amarelo), ele se torna ilegível (falha na WCAG). Se colocar texto branco sobre <code>hsl(240 100% 50%)</code> (azul), o contraste é excelente. O HSL mascara a luminosidade real percebida pelo cérebro humano.
    </div>
</div>
<h2>4. A Revolução do OKLCH: Cores Perceptualmente Uniformes</h2>
<p>Para resolver em definitivo as distorções do HSL, o W3C padronizou o modelo <strong>OKLCH</strong> no CSS Color 4. Ele é composto por três coordenadas:</p>
<ul>
<li><strong>L (Lightness &#8211; Luminosidade Perceptiva):</strong> Vai de <code>0%</code> (preto absoluto) a <code>100%</code> (branco absoluto). Dois elementos com o mesmo valor de <code>L</code> terão <em>rigorosamente a mesma sensação de claridade</em> aos olhos humanos, não importando se são verdes, amarelos ou azuis.</li>
<li><strong>C (Chroma &#8211; Croma / Vivacidade):</strong> Mede a pureza ou saturação da cor. Começa em <code>0</code> (cinza neutro) e tipicamente chega até <code>0.37</code> em cores ultrassaturadas.</li>
<li><strong>H (Hue &#8211; Matiz / Ângulo):</strong> O círculo cromático de <code>0</code> a <code>360</code> graus (0 = rosa avermelhado, 90 = amarelo, 140 = verde, 240 = azul).</li>
</ul>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span>CSS3/CSS4 — Exemplo de Sintaxe OKLCH</span><br />
        <span>cores-oklch.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-20156" data-lang="code">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS</span>
                                <span class="wzw-ide-lines-count">11 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-20156', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-20156', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* Azul elétrico perfeito para botões de CTA */</span></span>
<span class="wzw-code-line">.btn-moderno {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: oklch(0.6 0.22 250);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: white;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* Tom de alerta com exatamente a mesma luminosidade perceptual (0.6) */</span></span>
<span class="wzw-code-line">.btn-alerta {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: oklch(0.6 0.22 30);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: white;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Azul elétrico perfeito para botões de CTA */
.btn-moderno {
    background-color: oklch(0.6 0.22 250);
    color: white;
}

/* Tom de alerta com exatamente a mesma luminosidade perceptual (0.6) */
.btn-alerta {
    background-color: oklch(0.6 0.22 30);
    color: white;
}</textarea>
        </div>
    </div>
    
</div>
<h2>5. Display P3 e Wide Gamut: Cores Além do sRGB Tradicional</h2>
<p>Monitores modernos de smartphones (iPhones, telas AMOLED Samsung) e notebooks de alta resolução cobrem o espaço de cor <strong>Display P3</strong>. Para acessar essa gama estendida no CSS nativo, usamos a função <code>color(display-p3 r g b)</code>:</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span>CSS3/CSS4 — Ativando Cores Wide Gamut no Display P3</span><br />
        <span>wide-gamut.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-31102" data-lang="code">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS</span>
                                <span class="wzw-ide-lines-count">11 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-31102', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-31102', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* Verde comum no espaço sRGB */</span></span>
<span class="wzw-code-line">.card-padrao {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-color</span>: rgb(0 255 0);</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* Verde ultrabrilhante que telas P3 conseguem emitir */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-kw">@supports</span> (color: color(display-p3 0 1 0)) {</span>
<span class="wzw-code-line">    .card-padrao {</span>
<span class="wzw-code-line">        <span class="wzw-tk-attr">border-color</span>: color(display-p3 0 1 0);</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Verde comum no espaço sRGB */
.card-padrao {
    border-color: rgb(0 255 0);
}

/* Verde ultrabrilhante que telas P3 conseguem emitir */
@supports (color: color(display-p3 0 1 0)) {
    .card-padrao {
        border-color: color(display-p3 0 1 0);
    }
}</textarea>
        </div>
    </div>
    
</div>
<h2>6. Exemplo Prático: Comparando Modelos e Sintaxes no Código</h2>
<p>O exemplo interativo a seguir constrói um laboratório de visualização onde diferentes notações e modelos são confrontados lado a lado:</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span>HTML5 + CSS3 — Laboratório Comparativo de Modelos Cromáticos</span><br />
        <span>comparador-modelos.html</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-15778" data-lang="code">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">HTML</span>
                                <span class="wzw-ide-lines-count">120 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-15778', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-15778', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-tag">&lt;!DOCTYPE</span><span class="wzw-tk-kw"> html</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;html</span> <span class="wzw-tk-attr">lang</span>=<span class="wzw-tk-str">&quot;pt-BR&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;head&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;meta</span> <span class="wzw-tk-attr">charset</span>=<span class="wzw-tk-str">&quot;UTF-8&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;title&gt;</span>Laboratório de Modelos de Cor CSS<span class="wzw-tk-tag">&lt;/title&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;style&gt;</span></span>
<span class="wzw-code-line">        body {</span>
<span class="wzw-code-line">            font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif;</span>
<span class="wzw-code-line">            background-color: #0f172a;</span>
<span class="wzw-code-line">            color: #f8fafc;</span>
<span class="wzw-code-line">            padding: 30px;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .container {</span>
<span class="wzw-code-line">            max-width: 860px;</span>
<span class="wzw-code-line">            margin: 0 auto;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .grid-modelos {</span>
<span class="wzw-code-line">            display: grid;</span>
<span class="wzw-code-line">            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));</span>
<span class="wzw-code-line">            gap: 18px;</span>
<span class="wzw-code-line">            margin-top: 24px;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .card-cor {</span>
<span class="wzw-code-line">            border-radius: 12px;</span>
<span class="wzw-code-line">            padding: 24px 18px;</span>
<span class="wzw-code-line">            text-align: center;</span>
<span class="wzw-code-line">            box-shadow: 0 10px 25px rgba(0,0,0,0.3);</span>
<span class="wzw-code-line">            border: 1px solid rgba(255, 255, 255, 0.1);</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .card-cor strong {</span>
<span class="wzw-code-line">            display: block;</span>
<span class="wzw-code-line">            font-size: 16px;</span>
<span class="wzw-code-line">            margin-bottom: 6px;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .card-cor code {</span>
<span class="wzw-code-line">            font-size: 12px;</span>
<span class="wzw-code-line">            background: rgba(0, 0, 0, 0.4);</span>
<span class="wzw-code-line">            padding: 3px 6px;</span>
<span class="wzw-code-line">            border-radius: 4px;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        <span class="wzw-tk-comment">/* 1. Hexadecimal Tradicional */</span></span>
<span class="wzw-code-line">        .box-hex {</span>
<span class="wzw-code-line">            background-color: #0284c7;</span>
<span class="wzw-code-line">            color: #ffffff;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        <span class="wzw-tk-comment">/* 2. RGB Moderno (sem vírgulas) */</span></span>
<span class="wzw-code-line">        .box-rgb {</span>
<span class="wzw-code-line">            background-color: rgb(2 132 199);</span>
<span class="wzw-code-line">            color: #ffffff;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        <span class="wzw-tk-comment">/* 3. HSL com Transparência Alfa */</span></span>
<span class="wzw-code-line">        .box-hsl {</span>
<span class="wzw-code-line">            background-color: hsl(200 98% 39% / 85%);</span>
<span class="wzw-code-line">            color: #ffffff;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        <span class="wzw-tk-comment">/* 4. OKLCH Perceptual */</span></span>
<span class="wzw-code-line">        .box-oklch {</span>
<span class="wzw-code-line">            background-color: oklch(0.58 0.16 230);</span>
<span class="wzw-code-line">            color: #ffffff;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .barra-gradiente {</span>
<span class="wzw-code-line">            margin-top: 32px;</span>
<span class="wzw-code-line">            height: 48px;</span>
<span class="wzw-code-line">            border-radius: 8px;</span>
<span class="wzw-code-line">            background: linear-gradient(to right in oklch, oklch(0.6 0.25 30), oklch(0.7 0.2 140), oklch(0.6 0.22 250));</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .gradiente-legenda {</span>
<span class="wzw-code-line">            font-size: 12px;</span>
<span class="wzw-code-line">            color: #94a3b8;</span>
<span class="wzw-code-line">            margin-top: 8px;</span>
<span class="wzw-code-line">            text-align: center;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;/style&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/head&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;body&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;container&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;h2</span> <span class="wzw-tk-attr">style</span>=<span class="wzw-tk-str">&quot;color: #38bdf8; margin: 0 0 10px;&quot;</span><span class="wzw-tk-tag">&gt;</span>O Mesmo Ponto de Azul em 4 Modelos Distintos<span class="wzw-tk-tag">&lt;/h2&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;p</span> <span class="wzw-tk-attr">style</span>=<span class="wzw-tk-str">&quot;color: #94a3b8;&quot;</span><span class="wzw-tk-tag">&gt;</span>Compare como a mesma tonalidade de azul é expressa em diferentes notações sintáticas:<span class="wzw-tk-tag">&lt;/p&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;grid-modelos&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;card-cor box-hex&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;strong&gt;</span>Hexadecimal<span class="wzw-tk-tag">&lt;/strong&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;code&gt;</span>#0284c7<span class="wzw-tk-tag">&lt;/code&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;card-cor box-rgb&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;strong&gt;</span>RGB Moderno<span class="wzw-tk-tag">&lt;/strong&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;code&gt;</span>rgb(2 132 199)<span class="wzw-tk-tag">&lt;/code&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;card-cor box-hsl&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;strong&gt;</span>HSL com Alfa<span class="wzw-tk-tag">&lt;/strong&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;code&gt;</span>hsl(200 98% 39% / 85%)<span class="wzw-tk-tag">&lt;/code&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;card-cor box-oklch&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;strong&gt;</span>OKLCH Perceptual<span class="wzw-tk-tag">&lt;/strong&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;code&gt;</span>oklch(0.58 0.16 230)<span class="wzw-tk-tag">&lt;/code&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;h3</span> <span class="wzw-tk-attr">style</span>=<span class="wzw-tk-str">&quot;color: #f1f5f9; margin-top: 36px;&quot;</span><span class="wzw-tk-tag">&gt;</span>Gradiente com Interpolação OKLCH (Sem &quot;Banda Cinza&quot;)<span class="wzw-tk-tag">&lt;/h3&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;barra-gradiente&quot;</span><span class="wzw-tk-tag">&gt;</span><span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;p</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;gradiente-legenda&quot;</span><span class="wzw-tk-tag">&gt;</span>A interpolação <span class="wzw-tk-tag">&lt;code&gt;</span>in oklch<span class="wzw-tk-tag">&lt;/code&gt;</span> impede que a transição entre cores opostas fique acinzentada e sem vida.<span class="wzw-tk-tag">&lt;/p&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/body&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/html&gt;</span></span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;pt-BR&quot;&gt;
&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;title&gt;Laboratório de Modelos de Cor CSS&lt;/title&gt;
    &lt;style&gt;
        body {
            font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif;
            background-color: #0f172a;
            color: #f8fafc;
            padding: 30px;
        }

        .container {
            max-width: 860px;
            margin: 0 auto;
        }

        .grid-modelos {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 18px;
            margin-top: 24px;
        }

        .card-cor {
            border-radius: 12px;
            padding: 24px 18px;
            text-align: center;
            box-shadow: 0 10px 25px rgba(0,0,0,0.3);
            border: 1px solid rgba(255, 255, 255, 0.1);
        }

        .card-cor strong {
            display: block;
            font-size: 16px;
            margin-bottom: 6px;
        }

        .card-cor code {
            font-size: 12px;
            background: rgba(0, 0, 0, 0.4);
            padding: 3px 6px;
            border-radius: 4px;
        }

        /* 1. Hexadecimal Tradicional */
        .box-hex {
            background-color: #0284c7;
            color: #ffffff;
        }

        /* 2. RGB Moderno (sem vírgulas) */
        .box-rgb {
            background-color: rgb(2 132 199);
            color: #ffffff;
        }

        /* 3. HSL com Transparência Alfa */
        .box-hsl {
            background-color: hsl(200 98% 39% / 85%);
            color: #ffffff;
        }

        /* 4. OKLCH Perceptual */
        .box-oklch {
            background-color: oklch(0.58 0.16 230);
            color: #ffffff;
        }

        .barra-gradiente {
            margin-top: 32px;
            height: 48px;
            border-radius: 8px;
            background: linear-gradient(to right in oklch, oklch(0.6 0.25 30), oklch(0.7 0.2 140), oklch(0.6 0.22 250));
        }

        .gradiente-legenda {
            font-size: 12px;
            color: #94a3b8;
            margin-top: 8px;
            text-align: center;
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

    &lt;div class=&quot;container&quot;&gt;
        &lt;h2 style=&quot;color: #38bdf8; margin: 0 0 10px;&quot;&gt;O Mesmo Ponto de Azul em 4 Modelos Distintos&lt;/h2&gt;
        &lt;p style=&quot;color: #94a3b8;&quot;&gt;Compare como a mesma tonalidade de azul é expressa em diferentes notações sintáticas:&lt;/p&gt;

        &lt;div class=&quot;grid-modelos&quot;&gt;
            &lt;div class=&quot;card-cor box-hex&quot;&gt;
                &lt;strong&gt;Hexadecimal&lt;/strong&gt;
                &lt;code&gt;#0284c7&lt;/code&gt;
            &lt;/div&gt;

            &lt;div class=&quot;card-cor box-rgb&quot;&gt;
                &lt;strong&gt;RGB Moderno&lt;/strong&gt;
                &lt;code&gt;rgb(2 132 199)&lt;/code&gt;
            &lt;/div&gt;

            &lt;div class=&quot;card-cor box-hsl&quot;&gt;
                &lt;strong&gt;HSL com Alfa&lt;/strong&gt;
                &lt;code&gt;hsl(200 98% 39% / 85%)&lt;/code&gt;
            &lt;/div&gt;

            &lt;div class=&quot;card-cor box-oklch&quot;&gt;
                &lt;strong&gt;OKLCH Perceptual&lt;/strong&gt;
                &lt;code&gt;oklch(0.58 0.16 230)&lt;/code&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;h3 style=&quot;color: #f1f5f9; margin-top: 36px;&quot;&gt;Gradiente com Interpolação OKLCH (Sem &quot;Banda Cinza&quot;)&lt;/h3&gt;
        &lt;div class=&quot;barra-gradiente&quot;&gt;&lt;/div&gt;
        &lt;p class=&quot;gradiente-legenda&quot;&gt;A interpolação &lt;code&gt;in oklch&lt;/code&gt; impede que a transição entre cores opostas fique acinzentada e sem vida.&lt;/p&gt;
    &lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</textarea>
        </div>
    </div>
    
<div class="wzw-playground-action-bar">
        <span class="wzw-playground-desc">Experimente alterar as coordenadas no nosso ambiente de código interativo:</span><br />
        <a href="/web-academy/playground-web/" class="wzw-btn-playground" target="_blank" rel="noopener">⚡ Testar no Playground IDE</a>
    </div>
</div>
<h2>7. Matriz de Decisão: Qual Notação Escolher no Front-End Moderno?</h2>
<p>Utilize esta matriz como guia arquitetural para os projetos da sua equipe:</p>
<div class="wzw-table-responsive">
<table class="wzw-table">
<thead>
<tr>
<th>Cenário de Desenvolvimento</th>
<th>Modelo / Notação Recomendada</th>
<th>Justificativa Técnica</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Design Tokens &#038; Cores de Marca</strong></td>
<td><code>#RRGGBB</code> (HEX) ou <code>oklch()</code></td>
<td>HEX oferece compatibilidade universal; OKLCH garante que as escalas tonais (50, 100, 200&#8230; 900) tenham passos de luminosidade matematicamente iguais.</td>
</tr>
<tr>
<td><strong>Gradientes de Alta Qualidade</strong></td>
<td><code>linear-gradient(in oklch, ...)</code></td>
<td>Evita a famosa &#8220;zona cinzenta morta&#8221; que ocorre no meio de gradientes calculados no espaço sRGB comum.</td>
</tr>
<tr>
<td><strong>Temas Dinâmicos (Dark / Light Mode)</strong></td>
<td><code>oklch()</code> ou <code>hsl()</code></td>
<td>Basta inverter ou remapear a variável de Luminosidade (<code>L</code>) mantendo a mesma matriz harmônica.</td>
</tr>
<tr>
<td><strong>E-mails Marketing HTML</strong></td>
<td><code>#RRGGBB</code> (HEX de 6 caracteres)</td>
<td>Clientes legados como Microsoft Outlook para Windows desktop só suportam código HEX clássico.</td>
</tr>
</tbody>
</table>
</div>
<h2>8. Boas Práticas, Fallbacks e Desempenho de Renderização</h2>
<ul>
<li><strong>Sempre Forneça Fallback para Telas Antigas:</strong> Se você adotar modelos de última geração como <code>oklch()</code> ou <code>color(display-p3 ...)</code> em elementos de destaque, declare uma propriedade tradicional antes para garantir que navegadores defasados continuem exibindo uma cor aceitável:
    <div class="wzw-ide-card" id="wzw-code-63078" data-lang="code">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS</span>
                                <span class="wzw-ide-lines-count">4 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-63078', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-63078', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line">.hero-banner {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#0284c7</span>; /* Fallback universal */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: oklch(0.58 0.16 230); /* Navegadores modernos */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.hero-banner {
    background-color: #0284c7; /* Fallback universal */
    background-color: oklch(0.58 0.16 230); /* Navegadores modernos */
}</textarea>
        </div>
    </div>
    
</li>
<li><strong>Audite Suas Imagens com Ferramentas do Ecossistema:</strong> Para descobrir as coordenadas cromáticas exatas de logotipos e layouts, utilize o <a href="/web-ferramentas/extrator-de-cores-de-imagens-online/" target="_blank" rel="noopener">Extrator de Paleta de Cores de Imagem</a> do Web-ZoneWare.</li>
<li><strong>Prefira a Sintaxe Moderna sem Vírgulas:</strong> A separação por espaços e barra de alfa (<code>rgb(0 0 0 / 50%)</code>) é o padrão oficial do W3C para todo o futuro do CSS.</li>
</ul>
<div class="wzw-callout wzw-callout-pro">
    <span class="wzw-callout-icon">🚀</span></p>
<div class="wzw-callout-text">
        <strong>Próximo Passo Didático:</strong> Concluído o bloco de cores, na <strong>Lição 22: Scripts JavaScript (&lt;script&gt;)</strong>, aprenderemos como o HTML carrega e executa código dinâmico, os impactos críticos dos atributos <code>defer</code> e <code>async</code> no Core Web Vitals e como evitar o bloqueio de renderização do DOM.
    </div>
</div>
<p>O post <a href="https://webzoneware.com/web-academy/curso-html/valores-de-cor-e-modelos/">Valores de Cor no HTML: Modelos e Espaços | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webzoneware.com/web-academy/curso-html/valores-de-cor-e-modelos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
