<?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 cantos arredondados css - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/cantos-arredondados-css/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/cantos-arredondados-css/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Wed, 21 Oct 2026 19:57:03 +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 cantos arredondados css - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/cantos-arredondados-css/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Bordas no CSS e Border Radius: Guia Prático &#124; Web Academy</title>
		<link>https://webzoneware.com/web-academy/curso-css/bordas-css-border-radius/</link>
					<comments>https://webzoneware.com/web-academy/curso-css/bordas-css-border-radius/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Wed, 21 Oct 2026 19:57:03 +0000</pubDate>
				<category><![CDATA[Curso de CSS e CSS3]]></category>
		<category><![CDATA[bordas css]]></category>
		<category><![CDATA[border radius css]]></category>
		<category><![CDATA[botao pilula css]]></category>
		<category><![CDATA[cantos arredondados css]]></category>
		<category><![CDATA[outline css]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=29399</guid>

					<description><![CDATA[<p>A borda é a moldura estrutural que delimita a geometria dos componentes, cria separação visual entre áreas de conteúdo e direciona a atenção do usuário. No CSS moderno, o controle perimetral vai muito além de traços sólidos e estáticos: dominaremos as propriedades individuais de largura, estilo e cor, a matemática dos cantos arredondados com border-radius [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/bordas-css-border-radius/">Bordas no CSS e Border Radius: Guia Prático | 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 borda é a moldura estrutural que delimita a geometria dos componentes, cria separação visual entre áreas de conteúdo e direciona a atenção do usuário. No CSS moderno, o controle perimetral vai muito além de traços sólidos e estáticos: dominaremos as propriedades individuais de largura, estilo e cor, a matemática dos cantos arredondados com <code>border-radius</code> (incluindo o segredo dos botões em pílula e círculos perfeitos) e as diferenças arquiteturais críticas entre <strong>border</strong>, <strong>outline</strong> de acessibilidade e sombras delimitadoras.
</p>
<h2>1. A Tríade da Borda: Width, Style e Color</h2>
<p>
    A camada de borda do Box Model é controlada por três propriedades fundamentais:
</p>
<div class="wzw-table-responsive">
<table class="wzw-tech-table">
<thead>
<tr>
<th>Propriedade</th>
<th>Valores Aceitos</th>
<th>Exemplo</th>
<th>Obrigatória?</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>border-width</code></td>
<td>Pixels (<code>px</code>), <code>rem</code>, <code>thin</code>, <code>medium</code>, <code>thick</code></td>
<td><code>border-width: 2px;</code></td>
<td>Opcional (padrão é <code>medium</code> ~3px)</td>
</tr>
<tr>
<td><code>border-style</code></td>
<td><code>solid</code>, <code>dashed</code>, <code>dotted</code>, <code>double</code>, <code>none</code></td>
<td><code>border-style: solid;</code></td>
<td><strong>Sim! Sem estilo, a borda não aparece.</strong></td>
</tr>
<tr>
<td><code>border-color</code></td>
<td>HEX, HSL, RGB, <code>transparent</code>, <code>currentColor</code></td>
<td><code>border-color: #0284c7;</code></td>
<td>Opcional (herda a cor do texto por padrão)</td>
</tr>
</tbody>
</table>
</div>
<h3>A Propriedade Resumida (Shorthand)</h3>
<p>
    No dia a dia do desenvolvimento, raramente declaramos as três propriedades separadas. Utilizamos o shorthand unificado:
</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">shorthand-border.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-96505" 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-96505', 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-96505', 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: border: [width] [style] [color]; */</span></span>
<span class="wzw-code-line">.meu-card {</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>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* Bordas direcionais unilaterais */</span></span>
<span class="wzw-code-line">.alerta-indicador {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-left</span>: <span class="wzw-tk-num">4px</span> solid <span class="wzw-tk-num">#38bdf8</span>; /* Borda apenas no lado esquerdo */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-top</span>: none;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-right</span>: none;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-bottom</span>: none;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.separador-rodape {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-top</span>: <span class="wzw-tk-num">1px</span> dashed <span class="wzw-tk-num">#475569</span>; /* Linha pontilhada no topo */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Sintaxe: border: [width] [style] [color]; */
.meu-card {
    border: 1px solid #334155;
}

/* Bordas direcionais unilaterais */
.alerta-indicador {
    border-left: 4px solid #38bdf8; /* Borda apenas no lado esquerdo */
    border-top: none;
    border-right: none;
    border-bottom: none;
}

.separador-rodape {
    border-top: 1px dashed #475569; /* Linha pontilhada no topo */
}</textarea>
        </div>
    </div>
    
</div>
<h2>2. Estilos Visuais de Bordas no CSS</h2>
<p>
    O navegador disponibiliza uma variedade de estilos de traçado para diferentes necessidades estéticas e funcionais:
</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">border-styles.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-65530" 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">5 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-65530', 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-65530', 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">.borda-solida     { border: <span class="wzw-tk-num">2px</span> solid <span class="wzw-tk-num">#0284c7</span>; }    /* Linha contínua tradicional */</span>
<span class="wzw-code-line">.borda-tracejada  { border: <span class="wzw-tk-num">2px</span> dashed <span class="wzw-tk-num">#0284c7</span>; }   /* Traços para áreas de upload/drag &amp; drop */</span>
<span class="wzw-code-line">.borda-pontilhada { border: <span class="wzw-tk-num">2px</span> dotted <span class="wzw-tk-num">#0284c7</span>; }   /* Pontos circulares delicados */</span>
<span class="wzw-code-line">.borda-dupla      { border: <span class="wzw-tk-num">4px</span> double <span class="wzw-tk-num">#0284c7</span>; }   /* Duas linhas paralelas (mínimo <span class="wzw-tk-num">3px</span>) */</span>
<span class="wzw-code-line">.borda-invisivel  { border: <span class="wzw-tk-num">2px</span> solid transparent; } /* Borda transparente para reservas de espaço */</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.borda-solida     { border: 2px solid #0284c7; }    /* Linha contínua tradicional */
.borda-tracejada  { border: 2px dashed #0284c7; }   /* Traços para áreas de upload/drag &amp; drop */
.borda-pontilhada { border: 2px dotted #0284c7; }   /* Pontos circulares delicados */
.borda-dupla      { border: 4px double #0284c7; }   /* Duas linhas paralelas (mínimo 3px) */
.borda-invisivel  { border: 2px solid transparent; } /* Borda transparente para reservas de espaço */</textarea>
        </div>
    </div>
    
</div>
<h2>3. A Geometria dos Cantos Arredondados: <code>border-radius</code></h2>
<p>
    A propriedade <code>border-radius</code> suaviza os cantos retos de um elemento através de uma curva circular imaginária de raio $r$.
</p>
<h3>A Notação Horária (Clockwise)</h3>
<p>
    Assim como as margens e paddings, o <code>border-radius</code> pode receber de 1 a 4 valores, iniciando sempre pelo <strong>canto superior esquerdo</strong> e seguindo no sentido dos ponteiros do relógio:
</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span class="wzw-code-badge">CSS</span><br />
        <span class="wzw-code-file">border-radius-clock.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-44551" 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">22 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-44551', 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-44551', 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 valor: Todos os 4 cantos idênticos */</span></span>
<span class="wzw-code-line">.card-padrao {</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>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* 2 valores: [topo-esq / base-dir] e [topo-dir / base-esq] */</span></span>
<span class="wzw-code-line">.formato-folha {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: <span class="wzw-tk-num">20px</span> <span class="wzw-tk-num">4px</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">/* 4 valores: [topo-esq] [topo-dir] [base-dir] [base-esq] */</span></span>
<span class="wzw-code-line">.card-assimetrico {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: <span class="wzw-tk-num">16px</span> <span class="wzw-tk-num">0px</span> <span class="wzw-tk-num">16px</span> <span class="wzw-tk-num">0px</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">/* Propriedades granulares explícitas */</span></span>
<span class="wzw-code-line">.aba-superior {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-top-left-radius</span>: <span class="wzw-tk-num">8px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-top-right-radius</span>: <span class="wzw-tk-num">8px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-bottom-left-radius</span>: 0;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-bottom-right-radius</span>: 0;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* 1 valor: Todos os 4 cantos idênticos */
.card-padrao {
    border-radius: 12px;
}

/* 2 valores: [topo-esq / base-dir] e [topo-dir / base-esq] */
.formato-folha {
    border-radius: 20px 4px;
}

/* 4 valores: [topo-esq] [topo-dir] [base-dir] [base-esq] */
.card-assimetrico {
    border-radius: 16px 0px 16px 0px;
}

/* Propriedades granulares explícitas */
.aba-superior {
    border-top-left-radius: 8px;
    border-top-right-radius: 8px;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}</textarea>
        </div>
    </div>
    
</div>
<h2>4. Geometrias Especiais: Círculos Perfeitos e Botões em Pílula (Capsule)</h2>
<p>
    Existem duas formas icônicas que todo desenvolvedor front-end precisa construir frequentemente na web:
</p>
<h3>1. O Círculo Perfeito (Avatar de Usuário)</h3>
<p>
    Para transformar qualquer elemento em uma esfera perfeita, a regra matemática exige que a largura e a altura sejam <strong>rigorosamente idênticas</strong> (quadrado) e o <code>border-radius</code> seja de <code>50%</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">avatar-circle.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-80839" 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-80839', 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-80839', 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">.avatar-usuario {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">width</span>: <span class="wzw-tk-num">64px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">height</span>: <span class="wzw-tk-num">64px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: 50%; /* 50% em caixas quadradas gera um círculo perfeito! */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">object-fit</span>: cover;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">2px</span> solid <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>.avatar-usuario {
    width: 64px;
    height: 64px;
    border-radius: 50%; /* 50% em caixas quadradas gera um círculo perfeito! */
    object-fit: cover;
    border: 2px solid #38bdf8;
}</textarea>
        </div>
    </div>
    
</div>
<h3>2. O Botão em Pílula Perfeito (O Segredo dos <code>9999px</code>)</h3>
<p>
    Para botões, tags ou pílulas de status com largura flexível (onde o texto pode ter qualquer comprimento), a técnica padrão da indústria consagrada em frameworks como Tailwind e Bootstrap é utilizar <code>border-radius: 9999px</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">pill-button.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-72068" 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">14 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-72068', 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-72068', 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-pilula {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">display</span>: inline-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">padding</span>: <span class="wzw-tk-num">0.6rem</span> <span class="wzw-tk-num">1.4rem</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">font-weight</span>: 600;</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 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">cursor</span>: pointer;</span>
<span class="wzw-code-line">    </span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* O valor gigante força as duas pontas a virarem semicírculos perfeitos! */</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>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.btn-pilula {
    display: inline-flex;
    align-items: center;
    padding: 0.6rem 1.4rem;
    font-size: 0.875rem;
    font-weight: 600;
    background-color: #0284c7;
    color: #ffffff;
    border: none;
    cursor: pointer;
    
    /* O valor gigante força as duas pontas a virarem semicírculos perfeitos! */
    border-radius: 9999px;
}</textarea>
        </div>
    </div>
    
</div>
<div class="wzw-callout wzw-callout-info">
<div class="wzw-callout-icon">💡</div>
<div class="wzw-callout-content">
        <strong>Por que usar 9999px em vez de 50% em botões retangulares?</strong><br />
        <br />Se você aplicar <code>border-radius: 50%</code> em um botão com <code>width: 200px</code> e <code>height: 50px</code>, o navegador arredondará 50% da largura (100px) e 50% da altura (25px), transformando o botão em uma <strong>elipse/oval distorcida</strong>. Ao aplicar <code>9999px</code>, o algoritmo do navegador limita o raio à metade exata da altura (25px), mantendo o centro plano e as extremidades perfeitamente circulares.
    </div>
</div>
<h2>5. O Confronto Crucial: <code>border</code> vs. <code>outline</code> vs. <code>box-shadow</code></h2>
<p>
    Muitos desenvolvedores confundem bordas e contornos. Compreender as diferenças é vital para evitar tremores no layout (<em>Layout Jitter</em>) e garantir a acessibilidade de navegação por teclado:
</p>
<div class="wzw-table-responsive">
<table class="wzw-tech-table">
<thead>
<tr>
<th>Recurso</th>
<th>Ocupa Espaço no Box Model?</th>
<th>Respeita o <code>border-radius</code>?</th>
<th>Aceita Deslocamento (Offset)?</th>
<th>Papel Técnico Principal</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Border</strong></td>
<td><strong>Sim</strong> (afeta dimensões da caixa)</td>
<td>Sim</td>
<td>Não</td>
<td>Estruturação visual primária do componente.</td>
</tr>
<tr>
<td><strong>Outline</strong></td>
<td><strong>Não</strong> (desenhado por fora sem empurrar)</td>
<td>Sim nos navegadores modernos</td>
<td><strong>Sim</strong> (com <code>outline-offset</code>)</td>
<td><strong>Indicador de Foco Acessível (WCAG)</strong> para navegação via teclado.</td>
</tr>
<tr>
<td><strong>Box-Shadow</strong></td>
<td><strong>Não</strong> (efeito de sombra)</td>
<td>Sim</td>
<td>Não (aceita spread)</td>
<td>Simulação de bordas finas sem causar layout shift no <code>:hover</code>.</td>
</tr>
</tbody>
</table>
</div>
<div class="wzw-callout wzw-callout-warning">
<div class="wzw-callout-icon">♿</div>
<div class="wzw-callout-content">
        <strong>Acessibilidade Crítica (WCAG 2.1 — Focus Visible):</strong><br />
        <br />Nunca declare <code>outline: none;</code> ou <code>outline: 0;</code> em links ou botões sem fornecer uma alternativa visual de foco imediata! Usuários que utilizam a tecla <kbd>Tab</kbd> para navegar dependem do anel de foco para saber onde estão na tela. A boa prática moderna é estilizar o foco com <code>outline</code> e <code>outline-offset</code>:
    </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">accessible-focus.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-69385" 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-69385', 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-69385', 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">/* Anel de foco moderno e acessível */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-attr">button</span><span class="wzw-tk-kw">:focus</span>-visible,</span>
<span class="wzw-code-line"><span class="wzw-tk-attr">a</span><span class="wzw-tk-kw">:focus</span>-visible {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">outline</span>: <span class="wzw-tk-num">2px</span> solid <span class="wzw-tk-num">#38bdf8</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">outline-offset</span>: <span class="wzw-tk-num">3px</span>; /* Cria um vão elegante de <span class="wzw-tk-num">3px</span> entre o botão e o anel de foco! */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Anel de foco moderno e acessível */
button:focus-visible,
a:focus-visible {
    outline: 2px solid #38bdf8;
    outline-offset: 3px; /* Cria um vão elegante de 3px entre o botão e o anel de foco! */
}</textarea>
        </div>
    </div>
    
</div>
<h2>6. O Problema do &#8220;Tremor&#8221; no Hover e Como Resolver</h2>
<p>
    Um erro comum de iniciantes é adicionar borda apenas no estado <code>:hover</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">hover-jitter-fix.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-61731" 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">24 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-61731', 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-61731', 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">/* ❌ JEITO ERRADO: Causa tremor no layout */</span></span>
<span class="wzw-code-line">.card-errado {</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* Sem borda no estado normal */</span></span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">.card-errado<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">2px</span> solid <span class="wzw-tk-num">#38bdf8</span>; /* O acréscimo de <span class="wzw-tk-num">2px</span> empurra todos os elementos vizinhos! */</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* ✅ JEITO CORRETO 1: Pré-reserva com borda transparente */</span></span>
<span class="wzw-code-line">.card-correto-1 {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">2px</span> solid transparent; /* O espaço físico já existe */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">transition</span>: border-color <span class="wzw-tk-num">0.2s</span> ease;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">.card-correto-1<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-color</span>: <span class="wzw-tk-num">#38bdf8</span>; /* Apenas a cor muda, sem empurrar nada! */</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* ✅ JEITO CORRETO 2: Usando Box-Shadow Spread (Zero Layout Shift) */</span></span>
<span class="wzw-code-line">.card-correto-2 {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">transition</span>: box-shadow <span class="wzw-tk-num">0.2s</span> ease;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">.card-correto-2<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">box-shadow</span>: 0 0 0 <span class="wzw-tk-num">2px</span> <span class="wzw-tk-num">#38bdf8</span>; /* Simula uma borda de <span class="wzw-tk-num">2px</span> sem ocupar espaço */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* ❌ JEITO ERRADO: Causa tremor no layout */
.card-errado {
    /* Sem borda no estado normal */
}
.card-errado:hover {
    border: 2px solid #38bdf8; /* O acréscimo de 2px empurra todos os elementos vizinhos! */
}

/* ✅ JEITO CORRETO 1: Pré-reserva com borda transparente */
.card-correto-1 {
    border: 2px solid transparent; /* O espaço físico já existe */
    transition: border-color 0.2s ease;
}
.card-correto-1:hover {
    border-color: #38bdf8; /* Apenas a cor muda, sem empurrar nada! */
}

/* ✅ JEITO CORRETO 2: Usando Box-Shadow Spread (Zero Layout Shift) */
.card-correto-2 {
    transition: box-shadow 0.2s ease;
}
.card-correto-2:hover {
    box-shadow: 0 0 0 2px #38bdf8; /* Simula uma borda de 2px sem ocupar espaço */
}</textarea>
        </div>
    </div>
    
</div>
<h2>7. Laboratório Prático: Card de Equipe com Avatares, Pílulas e Foco Acessível</h2>
<p>
    Neste laboratório completo, construiremos um card corporativo integrando bordas sólidas, avatares perfeitamente circulares, botões em pílula de 9999px e anéis de foco com <code>outline-offset</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">team-card.html</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-38543" 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">18 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-38543', 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-38543', 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;team-card&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;team-avatar-box&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;team-avatar&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;status-indicator&quot;</span><span class="wzw-tk-tag">&gt;</span><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">    <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;team-info&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;pill-badge&quot;</span><span class="wzw-tk-tag">&gt;</span>Tech Lead<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;team-name&quot;</span><span class="wzw-tk-tag">&gt;</span>Mariana Duarte<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;team-role&quot;</span><span class="wzw-tk-tag">&gt;</span>Especialista em Acessibilidade &amp; Design Systems<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;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;team-actions&quot;</span><span class="wzw-tk-tag">&gt;</span></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-pill btn-primary&quot;</span><span class="wzw-tk-tag">&gt;</span>Conectar<span class="wzw-tk-tag">&lt;/button&gt;</span></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-pill btn-ghost&quot;</span><span class="wzw-tk-tag">&gt;</span>Perfil<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>
<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;team-card&quot;&gt;
    &lt;div class=&quot;team-avatar-box&quot;&gt;
        &lt;div class=&quot;team-avatar&quot;&gt;
            &lt;span class=&quot;status-indicator&quot;&gt;&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;team-info&quot;&gt;
        &lt;span class=&quot;pill-badge&quot;&gt;Tech Lead&lt;/span&gt;
        &lt;h3 class=&quot;team-name&quot;&gt;Mariana Duarte&lt;/h3&gt;
        &lt;p class=&quot;team-role&quot;&gt;Especialista em Acessibilidade &amp; Design Systems&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;team-actions&quot;&gt;
        &lt;button class=&quot;btn-pill btn-primary&quot;&gt;Conectar&lt;/button&gt;
        &lt;button class=&quot;btn-pill btn-ghost&quot;&gt;Perfil&lt;/button&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">team-card.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-31787" 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">134 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-31787', 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-31787', 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">* {</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">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">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">#f8fafc</span>;</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"><span class="wzw-tk-comment">/* 1. Card com Borda Sutil e Cantos Suavizados de 16px */</span></span>
<span class="wzw-code-line">.team-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">340px</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">text-align</span>: center;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">box-shadow</span>: 0 <span class="wzw-tk-num">10px</span> <span class="wzw-tk-num">25px</span> -<span class="wzw-tk-num">5px</span> rgba(0, 0, 0, 0.3);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">transition</span>: border-color <span class="wzw-tk-num">0.2s</span> ease, box-shadow <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">.team-card<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-color</span>: <span class="wzw-tk-num">#38bdf8</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">box-shadow</span>: 0 0 <span class="wzw-tk-num">20px</span> rgba(56, 189, 248, 0.15);</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. Avatar Perfeitamente Circular com border-radius: 50% */</span></span>
<span class="wzw-code-line">.team-avatar-box {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">position</span>: relative;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">width</span>: <span class="wzw-tk-num">84px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">height</span>: <span class="wzw-tk-num">84px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">margin</span>: 0 auto <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">.team-avatar {</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">height</span>: 100%;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: 50%;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background</span>: linear-gradient(<span class="wzw-tk-num">135deg</span>, <span class="wzw-tk-num">#0284c7</span>, <span class="wzw-tk-num">#38bdf8</span>);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">3px</span> solid <span class="wzw-tk-num">#1e293b</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">box-shadow</span>: 0 0 0 <span class="wzw-tk-num">2px</span> <span class="wzw-tk-num">#38bdf8</span>; /* Borda dupla simulada com box-shadow */</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.status-indicator {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">position</span>: absolute;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">bottom</span>: <span class="wzw-tk-num">2px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">right</span>: <span class="wzw-tk-num">2px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">width</span>: <span class="wzw-tk-num">16px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">height</span>: <span class="wzw-tk-num">16px</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#22c55e</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">3px</span> solid <span class="wzw-tk-num">#1e293b</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-radius</span>: 50%;</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. Badge em Formato Pílula */</span></span>
<span class="wzw-code-line">.pill-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">padding</span>: <span class="wzw-tk-num">0.3rem</span> <span class="wzw-tk-num">0.8rem</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.05em</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: rgba(56, 189, 248, 0.15);</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">border</span>: <span class="wzw-tk-num">1px</span> solid rgba(56, 189, 248, 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">0.75rem</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.team-name {</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">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">0.35rem</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.team-role {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">0.85rem</span>;</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">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.5rem</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.team-actions {</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">gap</span>: <span class="wzw-tk-num">0.75rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">justify-content</span>: center;</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. Botões com border-radius: 9999px e Foco Acessível */</span></span>
<span class="wzw-code-line">.btn-pill {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">padding</span>: <span class="wzw-tk-num">0.6rem</span> <span class="wzw-tk-num">1.25rem</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: <span class="wzw-tk-num">0.85rem</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">9999px</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>: all <span class="wzw-tk-num">0.2s</span> ease;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">1px</span> solid transparent;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.btn-primary {</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 class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#ffffff</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.btn-primary<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#0369a1</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.btn-ghost {</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">color</span>: <span class="wzw-tk-num">#cbd5e1</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-color</span>: <span class="wzw-tk-num">#334155</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.btn-ghost<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: <span class="wzw-tk-num">#334155</span>;</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>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* Anel de Foco Acessível com outline-offset */</span></span>
<span class="wzw-code-line">.btn-pill<span class="wzw-tk-kw">:focus</span>-visible {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">outline</span>: <span class="wzw-tk-num">2px</span> solid <span class="wzw-tk-num">#38bdf8</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">outline-offset</span>: <span class="wzw-tk-num">3px</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Reset e base */
* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

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

/* 1. Card com Borda Sutil e Cantos Suavizados de 16px */
.team-card {
    background-color: #1e293b;
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 2rem;
    max-width: 340px;
    width: 100%;
    text-align: center;
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.3);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.team-card:hover {
    border-color: #38bdf8;
    box-shadow: 0 0 20px rgba(56, 189, 248, 0.15);
}

/* 2. Avatar Perfeitamente Circular com border-radius: 50% */
.team-avatar-box {
    position: relative;
    width: 84px;
    height: 84px;
    margin: 0 auto 1.25rem;
}

.team-avatar {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    background: linear-gradient(135deg, #0284c7, #38bdf8);
    border: 3px solid #1e293b;
    box-shadow: 0 0 0 2px #38bdf8; /* Borda dupla simulada com box-shadow */
}

.status-indicator {
    position: absolute;
    bottom: 2px;
    right: 2px;
    width: 16px;
    height: 16px;
    background-color: #22c55e;
    border: 3px solid #1e293b;
    border-radius: 50%;
}

/* 3. Badge em Formato Pílula */
.pill-badge {
    display: inline-block;
    padding: 0.3rem 0.8rem;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    background-color: rgba(56, 189, 248, 0.15);
    color: #38bdf8;
    border: 1px solid rgba(56, 189, 248, 0.3);
    border-radius: 9999px;
    margin-bottom: 0.75rem;
}

.team-name {
    font-size: 1.25rem;
    color: #ffffff;
    margin-bottom: 0.35rem;
}

.team-role {
    font-size: 0.85rem;
    color: #94a3b8;
    line-height: 1.5;
    margin-bottom: 1.5rem;
}

.team-actions {
    display: flex;
    gap: 0.75rem;
    justify-content: center;
}

/* 4. Botões com border-radius: 9999px e Foco Acessível */
.btn-pill {
    padding: 0.6rem 1.25rem;
    font-size: 0.85rem;
    font-weight: 600;
    border-radius: 9999px;
    cursor: pointer;
    transition: all 0.2s ease;
    border: 1px solid transparent;
}

.btn-primary {
    background-color: #0284c7;
    color: #ffffff;
}

.btn-primary:hover {
    background-color: #0369a1;
}

.btn-ghost {
    background-color: transparent;
    color: #cbd5e1;
    border-color: #334155;
}

.btn-ghost:hover {
    background-color: #334155;
    color: #ffffff;
}

/* Anel de Foco Acessível com outline-offset */
.btn-pill:focus-visible {
    outline: 2px solid #38bdf8;
    outline-offset: 3px;
}</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>8. Boas Práticas da Indústria &#038; Erros Comuns</h2>
<ul>
<li>
        <strong>❌ Esquecer o <code>border-style</code>:</strong> Declarar <code>border-width: 2px; border-color: red;</code> sem definir <code>border-style: solid;</code> resulta em nenhuma borda sendo desenhada na tela.
    </li>
<li>
        <strong>❌ Destruir a Navegação por Teclado com <code>outline: none</code>:</strong> Nunca remova o contorno padrão do navegador sem substituí-lo por um anel de foco customizado com <code>:focus-visible</code>.
    </li>
<li>
        <strong>✅ Adote <code>border-radius: 9999px</code> para Tags e Badges:</strong> Garante que elementos de largura fluida nunca se deformem em formas ovais indesejadas.
    </li>
<li>
        <strong>✅ Previna o Tremor de Layout com Bordas Transparentes:</strong> Se um botão ou card ganha borda colorida no hover, inicialize-o com <code>border: [largura] solid transparent;</code> no estado padrão.
    </li>
</ul>
<h2>9. Ferramentas Relacionadas &#038; Próximos Passos</h2>
<p>
    Continue praticando a estilização perimetral 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> Teste variações de <code>border-radius</code> e anéis de <code>outline-offset</code> 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 propriedades de borda e otimize suas folhas de estilo.</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/padding-margin-espacamentos/"><strong>Lição 13: Padding, Margin e Técnicas Avançadas de Espaçamento</strong></a>, aprofundaremos o ritmo vertical da página, margens automáticas para centralização e a revolucionária propriedade <code>gap</code>.
    </div>
</div>
<h2>10. Referências Técnicas &#038; Especificações Oficiais</h2>
<ul>
<li><a href="https://www.w3.org/TR/css-backgrounds-3/#borders" target="_blank" rel="noopener"><strong>W3C CSS Backgrounds and Borders Module Level 3 — Borders:</strong></a> Especificação técnica completa de bordas e cantos arredondados.</li>
<li><a href="https://www.w3.org/TR/css-ui-4/#outline" target="_blank" rel="noopener"><strong>W3C CSS Basic User Interface Module Level 4 — Outline:</strong></a> Especificação formal da propriedade outline e acessibilidade de foco.</li>
<li><a href="https://developer.mozilla.org/pt-BR/docs/Web/CSS/border-radius" target="_blank" rel="noopener"><strong>MDN Web Docs (Mozilla):</strong></a> Guia definitivo sobre a propriedade border-radius e cantos elípticos.</li>
</ul>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/bordas-css-border-radius/">Bordas no CSS e Border Radius: Guia Prático | 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/bordas-css-border-radius/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
