<?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 text decoration css - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/text-decoration-css/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/text-decoration-css/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Thu, 22 Oct 2026 00:47:25 +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 text decoration css - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/text-decoration-css/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Alinhamento e Decoração de Texto no CSS &#124; Web Academy</title>
		<link>https://webzoneware.com/web-academy/curso-css/alinhamento-decoracao-texto-css/</link>
					<comments>https://webzoneware.com/web-academy/curso-css/alinhamento-decoracao-texto-css/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 00:47:25 +0000</pubDate>
				<category><![CDATA[Curso de CSS e CSS3]]></category>
		<category><![CDATA[alinhamento de texto css]]></category>
		<category><![CDATA[text decoration css]]></category>
		<category><![CDATA[text overflow ellipsis]]></category>
		<category><![CDATA[text transform uppercase]]></category>
		<category><![CDATA[text underline offset]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=29417</guid>

					<description><![CDATA[<p>A tipografia na web não termina na escolha do tamanho e peso das fontes. A forma como os blocos de texto se acomodam horizontalmente, a sofisticação visual das linhas de link e o tratamento estético das palavras determinam o profissionalismo de um produto digital. Nesta lição, você dominará o alinhamento e decoração de texto no [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/alinhamento-decoracao-texto-css/">Alinhamento e Decoração de Texto no CSS | 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 tipografia na web não termina na escolha do tamanho e peso das fontes. A forma como os blocos de texto se acomodam horizontalmente, a sofisticação visual das linhas de link e o tratamento estético das palavras determinam o profissionalismo de um produto digital. Nesta lição, você dominará o <strong>alinhamento e decoração de texto no CSS</strong>: aprenderá por que o texto justificado é um grave erro de acessibilidade na web, como customizar links elegantes com espessuras e a propriedade <code>text-underline-offset</code>, a regra de acessibilidade para maiúsculas com <code>text-transform</code> e a fórmula mágica do truncamento com reticências (<code>text-overflow: ellipsis</code>).
</p>
<h2>1. Alinhamento Horizontal com <code>text-align</code> e Propriedades Lógicas</h2>
<p>
    A propriedade <code>text-align</code> controla como o texto em linha é distribuído dentro de um elemento de bloco:
</p>
<div class="wzw-table-responsive">
<table class="wzw-tech-table">
<thead>
<tr>
<th>Valor</th>
<th>Alinhamento Visual</th>
<th>Suporte a Internacionalização?</th>
<th>Uso Recomendado</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>start</code> <em>(Moderno)</em></td>
<td>Alinha no <strong>início da linha de leitura</strong>.</td>
<td><strong>Sim!</strong> Esquerda em LTR; Direita em RTL.</td>
<td><strong>Padrão Ouro:</strong> Textos de leitura e parágrafos.</td>
</tr>
<tr>
<td><code>end</code> <em>(Moderno)</em></td>
<td>Alinha no <strong>fim da linha de leitura</strong>.</td>
<td><strong>Sim!</strong> Direita em LTR; Esquerda em RTL.</td>
<td>Tabelas numéricas e preços em e-commerce.</td>
</tr>
<tr>
<td><code>center</code></td>
<td>Centraliza o texto entre as bordas.</td>
<td>Simétrico</td>
<td>Títulos curtos de Hero, badges e cards de produto.</td>
</tr>
<tr>
<td><code>left</code> / <code>right</code></td>
<td>Alinhamento físico rígido.</td>
<td>Não (ignora idiomas RTL)</td>
<td>Layouts que exigem direção física fixa.</td>
</tr>
<tr>
<td><code>justify</code></td>
<td>Estica o texto para tocar as duas bordas.</td>
<td>Gera falhas graves de UX</td>
<td><strong>Anti-padrão na web! Evite sempre.</strong></td>
</tr>
</tbody>
</table>
</div>
<div class="wzw-callout wzw-callout-warning">
<div class="wzw-callout-icon">🚫</div>
<div class="wzw-callout-content">
        <strong>Por que NUNCA usar <code>text-align: justify</code> na Web?</strong><br />
        <br />Em jornais e livros impressos, os diagramadores ajustam manualmente o corte de palavras com hifenização milimétrica. Nos navegadores, o algoritmo do <code>justify</code> simplesmente adiciona espaços gigantescos e aleatórios entre as palavras. Isso cria o fenômeno dos <strong>&#8220;Rios de Branco&#8221; (Rivers of White)</strong>: vãos verticais vazios que causam fadiga visual e desorientam gravemente pessoas com dislexia ou TDAH.<br />
        <br /><strong>Diretriz WCAG 2.1 (Critério 1.4.8):</strong> Todo texto na web deve ser alinhado à esquerda (<code>text-align: start</code>), mantendo a borda direita naturalmente irregular (&#8220;ragged right&#8221;) para guiar os olhos na troca de linha.
    </div>
</div>
<h2>2. A Nova Era do <code>text-decoration</code>: Linhas, Cores e Espessuras</h2>
<p>
    No CSS antigo, <code>text-decoration: underline;</code> desenhava uma linha azul fina, colada diretamente na base das letras.
</p>
<p>
    No CSS moderno (<em>CSS Text Decoration Module Level 3</em>), <code>text-decoration</code> tornou-se uma propriedade resumida (shorthand) extremamente poderosa composta por 4 eixos:
</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-decorations.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-46404" 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-46404', 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-46404', 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: [line] [style] [color] [thickness] */</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* 1. Sublinhado elegante com cor suave e espessura controlada */</span></span>
<span class="wzw-code-line">a.link-moderno {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-decoration</span>: underline solid <span class="wzw-tk-num">#38bdf8</span> <span class="wzw-tk-num">2px</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. Preço riscado em e-commerce (line-through) */</span></span>
<span class="wzw-code-line">.preco-antigo {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-decoration</span>: line-through solid <span class="wzw-tk-num">#ef4444</span> <span class="wzw-tk-num">1.5px</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. Sublinhado ondulado de erro de ortografia (wavy) */</span></span>
<span class="wzw-code-line">.erro-gramatical {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-decoration</span>: underline wavy <span class="wzw-tk-num">#dc2626</span> <span class="wzw-tk-num">2px</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Sintaxe: [line] [style] [color] [thickness] */

/* 1. Sublinhado elegante com cor suave e espessura controlada */
a.link-moderno {
    text-decoration: underline solid #38bdf8 2px;
}

/* 2. Preço riscado em e-commerce (line-through) */
.preco-antigo {
    text-decoration: line-through solid #ef4444 1.5px;
}

/* 3. Sublinhado ondulado de erro de ortografia (wavy) */
.erro-gramatical {
    text-decoration: underline wavy #dc2626 2px;
}</textarea>
        </div>
    </div>
    
</div>
<h2>3. O Segredo dos Links Modernos: <code>text-underline-offset</code></h2>
<p>
    Um dos problemas estéticos mais irritantes do sublinhado clássico é que ele corta as hastes inferiores de letras descendentes (como &#8216;p&#8217;, &#8216;q&#8217;, &#8216;y&#8217;, &#8216;g&#8217; e &#8216;j&#8217;).
</p>
<p>
    A propriedade moderna <code>text-underline-offset</code> resolve isso de forma brilhante, permitindo <strong>afastar o sublinhado para baixo da linha de base</strong>:
</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">underline-offset.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-60451" 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-60451', 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-60451', 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">a.link-editorial {</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">text-decoration</span>: underline solid <span class="wzw-tk-num">#0284c7</span> <span class="wzw-tk-num">2px</span>;</span>
<span class="wzw-code-line">    </span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* Afasta a linha 4px para baixo, deixando as letras &#039;p&#039;, &#039;g&#039; e &#039;y&#039; respirarem! */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-underline-offset</span>: <span class="wzw-tk-num">4px</span>;</span>
<span class="wzw-code-line">    </span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* Evita colisão com os traços das letras */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-decoration-skip-ink</span>: auto;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">transition</span>: text-underline-offset <span class="wzw-tk-num">0.2s</span> ease, text-decoration-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">a.link-editorial<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-underline-offset</span>: <span class="wzw-tk-num">6px</span>;  /* Micro-interação elegante ao passar o mouse */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-decoration-color</span>: <span class="wzw-tk-num">#38bdf8</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>a.link-editorial {
    color: #ffffff;
    text-decoration: underline solid #0284c7 2px;
    
    /* Afasta a linha 4px para baixo, deixando as letras &#039;p&#039;, &#039;g&#039; e &#039;y&#039; respirarem! */
    text-underline-offset: 4px;
    
    /* Evita colisão com os traços das letras */
    text-decoration-skip-ink: auto;
    transition: text-underline-offset 0.2s ease, text-decoration-color 0.2s ease;
}

a.link-editorial:hover {
    text-underline-offset: 6px;  /* Micro-interação elegante ao passar o mouse */
    text-decoration-color: #38bdf8;
}</textarea>
        </div>
    </div>
    
</div>
<h2>4. Transformações de Caixa com <code>text-transform</code> &amp; Acessibilidade</h2>
<p>
    A propriedade <code>text-transform</code> altera a capitalização visual do texto sem modificar os caracteres originais no HTML:
</p>
<ul>
<li><code>uppercase</code>: Transforma tudo em MAIÚSCULAS.</li>
<li><code>lowercase</code>: Transforma tudo em minúsculas.</li>
<li><code>capitalize</code>: Transforma A Primeira Letra De Cada Palavra Em Maiúscula.</li>
<li><code>none</code>: Mantém o texto exatamente como foi digitado.</li>
</ul>
<div class="wzw-callout wzw-callout-info">
<div class="wzw-callout-icon">💡</div>
<div class="wzw-callout-content">
        <strong>Acessibilidade para Leitores de Tela:</strong><br />
        <br />Nunca digite palavras em caixa alta diretamente no HTML (ex: <code>&lt;button&gt;COMPRAR AGORA&lt;/button&gt;</code>). Certos sintetizadores de voz para pessoas cegas tratam palavras em caixa alta como siglas e soletram letra por letra (&#8220;C-O-M-P-R-A-R&#8221;).<br />
        <br /><strong>O padrão correto:</strong> Digite normalmente no HTML (<code>&lt;button&gt;Comprar agora&lt;/button&gt;</code>) e transforme visualmente no CSS com <code>text-transform: uppercase;</code>.
    </div>
</div>
<h3>A Dupla Inseparável: <code>uppercase</code> + <code>letter-spacing</code></h3>
<p>
    Textos em letras maiúsculas ficam naturalmente apertados e pesados. Sempre que aplicar <code>text-transform: uppercase</code> em badges, botões ou títulos, adicione <strong>espaçamento entre letras (tracking)</strong>:
</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">badge-tracking.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-79869" 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">8 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-79869', 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-79869', 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">.badge-topo {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">0.75rem</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">text-transform</span>: uppercase;</span>
<span class="wzw-code-line">    </span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* O letter-spacing afasta as maiúsculas e confere sofisticação de alta costura */</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">letter-spacing</span>: <span class="wzw-tk-num">0.08em</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.badge-topo {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    
    /* O letter-spacing afasta as maiúsculas e confere sofisticação de alta costura */
    letter-spacing: 0.08em;
}</textarea>
        </div>
    </div>
    
</div>
<h2>5. Truncamento com Reticências: <code>text-overflow: ellipsis</code></h2>
<p>
    Em dashboards, tabelas e cards com títulos dinâmicos vindos de bancos de dados, textos longos frequentemente quebram layouts. Para truncar o texto e adicionar reticências (&#8220;&#8230;&#8221;) de forma automática, utilizamos uma tríade clássica do CSS:
</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">single-line-ellipsis.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-63774" 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">7 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-63774', 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-63774', 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">/* A Tríade Obrigatória do Truncamento de Linha Única: */</span></span>
<span class="wzw-code-line">.texto-truncado-1-linha {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">white-space</span>: nowrap;       /* 1. Proíbe o texto de quebrar para a linha seguinte */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">overflow</span>: hidden;          /* 2. Esconde o que passar do limite da caixa */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-overflow</span>: ellipsis;   /* 3. Desenha automaticamente os <span class="wzw-tk-str">&quot;...&quot;</span> no ponto de corte! */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">max-width</span>: <span class="wzw-tk-num">250px</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* A Tríade Obrigatória do Truncamento de Linha Única: */
.texto-truncado-1-linha {
    white-space: nowrap;       /* 1. Proíbe o texto de quebrar para a linha seguinte */
    overflow: hidden;          /* 2. Esconde o que passar do limite da caixa */
    text-overflow: ellipsis;   /* 3. Desenha automaticamente os &quot;...&quot; no ponto de corte! */
    max-width: 250px;
}</textarea>
        </div>
    </div>
    
</div>
<h3>Truncamento Multilinha Moderno (Line Clamp)</h3>
<p>
    Se você deseja permitir até duas ou três linhas de texto antes de truncar, o CSS moderno oferece o <code>line-clamp</code>:
</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">multiline-clamp.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-80656" 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">6 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-80656', 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-80656', 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">.resumo-card-2-linhas {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">display</span>: -webkit-box;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">-webkit-line-clamp</span>: 2;        /* Exibe no máximo 2 linhas */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">-webkit-box-orient</span>: vertical;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">overflow</span>: hidden;             /* Corta o excesso com <span class="wzw-tk-str">&quot;...&quot;</span> na 2ª linha */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.resumo-card-2-linhas {
    display: -webkit-box;
    -webkit-line-clamp: 2;        /* Exibe no máximo 2 linhas */
    -webkit-box-orient: vertical;
    overflow: hidden;             /* Corta o excesso com &quot;...&quot; na 2ª linha */
}</textarea>
        </div>
    </div>
    
</div>
<h2>6. Laboratório Prático: Card de E-Commerce com Preços e Tipografia Refinada</h2>
<p>
    Neste laboratório completo, construiremos um card de produto de alta conversão integrando truncamento multilinha, links com <code>text-underline-offset</code>, badges com tracking e preços com <code>line-through</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">product-card-typography.html</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-20202" 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">21 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-20202', 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-20202', 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;produto-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;badge-promocao&quot;</span><span class="wzw-tk-tag">&gt;</span>Oferta Especial<span class="wzw-tk-tag">&lt;/span&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">&lt;!-- Título com truncamento em 2 linhas --&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;produto-titulo&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">        Monitor Gamer Curvo UltraWide 34 Polegadas 165Hz com HDR400 e Painel IPS</span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;/h3&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;produto-precos&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;preco-de&quot;</span><span class="wzw-tk-tag">&gt;</span>R$ 2.899,00<span class="wzw-tk-tag">&lt;/span&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;preco-por&quot;</span><span class="wzw-tk-tag">&gt;</span>R$ 1.999,00<span class="wzw-tk-tag">&lt;/span&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;p</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;produto-descricao&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">        Imersão panorâmica completa para desenvolvedores e criadores de conteúdo com fidelidade cromática DCI-P3 de 98%.</span>
<span class="wzw-code-line">    <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;produto-links&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;a</span> <span class="wzw-tk-attr">href</span>=<span class="wzw-tk-str">&quot;#&quot;</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;link-detalhes&quot;</span><span class="wzw-tk-tag">&gt;</span>Ver Especificações Completas →<span class="wzw-tk-tag">&lt;/a&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>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>&lt;div class=&quot;produto-card&quot;&gt;
    &lt;span class=&quot;badge-promocao&quot;&gt;Oferta Especial&lt;/span&gt;

    &lt;!-- Título com truncamento em 2 linhas --&gt;
    &lt;h3 class=&quot;produto-titulo&quot;&gt;
        Monitor Gamer Curvo UltraWide 34 Polegadas 165Hz com HDR400 e Painel IPS
    &lt;/h3&gt;

    &lt;div class=&quot;produto-precos&quot;&gt;
        &lt;span class=&quot;preco-de&quot;&gt;R$ 2.899,00&lt;/span&gt;
        &lt;span class=&quot;preco-por&quot;&gt;R$ 1.999,00&lt;/span&gt;
    &lt;/div&gt;

    &lt;p class=&quot;produto-descricao&quot;&gt;
        Imersão panorâmica completa para desenvolvedores e criadores de conteúdo com fidelidade cromática DCI-P3 de 98%.
    &lt;/p&gt;

    &lt;div class=&quot;produto-links&quot;&gt;
        &lt;a href=&quot;#&quot; class=&quot;link-detalhes&quot;&gt;Ver Especificações Completas →&lt;/a&gt;
    &lt;/div&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">product-card-typography.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-99805" 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">100 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-99805', 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-99805', 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">/* Reset e base */</span></span>
<span class="wzw-code-line">*, *::before, *::after {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">box-sizing</span>: border-box;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">margin</span>: 0;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">padding</span>: 0;</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>: <span class="wzw-tk-num">#0b0f19</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#e2e8f0</span>;</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">min-height</span>: <span class="wzw-tk-num">100vh</span>;</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">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">.produto-card {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#1e293b</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">1px</span> solid <span class="wzw-tk-num">#334155</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: <span class="wzw-tk-num">16px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">padding</span>: <span class="wzw-tk-num">2rem</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">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.4);</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. Badge em caixa alta com letter-spacing */</span></span>
<span class="wzw-code-line">.badge-promocao {</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">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">font-size</span>: <span class="wzw-tk-num">0.75rem</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">text-transform</span>: uppercase;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">letter-spacing</span>: <span class="wzw-tk-num">0.08em</span>;     /* Essencial para maiúsculas elegantes */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: rgba(239, 68, 68, 0.15);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#f87171</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">1px</span> solid rgba(239, 68, 68, 0.3);</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">1rem</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. Truncamento de título em no máximo 2 linhas */</span></span>
<span class="wzw-code-line">.produto-titulo {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">1.25rem</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">line-height</span>: 1.35;</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">margin-bottom</span>: <span class="wzw-tk-num">1rem</span>;</span>
<span class="wzw-code-line">    </span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">display</span>: -webkit-box;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">-webkit-line-clamp</span>: 2;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">-webkit-box-orient</span>: vertical;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">overflow</span>: hidden;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.produto-precos {</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>: baseline;</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">margin-bottom</span>: <span class="wzw-tk-num">1rem</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. Preço antigo com line-through decorativo */</span></span>
<span class="wzw-code-line">.preco-de {</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>: <span class="wzw-tk-num">#64748b</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-decoration</span>: line-through solid <span class="wzw-tk-num">#ef4444</span> <span class="wzw-tk-num">1.5px</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.preco-por {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">1.6rem</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>: <span class="wzw-tk-num">#38bdf8</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.produto-descricao {</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">line-height</span>: 1.6;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#94a3b8</span>;</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 class="wzw-tk-attr">text-align</span>: start; /* Alinhamento seguro e acessível */</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. Link sofisticado com text-underline-offset */</span></span>
<span class="wzw-code-line">.link-detalhes {</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">font-size</span>: <span class="wzw-tk-num">0.9rem</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">text-decoration</span>: underline solid <span class="wzw-tk-num">#0284c7</span> <span class="wzw-tk-num">2px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-underline-offset</span>: <span class="wzw-tk-num">4px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">transition</span>: all <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">.link-detalhes<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">#38bdf8</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-decoration-color</span>: <span class="wzw-tk-num">#38bdf8</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">text-underline-offset</span>: <span class="wzw-tk-num">6px</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Reset e base */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

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

.produto-card {
    background-color: #1e293b;
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 2rem;
    max-width: 380px;
    width: 100%;
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.4);
}

/* 1. Badge em caixa alta com letter-spacing */
.badge-promocao {
    display: inline-block;
    padding: 0.35rem 0.75rem;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;     /* Essencial para maiúsculas elegantes */
    background-color: rgba(239, 68, 68, 0.15);
    color: #f87171;
    border: 1px solid rgba(239, 68, 68, 0.3);
    border-radius: 9999px;
    margin-bottom: 1rem;
}

/* 2. Truncamento de título em no máximo 2 linhas */
.produto-titulo {
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1.35;
    color: #ffffff;
    margin-bottom: 1rem;
    
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.produto-precos {
    display: flex;
    align-items: baseline;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

/* 3. Preço antigo com line-through decorativo */
.preco-de {
    font-size: 0.9rem;
    color: #64748b;
    text-decoration: line-through solid #ef4444 1.5px;
}

.preco-por {
    font-size: 1.6rem;
    font-weight: 800;
    color: #38bdf8;
}

.produto-descricao {
    font-size: 0.875rem;
    line-height: 1.6;
    color: #94a3b8;
    margin-bottom: 1.75rem;
    text-align: start; /* Alinhamento seguro e acessível */
}

/* 4. Link sofisticado com text-underline-offset */
.link-detalhes {
    color: #ffffff;
    font-size: 0.9rem;
    font-weight: 600;
    text-decoration: underline solid #0284c7 2px;
    text-underline-offset: 4px;
    transition: all 0.2s ease;
}

.link-detalhes:hover {
    color: #38bdf8;
    text-decoration-color: #38bdf8;
    text-underline-offset: 6px;
}</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>7. Boas Práticas da Indústria &#038; Checklist de Estilização</h2>
<ul>
<li>
        <strong>❌ Banimento do <code>text-align: justify</code>:</strong> Nunca justifique textos corridos na web. Mantenha <code>text-align: start</code> para proteger a legibilidade de pessoas com dislexia e cumprir a WCAG 2.1.
    </li>
<li>
        <strong>✅ Adote <code>text-underline-offset</code> em Links de Artigos:</strong> Um deslocamento de 3px ou 4px transforma links amadores em tipografia de alto padrão visual.
    </li>
<li>
        <strong>✅ Combine <code>text-transform: uppercase</code> com <code>letter-spacing</code>:</strong> O espaçamento entre letras de 0.05em a 0.1em descompressa maiúsculas e melhora a clareza óptica de botões e tags.
    </li>
<li>
        <strong>✅ Nunca Digite Maiúsculas Diretamente no HTML:</strong> Escreva em caixa mista e aplique a transformação no CSS para proteger a leitura correta em sintetizadores de voz de acessibilidade.
    </li>
</ul>
<h2>8. Ferramentas Relacionadas &#038; Próximos Passos</h2>
<p>
    Valide decorações de texto e pratique tipografia no portal Web-ZoneWare:
</p>
<ul>
<li><a href="https://webzoneware.com/web-academy/playground-web/" target="_blank" rel="noopener"><strong>Playground Web IDE:</strong></a> Teste transições de <code>text-underline-offset</code> e truncamento multilinha ao vivo.</li>
<li><a href="https://webzoneware.com/web-ferramentas/limpador-formatador-css/" target="_blank" rel="noopener"><strong>Limpador e Formatador CSS:</strong></a> Valide declarações de <code>text-decoration</code> e organize propriedades tipográficas.</li>
</ul>
<div class="wzw-callout wzw-callout-info">
<div class="wzw-callout-icon">🏆</div>
<div class="wzw-callout-content">
        <strong>A Seguir: Conclusão do Módulo 2!</strong><br />
        <br />Na <a href="https://webzoneware.com/web-academy/css/sombras-css-text-shadow-box-shadow/"><strong>Lição 20: Sombras no CSS: text-shadow e box-shadow</strong></a>, encerraremos o Módulo 2 dominando luz, elevação, sombras suaves multicamadas, sombras internas (<code>inset</code>) e efeitos de brilho neon (Glow).
    </div>
</div>
<h2>9. Referências Técnicas &#038; Especificações Oficiais</h2>
<ul>
<li><a href="https://www.w3.org/TR/css-text-3/#text-align-property" target="_blank" rel="noopener"><strong>W3C CSS Text Module Level 3 — Alignment:</strong></a> Especificação técnica oficial sobre alinhamento de texto e propriedades lógicas.</li>
<li><a href="https://www.w3.org/TR/css-text-decor-3/#text-decoration-property" target="_blank" rel="noopener"><strong>W3C CSS Text Decoration Module Level 3:</strong></a> A especificação que oficializou cores, espessuras e offset em decorações de texto.</li>
<li><a href="https://developer.mozilla.org/pt-BR/docs/Web/CSS/text-decoration" target="_blank" rel="noopener"><strong>MDN Web Docs (Mozilla):</strong></a> Guia definitivo sobre text-decoration e text-transform.</li>
</ul>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/alinhamento-decoracao-texto-css/">Alinhamento e Decoração de Texto no CSS | 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/alinhamento-decoracao-texto-css/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
