/*
Theme Name: TBA B2B
Theme URI: https://b2b.tbadistribuidora.com.br
Description: Tema-filho da loja B2B da TBA Distribuidora sobre o Storefront (WooCommerce). Versionado em Git; sem page builder. Cores tiradas da própria logo; logo e textos entram pelo Personalizar, não por código.
Author: TBA Distribuidora
Template: storefront
Version: 0.17.13
Requires PHP: 8.3
Text Domain: tba-b2b-tema
*/

/* ============================================================================
   0.4.0 — harmonização pedida pelo dono em 20/09/2026

   1. A faixa escura é de UMA linha, sempre. Em duas, estourava o topo.
   2. Composição centrada: hero, título de seção, linha de apoio, cartão,
      passos e vantagens no mesmo eixo.
   3. O convite passou a ser "Veja o preço", sem "meu": o lojista não sabe que
      existe tabela por enquadramento, e "meu preço" planta a dúvida de que a
      dele seja a pior. (Rótulo trocado no plugin, não aqui.)
   4. Logo maior — o bloco oficial é empilhado (TBA sobre DISTRIBUIDORA) e a
      58px a palavra de baixo volta a ser legível.
   ========================================================================= */

/* ============================================================================
   O QUE MUDOU NA 0.3.0, E POR QUÊ

   O diagnóstico de 20/09/2026, feito sobre a página renderizada: num monitor
   de 1280x900 o visitante não via nenhum produto sem rolar. O cabeçalho
   gastava três faixas (logo, busca, botões) e o hero ocupava o resto da tela.
   Cada cartão saía com dois botões vermelhos, e a grade era a do Storefront:
   cartões soltos, sem borda, com títulos centralizados de altura variável.

   As decisões desta versão, em ordem de impacto:

   1. Cabeçalho numa faixa só. Logo, busca e ação na mesma linha.
   2. Hero comprimido, sem a onda decorativa solta (ela é do logo, e lá fica).
   3. Grade de produto em CSS grid, com cartão de verdade: moldura, foto em
      caixa quadrada, título de altura fixa, código do produto e UM botão.
   4. Densidade maior: menos ar entre seções, medida de texto controlada.

   A regra de sempre continua: nenhuma regra de preço mora aqui. O plugin
   corta o preço na fonte; o tema só apresenta o que sobra.
   ========================================================================= */

:root {
	/* Paleta da marca — amostrada da logo oficial (tba-logo.png, 18/09/2026). */
	--tba-vermelho: #C01E36;
	--tba-vermelho-escuro: #9B1729;
	--tba-verde: #11933F;
	--tba-verde-escuro: #0C7532;
	--tba-amarelo: #F2E726;

	--tba-tinta: #17202B;
	--tba-tinta-suave: #5A6673;
	/* #8A939D dava 3,12:1 sobre branco — reprovado pelo Lighthouse em 21/09/2026,
	   nas 25 etiquetas de marca dos cartões. O mínimo da WCAG AA para texto
	   pequeno é 4,5:1; este tom dá 4,75:1. Todos os usos desta cor estão sobre
	   fundo claro, então escurecer aqui conserta a loja inteira de uma vez. */
	--tba-tinta-fraca: #6B7480;
	--tba-fundo: #F6F7F8;
	--tba-borda: #E2E5E9;
	--tba-borda-forte: #CFD4DA;

	--tba-raio: 10px;
	--tba-sombra: 0 1px 2px rgba(23,32,43,.06), 0 4px 12px rgba(23,32,43,.05);
	--tba-sombra-alta: 0 2px 4px rgba(23,32,43,.08), 0 12px 24px rgba(23,32,43,.10);

	/* Colunas da grade de catálogo. Trocado nos pontos de quebra. */
	--tba-colunas: 4;

	/* Pilha do sistema: zero byte, zero conexão externa, e a fonte de
	   interface nativa de cada aparelho. O Source Sans Pro do Storefront é
	   desligado no functions.php. */
	--tba-fonte: system-ui, -apple-system, "Segoe UI Variable Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

	/* Escala ~1.22, comercial e não editorial. */
	--t-micro: .6875rem;   /* sobrelinha, selo */
	--t-mini:  .75rem;     /* código, contagem */
	--t-ui:    .8125rem;   /* botão, rótulo */
	--t-card:  .875rem;    /* título de cartão */
	--t-base:  1rem;
	--t-prosa: 1.0625rem;  /* texto corrido */
}

/* ------------------------------------------------------------------- base */

body {
	color: var(--tba-tinta);
	background: #fff;
	font-family: var(--tba-fonte);
	font-size: var(--t-base);
	-webkit-font-smoothing: antialiased;
}
a { color: var(--tba-vermelho); }
a:hover { color: var(--tba-vermelho-escuro); }

/* Títulos apertados. O Storefront aplica entrelinha de texto corrido (1.618)
   em tudo, inclusive rótulo e botão — é o que faz o site parecer documento.
   Interface densa quer 1.2–1.35; só prosa quer 1.5–1.6. */
h1, h2, h3, h4 {
	font-family: var(--tba-fonte);
	line-height: 1.14;
	letter-spacing: -.022em;
	color: var(--tba-tinta);
	text-wrap: balance; /* evita a linha órfã de uma palavra só, comum em português */
}
h1 { font-weight: 700; }
h2 { font-weight: 700; }
h3 { font-weight: 600; letter-spacing: -.014em; }

/* Medida de 45–75 caracteres: texto atravessando a largura toda é o segundo
   sinal de template. */
.entry-content p, .entry-content li, .tba-faq-resposta p { max-width: 68ch; line-height: 1.6; font-size: var(--t-prosa); }

/* Onde não é leitura, entrelinha curta. */
.button, .tba-card-sku, .woocommerce-loop-product__title,
.tba-faixa, .woocommerce-result-count, .tba-marcas-vitrine { line-height: 1.3; }

/* Todo número em versalete tabular. Sozinho, muda a percepção de rigor:
   preço, código e quantidade param de dançar entre linhas. */
.price, .tba-card-sku, .quantity input, .order-total, td.product-total,
.woocommerce-result-count, .woocommerce ul.products li.product-category .count {
	font-variant-numeric: tabular-nums;
	font-feature-settings: "tnum" 1;
}

/* Botões: o Storefront entrega um botão cinza arredondado com sombra interna.
   Substituído por um botão sólido, sem gradiente. */
.button:not(.menu-toggle),
button:not(.menu-toggle), input[type="submit"],
.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button {
	border-radius: 6px;
	font-weight: 600;
	letter-spacing: 0;
	text-shadow: none;
	box-shadow: none;
	padding: .68em 1.15em;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.button.tba-cta,
.woocommerce a.button.tba-cta { background: var(--tba-vermelho); color: #fff; border: 1px solid var(--tba-vermelho); }
.button.tba-cta:hover,
.woocommerce a.button.tba-cta:hover { background: var(--tba-vermelho-escuro); border-color: var(--tba-vermelho-escuro); color: #fff; }
.button.tba-secundario,
.button.tba-simples {
	background: #fff; color: var(--tba-tinta); border: 1px solid var(--tba-borda-forte);
}
.button.tba-secundario:hover,
.button.tba-simples:hover { background: #fff; border-color: var(--tba-vermelho); color: var(--tba-vermelho); }

/* -------------------------------------------------------------- cabeçalho */
/* Uma faixa só. O Storefront empilha logo, busca e widgets; empilhado, o
   cabeçalho comia 200px antes de qualquer conteúdo. */

/* O Storefront reserva ~68px de margem sob o cabeçalho e mais um bloco de
   respiro na navegação. Medido em 20/09: 328px gastos antes da faixa de
   confiança, num monitor de 900px de altura. Zerado aqui. */
.site-header { border-bottom: 1px solid var(--tba-borda); padding-top: .85rem; padding-bottom: 0; margin-bottom: 0 !important; }
/* O container do topo é grade, e a declaração está na 0.6.0, lá no fim.
   O seletor usa `>` de propósito: o `.col-full` da navegação também casa com
   `.site-header .col-full`, e mexer no layout dele bagunça o botão "Menu". */
/* Posição e tamanho vão na grade da 0.6.0. Aqui só o que não é layout. */
.site-header .site-branding { margin: 0; float: none; }
/* Altura fixa, não `max-height`: o Storefront dimensiona a logo pela largura
   do bloco de marca, e a nossa é empilhada (TBA sobre DISTRIBUIDORA, 1000x614).
   Medido em 20/09: com `max-height` ela saía a 141px e sozinha respondia por
   metade do cabeçalho. */
.site-header .custom-logo-link img.custom-logo,
.site-header img.custom-logo { height: 52px; width: auto; max-width: none; max-height: none; display: block; }
/* Base estreita de propósito: a busca cresce para ocupar a sobra, mas se a
   base for larga ela empurra os botões para uma segunda linha e o cabeçalho
   ganha 80px. Medido em 20/09: com base de 320px faltavam 2px e quebrava. */
/* Largura, posição e comportamento da busca ficam NA GRADE, na 0.6.0 lá
   embaixo. Aqui sobrou só o que não é de layout.

   Esta linha já teve `width: auto; flex: 1 1 210px`, de quando o cabeçalho era
   flex. Com a grade, as duas propriedades pararam de fazer sentido — e a
   `width: auto` ainda brigava com a `width: 100%` da regra nova: a busca saía
   com 248px (a largura natural de um campo de texto) dentro de uma faixa de
   1141px, ou seja, perdida no meio do cabeçalho. Duas regras contraditórias
   para o mesmo elemento é pior que uma regra errada, porque some na leitura. */
.site-header .site-search { clear: none; }
.site-header .site-search .widget { margin: 0; }
.site-header .site-search form { margin: 0; }
/* min-height de 44px: o Lighthouse reprovou o campo de busca por alvo de
   toque pequeno demais em 21/09/2026. Numa loja de atacado a busca e o
   caminho principal — o lojista chega sabendo o que quer e digita o codigo
   de barras. Campo que erra o dedo no celular custa venda. */
.site-header .site-search .search-field {
	width: 100%; border: 1px solid var(--tba-borda-forte); border-radius: 6px;
	padding: .6em .9em; min-height: 44px; background: #fff; box-shadow: none; font-size: .95rem;
}
.site-header .site-search .search-field:focus { border-color: var(--tba-vermelho); outline: 2px solid rgba(192,30,54,.15); outline-offset: 0; }
.site-header .tba-header-cta { display: flex; gap: .5rem; align-items: center; flex: 0 0 auto; float: none; width: auto; padding: 0; }
.tba-header-cta .button { margin: 0; white-space: nowrap; font-size: .92rem; }

/* Navegação colada no cabeçalho, sem a barra escura do Storefront. */
.storefront-primary-navigation { background: transparent; border-top: 1px solid var(--tba-borda); margin-top: .85rem; padding: 0; }
.storefront-primary-navigation .col-full { padding-top: 0; padding-bottom: 0; }
.main-navigation { margin: 0; }
.main-navigation ul.menu,
.main-navigation ul.nav-menu { margin: 0; }
.main-navigation ul.menu > li > a,
.main-navigation ul.nav-menu > li > a {
	padding: .62em 0; margin-right: 1.75rem; font-weight: 600; font-size: .94rem; color: var(--tba-tinta);
}
.main-navigation ul.menu > li > a:hover { color: var(--tba-vermelho); }
.main-navigation ul.menu > li.current-menu-item > a { box-shadow: inset 0 -3px 0 var(--tba-vermelho); }

@media (max-width: 767px) {
	/* Duas linhas, nesta ordem: marca + ação, depois a busca.
	   O bloco de marca do Storefront toma a largura toda por padrão, o que
	   empurrava a ação para uma TERCEIRA linha — e ela caía por cima da
	   navegação, porque o botão "Menu" flutua. Medido em 20/09/2026: o CTA
	   começava em y=131 e a navegação em y=123. */
	.site-header > .col-full { gap: .55rem .75rem; align-items: center; }
	/* `order` e `flex` daqui viraram inertes com a grade; o empilhamento em
	   duas linhas é feito pelas áreas nomeadas, na 0.6.0. */
	.storefront-primary-navigation { clear: both; }
	/* O Storefront esconde a busca no celular (.site-search{display:none}).
	   Aqui ela é essencial: o lojista repõe procurando pelo código de barras
	   da caixa, e mais da metade do acesso é por telefone. */
	.site-header .site-search { display: block; }

	/* Cada pixel do topo é produto que o visitante não vê. */
	.site-header { padding-top: .6rem; }
	.site-header .custom-logo-link img.custom-logo,
	.site-header img.custom-logo { height: 42px; }
	.storefront-primary-navigation { margin-top: .6rem; }
	/* Sem mexer no espaçamento do "Menu": o Storefront reserva a esquerda para
	   o ícone, e o meu estilo genérico de botão comia esse espaço — o glifo
	   saía por cima da palavra. */
	.main-navigation .menu-toggle { margin: .35rem 0; }
	.tba-hero { padding-top: 1.1rem; padding-bottom: 1.1rem; margin-bottom: 1.2rem; }
	.tba-hero h1 { font-size: 1.45rem; }
	.tba-hero p { font-size: .95rem; margin-bottom: .8rem; }
	.tba-hero small { font-size: .78rem; }
	.tba-secao > h2 { font-size: 1.2rem; }
	.tba-secao-apoio { font-size: .92rem; margin-bottom: 1rem; }
	.tba-header-cta .button { font-size: .86rem; padding: .6em .8em; }
	.tba-header-cta .button.tba-simples { display: none; } /* "Entrar" vive no menu no celular */
}

/* Faixa de confiança logo abaixo do cabeçalho. */
/* A faixa é de UMA linha, sempre. Empilhada em duas ela estoura o desenho do
   topo e rouba altura de quem só quer ver produto. Onde não couber, ela
   desliza na horizontal em vez de quebrar. */
.tba-faixa { background: var(--tba-tinta); color: #fff; font-size: clamp(.68rem, 1.1vw, .8rem); }
.tba-faixa ul {
	display: flex;
	flex-wrap: nowrap;
	/* `safe center` centraliza quando cabe e volta a alinhar pela esquerda
	   quando não cabe. Com `center` puro, a lista que transborda fica cortada
	   NOS DOIS lados e o primeiro item some — foi o que aconteceu em 882px. */
	justify-content: safe center;
	align-items: center;
	gap: clamp(.9rem, 2.2vw, 2rem);
	list-style: none;
	margin: 0 auto;
	padding: .42rem 1rem;
	max-width: 1170px;
	overflow-x: auto;
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.tba-faixa ul::-webkit-scrollbar { display: none; }
.tba-faixa li { white-space: nowrap; flex: 0 0 auto; }
.tba-faixa li::before { content: "✓"; color: var(--tba-amarelo); font-weight: 700; margin-right: .3rem; }

/* ------------------------------------------------------------------- home */
/* Hero comprimido. A versão anterior era uma tela inteira de texto branco
   centralizado: o pedido do dono era ver produto de cara, e não se via
   nenhum. Agora a faixa tem altura de anúncio, não de capa. */

.tba-hero {
	background: linear-gradient(180deg, #FBF9FA 0%, #F6F7F8 100%);
	border-bottom: 1px solid var(--tba-borda);
	margin: 0 calc(50% - 50vw) 1.6rem;
	padding: 1.6rem calc(50vw - 50%) 1.5rem;
	text-align: center;
}
.tba-hero h1 { font-size: clamp(1.5rem, 3vw, 2.05rem); margin: 0 auto .35rem; max-width: 30ch; }
.tba-hero h1 em { font-style: normal; color: var(--tba-vermelho); }
.tba-hero p { max-width: 58ch; margin: 0 auto .95rem; font-size: 1rem; color: var(--tba-tinta-suave); }
.tba-hero .button { margin: 0 .3rem .35rem; }
.tba-hero small { display: block; color: var(--tba-tinta-fraca); margin: .6rem auto 0; font-size: .82rem; max-width: 64ch; }

/* A onda decorativa saiu: três cores da marca num rabisco horizontal era o
   elemento mais datado da página, e ocupava 34px em toda largura sem dizer
   nada. Mantida a classe para não quebrar template antigo. */
.tba-onda { display: none; }

/* Composição centrada: título, linha de apoio e conteúdo no mesmo eixo.
   Era o que faltava para a página parecer desenhada em vez de montada. */
.tba-secao { margin: 0 0 2.6rem; text-align: center; }
.tba-secao > h2 { font-size: 1.35rem; margin: 0 0 .3rem; }
.tba-secao > h2::after { content: none; }
.tba-secao-apoio { color: var(--tba-tinta-suave); margin: 0 auto 1.3rem; max-width: 58ch; font-size: .96rem; }
.tba-secao-mais { text-align: center; margin-top: 1.5rem; }

/* --------------------------------------------------------------- catálogo */
/* Grade em CSS grid. O Storefront calcula largura por porcentagem e margem
   com float, o que deixa a última coluna desalinhada e impede cartão de
   altura igual. Grid resolve os dois. */

.woocommerce ul.products,
.woocommerce-page ul.products {
	display: grid;
	grid-template-columns: repeat(var(--tba-colunas), minmax(0, 1fr));
	gap: 1.1rem;
	margin: 0 0 1rem;
	padding: 0;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after { content: none; display: none; }

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
	width: auto !important;
	margin: 0 !important;
	float: none !important;
	clear: none !important;
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid var(--tba-borda);
	border-radius: var(--tba-raio);
	padding: .7rem .7rem .8rem;
	text-align: center;
	transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.woocommerce ul.products li.product:hover {
	border-color: var(--tba-borda-forte);
	box-shadow: var(--tba-sombra-alta);
	transform: translateY(-2px);
}
.woocommerce ul.products li.product .woocommerce-LoopProduct-link { display: flex; flex-direction: column; flex: 1 1 auto; }

/* Foto em caixa quadrada: catálogo de distribuidora recebe foto de fabricante
   em proporções diferentes, e sem caixa fixa a grade fica serrilhada. */
.woocommerce ul.products li.product img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: contain;
	height: auto;
	margin: 0 0 .6rem;
	border-radius: 6px;
	background: #fff;
}
/* Sem foto: um desenho claro e silencioso ocupa a caixa da imagem.
   Neutro de proposito — numa grade com muitas ausencias, bloco colorido com
   texto grande rouba a cena dos produtos que TEM foto. */
.tba-sem-foto {
	aspect-ratio: 1 / 1;
	width: 100%;
	margin: 0 0 .6rem;
	border-radius: 6px;
	overflow: hidden;
	background: #F6F4F6;
	box-shadow: inset 0 0 0 1px rgba(0,0,0,.045);
}
.tba-sem-foto__arte { display: block; width: 100%; height: 100%; }

.woocommerce ul.products li.product .woocommerce-loop-product__title {
	font-size: .93rem;
	font-weight: 600;
	line-height: 1.32;
	text-align: center;
	color: var(--tba-tinta);
	padding: 0;
	margin: 0 0 .3rem;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	min-height: 2.64em; /* duas linhas: mantém os botões alinhados na grade */
}

/* O código do produto. Selecionável com um clique: quem repõe copia o código
   para a lista de compra, e dentro de um link o texto não se deixa marcar. */
.tba-card-sku {
	display: block;
	font-size: var(--t-mini);
	color: var(--tba-tinta-fraca);
	letter-spacing: .02em;
	margin: 0 0 .5rem;
	user-select: all;
	cursor: text;
}

/* O PREÇO DO CARTÃO APARECE. Esta regra já foi `display: none` sem condição.

   Ela nasceu para esconder um `<span class="price">` vazio que o plugin
   produzia para o visitante — e escondia junto **o preço de verdade do cliente
   aprovado**, no catálogo inteiro. O Jean entrou com a conta dele em 22/09/2026
   e não viu preço em cartão nenhum; o HTML os tinha todos.

   A causa foi consertada na origem: o plugin devolve string vazia e o
   WooCommerce não desenha o invólucro. Aqui ficou só a aparência. */
.woocommerce ul.products li.product .price {
	display: block;
	margin: 0 0 .55rem;
	font-size: 1.08rem;
	font-weight: 700;
	color: var(--tba-tinta);
	line-height: 1.2;
}
.woocommerce ul.products li.product .price del { font-weight: 400; font-size: .9rem; color: var(--tba-tinta-fraca); margin-right: .35rem; }
.woocommerce ul.products li.product .price ins { text-decoration: none; color: var(--tba-vermelho); }

/* Um botão por cartão, largura total, no fim da coluna. */
.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product .tba-b2b-cta-preco {
	margin: auto 0 0;
	width: 100%;
	text-align: center;
	background: #fff;
	color: var(--tba-vermelho);
	border: 1px solid var(--tba-borda-forte);
	font-size: .88rem;
	padding: .6em .7em;
}
.woocommerce ul.products li.product .button:hover,
.woocommerce ul.products li.product .tba-b2b-cta-preco:hover {
	background: var(--tba-vermelho);
	border-color: var(--tba-vermelho);
	color: #fff;
}
.woocommerce ul.products li.product .added_to_cart { display: none; }

/* Categorias: bloco compacto, sem foto.
   As 36 categorias vieram do ERP sem imagem nenhuma, então um cartão com foto
   mostraria 36 placeholders — pior do que não ter foto. Sem imagem, cabem seis
   por linha e a lista inteira é varrida de um olhar, que é o que o lojista faz.
   Se um dia as categorias ganharem imagem, basta apagar a regra do `img`. */
.tba-secao .woocommerce ul.products:has(li.product-category) { --tba-colunas: 6; gap: .6rem; }
.woocommerce ul.products li.product-category { padding: 0; }
.woocommerce ul.products li.product-category > a { display: flex; flex-direction: column; height: 100%; padding: .75rem .85rem; }
.woocommerce ul.products li.product-category img { display: none; }
.woocommerce ul.products li.product-category h2.woocommerce-loop-category__title {
	font-size: .92rem; font-weight: 600; text-align: left; padding: 0; margin: 0;
	display: flex; justify-content: space-between; align-items: baseline; gap: .5rem;
}
.woocommerce ul.products li.product-category .count {
	background: transparent; color: var(--tba-tinta-fraca); font-size: .78rem; padding: 0;
	font-variant-numeric: tabular-nums;
}
@media (max-width: 1100px) { .tba-secao .woocommerce ul.products:has(li.product-category) { --tba-colunas: 4; } }
@media (max-width: 767px) { .tba-secao .woocommerce ul.products:has(li.product-category) { --tba-colunas: 2; } }

/* Pontos de quebra da grade. */
@media (max-width: 1100px) { :root { --tba-colunas: 3; } }
@media (max-width: 767px) {
	:root { --tba-colunas: 2; }
	.woocommerce ul.products { gap: .7rem; }
	.woocommerce ul.products li.product { padding: .55rem .55rem .65rem; }
	.woocommerce ul.products li.product .woocommerce-loop-product__title { font-size: .87rem; }
	.tba-card-sku { font-size: .73rem; }
	.woocommerce ul.products li.product .button { font-size: .82rem; }
}

/* Página do produto: ali o convite é o único, então volta a ser botão. */
.tba-b2b-preco-oculto { display: block; }
.entry-summary .tba-b2b-cta-preco { display: inline-block; background: var(--tba-vermelho); color: #fff; border: 1px solid var(--tba-vermelho); font-weight: 600; }
.entry-summary .tba-b2b-cta-preco:hover { background: var(--tba-vermelho-escuro); border-color: var(--tba-vermelho-escuro); color: #fff; }
.tba-b2b-preco-recado { font-size: .9rem; color: var(--tba-tinta-suave); margin: .6rem 0 1rem; max-width: 52ch; }
.woocommerce span.onsale { background: var(--tba-verde); }

/* ------------------------------------------------------- blocos da home */

.tba-passos { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: .9rem; list-style: none; margin: 0; padding: 0; counter-reset: passo; }
.tba-passos li { background: #fff; border: 1px solid var(--tba-borda); border-radius: var(--tba-raio); padding: 1.2rem 1rem; counter-increment: passo; text-align: center; }
.tba-passos li::before { content: counter(passo); display: inline-flex; align-items: center; justify-content: center; width: 1.85rem; height: 1.85rem; border-radius: 50%; background: var(--tba-vermelho); color: #fff; font-weight: 700; font-size: .95rem; margin-bottom: .55rem; }
.tba-passos h3 { font-size: .98rem; margin: 0 0 .3rem; }
.tba-passos p { margin: 0; color: var(--tba-tinta-suave); font-size: .92rem; line-height: 1.45; }


.tba-vantagens { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: .9rem; list-style: none; margin: 0; padding: 0; }
/* Acento no topo, não à esquerda: com o texto centralizado, a barra lateral
   puxava o olho para fora do eixo da página. */
.tba-vantagens li { padding: 1.1rem 1rem .95rem; border: 1px solid var(--tba-borda); border-top: 3px solid var(--tba-verde); border-radius: 0 0 var(--tba-raio) var(--tba-raio); background: #fff; font-size: .93rem; line-height: 1.45; color: var(--tba-tinta-suave); text-align: center; }
.tba-vantagens li strong { display: block; color: var(--tba-tinta); font-size: .97rem; margin-bottom: .2rem; }

.tba-cta-final { text-align: center; background: var(--tba-tinta); color: #fff; border-radius: var(--tba-raio); padding: 2rem 1rem; }
.tba-cta-final h2 { color: #fff; }
.tba-cta-final p { color: rgba(255,255,255,.82); max-width: 52ch; margin: .3rem auto 1.1rem; }
.tba-cta-final .button.tba-cta { background: var(--tba-vermelho); border-color: var(--tba-vermelho); color: #fff; }
.tba-cta-final .button.tba-cta:hover { background: #fff; border-color: #fff; color: var(--tba-tinta); }

/* ------------------------------------------------------------ Minha conta */

.tba-mc-pedido { border-top: 1px solid var(--tba-borda); margin-top: 2rem; padding-top: 1rem; }
.tba-mc-linha { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; }
.tba-mc-linha li::before { content: "○ "; color: var(--tba-tinta-fraca); }
.tba-mc-linha li.ok::before { content: "● "; color: var(--tba-verde); }
.tba-mc-rma-form { border: 1px solid var(--tba-borda); border-radius: var(--tba-raio); padding: 1rem; margin-top: 1rem; background: var(--tba-fundo); }

/* ---------------------------------------------------------------- rodapé */

.site-footer { border-top: 1px solid var(--tba-borda); background: var(--tba-fundo); }
.site-footer .tba-rodape { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1.5rem; padding: 1.75rem 0 1.25rem; border-bottom: 1px solid var(--tba-borda); margin-bottom: 1rem; }
.site-footer .tba-rodape h3 { font-size: .95rem; margin-bottom: .45rem; color: var(--tba-tinta); }
.site-footer .tba-rodape ul { list-style: none; margin: 0; padding: 0; }
.site-footer .tba-rodape li { margin: 0 0 .28rem; }
.site-footer .tba-rodape a,
.site-footer .tba-rodape p { color: var(--tba-tinta-suave); font-size: .92rem; line-height: 1.5; }
.site-footer .tba-rodape a:hover { color: var(--tba-vermelho); }
/* tinta-suave, e nao tinta-fraca: aqui o fundo e o cinza do rodape, nao o
   branco. A mesma cor que da 4,75:1 sobre branco cai para 4,32:1 sobre
   #F6F7F8 e reprova. Reparado em 21/09/2026. */
.site-footer .site-info { font-size: .85rem; color: var(--tba-tinta-suave); padding-bottom: 1.25rem; }

/* ----------------------------------------------- perguntas frequentes */
/* Sanfona nativa: <details> funciona sem JavaScript, o que importa porque os
   robôs de IA não executam script — o texto da resposta precisa estar no HTML
   servido, e está. */

.tba-faq-indice ul { list-style: none; margin: 0 0 1.75rem; padding: 0; display: flex; flex-wrap: wrap; gap: .45rem; }
.tba-faq-indice a { display: inline-block; border: 1px solid var(--tba-borda); border-radius: 999px; padding: .32rem .85rem; font-size: .9rem; text-decoration: none; color: var(--tba-tinta); }
.tba-faq-indice a:hover { border-color: var(--tba-vermelho); color: var(--tba-vermelho); }
.tba-faq-grupo { margin-bottom: 2.25rem; scroll-margin-top: 1rem; }
.tba-faq-grupo > h2 { font-size: 1.15rem; border-bottom: 2px solid var(--tba-vermelho); display: inline-block; padding-bottom: .2rem; }
.tba-faq-item { border-bottom: 1px solid var(--tba-borda); padding: .1rem 0; }
.tba-faq-item summary { cursor: pointer; padding: .75rem 0; list-style: none; }
.tba-faq-item summary::-webkit-details-marker { display: none; }
.tba-faq-item summary::before { content: "+"; color: var(--tba-vermelho); font-weight: 700; margin-right: .6rem; }
.tba-faq-item[open] summary::before { content: "–"; }
.tba-faq-item summary h3 { display: inline; font-size: 1rem; margin: 0; }
.tba-faq-resposta { padding: 0 0 1rem 1.4rem; max-width: 70ch; color: var(--tba-tinta-suave); }
.tba-faq-resposta p { margin: 0; }

/* Bloco sem foto na página do produto: mesma linguagem do catálogo, em tamanho
   de galeria. Entra com dimensão definida, então não empurra o conteúdo. */
.tba-sem-foto-unico { width: 100%; }
.tba-sem-foto-unico .tba-sem-foto { border-radius: var(--tba-raio); margin: 0; }

/* ------------------------------------------------- marca no cartão */
/* A marca vende mais que o código, então ela toma o lugar dele quando existe.
   Sobrelinha em caixa alta: lê como etiqueta, não como texto. */
.tba-card-marca {
	display: block;
	font-size: var(--t-micro);
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--tba-tinta-fraca);
	margin: 0 0 .45rem;
}

/* -------------------------------------------- vídeo e ficha técnica */
/* Proporção reservada no CSS: o vídeo entra sem empurrar o que está abaixo,
   que é o que o Google mede como salto de layout. */
.tba-produto-video, .tba-ficha { margin: 2.5rem 0; }
.tba-produto-video > h2, .tba-ficha > h2 { font-size: 1.2rem; margin: 0 0 .9rem; }
.tba-video-caixa {
	position: relative;
	aspect-ratio: 16 / 9;
	width: 100%;
	background: var(--tba-fundo);
	border-radius: var(--tba-raio);
	overflow: hidden;
	border: 1px solid var(--tba-borda);
}
.tba-video-caixa iframe,
.tba-video-caixa video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }

.tba-ficha-tabela { width: 100%; border-collapse: collapse; margin: 0; }
.tba-ficha-tabela th,
.tba-ficha-tabela td { padding: .6rem .8rem; border-bottom: 1px solid var(--tba-borda); text-align: left; font-size: .93rem; vertical-align: top; }
.tba-ficha-tabela th { width: 34%; font-weight: 600; color: var(--tba-tinta-suave); background: var(--tba-fundo); }
.tba-ficha-tabela td { font-variant-numeric: tabular-nums; }
.tba-ficha-tabela tr:last-child th,
.tba-ficha-tabela tr:last-child td { border-bottom: 0; }
@media (max-width: 480px) {
	.tba-ficha-tabela th { width: 42%; }
	.tba-ficha-tabela th, .tba-ficha-tabela td { padding: .5rem .6rem; font-size: .88rem; }
}

/* ------------------------------------------------- gatilhos de cadastro */
/* O "porquê" do preço reservado. É o ponto de contato mais valioso da loja
   com quem chegou pela busca, então ele tem caixa própria e não se perde no
   meio do resumo do produto. */
.tba-b2b-preco-recado {
	background: var(--tba-fundo);
	border: 1px solid var(--tba-borda);
	border-left: 3px solid var(--tba-vermelho);
	border-radius: 0 var(--tba-raio) var(--tba-raio) 0;
	padding: .9rem 1rem;
	margin: .9rem 0 1.2rem;
	max-width: 58ch;
	font-size: .93rem;
	line-height: 1.5;
	color: var(--tba-tinta-suave);
}
.tba-b2b-preco-recado p { margin: 0; max-width: none; font-size: inherit; line-height: inherit; }
.tba-b2b-preco-recado strong { color: var(--tba-tinta); }
/* tinta-suave: este selo fica sobre o cinza claro do bloco, nao sobre branco,
   e ali a tinta-fraca da 4,41:1 — abaixo do minimo de 4,5:1. Mesmo caso do
   rodape e do bloco de captura; este passou batido na primeira varredura e foi
   o Lighthouse contra o servidor de verdade que o pegou, em 21/09/2026. */
.tba-b2b-preco-selo { margin-top: .5rem !important; font-size: .87rem; color: var(--tba-tinta-suave); }

/* Nota sob o CTA final: o pedido mínimo é o maior trunfo comercial da loja. */
.tba-cta-final-nota {
	color: rgba(255,255,255,.72);
	font-size: .88rem;
	max-width: 56ch;
	margin: 1rem auto 0;
	line-height: 1.5;
}

@media (max-width: 767px) {
	.tba-b2b-preco-recado { padding: .8rem .85rem; font-size: .89rem; }
	.tba-cta-final-nota { font-size: .84rem; }
}

/* ------------------------------------------- identidade do produto */
.tba-produto-identidade {
	display: flex; flex-wrap: wrap; align-items: baseline; gap: .4rem 1.1rem;
	margin: 0 0 .35rem; font-size: var(--t-mini);
}
.tba-produto-marca {
	font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
	color: var(--tba-vermelho);
}
.tba-produto-marca a { color: inherit; text-decoration: none; }
.tba-produto-marca a:hover { text-decoration: underline; }
.tba-produto-codigo { color: var(--tba-tinta-fraca); font-variant-numeric: tabular-nums; }
.tba-produto-codigo b { font-weight: 600; color: var(--tba-tinta-suave); user-select: all; cursor: text; }

.tba-produto-tags { margin: 2rem 0; }
.tba-produto-tags > h2 { font-size: 1.05rem; margin: 0 0 .7rem; }
.tba-produto-tags ul { display: flex; flex-wrap: wrap; gap: .45rem; list-style: none; margin: 0; padding: 0; }
.tba-produto-tags a {
	display: inline-block; padding: .34rem .8rem; border: 1px solid var(--tba-borda);
	border-radius: 999px; background: #fff; color: var(--tba-tinta);
	text-decoration: none; font-size: .88rem;
}
.tba-produto-tags a:hover { border-color: var(--tba-vermelho); color: var(--tba-vermelho); }

/* --------------------------------------------------- captura de cadastro */
/* Um campo. O CNPJ não é gravado aqui: ele só viaja para o formulário de
   cadastro já preenchido. Ver o cabeçalho de Captura.php. */
.tba-captura {
	margin: 2.5rem 0;
	padding: 1.5rem 1.25rem;
	background: var(--tba-fundo);
	border: 1px solid var(--tba-borda);
	border-radius: var(--tba-raio);
	text-align: center;
}
.tba-captura-titulo { font-size: 1.2rem; margin: 0 0 .4rem; }
.tba-captura-texto { color: var(--tba-tinta-suave); max-width: 52ch; margin: 0 auto 1rem; font-size: .95rem; line-height: 1.5; }
.tba-captura-forma { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; margin: 0; }
.tba-captura-forma input {
	flex: 1 1 260px; max-width: 320px; min-width: 0;
	border: 1px solid var(--tba-borda-forte); border-radius: 6px;
	padding: .68em .9em; font-size: 1rem; background: #fff;
	font-variant-numeric: tabular-nums;
}
.tba-captura-forma input:focus { border-color: var(--tba-vermelho); outline: 2px solid rgba(192,30,54,.15); }
.tba-captura-forma .button { flex: 0 0 auto; margin: 0; }
/* Mesmo caso do rodape: o bloco de captura tem fundo tingido. */
.tba-captura-ajuda { font-size: .84rem; color: var(--tba-tinta-suave); margin: .7rem 0 0; }

@media (max-width: 767px) {
	.tba-captura { padding: 1.2rem 1rem; margin: 2rem 0; }
	.tba-captura-titulo { font-size: 1.1rem; }
	.tba-captura-texto { font-size: .91rem; }
	/* Campo e botão em largura total: alvo de toque confortável no polegar. */
	.tba-captura-forma { flex-direction: column; }
	.tba-captura-forma input { flex: 1 1 auto; max-width: none; font-size: 1rem; }
	.tba-captura-forma .button { width: 100%; padding-top: .8em; padding-bottom: .8em; }
	.tba-produto-identidade { font-size: .72rem; gap: .3rem .8rem; }
}

/* ------------------------------------------------------------------ blog */
/* O Storefront não dá <h1> à listagem de artigos; o tema-filho põe um
   cabeçalho de verdade (home.php). */
.tba-blog-cabecalho { text-align: center; margin: 0 0 2rem; }
.tba-blog-cabecalho h1 { font-size: clamp(1.5rem, 3vw, 2rem); margin: 0 0 .35rem; }
.tba-blog-cabecalho .tba-secao-apoio { margin: 0 auto; }

.tba-blog-lista {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 1.1rem;
	margin: 0 0 2rem;
}
.tba-blog-item {
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid var(--tba-borda);
	border-radius: var(--tba-raio);
	padding: 1.1rem 1.15rem 1rem;
	transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.tba-blog-item:hover { border-color: var(--tba-borda-forte); box-shadow: var(--tba-sombra-alta); transform: translateY(-2px); }
.tba-blog-categoria {
	align-self: flex-start;
	font-size: var(--t-micro);
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--tba-vermelho);
	text-decoration: none;
	margin-bottom: .5rem;
}
.tba-blog-categoria:hover { text-decoration: underline; }
.tba-blog-titulo { font-size: 1.05rem; line-height: 1.25; margin: 0 0 .5rem; }
.tba-blog-titulo a { color: var(--tba-tinta); text-decoration: none; }
.tba-blog-titulo a:hover { color: var(--tba-vermelho); }
.tba-blog-resumo { color: var(--tba-tinta-suave); font-size: .93rem; line-height: 1.5; margin: 0 0 .9rem; max-width: none; }
.tba-blog-data { margin: auto 0 0; font-size: var(--t-mini); color: var(--tba-tinta-fraca); font-variant-numeric: tabular-nums; }

/* Artigo aberto: medida de leitura controlada. */
.single-post .entry-content { max-width: 68ch; margin-inline: auto; }
.single-post .entry-content h2 { margin-top: 2rem; }
.single-post .entry-content table { width: 100%; border-collapse: collapse; margin: 1.2rem 0; }
.single-post .entry-content th,
.single-post .entry-content td { padding: .6rem .8rem; border-bottom: 1px solid var(--tba-borda); text-align: left; font-size: .95rem; }
.single-post .entry-content th { background: var(--tba-fundo); font-weight: 600; }
.single-post .entry-content blockquote {
	border-left: 3px solid var(--tba-vermelho);
	background: var(--tba-fundo);
	padding: .9rem 1.1rem;
	margin: 1.4rem 0;
	border-radius: 0 var(--tba-raio) var(--tba-raio) 0;
}
.single-post .entry-content blockquote p { margin: 0; font-size: .95rem; }

@media (max-width: 767px) {
	.tba-blog-lista { grid-template-columns: 1fr; gap: .8rem; }
	.tba-blog-item { padding: .95rem 1rem; }
	.single-post .entry-content { max-width: none; }
}

/* ----------------------------------------------- aviso de falta de estoque
   O laranja-avermelhado do Storefront (#e2401c) dá 3,8:1 sobre branco e
   reprovou no Lighthouse em 21/09/2026. É um aviso, o tipo de texto que mais
   precisa ser lido — e quem lê está prestes a desistir da compra, então vale
   a pena ele estar legível para dizer bem o que houve. */
.woocommerce div.product p.stock.out-of-stock,
.woocommerce .product p.stock.out-of-stock {
	color: var(--tba-vermelho-escuro);
	font-weight: 600;
}

/* ------------------------------- busca da barra inferior, no celular
   O painel de busca do Storefront fica no HTML mesmo fechado, posicionado
   abaixo da barra — fora da tela, mas ainda "visível" para o navegador. Duas
   consequências, e a segunda é a que importa:

   1. O Lighthouse o conta como alvo de toque encoberto e reprova a página.
   2. Quem navega por teclado TABULA para dentro de um campo de busca que não
      está na tela. O foco some, a pessoa digita no escuro e não entende onde
      está. Isso é defeito de verdade, não detalhe de avaliador.

   `visibility: hidden` resolve os dois: tira do fluxo de foco e da contagem de
   alvos, sem mexer na animação — o Storefront anima `bottom`, não `opacity`.
   Quando a pessoa toca na lupa, o `.active` devolve tudo. */
.storefront-handheld-footer-bar .search .site-search {
	visibility: hidden;
}
.storefront-handheld-footer-bar .search.active .site-search {
	visibility: visible;
}

/* ============================================================================
   0.5.0 — 21/09/2026: a revisão que o Jean pediu olhando o site pronto

   Ele apontou cinco coisas, e cada uma tem um bloco abaixo:
   1. o site não usava a tela toda — sobrava branco nas laterais
   2. o formulário de cadastro estava torto
   3. a lista de categorias da página de erro era gigante
   4. o rodapé estava bagunçado e repetia link
   5. a foto padrão dos produtos sem imagem (é imagem, não CSS — ver 43-foto-padrao)
   ========================================================================= */

/* --------------------------------------------------- 1. a largura da página

   O Storefront trava tudo em 1170px. Num monitor de 1900px isso deixa uns
   360px de branco de cada lado — foi o que o Jean fotografou.

   1170px é uma escolha de quando "tela grande" era 1366px. Hoje desperdiça um
   terço de um monitor comum. Mas abrir até a borda também está errado: linha de
   texto muito longa cansa de ler, e é por isso que a prosa continua limitada em
   ~68ch mais acima. O que ganha com largura é a GRADE DE PRODUTO, que é o
   conteúdo desta loja.

   Então o invólucro cresce e o texto não. E cresce em `min()` com `vw`, de modo
   que a margem lateral nunca some: num monitor ultralargo o conteúdo para de
   crescer e continua respirando. */
.col-full {
	max-width: min(1480px, 94vw);
}

/* Com mais largura cabem mais cartões. Sem isto, o cartão de produto ficaria
   enorme e a foto esticada — o problema oposto do que estamos consertando. */
@media (min-width: 1400px) { :root { --tba-colunas: 5; } }
@media (min-width: 1750px) { :root { --tba-colunas: 6; } }

/* MONITOR GRANDE GANHA MAIS, MAS NÃO GANHA TUDO.
   Pedido do Jean em 22/09/2026: "se é um monitor mais novo, tem que ser uma
   proporção melhor". Num monitor de 2560px o teto de 1480 deixaria 540px de
   branco de cada lado — de volta ao problema que ele apontou.
   O teto sobe em degrau, e a grade acompanha com mais colunas, porque largura
   sem coluna a mais só faz o cartão inchar. O `vw` continua no `min()`: é ele
   que garante margem lateral em qualquer tela, inclusive nas que ainda não
   existem. */
@media (min-width: 1900px) {
	.col-full { max-width: min(1720px, 92vw); }
	.tba-faixa ul { max-width: min(1720px, 92vw); }
	:root { --tba-colunas: 6; }
}
@media (min-width: 2200px) {
	.col-full { max-width: min(1980px, 90vw); }
	.tba-faixa ul { max-width: min(1980px, 90vw); }
	:root { --tba-colunas: 7; }
}

/* A faixa escura tinha largura própria e ficaria estreita ao lado do resto. */
.tba-faixa ul { max-width: min(1480px, 94vw); }

/* ------------------------------------------- 2. o formulário de cadastro

   A causa principal era MARCAÇÃO, não CSS: as nossas linhas de campo não
   traziam a classe `form-row`, que é a que o WooCommerce estiliza. Corrigido no
   plugin. O que fica aqui é o acabamento — e vale igualmente para os campos
   nativos e os nossos, para que ninguém consiga distinguir de quem é cada
   linha. */
.woocommerce-form-register .form-row,
.woocommerce-form-login .form-row {
	display: block;
	margin: 0 0 1.05rem;
}
.woocommerce-form-register .form-row label,
.woocommerce-form-login .form-row label {
	display: block;
	font-weight: 600;
	font-size: .92rem;
	color: var(--tba-tinta);
	margin: 0 0 .32rem;
}
.woocommerce-form-register .form-row input.input-text,
.woocommerce-form-register .form-row select,
.woocommerce-form-login .form-row input.input-text {
	width: 100%;
	box-sizing: border-box;
	padding: .62rem .7rem;
	font-size: 1rem;
	line-height: 1.35;
	border: 1px solid var(--tba-borda);
	border-radius: 4px;
	background: #fff;
	color: var(--tba-tinta);
}
.woocommerce-form-register .form-row select {
	/* Alguns navegadores ignoram o padding vertical do `select`; a altura mínima
	   o deixa do mesmo tamanho dos campos de texto, que é o que faz a coluna
	   parecer alinhada. */
	min-height: 2.85rem;
}
.woocommerce-form-register .form-row input:focus,
.woocommerce-form-register .form-row select:focus,
.woocommerce-form-login .form-row input:focus {
	outline: 2px solid var(--tba-vermelho);
	outline-offset: 1px;
	border-color: var(--tba-vermelho);
}

/* A frase de ajuda vai ABAIXO do campo, na linha inteira. Antes era um `<small>`
   em fluxo de texto e se pendurava à direita da caixa, empurrando o rótulo
   seguinte — o efeito "jogado para frente" da foto. */
.woocommerce-form-register .form-row small {
	display: block;
	margin: .35rem 0 0;
	font-size: .84rem;
	line-height: 1.45;
	color: var(--tba-tinta-fraca);
}

/* A caixa "minha empresa é isenta" é uma escolha, não um rótulo de campo:
   linha própria, peso normal e alvo de clique confortável.

   O SELETOR PRECISA DO `label`. Sem ele esta regra tem peso (0,2,0) e perde
   para `.woocommerce-form-register .form-row label`, que tem (0,2,1) e está
   logo acima — a caixa voltava a `display: block` e o texto caía embaixo do
   quadradinho. Medido na página, não deduzido: a primeira versão desta regra
   não pegou. */
.woocommerce-form-register .form-row label.tba-b2b-isento {
	display: flex;
	align-items: flex-start;
	gap: .5rem;
	margin: .5rem 0 0;
	font-weight: 400;
	font-size: .9rem;
	color: var(--tba-tinta-suave);
	cursor: pointer;
}
.woocommerce-form-register .form-row label.tba-b2b-isento input[type="checkbox"] {
	width: auto;
	margin: .15rem 0 0;
	flex: 0 0 auto;
}
/* Campo desligado pela caixa de isento precisa PARECER desligado. */
.woocommerce-form-register .form-row input:disabled {
	background: #F4F5F6;
	color: var(--tba-tinta-fraca);
	cursor: not-allowed;
}

/* As duas colunas (entrar / cadastrar) com respiro e alinhadas pelo topo. Em
   celular viram uma embaixo da outra, com "Entrar" primeiro — quem já é cliente
   volta mais vezes do que quem se cadastra. */
.woocommerce-account .u-columns.col2-set {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
	gap: 2.5rem;
	align-items: start;
}
/* O `#customer_login` no seletor NÃO É ENFEITE.

   A primeira versão desta regra usava só classes e não pegou — as colunas
   continuavam com 280px e 360px dentro de faixas de 681px, que era exatamente o
   desalinhamento da foto do Jean. O motivo apareceu ao inspecionar a página:

       woocommerce.css  @media (min-width: 768px)
       .col2-set#customer_login .col-1 { width: 41.1765% }

   O WooCommerce mira pelo **id** do bloco. Um id pesa mais que qualquer número
   de classes, então a regra dele ganhava da nossa por especificidade, não por
   ordem — trocar a ordem dos arquivos nunca resolveria. (E 41,1765% da faixa de
   681px dá 280,25px: bate na casa dos centavos com o que foi medido.)

   Repetir o id do lado de cá é o caminho honesto: fica no mesmo patamar e
   acrescenta uma classe. A alternativa seria `!important`, que ganha a briga de
   hoje e esconde a próxima.

   `width: 100%` e não `auto`: as colunas são flutuantes de origem e, mesmo como
   itens de grade, o navegador continua dando a elas largura de conteúdo. Nem
   `float: none` nem `justify-self: stretch` mudaram isso — testado na página. */
.woocommerce-account .col2-set#customer_login .col-1,
.woocommerce-account .col2-set#customer_login .col-2 { width: 100%; float: none; box-sizing: border-box; }
.woocommerce-account .u-columns.col2-set h2 { margin-bottom: 1rem; }

/* A coluna cresce; o formulário, não.
   Com as colunas finalmente esticando, cada campo passou a ter 623px de
   largura — e campo de CNPJ com 623px é desconfortável de usar: o olho perde a
   ligação entre o rótulo, à esquerda, e o cursor, que fica longe. A recomendação
   antiga de formulário continua valendo: a caixa tem o tamanho do que se
   escreve nela. A COLUNA ocupa o espaço; o formulário fica na medida. */
.woocommerce-account .col2-set#customer_login form { max-width: 32rem; }
.woocommerce-form-register .woocommerce-privacy-policy-text p,
.woocommerce-form-register .woocommerce-form-register__submit { margin-top: 1rem; }
.woocommerce-form-register .woocommerce-privacy-policy-text p {
	font-size: .88rem;
	color: var(--tba-tinta-suave);
	line-height: 1.5;
	max-width: 56ch;
}

/* ------------------------------------------------------ 3. página de erro */
.tba-404 { max-width: 62rem; margin: 1.5rem auto 2.5rem; }
.tba-404 h1 { font-size: clamp(1.45rem, 3vw, 2rem); margin: 0 0 .6rem; }
.tba-404-recado { color: var(--tba-tinta-suave); max-width: 62ch; margin: 0 0 1.2rem; }
.tba-404-busca { max-width: 30rem; margin: 0 0 1.8rem; }
.tba-404-busca form { display: flex; gap: .5rem; }
.tba-404-busca input[type="search"] { flex: 1 1 auto; min-width: 0; }

.tba-404-saidas {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
	gap: .9rem;
	margin: 0 0 2.2rem;
}
.tba-404-saida {
	display: block;
	padding: .95rem 1.05rem;
	border: 1px solid var(--tba-borda);
	border-radius: 6px;
	background: #fff;
	text-decoration: none;
	transition: border-color .15s, transform .15s;
}
.tba-404-saida:hover { border-color: var(--tba-vermelho); transform: translateY(-1px); }
.tba-404-saida strong { display: block; color: var(--tba-vermelho); margin-bottom: .2rem; }
.tba-404-saida span { display: block; font-size: .88rem; color: var(--tba-tinta-suave); line-height: 1.45; }

.tba-404-titulo { font-size: 1.05rem; margin: 0 0 .7rem; }
/* Em linha e embrulhando, não em coluna infinita: doze etiquetas cabem em duas
   linhas, contra as 70 que rolavam meia tela na versão do Storefront. */
.tba-404-cats { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.tba-404-cats a {
	display: inline-flex;
	align-items: baseline;
	gap: .4rem;
	padding: .38rem .7rem;
	border: 1px solid var(--tba-borda);
	border-radius: 999px;
	font-size: .88rem;
	color: var(--tba-tinta);
	text-decoration: none;
	background: #fff;
}
.tba-404-cats a:hover { border-color: var(--tba-vermelho); color: var(--tba-vermelho); }
.tba-404-cats span { font-size: .78rem; color: var(--tba-tinta-fraca); }

/* ---------------------------------------------------------- 4. rodapé */
.site-footer .tba-rodape { grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }
/* A coluna da marca ganha mais espaço: carrega endereço, três contatos e o
   horário, e espremida em 210px o endereço quebrava em cinco linhas. */
.site-footer .tba-rodape-marca { min-width: 0; }
@media (min-width: 900px) { .site-footer .tba-rodape-marca { grid-column: span 2; } }

.site-footer .tba-rodape-endereco { margin: 0 0 .7rem; max-width: 42ch; }
.site-footer .tba-rodape-contato { list-style: none; margin: 0; padding: 0; }
.site-footer .tba-rodape-contato li {
	display: flex;
	gap: .5rem;
	align-items: baseline;
	margin: 0 0 .3rem;
	font-size: .92rem;
	color: var(--tba-tinta-suave);
	line-height: 1.5;
}
/* O rótulo à esquerda é o que resolve a reclamação: sem ele, o número no rodapé
   era só um telefone, e ninguém sabia que dava para mandar mensagem. */
.site-footer .tba-rodape-rotulo {
	flex: 0 0 5.6rem;
	font-size: .76rem;
	text-transform: uppercase;
	letter-spacing: .04em;
	color: var(--tba-tinta-fraca);
	font-weight: 600;
}
@media (max-width: 480px) {
	.site-footer .tba-rodape-contato li { flex-wrap: wrap; }
	.site-footer .tba-rodape-rotulo { flex-basis: 100%; }
}

/* ------------------------------------------------- 5. a faixa de marcas

   Pedido do Jean em 21/09/2026: um carrossel de marcas na home, clicável, que
   leva à listagem daquela marca.

   Rolagem horizontal com encaixe (`scroll-snap`), em CSS puro. O comportamento
   é o de um carrossel — arrasta no celular, encaixa cartão a cartão — sem
   biblioteca, sem `<script>` e sem nada que se mexa sozinho. Quando as marcas
   cabem todas na tela, a faixa simplesmente não rola. */
.tba-marcas-faixa {
	display: flex;
	gap: .75rem;
	list-style: none;
	margin: 0;
	padding: .25rem .25rem 1rem;
	overflow-x: auto;
	scroll-snap-type: x proximity;
	/* `padding` no `<li>` não impediria o último cartão de colar na borda ao
	   rolar até o fim; a margem de rolagem, sim. */
	scroll-padding-inline: .25rem;
	-webkit-overflow-scrolling: touch;
}
/* A barra de rolagem fica discreta, mas NÃO some: ela é a única pista de que
   há mais marcas à direita. Escondê-la, como se faz em carrossel decorativo,
   deixaria o cliente sem saber que a faixa anda. */
.tba-marcas-faixa { scrollbar-width: thin; scrollbar-color: var(--tba-borda) transparent; }
.tba-marcas-faixa::-webkit-scrollbar { height: 8px; }
.tba-marcas-faixa::-webkit-scrollbar-thumb { background: var(--tba-borda); border-radius: 999px; }
.tba-marcas-faixa::-webkit-scrollbar-track { background: transparent; }

.tba-marcas-faixa li {
	flex: 0 0 auto;
	scroll-snap-align: start;
	margin: 0;
}
.tba-marcas-faixa a {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: .28rem;
	width: 9.5rem;
	min-height: 7.25rem;
	padding: .9rem .6rem;
	border: 1px solid var(--tba-borda);
	border-radius: 8px;
	background: #fff;
	text-decoration: none;
	text-align: center;
	transition: border-color .15s, transform .15s, box-shadow .15s;
}
.tba-marcas-faixa a:hover,
.tba-marcas-faixa a:focus-visible {
	border-color: var(--tba-vermelho);
	transform: translateY(-2px);
	box-shadow: 0 2px 10px rgba(23, 32, 43, .07);
}
.tba-marcas-faixa img {
	max-width: 100%;
	height: 2.6rem;
	width: auto;
	object-fit: contain;
	display: block;
}
/* Enquanto não houver logo de marca — e hoje nenhuma das 26 tem —, a inicial
   faz o papel de marca d'água: dá peso visual ao cartão sem inventar um símbolo
   que a marca não autorizou. */
.tba-marcas-inicial {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.4rem;
	height: 2.4rem;
	border-radius: 50%;
	background: #F4F1F3;
	color: var(--tba-vermelho);
	font-weight: 700;
	font-size: 1.15rem;
	line-height: 1;
}
.tba-marcas-nome {
	font-weight: 600;
	font-size: .92rem;
	color: var(--tba-tinta);
	line-height: 1.25;
}
.tba-marcas-conta { font-size: .78rem; color: var(--tba-tinta-fraca); }

@media (max-width: 767px) {
	/* No celular o cartão encolhe para caberem dois e meio na tela: o meio
	   cartão à direita é o que avisa, sem texto, que a faixa continua. */
	.tba-marcas-faixa a { width: 8.25rem; min-height: 6.5rem; }
	/* A faixa sangra até a borda da tela para o gesto de arrastar começar onde
	   o dedo naturalmente está. */
	.tba-marcas-faixa {
		margin-inline: calc(50% - 50vw);
		padding-inline: 1rem;
		scroll-padding-inline: 1rem;
	}
}

/* Quem prefere menos movimento não ganha o salto no foco. */
@media (prefers-reduced-motion: reduce) {
	.tba-marcas-faixa a { transition: none; }
	.tba-marcas-faixa a:hover, .tba-marcas-faixa a:focus-visible { transform: none; }
}

/* ============================================================================
   0.6.0 — 22/09/2026: o cabeçalho quebrado, e o alinhamento que o Jean cobrou

   Ele abriu a home depois do alargamento e achou três coisas ao mesmo tempo:
   a busca "estourou para a direita", os botões caíram para baixo da logo, e o
   menu ficou "puxado para a esquerda" em relação à marca.

   As três eram o MESMO cabeçalho, com DUAS causas que se somavam.
   ========================================================================= */

/* --- causa 1: a logo reservava 1094px de espaço ------------------------------
   O `get_custom_logo()` declarava `width="1000"`, o tamanho do ARQUIVO. O CSS
   exibia a 85px, mas o navegador reserva pelo valor declarado. Com 1094px
   comidos pela marca, a busca era espremida contra a direita e os botões não
   cabiam mais na linha. Corrigido no PHP (`tba_tema_marca`), que agora declara
   o tamanho exibido — ver o comentário lá, é onde a explicação mora.

   --- causa 2: dois links invisíveis ocupando lugar na fila -------------------
   O Storefront põe dois `skip-link` ("pular para o conteúdo") no começo do
   cabeçalho. Eles são invisíveis, mas eram ITENS DO FLEX: ocupavam 1px cada,
   mais o espaçamento entre itens. Resultado: a logo começava 20px à direita de
   onde o menu começava — exatamente o desalinhamento que ele apontou.

   Eles saem do fluxo e continuam existindo para quem navega por teclado, que é
   para quem foram feitos. */
.site-header > .col-full > .skip-link { position: absolute; }

/* --- o cabeçalho vira grade de três colunas ---------------------------------
   Com `flex-wrap`, a linha quebra sozinha quando a conta não fecha — e quebra
   no lugar errado, como aconteceu. Uma grade com três faixas declaradas não
   tem essa liberdade: marca à esquerda, busca no meio, ação à direita, sempre.

   `minmax(0, 1fr)` na busca é o que a deixa encolher em vez de empurrar os
   vizinhos: sem o `0`, a faixa do meio nunca fica menor que o conteúdo dela e
   o problema volta em outra largura. */
/* AS FAIXAS DAS PONTAS SÃO IGUAIS (`1fr ... 1fr`), e isso é o ponto.
   Com `auto 1fr auto`, a busca ficava centrada na SOBRA entre a logo (85px) e
   os botões (190px) — ou seja, 52px à esquerda do centro do cabeçalho. Dá para
   não notar, mas o Jean notou: o pedido dele foi que tudo caia no eixo do meio
   da tela, "independente do aparelho ou do monitor".
   Com duas faixas iguais nas pontas, a busca fica no centro exato por
   construção, e continua assim em qualquer largura — sem número mágico. */
/* 24/09/2026 — AS PONTAS NUNCA MENORES QUE O CONTEÚDO.
   Com `minmax(0, 1fr)` nas pontas, a faixa da direita media 366px numa tela de
   1440 e os botões do cliente logado ("Conectado como", "Pedido rápido",
   "Minha conta" e o carrinho com o valor) pediam 616: transbordavam por cima
   da busca, que cobria 108px do "Pedido rápido". Não aparecia no monitor do
   Jean, que é largo; aparecia em notebook. Agora cada ponta tem no mínimo a
   largura do que carrega, e quem cede é a busca (`minmax(0, 34rem)`). Com
   folga, as duas pontas seguem iguais e a busca no centro exato. */
.site-header > .col-full {
	display: grid;
	grid-template-columns: minmax(max-content, 1fr) minmax(0, 34rem) minmax(max-content, 1fr);
	grid-template-areas: "marca busca acao";
	align-items: center;
	column-gap: 2rem;
	row-gap: .75rem;
}
/* `width: max-content` em vez de deixar esticar: medido, a caixa da marca
   ficava com 63px enquanto a imagem desenhava 85px, e o conteúdo transbordava a
   própria caixa. Não dava defeito visível hoje — havia folga até a busca —, mas
   caixa menor que o conteúdo é o tipo de coisa que quebra na próxima mudança. */
/* Mesma armadilha da busca: o Storefront dá `width: 21.7391%` ao bloco de
   marca, e com uma classe só ele ainda ganhava da nossa regra de duas. Daí a
   caixa medir 63px com a imagem desenhando 85px. O caminho completo resolve. */
.site-header > .col-full > .site-branding {
	grid-area: marca;
	justify-self: start;
	display: flex;
	align-items: center;
	width: max-content;
	margin: 0;
	float: none;
}
.site-header .custom-logo-link { flex: 0 0 auto; }

/* A BUSCA ESTICA; QUEM TEM LARGURA MÁXIMA É O FORMULÁRIO DENTRO DELA.
   O caminho óbvio seria `justify-self: center` com `width: 100%` na `<div>`.
   Não funciona: numa faixa de grade, `width: 100%` de um item que não estica
   não resolve contra a faixa, e o navegador cai na largura natural do campo —
   medido, 248px perdidos no meio de uma faixa de 1141px.
   Esticar a `<div>` e limitar o `<form>` dá o mesmo resultado visual sem
   depender de como cada navegador resolve a porcentagem. */
/* O SELETOR PRECISA DO `> .col-full >`.
   O Storefront declara `.site-search { width: 21.7391304348% }`. Parece regra
   fraca — uma classe só —, mas foi ela que venceu enquanto do nosso lado havia
   `.site-header .site-search`: a busca saía com 248,17px, que é exatamente
   21,7391% da faixa de 1141,62px. O número bateu na casa dos centavos, e foi
   assim que a causa apareceu; por leitura de código eu teria continuado
   trocando `width` por `justify-self` sem entender por que nada mudava.
   Com o caminho completo até o filho, a nossa regra passa a ganhar sem
   `!important` — que resolveria hoje e esconderia a próxima briga. */
.site-header > .col-full > .site-search {
	grid-area: busca;
	justify-self: center;
	float: none;
	/* Medida fixa, e não porcentagem: na faixa `auto` da grade a porcentagem
	   resolveria contra o próprio conteúdo, que é circular. Abaixo de 1100px o
	   cabeçalho vira duas linhas e a busca passa a esticar — ali, sim, ela
	   precisa da largura toda. */
	width: 34rem;
	max-width: 100%;
	margin: 0;
	min-width: 0;
}
/* Quem tem medida máxima é o formulário, não a faixa: a faixa estica para
   manter a busca no centro do cabeçalho, e o campo para de crescer onde
   digitar deixa de ser confortável. */
.site-header > .col-full > .site-search form { max-width: 34rem; margin-inline: auto; }
.site-header .tba-header-cta  { grid-area: acao; justify-self: end; display: flex; gap: .5rem; align-items: center; float: none; width: auto; padding: 0; }
.site-header .custom-logo-link { display: block; line-height: 0; }

/* Entre 768 e 1100px a busca no meio fica estreita demais para ser útil — o
   lojista digita código de barras aqui. Duas linhas: marca e ação em cima,
   busca inteira embaixo. */
@media (max-width: 1100px) {
	.site-header > .col-full {
		grid-template-columns: auto 1fr;
		grid-template-areas:
			"marca acao"
			"busca busca";
	}
	.site-header > .col-full > .site-search { width: 100%; max-width: none; justify-self: stretch; }
}

/* --- a navegação em botões --------------------------------------------------
   O Jean pediu "algo mais bonito, mais agradável, como se fosse um botãozinho".
   É também o que o varejo grande faz hoje: item de menu com área de clique
   própria, em cápsula, em vez de texto solto com sublinhado.

   O ganho não é só estético. Texto solto tem alvo de clique da altura da letra;
   a cápsula dá ~40px de altura, que é o mínimo confortável para o dedo e para
   quem tem pouca firmeza na mão. */
.main-navigation ul.menu > li > a,
.main-navigation ul.nav-menu > li > a {
	display: inline-block;
	padding: .55em .95em;
	margin: .25rem .2rem .25rem 0;
	border-radius: 8px;
	font-weight: 600;
	font-size: .93rem;
	color: var(--tba-tinta);
	line-height: 1.35;
	transition: background-color .15s ease, color .15s ease;
}
.main-navigation ul.menu > li > a:hover,
.main-navigation ul.nav-menu > li > a:hover {
	background: #F4F1F3;
	color: var(--tba-vermelho);
}
/* A página em que se está fica sólida, não sublinhada: numa fila de cápsulas o
   sublinhado some, e o preenchido se lê de relance. */
.main-navigation ul.menu > li.current-menu-item > a,
.main-navigation ul.menu > li.current_page_item > a,
.main-navigation ul.nav-menu > li.current-menu-item > a {
	background: var(--tba-vermelho);
	color: #fff;
	box-shadow: none;
}
.main-navigation ul.menu > li.current-menu-item > a:hover {
	background: var(--tba-vermelho-escuro);
	color: #fff;
}
/* A fila de cápsulas encosta na borda do container; o recuo do primeiro item
   desalinharia de novo com a logo. */
.storefront-primary-navigation .col-full { padding-top: .35rem; padding-bottom: .35rem; }
.main-navigation ul.menu { display: flex; flex-wrap: wrap; align-items: center; }
.main-navigation ul.menu > li { margin: 0; }

/* --- a faixa de marcas: só a logo ------------------------------------------
   Sem título de seção, sem contagem de produtos, sem nome quando há logo.
   Pedido do Jean em 22/09/2026: "é apenas uma logo onde o cliente pode clicar".

   O cartão é mais largo e mais baixo que o anterior, porque logo de marca é
   horizontal; o formato antigo, quase quadrado, deixaria a logo minúscula no
   meio de ar. */
.tba-marcas-vitrine { padding-top: .5rem; }
.tba-marcas-faixa a {
	width: 11rem;
	min-height: 4.75rem;
	padding: .8rem 1rem;
	gap: 0;
}
.tba-marcas-faixa img {
	height: auto;
	max-height: 3.1rem;
	max-width: 100%;
	width: auto;
	object-fit: contain;
	/* Logo colorida sobre cartão branco, sem filtro: marca é ativo do
	   fabricante e dessaturar por estética é alterar a identidade dele. */
}
/* Enquanto a logo não foi enviada, o nome. Tipografia de marca: peso alto,
   entrelinha curta, centralizado — parece assinatura, não legenda. */
.tba-marcas-faixa .tba-marcas-nome {
	font-weight: 700;
	font-size: 1rem;
	letter-spacing: -.01em;
	color: var(--tba-tinta);
	text-align: center;
	line-height: 1.2;
}
@media (max-width: 767px) {
	.tba-marcas-faixa a { width: 9.5rem; min-height: 4.25rem; }
	.tba-marcas-faixa img { max-height: 2.6rem; }
	.tba-marcas-faixa .tba-marcas-nome { font-size: .92rem; }
}

/* --- o rodapé centralizado --------------------------------------------------
   Escolha do dono, 22/09/2026: "gosto mais das informações do rodapé
   centralizadas... acho que fica mais bonito".

   Com o texto centralizado, o rótulo do contato não pode mais ficar numa coluna
   à esquerda do valor — ficaria um bloco torto dentro de outro centralizado.
   Ele sobe para cima do valor, em versalete pequeno. */
.site-footer .tba-rodape { text-align: center; justify-items: center; }
.site-footer .tba-rodape-endereco { margin-inline: auto; }
.site-footer .tba-rodape-contato li { display: block; }
.site-footer .tba-rodape-rotulo {
	display: block;
	flex: none;
	margin-bottom: .05rem;
}
.site-footer .tba-rodape-contato li + li { margin-top: .5rem; }
.site-footer .site-info,
.site-footer .site-info p { text-align: center; }
.site-footer .site-info { padding-bottom: 1.25rem; }

/* ============================================================================
   0.7.0 — 22/09/2026: proporção. Três coisas que o Jean viu na tela grande.

   1. o texto das páginas ficava encostado à esquerda, com meia tela vazia
   2. o banner da home era pequeno demais para o monitor
   3. os cartões de marca viravam cápsulas com uma palavra solta no meio
   ========================================================================= */

/* ------------------------------------------- 1. a coluna de leitura, centrada

   O QUE ESTAVA ACONTECENDO, medido em /como-comprar/ numa tela de 1687px:
   o título e os subtítulos ocupavam os 1480px do container, e os PARÁGRAFOS
   paravam em 623px — sobravam 899px de branco à direita de cada linha de texto.

   O parágrafo estava certo: linha de 45 a 75 caracteres é o que se lê sem
   cansar, e essa regra não muda porque o monitor cresceu. O errado era o resto
   da página não acompanhar: título largo e texto estreito, os dois encostados
   à esquerda, fazem a página parecer torta — que foi a palavra dele.

   O conserto é mover a medida do PARÁGRAFO para a COLUNA. Título, subtítulo e
   texto passam a compartilhar a mesma largura e o mesmo eixo, e a coluna fica
   no meio da tela. É o desenho de qualquer página de leitura séria.

   Vale só para página de texto. Catálogo, home, carrinho, conta e checkout
   continuam usando a largura toda — ali o conteúdo é grade, não leitura. */
body.page:not(.home):not(.woocommerce-page):not(.woocommerce-account) .content-area > .site-main,
body.single-post .content-area > .site-main,
body.privacy-policy .content-area > .site-main {
	max-width: 42rem;
	margin-inline: auto;
}
/* Dentro da coluna, o parágrafo não precisa mais do próprio teto: ele já está
   na medida certa, e manter os dois faria o texto ficar estreito DENTRO de uma
   coluna estreita — desalinhando do título de novo, agora por dentro. */
body.page:not(.home):not(.woocommerce-page) .content-area > .site-main .entry-content p,
body.page:not(.home):not(.woocommerce-page) .content-area > .site-main .entry-content li,
body.single-post .content-area > .site-main .entry-content p,
body.single-post .content-area > .site-main .entry-content li,
body.single-post .content-area > .site-main .tba-faq-resposta p,
body.page:not(.home):not(.woocommerce-page) .content-area > .site-main .tba-faq-resposta p {
	max-width: none;
}
/* A página de artigo já tinha coluna própria; agora ela vem daqui, para não
   existirem duas medidas concorrentes para a mesma coisa. */
.single-post .entry-content { max-width: none; margin-inline: 0; }

/* ------------------------------------------------ 2. o banner proporcional

   O hero foi desenhado apertado de propósito em 20/09: naquele momento ele
   ocupava a tela inteira e o visitante não via produto nenhum sem rolar. A
   correção de lá foi certa, mas o teto ficou preso em números pequenos — e
   num monitor de 1687px o título saía com 32,8px e o banner com 326px de
   altura. Some na tela, que foi o que o Jean disse.

   Agora tudo é `clamp()` com `vw`: o mínimo protege o celular, o máximo impede
   o exagero, e no meio a peça cresce com a tela. O banner continua sendo uma
   faixa de anúncio, não uma capa — a grade de produtos segue visível sem
   rolar em 1080p. */
.tba-hero {
	padding-top: clamp(1.4rem, 3.2vw, 3.2rem);
	padding-bottom: clamp(1.3rem, 3vw, 3rem);
	margin-bottom: clamp(1.2rem, 2.2vw, 2.4rem);
}
.tba-hero h1 {
	/* 24px no celular, 48px a partir de ~1450px. */
	font-size: clamp(1.5rem, 1rem + 2.1vw, 3rem);
	max-width: 24ch;
	margin-bottom: .5rem;
}
.tba-hero p {
	/* A medida em `ch` acompanha o corpo do texto sozinha: fonte maior, linha
	   proporcionalmente igual. Não precisa de ponto de quebra. */
	font-size: clamp(1rem, .92rem + .38vw, 1.22rem);
	max-width: 60ch;
	margin-bottom: 1.15rem;
}
.tba-hero small { font-size: clamp(.8rem, .76rem + .16vw, .95rem); max-width: 68ch; }
.tba-hero .button {
	font-size: clamp(.95rem, .9rem + .22vw, 1.12rem);
	padding: .78em 1.5em;
}

/* --------------------------------------------- 3. os cartões de marca

   O que o Jean viu: cápsulas com uma palavra solta no meio. Duas causas.

   O raio de 999px vinha de outra regra e transformava o cartão num comprimido;
   e oito cartões de 176px preenchiam exatamente os 1480px da faixa, então eles
   esticavam de ponta a ponta sem respiro.

   O cartão agora tem a proporção de uma logo — mais largo que alto, com o
   dobro de espaço em branco em volta da marca do que tinha antes — e a faixa
   centraliza quando sobra espaço, em vez de espalhar. */
.tba-marcas-faixa { justify-content: safe center; }
.tba-marcas-faixa a {
	/* Explícito porque havia 999px vencendo de outro lugar. Proporção de
	   cartão de marca, não de comprimido. */
	border-radius: 10px;
	width: 10.5rem;
	min-height: 5.25rem;
	padding: .85rem 1.1rem;
}
/* A LOGO MANDA NA PROPORÇÃO, E O CARTÃO SE VIRA.
   `object-fit: contain` com altura máxima e largura automática: a imagem nunca
   é esticada nem cortada, seja ela quadrada, comprida ou alta. É o que garante
   que enviar a logo de qualquer marca não desconfigure a faixa. */
.tba-marcas-faixa img {
	max-height: 3.2rem;
	max-width: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
	display: block;
	margin-inline: auto;
}
/* Enquanto a logo não chega, o nome — centrado nos dois eixos e quebrando em
   duas linhas quando for longo, sem empurrar o cartão. */
.tba-marcas-faixa .tba-marcas-nome {
	display: block;
	width: 100%;
	text-align: center;
	font-weight: 700;
	font-size: 1rem;
	line-height: 1.22;
	letter-spacing: -.01em;
	color: var(--tba-tinta);
	overflow-wrap: anywhere;
}
@media (max-width: 767px) {
	.tba-marcas-faixa a { width: 9rem; min-height: 4.5rem; padding: .7rem .85rem; }
	.tba-marcas-faixa img { max-height: 2.6rem; }
	.tba-marcas-faixa .tba-marcas-nome { font-size: .9rem; }
}

/* ------------------------------ 4. a medida do texto na página de produto

   A página de produto é a única que não vira coluna estreita: ela é galeria +
   ficha, e as duas precisam da largura. Mas o TEXTO dentro dela herdava a
   largura da coluna — medido em 1687px, o resumo saía com 837px e a aba de
   descrição com 965px, o que dá linhas de 90 a 105 caracteres. Acima de ~75 o
   olho perde a volta da linha e a leitura trava.

   Aqui não se mexe no layout, só na medida do texto: a coluna continua larga,
   o parágrafo para onde ainda se lê. */
.woocommerce-product-details__short-description p,
.woocommerce-product-details__short-description li,
.woocommerce-Tabs-panel p,
.woocommerce-Tabs-panel li {
	max-width: 68ch;
}

/* ============================================================================
   0.8.0 — 22/09/2026: a barra de navegação no centro, e o topo mais enxuto

   Dois pedidos do Jean, e o segundo tem um objetivo claro: "para que seja
   possível já ver os produtos".
   ========================================================================= */

/* ---------------------------------------- 1. a barra de navegação centrada

   A fila de itens começava no mesmo eixo da logo (x=96) e terminava no meio da
   página — de longe, lia como uma barra encostada na esquerda com meia faixa
   vazia à direita. Era isso que ele continuava vendo.

   Centrada, ela passa a ecoar a busca, que já está no centro do cabeçalho: as
   duas linhas do topo ficam no mesmo eixo, e a logo à esquerda com os botões à
   direita emolduram as duas. O alinhamento com a logo se perde, mas ele não
   era o que estava incomodando — a fila curta em faixa larga era. */
/* PRIMEIRO O `<nav>` PRECISA OCUPAR A FAIXA INTEIRA.
   Centrar a lista sozinha não mudou nada, e a medição explicou: o Storefront dá
   `width: 73.9130434783%` e `float: left` ao `.main-navigation`. A lista até
   centralizava — dentro dos 1094px do `<nav>`, que é onde ela já estava. É a
   mesma família de regras de porcentagem do tema-pai que já tinha encolhido a
   busca e a marca; a terceira vez nesta semana. */
.storefront-primary-navigation > .col-full > .main-navigation {
	float: none;
	width: 100%;
}
.main-navigation ul.menu,
.main-navigation ul.nav-menu {
	justify-content: center;
}
/* No celular o menu é uma lista que abre por baixo do botão "Menu": centrar
   ali empurraria cada item para o meio e faria a lista parecer um cardápio.
   Lista vertical se lê pela borda esquerda. */
@media (max-width: 767px) {
	.main-navigation ul.menu,
	.main-navigation ul.nav-menu { justify-content: flex-start; }
}

/* ------------------------------------------- 2. o topo mais enxuto

   MEDIDO ANTES, numa tela de 1687x1000: o primeiro produto começava em y=817.
   Sobravam 183px de cartão visíveis — o suficiente para saber que existe grade,
   não para ter noção do que a loja vende.

   O ar saiu de seis lugares, nenhum deles do texto em si: respiro do banner em
   cima e embaixo, distância entre o banner e a faixa de marcas, e o vão entre a
   faixa e a grade. O tamanho das letras não mudou — ele acabou de pedir o
   contrário disso.

   O que NÃO foi apertado: o vão entre as seções do meio da página. Lá o ar é o
   que separa assunto de assunto, e a pressa de ver produto já terminou. */
.tba-hero {
	padding-top: clamp(1.1rem, 2.1vw, 2.15rem);
	padding-bottom: clamp(1rem, 1.9vw, 2rem);
	margin-bottom: clamp(.8rem, 1.3vw, 1.4rem);
}
/* Os "textos menores" mais juntos, como ele pediu: a linha de apoio cola um
   pouco mais no título, o botão sobe, e a letra miúda encosta no botão. A
   entrelinha do apoio também fecha — é texto de anúncio, lido de uma vez, e
   não parágrafo de leitura corrida. */
.tba-hero h1 { margin-bottom: .38rem; }
.tba-hero p { margin-bottom: .8rem; line-height: 1.42; }
.tba-hero small { margin-top: .4rem; line-height: 1.45; }

/* A faixa de marcas é uma tira fina; ela não precisa do mesmo respiro de uma
   seção com título e conteúdo. */
.tba-marcas-vitrine { padding-top: .15rem; margin-bottom: 1.05rem; }
.tba-marcas-faixa { padding-bottom: .55rem; }

/* E a grade começa logo em seguida. */
.tba-vitrine { margin-top: 0; }

/* ============================================================================
   0.9.0 — 22/09/2026: o branco no topo de TODAS as telas, e o carrinho

   O Jean: "praticamente todas as áreas têm o mesmo problema de área branca
   muito grande na parte superior... teria que revisar todas as abas".

   Ele tem razão e a causa é única: o Storefront mede espaçamento em `em` com
   uma escala generosa, pensada para blog. Numa loja, cada bloco desses empurra
   mercadoria para baixo da dobra.

   MEDIDO ANTES, no catálogo, tela de 1687x1000:

     migalhas ................ 68px de altura + 59px de margem = 127px
     título até a ordenação .. 96px
     ordenação ............... 32px + 37px de margem
     primeiro produto em ..... y=518, ou seja, metade da tela

   Nada aqui muda tamanho de letra. O que muda é o ar entre os blocos do topo —
   e só do topo: o respiro entre as seções do meio continua, porque lá ele
   separa assunto e a pressa de ver produto já passou.
   ========================================================================= */

/* As migalhas são uma linha de orientação, não um bloco de conteúdo. */
.storefront-breadcrumb {
	padding: .5rem 0 .45rem;
	margin-bottom: .85rem;
	font-size: .88rem;
}

/* O cabeçalho da página: título colado no que vem depois dele.
   O `padding: 0` é o que pesa. O bloco do título tinha 144px de altura para uma
   linha de 48px — 96px de recheio vazio, medidos. É o maior desperdício isolado
   do topo, e ele se repete em catálogo, marca e categoria. */
.woocommerce-products-header { padding: 0; margin-bottom: .9rem; }
.woocommerce-products-header__title,
.page .entry-title,
.single-post .entry-title,
.woocommerce-account .entry-title { margin-bottom: .35rem; }
/* `padding-bottom: 0` junto com a margem — e é o `padding` que pesa.
   Medido em /minha-conta/: o `<header>` do título tinha 144px de altura para um
   título de 48px, porque o Storefront lhe dá 96px de recheio embaixo. É o mesmo
   bloco em toda página com título, e por isso o mesmo vazio aparecia em todas
   as telas que o Jean abriu. Mexer só na margem não resolvia nada. */
.entry-header { padding-bottom: 0; margin-bottom: .9rem; }
/* E de novo com mais peso, porque o recheio de 96px sobrevivia em /minha-conta/.

   A regra que ganhava, achada varrendo as folhas de estilo da página:

     woocommerce.css  @media (min-width: 768px)
     .storefront-full-width-content.woocommerce-account .entry-header
     { padding-bottom: 5.99684em }

   Três classes contra as nossas duas. E tem um detalhe que vale guardar: a
   `.storefront-full-width-content` é uma classe que NÓS acrescentamos ao corpo
   da página, para o Storefront não desenhar a barra lateral. Ou seja, fomos nós
   que ligamos a regra que depois nos atrapalhou — o tema-pai só estava
   respondendo ao que pedimos.

   Por isso o seletor daqui repete a combinação inteira: é igualar o peso e
   vencer pela ordem, sem `!important`. */
/* 01/10/2026: "vencer pela ordem" deixou de valer. Desde que a folha duplicada
   do tema-filho saiu (oitava armadilha), o woocommerce.css do tema-pai carrega
   DEPOIS desta — e os 96px voltaram em toda tela de conta (medido em "Senha
   perdida": cabeçalho de 144px para um título de 48). `body` a mais no
   seletor vence por peso, que não depende de ordem. */
@media (min-width: 768px) {
	body.storefront-full-width-content.woocommerce-account .entry-header,
	body.storefront-full-width-content.woocommerce-page .entry-header,
	body.storefront-full-width-content .entry-header {
		padding-bottom: 0;
		/* A margem entra no MESMO bloco: com o recheio zerado, o "Entrar"
		   encostava no "Minha conta" — e a regra do tema-pai que zerava a margem
		   tem o mesmo peso, então tinha de ser respondida aqui. */
		margin-bottom: 1.3rem;
	}
}
.woocommerce-page .entry-header,
.woocommerce-account .entry-header,
.woocommerce .entry-header { padding-bottom: 0; }
.woocommerce-products-header .term-description,
.page .entry-header + .entry-content { margin-top: 0; }

/* A barra de ordenação do catálogo. */
.storefront-sorting { margin-bottom: 1rem; }
.woocommerce-result-count, .woocommerce-ordering { margin-bottom: .4rem; }

/* O topo do conteúdo em si: o Storefront reserva um bloco antes do primeiro
   elemento de toda página. */
#content .col-full { padding-top: 0; }
.site-main > article > .entry-content > *:first-child,
.site-main > .woocommerce-notices-wrapper:empty { margin-top: 0; }

/* A conta do cliente: o "Minha conta" ficava longe do menu lateral e do texto,
   e era o que o Jean via como região vazia grande logo abaixo do título. */
.woocommerce-account .woocommerce-MyAccount-navigation { margin-top: 0; }
.woocommerce-account .woocommerce-MyAccount-content { margin-top: 0; padding-top: 0; }
.woocommerce-account .woocommerce-MyAccount-content > p:first-child { margin-top: 0; }

/* ------------------------------------------------------ o botão do carrinho

   Pedido do Jean: "o carrinho poderia ter um destaque um pouquinho mais
   harmônico... poderia até estar escrito carrinho".

   Fica ao lado dos outros dois botões, na mesma altura e com o mesmo raio, mas
   em branco com borda: os três vermelhos brigariam entre si, e o carrinho é
   destino de conferência, não a ação que a loja quer provocar. */
.tba-carrinho {
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	background: #fff;
	color: var(--tba-tinta);
	border: 1px solid var(--tba-borda-forte);
	white-space: nowrap;
}
.tba-carrinho:hover { border-color: var(--tba-vermelho); color: var(--tba-vermelho); }
.tba-carrinho-marca { display: inline-flex; align-items: center; gap: .4rem; }
.tba-carrinho-icone { flex: 0 0 auto; }
/* O contador: pastilha ao lado da palavra. Fica cinza quando está vazio e
   vermelho quando tem item — a cor é o aviso de que algo entrou. */
.tba-carrinho-conta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.45rem;
	height: 1.45rem;
	padding: 0 .35rem;
	border-radius: 999px;
	background: var(--tba-borda);
	color: var(--tba-tinta-suave);
	font-size: .78rem;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}
.tba-carrinho-conta.tem-item { background: var(--tba-vermelho); color: #fff; }

@media (max-width: 900px) {
	/* No aperto, o cesto e a contagem bastam: a palavra é a primeira a sair,
	   porque o desenho do cesto já é entendido sem ela quando falta espaço. */
	.tba-carrinho-texto { display: none; }
}

/* ---------------------------------- o recado do CEP e o passo de endereço */
.tba-cep-recado {
	display: block;
	margin-top: .3rem;
	font-size: .84rem;
	color: var(--tba-tinta-fraca);
	line-height: 1.4;
}
.tba-cep-recado.erro { color: var(--tba-vermelho); }

.tba-endereco-recado {
	border: 1px solid var(--tba-borda);
	border-left: 4px solid var(--tba-verde);
	border-radius: 8px;
	background: #F7FBF8;
	padding: 1rem 1.15rem;
	margin: 0 0 1.4rem;
	max-width: 44rem;
}
.tba-endereco-recado h2 { font-size: 1.1rem; margin: 0 0 .35rem; }
.tba-endereco-recado p { margin: 0 0 .3rem; color: var(--tba-tinta-suave); font-size: .95rem; line-height: 1.5; max-width: 60ch; }
.tba-endereco-pular { font-size: .88rem; }

.tba-endereco-lembrete {
	border: 1px solid var(--tba-borda);
	border-left: 4px solid var(--tba-amarelo);
	border-radius: 8px;
	background: #FFFDF2;
	padding: .7rem .9rem;
	margin: 0 0 1rem;
	font-size: .92rem;
	line-height: 1.45;
}

/* O aviso embaixo da caixa "manter conectado". */
.tba-sessao-recado {
	margin: .15rem 0 .9rem;
	font-size: .84rem;
	color: var(--tba-tinta-fraca);
	line-height: 1.45;
	max-width: 46ch;
}

/* ----------------------- 0.10.0 — quem está logado, e o que ele vê primeiro */

/* O nome da empresa no cabeçalho: presente, e discreto.
   Pedido do Jean: "bem pequeno, bem abreviado, uma coisa bem discreta que não
   chame tanta atenção, mas que mostra que a pessoa está logada". */
.tba-header-quem {
	display: flex;
	flex-direction: column;
	justify-content: center;
	line-height: 1.15;
	text-align: right;
	text-decoration: none;
	margin-right: .35rem;
	max-width: 12rem;
}
.tba-header-quem-rotulo {
	font-size: .66rem;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: var(--tba-tinta-fraca);
}
.tba-header-quem-nome {
	font-size: .86rem;
	font-weight: 600;
	color: var(--tba-tinta);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.tba-header-quem:hover .tba-header-quem-nome { color: var(--tba-vermelho); }
@media (max-width: 1100px) { .tba-header-quem { display: none; } }

/* A barra de atalhos que substitui o banner para quem já entrou. */
.tba-atalhos {
	display: flex;
	flex-wrap: wrap;
	gap: .6rem;
	align-items: center;
	padding: .9rem 0 0;
	margin-bottom: 1.1rem;
}
.tba-atalhos .button { margin: 0; }

/* O aviso de "sem estoque" na página do produto. A quantidade não aparece mais
   em lugar nenhum — ver Modulos/Produto/Estoque.php. */
.tba-sem-estoque {
	display: inline-block;
	padding: .35rem .7rem;
	border-radius: 6px;
	background: #FBF1F2;
	color: var(--tba-vermelho-escuro);
	font-size: .9rem;
	font-weight: 600;
	margin: 0 0 1rem;
}

/* Relacionados: a mesma grade do catálogo, com respiro antes. */
.related.products { margin-top: 2rem; }
.related.products > h2 { font-size: 1.15rem; margin-bottom: .9rem; }

/* O endereço no cadastro: título da seção e as linhas de dois campos
   (número + complemento, cidade + estado). Em celular viram uma coluna. */
.tba-cadastro-endereco-titulo { margin-top: 1.4rem !important; padding-top: 1.1rem; border-top: 1px solid var(--tba-borda); }
.tba-cadastro-endereco-titulo strong { display: block; font-size: 1rem; margin-bottom: .2rem; }
.tba-cadastro-duplo { display: grid; grid-template-columns: 1fr 1fr; gap: 0 .9rem; }
/* DÉCIMA ARMADILHA DE CASCATA (01/10/2026): `.col2-set .form-row-first` do
   woocommerce.css do tema-pai (44.4444%, a partir de 768px) tem a mesma
   especificidade e carrega depois — cada campo da dupla ocupava 44% da sua
   metade (111px de 512). `body` a mais no seletor vence. E cada dupla com a
   sua proporção: número estreito e complemento largo; cidade larga e estado
   estreito. */
body .tba-cadastro-duplo .form-row { width: auto; float: none; margin-right: 0; }
.tba-cadastro-duplo:has([name="billing_number"]) { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); }
.tba-cadastro-duplo:has([name="billing_city"]) { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
body .tba-cadastro-duplo .form-row input,
body .tba-cadastro-duplo .form-row select { width: 100%; max-width: 100%; }
@media (max-width: 480px) {
	.tba-cadastro-duplo,
	.tba-cadastro-duplo:has([name="billing_number"]),
	.tba-cadastro-duplo:has([name="billing_city"]) { grid-template-columns: 1fr; }
}

/* "Criando seu cadastro…" no botão enquanto o cadastro consulta Receita e
   SEFAZ (mascaras.js). */
.tba-enviando { position: relative; pointer-events: none; opacity: .92; padding-left: 2.6rem !important; }
.tba-enviando::before {
	content: ""; position: absolute; left: 1rem; top: 50%; width: 1rem; height: 1rem; margin-top: -.5rem;
	border: 2px solid rgba(255, 255, 255, .45); border-top-color: #fff; border-radius: 50%;
	animation: tba-gira .8s linear infinite;
}
@keyframes tba-gira { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .tba-enviando::before { animation-duration: 2.4s; } }

/* ------------------- 0.11.0 — atalhos do cliente na linha do menu (22/09)

   A faixa da navegação vira flex: o menu ocupa o meio e continua centrado; os
   atalhos ficam na ponta direita. Não há linha nova — era a reclamação. */
.storefront-primary-navigation > .col-full { display: flex; align-items: center; gap: 1rem; }
.storefront-primary-navigation > .col-full > .main-navigation { flex: 1 1 auto; width: auto; min-width: 0; }
.tba-atalhos-nav { display: flex; gap: .4rem; flex: 0 0 auto; margin-left: auto; }
/* Cápsula preenchida, para não parecer item de menu: o menu marca a página
   ativa com o vermelho sólido, então o atalho principal usa o vermelho escuro e
   o secundário fica em contorno. Distintos, no mesmo eixo. */
.tba-atalho {
	display: inline-block;
	padding: .45em .9em;
	border-radius: 8px;
	font-size: .86rem;
	font-weight: 600;
	line-height: 1.3;
	text-decoration: none;
	border: 1px solid var(--tba-borda-forte);
	color: var(--tba-tinta);
	background: #fff;
	white-space: nowrap;
}
.tba-atalho:hover { border-color: var(--tba-vermelho); color: var(--tba-vermelho); }
.tba-atalho-principal { background: var(--tba-vermelho-escuro); border-color: var(--tba-vermelho-escuro); color: #fff; }
.tba-atalho-principal:hover { background: var(--tba-vermelho); border-color: var(--tba-vermelho); color: #fff; }
/* A antiga faixa de atalhos da home não existe mais; a regra fica zerada para
   o caso de cache antigo ainda servir a marcação por alguns minutos. */
.tba-atalhos { display: none; }
@media (max-width: 767px) {
	/* No celular a linha é do botão "Menu"; os atalhos vão para baixo dele,
	   numa linha própria — ali não há como caber ao lado. */
	.storefront-primary-navigation > .col-full { flex-wrap: wrap; }
	.tba-atalhos-nav { margin-left: 0; width: 100%; padding: .2rem 0 .5rem; }
	.tba-atalho { flex: 1 1 auto; text-align: center; }
}

/* ============================================================================
   0.12.0 — 23/09/2026: a página de conteúdo ganha uma coluna ao lado do texto

   A coluna de leitura (42rem) fica; ela é o que se lê. O que muda é que o
   artigo vira uma grade de duas colunas a partir de 1200px: texto à esquerda,
   atalhos à direita, o conjunto centrado. O branco dos dois lados vira um
   lado só, ocupado com o que a pessoa pode fazer a partir daquela página.
   ========================================================================= */
@media (min-width: 1200px) {
	body.page:not(.home):not(.woocommerce-page):not(.woocommerce-account) .content-area > .site-main {
		max-width: 66rem; /* 42rem de texto + 4rem de vão + 20rem de coluna */
	}
	body.page:not(.home):not(.woocommerce-page):not(.woocommerce-account) .site-main > article.page {
		display: grid;
		grid-template-columns: minmax(0, 42rem) 20rem;
		grid-template-areas:
			"cabecalho cabecalho"
			"texto     lado";
		column-gap: 4rem;
		align-items: start;
	}
	body.page .site-main > article.page > .entry-header  { grid-area: cabecalho; }
	body.page .site-main > article.page > .entry-content { grid-area: texto; min-width: 0; }
	body.page .site-main > article.page > .tba-aside     { grid-area: lado; position: sticky; top: 1.25rem; }
	/* O link "Editar" do WordPress, quando há, fica com o texto. */
	body.page .site-main > article.page > .edit-link     { grid-area: texto; }
}
.tba-aside { display: flex; flex-direction: column; gap: 1rem; margin-top: 1.5rem; }
@media (min-width: 1200px) { .tba-aside { margin-top: 0; } }
@media (max-width: 767px) { .tba-aside { display: none; } }

.tba-aside-bloco {
	border: 1px solid var(--tba-borda);
	border-radius: 10px;
	background: #FBFBFC;
	padding: 1.1rem 1.15rem 1.15rem;
}
.tba-aside-bloco h3 { font-size: 1rem; margin: 0 0 .5rem; line-height: 1.25; }
.tba-aside-bloco p { font-size: .92rem; color: var(--tba-tinta-suave); margin: 0 0 .85rem; line-height: 1.5; max-width: none; }
.tba-aside-bloco .button { display: block; text-align: center; margin: 0 0 .5rem; }
.tba-aside-bloco .button:last-child { margin-bottom: 0; }
.tba-aside-lista { list-style: none; margin: .9rem 0 0; padding: 0; }
.tba-aside-lista li {
	font-size: .88rem;
	color: var(--tba-tinta-suave);
	padding-left: 1.3rem;
	position: relative;
	margin: 0 0 .4rem;
	line-height: 1.4;
	max-width: none;
}
.tba-aside-lista li::before { content: "✓"; color: var(--tba-verde); font-weight: 700; position: absolute; left: 0; }
.tba-aside-contato a { display: block; font-weight: 600; text-decoration: none; margin-bottom: .2rem; }
.tba-aside-contato span { font-size: .84rem; color: var(--tba-tinta-fraca); }

/* ------------------------------ o botão de mostrar senha, dentro do campo

   O Jean, 23/09/2026: "a borda está levemente deformada... a parte vermelha
   está estourando o campo". Medido: o botão tinha 51px de altura dentro de um
   campo de 43px (sobrava 7px para baixo) e 58px de largura, porque a regra
   genérica de botão do tema (padding .68em 1.15em, raio 6px, fundo vermelho)
   também o pegava. Um bloco vermelho colado à direita do campo é um segundo
   botão de ação onde só existe um.

   Aqui ele vira o que é: um ícone discreto DENTRO da caixa, da altura dela, sem
   fundo. O campo ganha recuo à direita para o texto não passar por baixo. Vale
   para todo campo de senha da loja — cadastro, entrar, trocar senha. */
.woocommerce form .password-input { position: relative; }
.woocommerce form .password-input input.input-text { padding-right: 2.9rem; }
.woocommerce form .password-input .show-password-input,
.woocommerce form .password-input button.show-password-input {
	position: absolute;
	top: 1px;
	right: 1px;
	bottom: 1px;
	width: 2.6rem;
	height: auto;
	padding: 0;
	margin: 0;
	border: 0;
	border-radius: 0 3px 3px 0;
	background: transparent;
	color: var(--tba-tinta-fraca);
	box-shadow: none;
	cursor: pointer;
}
.woocommerce form .password-input .show-password-input::after { color: inherit; font-size: 1.05rem; line-height: 1; }
.woocommerce form .password-input .show-password-input:hover,
.woocommerce form .password-input .show-password-input:focus-visible { color: var(--tba-vermelho); background: transparent; }
.woocommerce form .password-input .show-password-input:focus-visible { outline: 2px solid var(--tba-vermelho); outline-offset: -2px; }

/* --------------------- conectado sem aprovação: a etiqueta no cabeçalho
   Quem está logado com cadastro em análise ou recusado não vê "Ver preços"
   nem "Entrar": vê o estado da conta, e a etiqueta leva à Minha Conta, onde
   está o motivo. Âmbar para "ainda vai", vermelho para "não passou". */
.tba-header-status {
	display: inline-flex;
	align-items: center;
	padding: .45em .85em;
	border-radius: 999px;
	font-size: .82rem;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
	line-height: 1.3;
}
.tba-header-status-pendente { background: #FFF6DB; color: #7A5A00; border: 1px solid #F1DFA0; }
.tba-header-status-recusado { background: #FBF1F2; color: var(--tba-vermelho-escuro); border: 1px solid #F0C9CF; }
.tba-header-status:hover { filter: brightness(.97); }
@media (max-width: 767px) { .tba-header-status { font-size: .76rem; padding: .4em .7em; } }

/* --------------------- a faixa de atenção do cadastro não aprovado (23/09)
   Logo abaixo do cabeçalho, em toda página, enquanto a conta não estiver
   aprovada. Âmbar quando ainda vai acontecer, vermelho quando não passou.
   Não tem botão de fechar: a informação continua verdadeira até o cadastro
   mudar, e faixa que fecha é faixa que se fecha sem ler. */
.tba-atencao-cadastro { border-bottom: 1px solid; font-size: .93rem; line-height: 1.45; }
.tba-atencao-cadastro > .col-full {
	display: flex;
	align-items: center;
	gap: .8rem;
	padding-top: .6rem;
	padding-bottom: .6rem;
}
.tba-atencao-icone {
	flex: 0 0 auto;
	width: 1.5rem; height: 1.5rem;
	border-radius: 50%;
	display: inline-flex; align-items: center; justify-content: center;
	font-weight: 800; font-size: .9rem;
	color: #fff;
}
.tba-atencao-texto { flex: 1 1 auto; min-width: 0; }
.tba-atencao-texto strong { margin-right: .3rem; }
.tba-atencao-link { flex: 0 0 auto; font-weight: 600; text-decoration: none; white-space: nowrap; }
.tba-atencao-link:hover { text-decoration: underline; }

.tba-atencao-pendente { background: #FFF6DB; border-color: #F1DFA0; color: #5C4300; }
.tba-atencao-pendente .tba-atencao-icone { background: #C98A00; }
.tba-atencao-pendente .tba-atencao-link { color: #7A5A00; }

.tba-atencao-recusado { background: #FBF1F2; border-color: #F0C9CF; color: #6E1220; }
.tba-atencao-recusado .tba-atencao-icone { background: var(--tba-vermelho); }
.tba-atencao-recusado .tba-atencao-link { color: var(--tba-vermelho-escuro); }

@media (max-width: 767px) {
	.tba-atencao-cadastro > .col-full { flex-wrap: wrap; gap: .4rem .6rem; }
	.tba-atencao-link { flex-basis: 100%; padding-left: 2.3rem; }
}

/* ==========================================================================
   0.13.0 — 23/09/2026: faixa de marcas que anda, selos no cartão, carrinho
   com valor
   ========================================================================== */

/* ------------------------------ 1. a faixa de marcas vira carrossel

   PARADA (todas cabem, ou sem JavaScript, ou "reduzir movimento"): é a
   rolagem centralizada de antes, sem mudança.

   GIRANDO (`.tba-carrossel-ativo`, posto por `assets/marcas.js` só quando há
   marca escondida): o trilho corta o excesso, a fila começa na esquerda e
   anda por `transform`, que a placa de vídeo faz sem recalcular a página.
   As bordas esmaecem para indicar que há mais dos dois lados. */
.tba-marcas-trilho { position: relative; }
.tba-carrossel-ativo .tba-marcas-trilho {
	overflow: hidden;
	-webkit-mask-image: linear-gradient(to right, transparent 0, #000 2.5rem, #000 calc(100% - 2.5rem), transparent 100%);
	        mask-image: linear-gradient(to right, transparent 0, #000 2.5rem, #000 calc(100% - 2.5rem), transparent 100%);
	touch-action: pan-y; /* o dedo na horizontal é nosso; na vertical, rola a página */
}
.tba-carrossel-ativo .tba-marcas-faixa {
	overflow: visible;
	justify-content: flex-start;
	width: max-content;
	scroll-snap-type: none;
	will-change: transform;
}
/* O cartão não pode encolher: o passo do carrossel é a largura de um cartão. */
.tba-marcas-faixa li { flex: 0 0 auto; }

/* A logo no tamanho de PESO IGUAL calculado no servidor
   (`tba_tema_tamanho_da_logo`): --lw/--lh em px de computador. As regras
   antigas de `max-height` são desligadas aqui, senão a Borabella (alta)
   continuaria achatada pelo teto de 3.2rem de outro bloco. */
.tba-marcas-vitrine .tba-marcas-faixa a.tem-logo img {
	--escala: 1;
	width: calc(var(--lw, 132) * var(--escala) * 1px);
	height: calc(var(--lh, 40) * var(--escala) * 1px);
	max-width: 100%;
	max-height: none;
	object-fit: contain;
	-webkit-user-drag: none;
	user-select: none;
}
@media (max-width: 767px) {
	.tba-marcas-vitrine .tba-marcas-faixa a.tem-logo img { --escala: .86; }
}

/* O botão de pausa: pequeno, no canto, quase invisível até ser procurado.

   SÉTIMA ARMADILHA DE CASCATA — e esta é nossa. A regra geral de botão do
   próprio tema é `button:not(.menu-toggle)`, e o `:not(...)` conta como uma
   classe: especificidade (0,1,1), contra (0,1,0) de `.tba-marcas-pausa`
   sozinho. Medido em 23/09/2026: o botão saía com 10,88px × 18,4px de recheio
   e raio de 6px, e o ícone de pausa ficava espremido em 4px, parecendo uma
   barra só. Por isso o seletor tem duas classes. */
/* Fica sobre a borda direita esmaecida da faixa, no meio da altura dela, em
   vez de ocupar uma linha própria embaixo — o Jean não quer espaço vazio
   entre as seções. */
.tba-marcas-vitrine { position: relative; }
.tba-marcas-vitrine .tba-marcas-pausa {
	position: absolute;
	right: .15rem;
	top: calc(50% - .875rem - .2rem);
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0;
	width: 1.75rem;
	height: 1.75rem;
	min-height: 0;
	padding: 0;
	border: 1px solid var(--tba-borda);
	border-radius: 999px;
	background: #fff;
	color: var(--tba-tinta-fraca);
	box-shadow: none;
	opacity: .6;
	cursor: pointer;
	transition: opacity .15s ease, border-color .15s ease;
}
.tba-marcas-vitrine .tba-marcas-pausa[hidden] { display: none; }
.tba-marcas-vitrine .tba-marcas-pausa:hover,
.tba-marcas-vitrine .tba-marcas-pausa:focus-visible { opacity: 1; border-color: var(--tba-borda-forte); background: #fff; color: var(--tba-tinta); }
.tba-marcas-vitrine .tba-marcas-pausa svg { width: .7rem; height: .7rem; display: block; }
.tba-marcas-vitrine .tba-marcas-pausa .tba-icone-continuar,
.tba-marcas-vitrine .tba-marcas-pausa.esta-pausado .tba-icone-pausar { display: none; }
.tba-marcas-vitrine .tba-marcas-pausa.esta-pausado .tba-icone-continuar { display: block; }
@media (prefers-reduced-motion: reduce) {
	.tba-carrossel-ativo .tba-marcas-faixa { transition: none !important; }
}

/* ------------------------------ 2. selos "No carrinho" e "Já comprado"

   Pedido do Jean, 23/09/2026: saber, navegando, o que já está no carrinho e o
   que já comprou, para não pôr o mesmo produto duas vezes. As etiquetas ficam
   no canto de cima da foto — é para onde o olho vai primeiro no cartão — e
   não recebem clique (o clique continua sendo do cartão inteiro).

   Cores: verde para "no carrinho" (é o estado bom, que pede ação nenhuma) e
   cinza-azulado para "já comprado" (é informação, não alerta). Nenhuma das
   duas usa o vermelho da marca, que na loja é reservado para os botões. */
.woocommerce ul.products li.product { position: relative; }
.tba-selos {
	position: absolute;
	top: .55rem;
	left: .55rem;
	right: .55rem;
	z-index: 2;
	display: flex;
	flex-wrap: wrap;
	gap: .25rem;
	pointer-events: none;
}
.tba-selos:empty { display: none; }
.tba-selo {
	display: inline-flex;
	align-items: center;
	gap: .3rem;
	padding: .18rem .5rem .18rem .42rem;
	border-radius: 999px;
	font-size: .72rem;
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: .01em;
	white-space: nowrap;
	box-shadow: 0 1px 2px rgba(23,32,43,.10);
}
.tba-selo::before {
	content: "";
	flex: 0 0 auto;
	width: .5rem;
	height: .5rem;
	border-radius: 999px;
	background: currentColor;
}
.tba-selo-carrinho { background: #E7F5EC; color: var(--tba-verde-escuro); border: 1px solid #BFE3CB; }
.tba-selo-comprado { background: #EEF2F6; color: #3B4B5C; border: 1px solid #D5DDE6; }
.tba-selo-comprado::before { background: none; border: 1.5px solid currentColor; width: .42rem; height: .42rem; }
/* Quando entra agora, sem recarregar a página: um aceno curto. */
.tba-selo-novo { animation: tba-selo-entra .35s ease-out; }
@keyframes tba-selo-entra { from { opacity: 0; transform: translateY(-3px) scale(.96); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .tba-selo-novo { animation: none; } }

/* Na página do produto, uma linha abaixo do título, e aqui o selo é link:
   leva ao carrinho ou ao pedido em que o produto foi comprado. */
.tba-selos-produto { display: flex; flex-wrap: wrap; gap: .4rem; margin: -.25rem 0 .85rem; }
.tba-selos-produto .tba-selo { font-size: .8rem; padding: .28rem .7rem .28rem .55rem; text-decoration: none; box-shadow: none; }
.tba-selos-produto .tba-selo:hover { text-decoration: underline; }

/* ------------------------------ 3. o valor no botão do carrinho

   Contagem e valor lado a lado: "Carrinho (3) R$ 1.284,90". Separados por um
   filete, em peso normal, para o número de itens continuar sendo o destaque. */
.tba-carrinho-valor:empty { display: none; }
.tba-carrinho-valor {
	padding-left: .5rem;
	line-height: 1;
	border-left: 1px solid var(--tba-borda);
	font-size: .88rem;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	color: var(--tba-tinta);
}
.tba-carrinho:hover .tba-carrinho-valor { color: inherit; }
@media (max-width: 480px) {
	/* No celular pequeno, o valor vai para o carrinho; o cabeçalho fica com o
	   cesto e a contagem, que já cabem apertados. */
	.tba-carrinho-valor { display: none; }
}

/* ==========================================================================
   0.15.0 — 23/09/2026: rodapé com localização e atalhos, foto na página
   Sobre, carrinho mais fácil de mexer no celular
   ========================================================================== */

/* ------------------------------ 1. rodapé: cinco colunas, a última é o mapa

   Até aqui a primeira coluna ocupava duas faixas e a grade se virava com
   `auto-fit`. Com a coluna do mapa, isso daria sete faixas desiguais em tela
   larga. A partir de 1100px a grade passa a ser explícita: marca e contato,
   três listas, e o mapa — que é mais largo, porque imagem estreita demais não
   se lê. Abaixo disso, três colunas; no celular, uma. */
@media (min-width: 1100px) {
	.site-footer .tba-rodape { grid-template-columns: 1.35fr 1fr 1fr 1fr 1.5fr; }
	.site-footer .tba-rodape-marca { grid-column: auto; }
}
@media (min-width: 700px) and (max-width: 1099px) {
	.site-footer .tba-rodape { grid-template-columns: repeat(3, 1fr); }
	.site-footer .tba-rodape-marca,
	.site-footer .tba-rodape-local { grid-column: span 3; }
}
.site-footer .tba-rodape-local { width: 100%; max-width: 24rem; }
.tba-mapa {
	display: block;
	border: 1px solid var(--tba-borda);
	border-radius: var(--tba-raio);
	overflow: hidden;
	line-height: 0;
	transition: border-color .15s ease, box-shadow .15s ease;
}
.tba-mapa:hover { border-color: var(--tba-borda-forte); box-shadow: var(--tba-sombra); }
.tba-mapa img { width: 100%; height: auto; display: block; }
.site-footer .tba-rodape .tba-mapa-links,
.tba-mapa-links { display: flex; justify-content: center; gap: .45rem; margin: .45rem 0 0; font-size: .88rem; }
.tba-mapa-links span { color: var(--tba-tinta-fraca); }

/* Os atalhos da equipe: pastilhas pequenas e cinza, centradas, no fim. Não
   competem com nada — é o último elemento antes do rodapé fechar. */
.tba-rodape-atalhos { margin: -.25rem 0 1rem; }
.tba-rodape-atalhos ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: .5rem;
}
.tba-rodape-atalhos a {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	padding: .38rem .75rem;
	border-radius: 8px;
	background: var(--tba-fundo);
	border: 1px solid var(--tba-borda);
	color: var(--tba-tinta-suave);
	font-size: .8rem;
	font-weight: 600;
	text-decoration: none;
}
.tba-rodape-atalhos a:hover { color: var(--tba-tinta); border-color: var(--tba-borda-forte); }

/* ------------------------------ 2. a foto e o mapa na página Sobre */
.tba-fachada { margin: 1.25rem 0 1.5rem; }
.tba-fachada img { width: 100%; height: auto; border-radius: var(--tba-raio); display: block; }
.tba-fachada figcaption { margin-top: .45rem; font-size: .88rem; color: var(--tba-tinta-fraca); text-align: center; }
.tba-mapa-pagina { max-width: 30rem; margin: .5rem 0 1.5rem; }
.tba-mapa-pagina .tba-mapa-links { justify-content: flex-start; }

/* ------------------------------ 3. carrinho: − e +, lixeira, cartão no celular

   Pedido do Jean, 23/09/2026, "com atenção especial para o celular". Três
   mudanças, todas pensando no dedo:
     - a quantidade vira [ − | 6 | + ] com botões de 44px (o mínimo de alvo de
       toque das diretrizes de acessibilidade), sem as setinhas do navegador;
     - o "×" vira uma lixeira de 44px;
     - o botão "Atualizar carrinho" some quando o script está ativo, porque o
       carrinho se atualiza sozinho (`assets/carrinho.js`). Sem script, ele
       continua lá. */
.tba-qtd-ativa .tba-qtd {
	display: inline-flex;
	align-items: stretch;
	height: 2.75rem;
	border: 1px solid var(--tba-borda-forte);
	border-radius: 10px;
	background: #fff;
	overflow: hidden;
	vertical-align: middle;
}
.tba-qtd-ativa .tba-qtd .tba-qtd-botao {
	flex: 0 0 2.75rem;
	width: 2.75rem;
	min-height: 0;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: var(--tba-fundo);
	color: var(--tba-tinta);
	font-size: 1.3rem;
	font-weight: 600;
	line-height: 1;
	cursor: pointer;
	box-shadow: none;
	transition: background .12s ease, color .12s ease;
}
.tba-qtd-ativa .tba-qtd .tba-qtd-botao:hover:not(:disabled) { background: var(--tba-borda); color: var(--tba-vermelho); }
.tba-qtd-ativa .tba-qtd .tba-qtd-botao:disabled { color: var(--tba-borda-forte); cursor: default; }
.tba-qtd-ativa .tba-qtd input.qty {
	width: 3.2rem;
	height: 100%;
	margin: 0;
	padding: 0 .25rem;
	border: 0;
	border-inline: 1px solid var(--tba-borda);
	border-radius: 0;
	background: #fff;
	box-shadow: none;
	text-align: center;
	font-size: 1rem;
	font-weight: 700;
	color: var(--tba-tinta);
	-moz-appearance: textfield;
	appearance: textfield;
}
.tba-qtd-ativa .tba-qtd input.qty::-webkit-outer-spin-button,
.tba-qtd-ativa .tba-qtd input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.tba-qtd-ativa .tba-qtd input.qty:focus { outline: 2px solid var(--tba-vermelho); outline-offset: -2px; }

/* O carrinho se atualiza sozinho: o botão manual sai de cena. */
.tba-qtd-ativa .woocommerce-cart-form button[name="update_cart"] { display: none; }

/* A lixeira. O Storefront desenha o "×" com um ícone de fonte no `::before`
   do link; ele é desligado para não aparecer dobrado. */
.woocommerce-cart-form td.product-remove a.remove {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 10px;
	color: var(--tba-tinta-fraca);
	background: transparent;
	text-indent: 0;
	font-size: 0;
	transition: background .12s ease, color .12s ease;
}
.woocommerce-cart-form td.product-remove a.remove::before { content: none; display: none; }
.woocommerce-cart-form td.product-remove a.remove:hover,
.woocommerce-cart-form td.product-remove a.remove:focus-visible { background: #FCEBEE; color: var(--tba-vermelho); }
.woocommerce-cart-form td.product-remove a.remove svg { width: 1.25rem; height: 1.25rem; }
.tba-remover-texto {
	position: absolute !important;
	width: 1px; height: 1px; overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

/* No computador a tabela continua tabela; só alinha tudo no meio da linha,
   para a foto, o nome, o [−|+] e a lixeira ficarem no mesmo eixo. */
.woocommerce-cart-form table.cart td { vertical-align: middle; }
.woocommerce-cart-form table.cart td.product-thumbnail img { width: 4rem; height: auto; }

/* NO CELULAR, CADA ITEM VIRA UM CARTÃO:

     [foto]  Nome do produto              [lixeira]
             R$ 39,90 / un.
     [ −  |  6  |  + ]                   R$ 239,40

   A tabela "rótulo: valor" do WooCommerce (Produto:, Preço:, Quantidade:,
   Subtotal:) gastava quatro linhas por item e deixava a quantidade num canto
   à direita, longe do polegar. As regras do WooCommerce para tela pequena
   usam `!important` no alinhamento, por isso algumas daqui também. */
@media (max-width: 767px) {
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item {
		display: grid;
		grid-template-columns: 4.25rem 1fr auto;
		grid-template-areas:
			"foto nome remover"
			"foto preco preco"
			"qtd  qtd  subtotal";
		column-gap: .75rem;
		row-gap: .45rem;
		align-items: center;
		padding: .85rem .8rem .95rem;
		border-bottom: 1px solid var(--tba-borda);
		background: #fff;
	}
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item td {
		display: block;
		padding: 0 !important;
		border: 0;
		background: transparent !important;
		text-align: left !important;
	}
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item td::before { content: none !important; display: none !important; }
	.woocommerce-cart-form tr.cart_item td.product-thumbnail { grid-area: foto; display: block !important; align-self: start; }
	.woocommerce-cart-form tr.cart_item td.product-thumbnail img { width: 4.25rem; max-width: none; border-radius: 8px; }
	.woocommerce-cart-form tr.cart_item td.product-name { grid-area: nome; font-weight: 600; line-height: 1.3; align-self: start; }
	.woocommerce-cart-form tr.cart_item td.product-name a { text-decoration: none; }
	.woocommerce-cart-form tr.cart_item td.product-remove { grid-area: remover; align-self: start; margin: -.5rem -.5rem 0 0; }
	.woocommerce-cart-form tr.cart_item td.product-price { grid-area: preco; font-size: .88rem; color: var(--tba-tinta-suave); align-self: start; margin-top: -.2rem; }
	.woocommerce-cart-form tr.cart_item td.product-price::after { content: " / un."; }
	.woocommerce-cart-form tr.cart_item td.product-quantity { grid-area: qtd; }
	.woocommerce-cart-form tr.cart_item td.product-subtotal { grid-area: subtotal; text-align: right !important; font-weight: 700; font-size: 1.05rem; }
	.woocommerce-cart-form tr.cart_item .tba-qtd { height: 2.9rem; }
	.woocommerce-cart-form tr.cart_item .tba-qtd .tba-qtd-botao { flex-basis: 2.9rem; width: 2.9rem; }

	/* Cupom: campo e botão na mesma linha, em vez de um embaixo do outro. */
	.woocommerce-cart-form td.actions .coupon { display: flex; gap: .5rem; align-items: stretch; }
	.woocommerce-cart-form td.actions .coupon input.input-text { flex: 1 1 auto; width: auto !important; min-width: 0; margin: 0 !important; }
	.woocommerce-cart-form td.actions .coupon .button { flex: 0 0 auto; width: auto !important; margin: 0 !important; }
}

/* ==========================================================================
   0.16.0 — 23/09/2026: a revisão do Jean navegando pelo CELULAR
   ========================================================================== */

/* ------------------------------ 1. o botão de menu sobe para a linha da logo

   No celular o Storefront dá ao "Menu" uma linha inteira, embaixo da busca:
   67px de tela para um botão. Agora ele é só o ícone de três traços, no canto
   direito da linha da logo, ao lado de "Ver preços"; a lista do menu continua
   abrindo embaixo da busca quando tocado. A linha dos atalhos do cliente
   conectado (Montar reposição, Meus pedidos) continua onde está. */
@media (max-width: 767px) {
	.site-header { position: relative; }
	.site-header .storefront-primary-navigation,
	.site-header .storefront-primary-navigation .col-full,
	.site-header .main-navigation { position: static; min-height: 0; padding-top: 0; padding-bottom: 0; margin-top: 0; margin-bottom: 0; }
	.site-header .storefront-primary-navigation { border: 0; }
	.site-header .tba-header-cta,
	.site-header .tba-header-acoes { padding-right: 3.1rem; }
	.site-header .main-navigation button.menu-toggle {
		position: absolute;
		top: .55rem;
		right: 1.4375rem; /* a mesma margem da busca e da logo */
		z-index: 5;
		width: 2.75rem;
		height: 2.75rem;
		min-height: 0;
		margin: 0;
		padding: 0;
		border: 1px solid var(--tba-borda-forte);
		border-radius: 10px;
		background: #fff;
		color: var(--tba-tinta);
		font-size: 0; /* o texto Menu continua para o leitor de tela */
		box-shadow: none;
	}
	/* Os três traços do Storefront são posicionados em em a partir da
	   esquerda; com fonte zero eles iriam para o canto. Recentrados em px. */
	.site-header .main-navigation button.menu-toggle::before,
	.site-header .main-navigation button.menu-toggle::after,
	.site-header .main-navigation button.menu-toggle span::before {
		left: 50%;
		width: 18px;
		margin-left: -9px;
	}
	/* A lista aberta: grade de duas colunas, na margem da busca, cada item um
	   alvo de toque inteiro. */
	.site-header .main-navigation.toggled .handheld-navigation { margin: .6rem 0 .8rem; padding: 0; }
	.site-header .main-navigation.toggled .handheld-navigation ul.menu {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: .45rem;
		margin: 0;
		padding: 0;
	}
	.site-header .main-navigation.toggled .handheld-navigation ul.menu > li { margin: 0; padding: 0; border: 0; }
	.site-header .main-navigation.toggled .handheld-navigation ul.menu > li > a {
		display: block;
		padding: .7rem .6rem;
		border: 1px solid var(--tba-borda);
		border-radius: 10px;
		background: var(--tba-fundo);
		text-align: center;
		font-size: .92rem;
		font-weight: 600;
		color: var(--tba-tinta);
	}
}

/* ------------------------------ 2. a página do produto no celular

   O título saía com 42px (cinco linhas para o nome de um condicionador) e o
   texto da descrição com 17px: tudo grande demais para a tela, o "grosseiro"
   que o Jean descreveu. E o "Veja o preço" ficava encostado à esquerda. */
@media (max-width: 767px) {
	.single-product div.product .product_title { font-size: 1.35rem; line-height: 1.25; margin-bottom: .6rem; }
	.single-product .entry-summary .tba-b2b-preco-oculto { display: block; }
	.single-product .entry-summary .tba-b2b-cta-preco {
		display: block;
		width: 100%;
		text-align: center;
		padding: .85rem 1rem;
		font-size: 1rem;
	}
	.single-product .woocommerce-tabs .panel,
	.single-product .woocommerce-tabs .panel p,
	.single-product .woocommerce-tabs .panel li,
	.single-product .woocommerce-product-details__short-description { font-size: .95rem; line-height: 1.6; }
	.single-product .woocommerce-tabs .panel > h2:first-child { display: none; }
	.single-product .woocommerce-tabs .panel ul,
	.single-product .woocommerce-tabs .panel ol { margin-left: 1.1rem; }
	.single-product .woocommerce-tabs ul.tabs li a { padding: .65rem 0; font-size: .95rem; }
	.related.products > h2 { font-size: 1.05rem; }
}

/* ------------------------------ 3. páginas de texto: mais leves no celular

   Título de 42px, texto de 17px e títulos de seção com respiro de capítulo
   faziam as páginas de conteúdo parecerem um documento. No celular a escala
   desce um degrau inteiro. */
@media (max-width: 767px) {
	body.page:not(.home) .entry-header h1.entry-title,
	body.single-post .entry-header h1.entry-title,
	.woocommerce-account .entry-header h1,
	.woocommerce-cart .entry-header h1 { font-size: 1.6rem; line-height: 1.2; }
	body.page:not(.home):not(.woocommerce-page) .entry-content,
	body.page:not(.home):not(.woocommerce-page) .entry-content p,
	body.page:not(.home):not(.woocommerce-page) .entry-content li,
	body.single-post .entry-content p,
	body.single-post .entry-content li { font-size: .95rem; line-height: 1.6; }
	body.page:not(.home):not(.woocommerce-page) .entry-content h2,
	body.single-post .entry-content h2 { font-size: 1.15rem; line-height: 1.3; margin: 1.6rem 0 .5rem; }
	body.page:not(.home):not(.woocommerce-page) .entry-content h3 { font-size: 1rem; }
}

/* As peças que a Sobre e a Como comprar passaram a usar. */
.entry-content .tba-abertura { font-size: 1.12rem; line-height: 1.55; color: var(--tba-tinta); }
@media (max-width: 767px) { .entry-content .tba-abertura { font-size: 1.02rem !important; } }

.entry-content ul.tba-numeros {
	list-style: none;
	margin: 1.1rem 0 1.25rem;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: .5rem;
}
.entry-content ul.tba-numeros li {
	margin: 0;
	padding: .75rem .4rem;
	background: var(--tba-fundo);
	border-radius: var(--tba-raio);
	text-align: center;
	line-height: 1.2;
}
.entry-content ul.tba-numeros strong { display: block; font-size: 1.35rem; color: var(--tba-vermelho); letter-spacing: -.01em; }
.entry-content ul.tba-numeros span { display: block; margin-top: .2rem; font-size: .78rem !important; color: var(--tba-tinta-suave); }
@media (max-width: 480px) { .entry-content ul.tba-numeros { grid-template-columns: repeat(2, 1fr); } }

.entry-content ul.tba-cartoes {
	list-style: none;
	margin: .75rem 0 1.25rem;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: .6rem;
}
.entry-content ul.tba-cartoes li {
	margin: 0;
	padding: .85rem .95rem;
	border: 1px solid var(--tba-borda);
	border-left: 3px solid var(--tba-vermelho);
	border-radius: var(--tba-raio);
	background: #fff;
}
.entry-content ul.tba-cartoes strong { display: block; margin-bottom: .2rem; }
.entry-content ul.tba-cartoes span { display: block; font-size: .9rem; line-height: 1.5; color: var(--tba-tinta-suave); }
@media (max-width: 560px) { .entry-content ul.tba-cartoes { grid-template-columns: 1fr; } }

.entry-content ul.tba-contatos { list-style: none; margin: .5rem 0 .9rem; padding: 0; }
.entry-content ul.tba-contatos li { margin: 0; padding: .5rem 0; border-bottom: 1px solid var(--tba-borda); }
.entry-content ul.tba-contatos li span {
	display: block;
	font-size: .72rem !important;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--tba-tinta-fraca);
}

/* Os passos: cartões numerados, o número num círculo vermelho. */
.entry-content ol.tba-passos { list-style: none; counter-reset: passo; margin: 1rem 0 1.5rem; padding: 0; display: grid; gap: .7rem; }
.entry-content ol.tba-passos > li {
	counter-increment: passo;
	position: relative;
	margin: 0;
	padding: 1rem 1rem 1rem 3.6rem;
	border: 1px solid var(--tba-borda);
	border-radius: var(--tba-raio);
	background: #fff;
}
.entry-content ol.tba-passos > li::before {
	content: counter(passo);
	position: absolute;
	left: 1rem;
	top: 1rem;
	width: 1.85rem;
	height: 1.85rem;
	border-radius: 999px;
	background: var(--tba-vermelho);
	color: #fff;
	font-weight: 700;
	font-size: .95rem;
	display: flex;
	align-items: center;
	justify-content: center;
}
.entry-content ol.tba-passos h2 { font-size: 1.05rem !important; margin: .2rem 0 .3rem !important; line-height: 1.3; }
.entry-content ol.tba-passos p { margin: 0; font-size: .93rem !important; line-height: 1.55 !important; color: var(--tba-tinta-suave); }

/* O convite ao cadastro no meio da página. */
.entry-content .tba-chamada {
	margin: 1.25rem 0 1.5rem;
	padding: 1rem 1.1rem;
	border-radius: var(--tba-raio);
	background: var(--tba-fundo);
	text-align: center;
}
.entry-content .tba-chamada p { margin: 0 0 .7rem; }
.entry-content .tba-chamada .button { display: inline-block; }
@media (max-width: 767px) { .entry-content .tba-chamada .button { display: block; } }

/* ------------------------------ 4. perguntas frequentes no celular

   Os sete assuntos em pastilhas ocupavam cinco linhas antes da primeira
   pergunta. No celular viram uma faixa que rola de lado, numa linha só. E a
   pergunta que quebra linha fica alinhada ao próprio texto, não ao "+". */
.tba-faq-item summary { display: flex; gap: .6rem; align-items: baseline; }
.tba-faq-item summary::before { flex: 0 0 auto; margin-right: 0; }
@media (max-width: 767px) {
	.tba-faq-indice ul {
		flex-wrap: nowrap;
		overflow-x: auto;
		margin: 0 -1rem 1.25rem;
		padding: 0 1rem .35rem;
		scrollbar-width: none;
	}
	.tba-faq-indice ul::-webkit-scrollbar { display: none; }
	.tba-faq-indice li { flex: 0 0 auto; }
	.tba-faq-indice a { white-space: nowrap; font-size: .85rem; text-decoration: none; }
	.tba-faq-item summary { padding: .65rem 0; }
	.tba-faq-item summary h3 { font-size: .95rem !important; line-height: 1.4; }
	.tba-faq h2 { font-size: 1.1rem !important; }
}

/* ------------------------------ 5. WhatsApp com a marca

   O número sozinho não diz que é WhatsApp. O botão verde com o desenho diz. */
a.tba-botao-whatsapp {
	display: inline-flex;
	align-items: center;
	gap: .6rem;
	padding: .55rem 1rem .55rem .8rem;
	border-radius: 999px;
	background: #25D366;
	color: #fff !important;
	text-decoration: none !important;
	line-height: 1.15;
	font-weight: 700;
	text-align: left;
	box-shadow: 0 1px 2px rgba(23,32,43,.12);
}
a.tba-botao-whatsapp:hover { background: #1EBE5A; color: #fff; }
a.tba-botao-whatsapp small { display: block; font-size: .68rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; opacity: .9; }
.site-footer .tba-rodape-contato li.tba-rodape-zap { margin-bottom: .6rem; }
.site-footer .tba-rodape a.tba-botao-whatsapp { font-size: .95rem; color: #fff; }

/* O flutuante: só no celular, canto esquerdo, na altura do "Atendimento". */
.tba-zap-flutuante { display: none; }
@media (max-width: 767px) {
	.tba-zap-flutuante {
		display: flex;
		align-items: center;
		justify-content: center;
		position: fixed;
		left: 14px;
		bottom: calc(var(--tba-barra-celular, 4.25rem) + 12px);
		z-index: 9998;
		width: 3.25rem;
		height: 3.25rem;
		border-radius: 999px;
		background: #25D366;
		color: #fff;
		box-shadow: 0 6px 18px rgba(23,32,43,.25);
	}
	.tba-zap-flutuante:hover, .tba-zap-flutuante:focus-visible { color: #fff; background: #1EBE5A; }
	/* O "Atendimento" (chat do site) sobe junto: antes ele cobria a barra de
	   ícones de baixo do celular (conta, busca, carrinho). */
	.tba-chat { bottom: calc(var(--tba-barra-celular, 4.25rem) + 12px) !important; right: 14px !important; }
}

/* ------------------------------ 6. entrar ou criar cadastro (celular)

   Duas opções no topo; só o formulário escolhido aparece. No computador os
   dois seguem lado a lado e as opções não aparecem. */
.tba-acesso-escolha { display: none; }
@media (max-width: 767px) {
	.tba-acesso-escolha {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: .5rem;
		margin: 0 0 1.25rem;
	}
	a.tba-acesso-aba {
		display: block;
		padding: .75rem .6rem;
		border: 1px solid var(--tba-borda-forte);
		border-radius: var(--tba-raio);
		background: #fff;
		color: var(--tba-tinta);
		text-align: center;
		text-decoration: none;
		line-height: 1.25;
	}
	a.tba-acesso-aba strong { display: block; font-size: .95rem; }
	a.tba-acesso-aba small { display: block; margin-top: .15rem; font-size: .75rem; color: var(--tba-tinta-fraca); }
	a.tba-acesso-aba[aria-selected="true"] { border-color: var(--tba-vermelho); background: var(--tba-vermelho); color: #fff; }
	a.tba-acesso-aba[aria-selected="true"] small { color: rgba(255,255,255,.85); }
	body.tba-acesso-cadastro #customer_login .u-column1,
	body.tba-acesso-entrar #customer_login .u-column2 { display: none; }
	/* O título da coluna repete a opção escolhida: sai, e a tela começa no
	   primeiro campo. */
	body.tba-acesso-cadastro #customer_login .u-column2 > h2,
	body.tba-acesso-entrar #customer_login .u-column1 > h2 { display: none; }
}

/* ------------------------------ 7. rodapé no celular: blocos, não pilha

   Era tudo centrado, um item embaixo do outro: um empilhamento de texto. Agora
   o contato vem primeiro (o WhatsApp em botão), as três listas de links viram
   duas colunas alinhadas à esquerda, e o mapa fecha. */
@media (max-width: 699px) {
	.site-footer .tba-rodape {
		grid-template-columns: 1fr 1fr;
		gap: 1.25rem 1rem;
		text-align: left;
		justify-items: stretch;
	}
	.site-footer .tba-rodape-marca,
	.site-footer .tba-rodape-local { grid-column: 1 / -1; }
	.site-footer .tba-rodape-marca { text-align: center; }
	.site-footer .tba-rodape-marca .tba-rodape-contato li { display: block; }
	.site-footer .tba-rodape h3 {
		font-size: .72rem;
		font-weight: 700;
		letter-spacing: .07em;
		text-transform: uppercase;
		color: var(--tba-tinta-fraca);
		margin-bottom: .5rem;
	}
	.site-footer .tba-rodape-marca h3 { font-size: 1rem; letter-spacing: 0; text-transform: none; color: var(--tba-tinta); }
	.site-footer .tba-rodape ul li { margin: 0 0 .45rem; }
	.site-footer .tba-rodape a, .site-footer .tba-rodape p { font-size: .9rem; }
	.site-footer .tba-rodape-local { max-width: none; text-align: center; }
	.tba-rodape-atalhos ul { gap: .4rem; }
	.tba-rodape-atalhos a { padding: .32rem .6rem; font-size: .75rem; }
}

/* As opções de acesso são botões, não links de texto: sem sublinhado. */
.woocommerce-account a.tba-acesso-aba,
.woocommerce-account a.tba-acesso-aba strong,
.woocommerce-account a.tba-acesso-aba small { text-decoration: none !important; }
@media (max-width: 767px) { .tba-acesso-escolha { margin-top: .4rem; } }

/* Dentro dos cartões o texto é alinhado à esquerda: centralizado em bloco
   de várias linhas cansa a leitura (a coluna de texto herda centro de outra
   regra). */
.entry-content ol.tba-passos > li,
.entry-content ol.tba-passos h2,
.entry-content ol.tba-passos p,
.entry-content ul.tba-cartoes li,
.entry-content ul.tba-contatos li { text-align: left !important; }

/* Ajustes finos do celular, vistos na página inteira (23/09/2026). */
@media (max-width: 699px) {
	/* Links do rodapé em tinta, sem sublinhado: em vermelho sublinhado, três
	   colunas de link pareciam uma parede de alerta. */
	.site-footer .tba-rodape ul li a:not(.tba-botao-whatsapp) { color: var(--tba-tinta); text-decoration: none; }
	.site-footer .tba-rodape-marca a[href^="mailto:"] { color: var(--tba-tinta); }
	/* "A loja" ocupa a linha inteira, com os links lado a lado, em vez de uma
	   coluna sozinha deixando a outra metade vazia. */
	.site-footer .tba-rodape-loja { grid-column: 1 / -1; }
	.site-footer .tba-rodape-loja ul { display: flex; flex-wrap: wrap; gap: .35rem 1.1rem; }
	.site-footer .tba-rodape-loja ul li { margin: 0; }
	/* O fim da página rola por cima dos botões flutuantes, em vez de ficar
	   escondido embaixo deles. */
	.site-footer { padding-bottom: 5.5rem; }
}
@media (max-width: 767px) {
	.tba-faq-indice a { text-decoration: none !important; }
	.tba-faq h2 { margin-top: 1.5rem !important; }
}

/* Os números da Sobre em peso de número. */
.entry-content ul.tba-numeros strong { font-weight: 800; }

/* Cliente conectado no celular: "Pedido rápido" + carrinho + menu na mesma
   linha da logo. Medido em 375px: os botões pediam 242px e sobravam 229 —
   o carrinho invadia o botão do menu em 7px. O vão entre logo e botões cai
   de 32 para 12px e os botões perdem um pouco de recheio lateral. */
@media (max-width: 767px) {
	.site-header > .col-full { column-gap: .75rem; }
	.site-header .tba-header-cta { gap: .4rem; }
	.site-header .tba-header-cta .button { padding-left: .75rem; padding-right: .75rem; }
}

/* ==========================================================================
   0.17.0 — 23/09/2026: guias de marca
   ========================================================================== */

/* "Sobre a marca", depois da grade na página da marca. A grade continua
   abrindo a página; o texto vem para quem rolou até o fim, e para o buscador. */
.tba-sobre-marca {
	max-width: 46rem;
	margin: 2.5rem auto 1rem;
	padding: 1.5rem 1.5rem 1.25rem;
	border: 1px solid var(--tba-borda);
	border-radius: var(--tba-raio);
	background: var(--tba-fundo);
	text-align: left;
}
.tba-sobre-marca-logo { display: block; width: auto; height: 44px; margin: 0 0 .9rem; }
.tba-sobre-marca h2 { font-size: 1.15rem; margin: 0 0 .5rem; }
.tba-sobre-marca-texto p { font-size: .97rem; line-height: 1.6; color: var(--tba-tinta-suave); margin: 0 0 .7rem; }
.tba-sobre-marca-guia { margin: .9rem 0 0; }
.tba-sobre-marca-guia .button { background: #fff; border: 1px solid var(--tba-borda-forte); color: var(--tba-tinta); }
.tba-sobre-marca-guia .button:hover { border-color: var(--tba-vermelho); color: var(--tba-vermelho); }
@media (max-width: 767px) {
	.tba-sobre-marca { padding: 1.1rem 1rem 1rem; margin-top: 1.75rem; }
	.tba-sobre-marca-guia .button { display: block; text-align: center; }
}

/* A vitrine dentro do guia: quatro colunas na coluna de leitura, duas no
   celular — sempre linhas cheias (8 produtos). */
.entry-content .tba-vitrine-marca { margin: 1rem 0 1.5rem; }
.entry-content .tba-vitrine-marca ul.products {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: .6rem;
	margin: 0;
	padding: 0;
}
.entry-content .tba-vitrine-marca ul.products li.product { padding: .5rem .5rem .6rem; }
.entry-content .tba-vitrine-marca ul.products li.product .woocommerce-loop-product__title { font-size: .8rem !important; line-height: 1.3; }
.entry-content .tba-vitrine-marca ul.products li.product .button { font-size: .78rem; padding: .45rem .5rem; }
.entry-content .tba-vitrine-marca-todos { margin: .75rem 0 0; text-align: right; font-weight: 600; }
@media (max-width: 767px) {
	.entry-content .tba-vitrine-marca ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* A ficha da marca no topo do guia: tabela de duas colunas, leve. */
.entry-content table.tba-ficha-marca { width: 100%; border-collapse: collapse; margin: 1rem 0 1.5rem; font-size: .93rem; }
.entry-content table.tba-ficha-marca th,
.entry-content table.tba-ficha-marca td { padding: .5rem .6rem; border-bottom: 1px solid var(--tba-borda); text-align: left; vertical-align: top; }
.entry-content table.tba-ficha-marca th { width: 34%; color: var(--tba-tinta-fraca); font-weight: 600; background: var(--tba-fundo); }

/* As fontes no fim do guia, em letra menor. */
.entry-content .tba-fontes { margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--tba-borda); }
.entry-content .tba-fontes h2 { font-size: 1rem !important; }
.entry-content .tba-fontes li { font-size: .82rem !important; line-height: 1.5 !important; overflow-wrap: anywhere; }

/* Guia de marca: a logo recortada no lugar da capa quadrada, e os
   subtítulos (h3) do artigo na escala do celular — eles saíam maiores que
   os títulos de seção (h2), porque a escala de 0.16.0 só cobria páginas. */
.single-post .post-thumbnail img.tba-guia-logo, img.tba-guia-logo { display: block; width: auto; height: 48px; max-width: 70%; margin: .5rem 0 1rem; }
@media (max-width: 767px) {
	body.single-post .entry-content h3 { font-size: 1.02rem; line-height: 1.35; margin: 1.2rem 0 .35rem; }
	body.single-post .entry-header h1, body.single-post h1.entry-title { font-size: 1.45rem; line-height: 1.25; }
}

/* O link do produto para o guia da marca: uma linha discreta, depois do
   botão de compra, com a marca em destaque. */
.single-product .tba-produto-guia { margin: .9rem 0 0; font-size: .9rem; }
.single-product .tba-produto-guia a { display: inline-flex; flex-wrap: wrap; gap: .3rem; padding: .5rem .8rem; border: 1px solid var(--tba-borda); border-radius: 999px; background: var(--tba-fundo); color: var(--tba-tinta); text-decoration: none; font-weight: 600; }
.single-product .tba-produto-guia a span { color: var(--tba-tinta-fraca); font-weight: 500; }
.single-product .tba-produto-guia a:hover { border-color: var(--tba-vermelho); color: var(--tba-vermelho); }

/* Guia de marca: "qual produto indicar em cada caso". No computador, tabela
   de três colunas; no celular, cada linha vira um cartão (caso em cima,
   produto e motivo embaixo), porque três colunas em 375px não se leem. */
.entry-content table.tba-casos { width: 100%; border-collapse: collapse; margin: .75rem 0 1.5rem; font-size: .92rem; }
.entry-content table.tba-casos th, .entry-content table.tba-casos td { padding: .55rem .6rem; border-bottom: 1px solid var(--tba-borda); text-align: left; vertical-align: top; }
.entry-content table.tba-casos thead th { background: var(--tba-fundo); font-size: .78rem; letter-spacing: .04em; text-transform: uppercase; color: var(--tba-tinta-fraca); }
.entry-content table.tba-casos td:first-child { font-weight: 600; width: 32%; }
@media (max-width: 767px) {
	.entry-content table.tba-casos thead { display: none; }
	.entry-content table.tba-casos, .entry-content table.tba-casos tbody, .entry-content table.tba-casos tr, .entry-content table.tba-casos td { display: block; width: 100%; }
	.entry-content table.tba-casos tr { margin: 0 0 .6rem; padding: .6rem .75rem; border: 1px solid var(--tba-borda); border-left: 3px solid var(--tba-vermelho); border-radius: var(--tba-raio); }
	.entry-content table.tba-casos td { border: 0; padding: .15rem 0; width: auto !important; }
	.entry-content table.tba-casos td:last-child { color: var(--tba-tinta-suave); font-size: .88rem; }
}

/* ==========================================================================
   0.17.5 — O ITEM QUE TRAVA O PEDIDO APARECE MARCADO NO CARRINHO
   (24/09/2026, pedido do Jean: "imagina que eu tenho 50 produtos no carrinho;
   já poderia vir marcado o produto que deu problema, para ele simplesmente
   rolar a tela e excluir")
   A classe vem do servidor (módulo Carrinho\Pendencias), então vale sem
   JavaScript e depois da atualização sozinha do carrinho.
   ========================================================================== */
.woocommerce-cart-form tr.cart_item.tba-item-problema td { background: #FDEDEF; }
.woocommerce-cart-form tr.cart_item.tba-item-problema td:first-child { box-shadow: inset 4px 0 0 var(--tba-vermelho); }
.woocommerce-cart-form tr.cart_item.tba-item-problema td.product-subtotal { color: var(--tba-tinta-fraca); }
.tba-item-aviso {
	margin: .4rem 0 0;
	font-size: .9rem;
	line-height: 1.35;
	color: #A3162B;
	scroll-margin-top: 6rem;
}
.tba-item-aviso::before { content: "⚠ "; }
.tba-item-aviso a.tba-item-ajustar { margin-left: .35rem; font-weight: 600; color: #A3162B; }
/* A lixeira do item com problema é o próximo passo: fica em destaque. */
.woocommerce-cart-form tr.tba-item-sem-estoque td.product-remove a.remove {
	background: var(--tba-vermelho);
	color: #fff;
}
.woocommerce-cart-form tr.tba-item-sem-estoque td.product-remove a.remove:hover,
.woocommerce-cart-form tr.tba-item-sem-estoque td.product-remove a.remove:focus-visible { background: #9E1629; color: #fff; }
/* O aviso único do topo: nomes que levam à linha e botões que resolvem tudo. */
.tba-pendencias a { color: inherit; text-decoration: underline; }
.tba-pendencias-botoes { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .6rem; }
.tba-pendencias-botoes a.button.tba-resolver {
	background: #fff;
	color: var(--tba-vermelho);
	border: 0;
	font-weight: 700;
	text-decoration: none;
}
@media (max-width: 767px) {
	/* No celular a linha vira cartão, com fundo branco próprio. */
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item.tba-item-problema {
		background: #FDEDEF;
		box-shadow: inset 4px 0 0 var(--tba-vermelho);
	}
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item.tba-item-problema td:first-child { box-shadow: none; }
	/* Medido em 375px: a coluna do nome tinha 118px e a frase do aviso
	   quebrava em 6 linhas. No cartão com problema, o nome ocupa também a
	   coluna da lixeira, e a lixeira fica presa no canto do cartão. */
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item.tba-item-problema {
		position: relative;
		grid-template-areas:
			"foto nome nome"
			"foto preco preco"
			"qtd  qtd  subtotal";
	}
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item.tba-item-problema td.product-name { padding-right: 2.9rem !important; }
	/* O botão, e não a célula: a célula mede 0×0 neste cartão, e posicionada
	   ela deixava a lixeira 5px para fora do cartão (medido). */
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item.tba-item-problema td.product-remove { position: static; margin: 0; }
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item.tba-item-problema td.product-remove a.remove {
		position: absolute;
		top: .45rem;
		right: .45rem;
	}
	/* O aviso vem abaixo do nome, onde a lixeira já não está: usa a largura
	   toda do cartão. */
	.tba-item-aviso { font-size: .85rem; margin-top: .75rem; margin-right: -2.9rem; }
}

/* 0.17.6–0.17.9 — CLIENTE LOGADO (1100–2199px): A BUSCA VOLTA AO CENTRO.
   Medido em 1440px: os botões da direita pediam 616px e cada ponta da grade
   tinha 408 com a busca no meio. Sem ceder nada, ou a busca cobria o "Pedido
   rápido" (antes) ou ia 263px para a esquerda (com as pontas protegidas).
   Cede o que é repetido: o botão "Minha conta" — o mesmo destino está no menu
   e no "conectado como" — e a palavra "Carrinho", que o ícone já diz (ela
   continua para leitor de tela). Vale até 2199px: em 1920 os botões inteiros
   também passavam da ponta (a busca desviava 67px). Medido depois: desvio 0
   em 1280, 1440, 1600 e 1920; em 1100–1199 a busca desvia, sem cobrir nada. */
@media (min-width: 1100px) and (max-width: 2199px) {
	.logged-in .site-header > .col-full { column-gap: 1.25rem; grid-template-columns: minmax(max-content, 1fr) minmax(0, 28rem) minmax(max-content, 1fr); }
	.logged-in .site-header .tba-header-cta a.tba-simples[href*="minha-conta"] { display: none; }
	.logged-in .site-header .tba-carrinho .tba-carrinho-texto {
		position: absolute !important;
		width: 1px; height: 1px; overflow: hidden;
		clip: rect(1px, 1px, 1px, 1px);
		white-space: nowrap;
	}
}
/* A esquerda reserva o mesmo que os botões compactos da direita pedem
   (medido: 431px ≈ 27rem), e quem cede é a busca — assim ela fica no eixo.
   Se a direita crescer (nome longo, valor de cinco dígitos), ela ganha o
   espaço e a busca desvia uns pixels, mas nunca volta a ficar por baixo. */
@media (min-width: 1200px) and (max-width: 1699px) {
	.logged-in .site-header > .col-full { grid-template-columns: minmax(27rem, 1fr) minmax(0, 28rem) minmax(max-content, 1fr); }
}
@media (min-width: 1700px) and (max-width: 2199px) {
	.logged-in .site-header > .col-full { grid-template-columns: minmax(27rem, 1fr) minmax(0, 34rem) minmax(max-content, 1fr); }
}

/* -------------------------------------------- senha perdida (01/10/2026)
   Uma coluna estreita e centrada: era um campo só esticado em 1.100px, com o
   título longe do formulário. Vale também para a tela de criar a senha nova
   (mesmo endpoint, com a chave do link). */
body.woocommerce-lost-password .site-main > article.page { max-width: 32rem; margin-left: auto; margin-right: auto; }
body.woocommerce-lost-password .entry-header { text-align: left; }
body.woocommerce-lost-password .entry-title { font-size: clamp(1.45rem, 1.1rem + 1vw, 1.9rem); text-align: left; }
body.woocommerce-lost-password form.lost_reset_password { max-width: none; }
body.woocommerce-lost-password form.lost_reset_password .form-row { width: 100%; float: none; }
body.woocommerce-lost-password form.lost_reset_password .button { width: 100%; padding: .85rem 1rem; }
/* A trilha "Início ›" nas telas de conta: o woocommerce.css do pai põe 3.7em
   embaixo dela a partir de 768px (a mesma família da nona armadilha). */
body.woocommerce-account .storefront-breadcrumb { margin-bottom: .4rem; padding-bottom: .5rem; }
