/*
Theme Name: Astra Child - Loja
Description: Tema filho do Astra para a loja de acessórios de laboratório veterinário: template canvas de landing, patterns "Landing de Produto" e "Vitrine".
Template: astra
Version: 1.10.1
Requires at least: 6.5
Requires PHP: 8.1
Text Domain: astra-child-loja
*/

/* Nunito (OFL) hospedada no tema: nenhuma requisição do visitante vai ao Google. */
@font-face {
	font-family: 'Nunito';
	font-style: normal;
	font-weight: 400 800;
	font-display: swap;
	src: url('assets/fonts/nunito-variable-latin-ext.woff2') format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'Nunito';
	font-style: normal;
	font-weight: 400 800;
	font-display: swap;
	src: url('assets/fonts/nunito-variable-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
	--loja-max: 1100px;
	--loja-font: 'Nunito', ui-rounded, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

	/* Paleta oficial (Brand Kit): 70% neutros, 20% roxo/violeta, 10% magenta/laranja. */
	--cc-purple: #6A00D9;
	--cc-violet: #8A20F0;
	--cc-magenta: #D42BE8;
	--cc-orange: #FF8A00;
	--cc-night: #050020;
	--cc-charcoal: #17152D;
	--cc-offwhite: #F2F2F2;
	--cc-text: #2A2838;
	--cc-text-secondary: #666477;
	--cc-border: #E7E4EF;
	--cc-gradient: linear-gradient(135deg, #6A00D9 0%, #D42BE8 55%, #FF8A00 100%);
	--cc-gradient-purple: linear-gradient(135deg, #6A00D9 0%, #8A20F0 100%);
	--cc-gradient-highlight: linear-gradient(135deg, #8A20F0 0%, #D42BE8 55%, #FF8A00 100%);

	/* Nomes que o resto do CSS já usa, apontando pra paleta nova. */
	--loja-bg: #FFFFFF;
	--loja-surface: #FFFFFF;
	--loja-soft: #F3EEFD; /* roxo claro, mantido do visual anterior */
	--loja-soft-2: rgba(255, 138, 0, 0.08);
	--loja-soft-3: rgba(212, 43, 232, 0.07);
	--loja-ink: var(--cc-charcoal);
	--loja-text: var(--cc-text);
	--loja-muted: var(--cc-text-secondary);
	--loja-accent: var(--cc-purple);
	--loja-accent-dark: var(--cc-purple);
	--loja-accent-hover: var(--cc-violet);
	--loja-brand-dark: var(--cc-night);
	--loja-coral: var(--cc-orange);
	--loja-pink: var(--cc-magenta);
	--loja-lilac: #E3D5FB;
	--loja-sun: var(--cc-orange);
	--loja-gradient: var(--cc-gradient);
	--loja-gradient-hover: linear-gradient(135deg, #8A20F0 0%, #D42BE8 55%, #FF8A00 100%);
	--loja-line: var(--cc-border);
	--loja-radius: 20px;
	--loja-shadow: 0 12px 32px rgba(23, 21, 45, 0.1);
}

/* ===== Base (vale para o template canvas e para páginas do Astra) ===== */
body,
button,
input,
select,
textarea,
.wp-block-button__link {
	font-family: var(--loja-font);
}
body.loja-landing {
	margin: 0;
	color: var(--loja-text);
	background: var(--loja-bg);
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}
body.loja-landing h1,
body.loja-landing h2,
body.loja-landing h3 {
	font-weight: 800;
	letter-spacing: -0.01em;
	line-height: 1.15;
	color: var(--loja-ink);
}
body.loja-landing h2 {
	font-size: clamp(1.6rem, 3vw, 2.2rem);
	margin: 0 0 1.5rem;
}
body.loja-landing a {
	color: var(--loja-accent-dark);
}
body.loja-landing img {
	max-width: 100%;
	height: auto;
}

/* ===== Barra superior, rodapé ===== */
.loja-landing__topbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	max-width: var(--loja-max);
	margin: 0 auto;
	padding: 0.9rem 1.25rem;
}
.loja-landing__brand {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-weight: 800;
	font-size: 1.15rem;
	text-decoration: none;
	color: var(--loja-ink);
}
.loja-landing__brand img {
	max-height: 44px;
	width: auto;
	display: block;
}
.loja-landing__brand-paw {
	width: 26px;
	height: 26px;
	color: var(--loja-coral);
}
.loja-landing__aside {
	display: flex;
	align-items: center;
	gap: 0.9rem;
}
.loja-landing__secure {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	font-size: 0.8rem;
	font-weight: 700;
	color: var(--loja-accent-dark);
	background: var(--loja-soft);
	border-radius: 999px;
	padding: 0.35rem 0.75rem;
}
.loja-landing__social {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
}
.loja-landing__social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 999px;
	color: var(--loja-ink);
	background: var(--loja-soft);
	transition: color 0.15s ease, background 0.15s ease;
}
.loja-landing__social a:hover {
	color: #fff;
	background: var(--loja-accent-dark);
}
.loja-landing__cart {
	position: relative;
}
.loja-landing__cart-count {
	position: absolute;
	top: -4px;
	right: -4px;
	min-width: 16px;
	height: 16px;
	padding: 0 3px;
	border-radius: 999px;
	background: var(--loja-gradient);
	color: #fff;
	font-size: 0.65rem;
	font-weight: 800;
	line-height: 16px;
	text-align: center;
}
.loja-landing__footer {
	max-width: var(--loja-max);
	margin: 0 auto;
	padding: 2.5rem 1.25rem 6rem;
	font-size: 0.85rem;
	color: var(--loja-muted);
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem 1.5rem;
	justify-content: space-between;
	border-top: 1px solid var(--loja-line);
}
@media (min-width: 783px) {
	.loja-landing__footer {
		max-width: calc(var(--loja-max) - 150px);
	}
}
.loja-landing__footer a {
	color: inherit;
	margin-left: 1rem;
}

/* ===== Seções ===== */
.loja-hero,
.loja-section {
	padding: 4rem 1.25rem;
}
.loja-hero {
	background:
		radial-gradient(60% 80% at 100% 0%, var(--loja-soft-2) 0%, transparent 60%),
		radial-gradient(50% 70% at 0% 100%, var(--loja-soft-3) 0%, transparent 60%),
		var(--loja-soft);
	padding-top: 2.5rem;
}
.loja-eyebrow {
	display: inline-block;
	font-size: 0.8rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--loja-accent-dark);
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: 999px;
	padding: 0.3rem 0.85rem;
	margin: 0 0 1rem;
}
/* Na vitrine o eyebrow pede centralizado (has-text-align-center); como o
   selo é inline-block, text-align:center nele só centraliza o texto por
   dentro, não o próprio selo — por isso o display:table + margin:auto só
   nessa combinação (a landing de produto usa .loja-eyebrow sozinho, à
   esquerda, e não pode ser afetada). */
.loja-eyebrow.has-text-align-center {
	display: table;
	margin-left: auto;
	margin-right: auto;
}
.loja-hero h1 {
	font-size: clamp(2rem, 4.6vw, 3.4rem);
	margin: 0 0 0.75rem;
}
.loja-hero__subtitle {
	font-size: 1.15rem;
	color: var(--loja-muted);
	max-width: 34rem;
}
.loja-vitrine-hero .loja-hero__subtitle {
	margin-left: auto;
	margin-right: auto;
}
.loja-hero__media {
	position: relative;
}
.loja-hero__image img {
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
	width: 100%;
	display: block;
}
.loja-badge {
	position: absolute;
	top: 1rem;
	left: 1rem;
	margin: 0;
	background: var(--loja-gradient);
	color: #fff;
	font-weight: 800;
	font-size: 0.8rem;
	letter-spacing: 0.03em;
	padding: 0.4rem 0.8rem;
	border-radius: 999px;
	box-shadow: var(--loja-shadow);
}
.loja-hero__note {
	color: var(--loja-muted);
	font-size: 0.9rem;
}

/* Prévia das cores escolhidas (interna/externa), logo abaixo da foto
 * principal — atualizada via JS conforme o cliente clica nas bolinhas. */
.loja-cor-preview {
	display: flex;
	gap: 0.75rem;
	margin-top: 0.75rem;
}
/* Versão de dentro do formulário: mesma prévia. Aparece sempre, exceto no
 * hero em telas largas — lá já tem a outra versão do lado da foto principal;
 * as duas juntas seriam repetição. No celular (media query abaixo) volta a
 * aparecer mesmo dentro do hero, porque a foto principal fica lá embaixo. */
.loja-cor-preview--inline {
	display: flex;
	flex-basis: 100%;
}
.loja-hero .loja-cor-preview--inline {
	display: none;
}
.loja-cor-preview__item {
	flex: 1 1 0;
	margin: 0;
	text-align: center;
}
.loja-cor-preview__item img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: contain;
	background: var(--loja-surface);
	padding: 14px;
	box-sizing: border-box;
	border-radius: 14px;
	box-shadow: var(--loja-shadow);
	display: block;
}
.loja-cor-preview__item figcaption {
	margin-top: 0.35rem;
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--loja-muted);
}

/* Preço e parcelas */
.loja-preco-wrap {
	margin: 0.75rem 0 1.25rem;
}
.loja-preco {
	font-size: 2.1rem;
	font-weight: 800;
	line-height: 1.1;
	margin: 0;
	color: var(--loja-ink);
}
.loja-preco del {
	font-size: 0.55em;
	color: var(--loja-muted);
	font-weight: 400;
	margin-right: 0.35em;
	text-decoration-color: var(--loja-coral);
}
.loja-preco ins {
	text-decoration: none;
	color: var(--loja-accent-dark);
}
.loja-preco__parcelas {
	margin: 0.25rem 0 0;
	font-size: 0.95rem;
	font-weight: 700;
	color: var(--loja-muted);
}
.loja-preco--missing {
	color: #b42318;
	font-size: 1rem;
}

/* Botões: gradiente laranja->rosa, igual ao "2" do logo. */
.loja-cta .wp-block-button__link,
.loja-personalizar button,
.loja-card__button {
	background: var(--loja-gradient);
	color: #fff;
	font-size: 1.05rem;
	font-weight: 800;
	padding: 0.95rem 2.1rem;
	border-radius: 999px;
	border: 0;
	box-shadow: 0 8px 20px rgba(106, 0, 217, 0.25);
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.loja-cta .wp-block-button__link:hover,
.loja-personalizar button:hover,
.loja-card__button:hover {
	background: var(--loja-gradient-hover);
	color: #fff;
	transform: translateY(-1px);
	box-shadow: 0 10px 24px rgba(138, 32, 240, 0.35);
}

/* Formulário de personalização (nome que vai gravado no produto) */
.loja-personalizar {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 0.6rem 0.9rem;
	margin: 1rem 0 0;
	padding: 1rem 1.1rem;
	background: var(--loja-soft);
	border: 1px solid rgba(0, 0, 0, 0.06);
	border-radius: 16px;
}
.loja-personalizar.has-text-align-center {
	justify-content: center;
	text-align: left;
}
/* ":not(.loja-swatch)" — sem isso, essa regra genérica (pensada pro label
 * comum, tipo "Nome do veterinário") também pega as bolinhas de cor: como
 * ".loja-swatch" não é mais escopado em ".loja-personalizar" (seção da
 * venda cruzada do /cart reusa o mesmo componente), a especificidade dele
 * sozinho (1 classe) perde pra esta aqui (1 classe + 1 tipo), e cada bolinha
 * vira uma linha inteira sozinha. */
.loja-personalizar label:not(.loja-swatch) {
	flex-basis: 100%;
	font-size: 0.85rem;
	font-weight: 800;
	color: var(--loja-ink);
}
.loja-personalizar input[type="text"] {
	flex: 1 1 100%;
	min-width: 0;
	height: auto;
	padding: 0.7rem 0.9rem;
	font-size: 1rem;
	border: 1px solid rgba(0, 0, 0, 0.15);
	border-radius: 10px;
	background: var(--loja-surface);
}
.loja-personalizar button {
	flex: 0 0 100%;
	width: 100%;
	cursor: pointer;
	animation: loja-cta-pulse 1.8s ease-in-out infinite;
}
/* "(opcional)" ao lado do rótulo do campo de personalização — não pesado
 * como o resto do label. */
.loja-opcional {
	font-weight: 400;
	font-size: 0.78rem;
	color: var(--loja-muted);
	text-transform: none;
}
@keyframes loja-cta-pulse {
	0%,
	100% {
		transform: scale(1);
		box-shadow: 0 8px 20px rgba(106, 0, 217, 0.25), 0 0 0 0 rgba(138, 32, 240, 0.35);
	}
	50% {
		transform: scale(1.015);
		box-shadow: 0 8px 20px rgba(106, 0, 217, 0.25), 0 0 0 10px rgba(138, 32, 240, 0);
	}
}

/* Grupo de cor: bolinha de verdade (radio escondido + span colorida), com
 * nome num badge que aparece ao passar o mouse/focar — sem select. */
.loja-var-label {
	flex-basis: 100%;
	font-size: 0.85rem;
	font-weight: 800;
	color: var(--loja-ink);
}
.loja-swatches {
	flex-basis: 100%;
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin: 0 0 0.4rem;
}
/* Sem escopo em ".loja-personalizar": reusado também nas sugestões de venda
 * cruzada do /cart (mu-plugins/loja-core.php, seção 21), não só no
 * formulário de compra personalizada da landing. */
.loja-swatch {
	position: relative;
	flex-basis: auto;
	display: inline-flex;
	font-size: 0;
	font-weight: 400;
	cursor: pointer;
}
.loja-swatch input {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
}
.loja-swatch__dot {
	display: block;
	width: 34px;
	height: 34px;
	border-radius: 999px;
	border: 2px solid #fff;
	box-shadow: 0 0 0 1.5px rgba(23, 21, 45, 0.18);
	transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.loja-swatch input:checked + .loja-swatch__dot {
	box-shadow: 0 0 0 2.5px var(--loja-accent);
	transform: scale(1.08);
}
.loja-swatch input:focus-visible + .loja-swatch__dot {
	outline: 2px solid var(--loja-accent-dark);
	outline-offset: 2px;
}
.loja-swatch:hover .loja-swatch__dot {
	transform: scale(1.08);
}
.loja-swatch__tip {
	position: absolute;
	bottom: 100%;
	left: 50%;
	transform: translate(-50%, -6px);
	background: var(--loja-ink);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 700;
	line-height: 1;
	white-space: nowrap;
	padding: 0.35rem 0.6rem;
	border-radius: 999px;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.12s ease, transform 0.12s ease;
	z-index: 1;
}
.loja-swatch__tip::after {
	content: "";
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX(-50%);
	border: 4px solid transparent;
	border-top-color: var(--loja-ink);
}
.loja-swatch:hover .loja-swatch__tip,
.loja-swatch input:focus-visible ~ .loja-swatch__tip {
	opacity: 1;
	transform: translate(-50%, -10px);
}

/* Campo "qual cor você deseja?", só aparece quando a bolinha "Personalizada"
 * está marcada naquele grupo (ver loja_core_variation_picker_html). */
.loja-custom-color {
	flex-basis: 100%;
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	margin: -0.2rem 0 0.2rem;
}
.loja-custom-color[hidden] {
	display: none;
}
.loja-custom-color label {
	font-size: 0.8rem;
	font-weight: 700;
	color: var(--loja-muted);
}
.loja-custom-color input[type="text"] {
	flex: 0 0 auto;
	width: 100%;
	height: auto;
	padding: 0.7rem 0.9rem;
	font-size: 1rem;
	border: 1px solid rgba(106, 0, 217, 0.3);
	border-radius: 10px;
	background: var(--loja-surface);
	box-sizing: border-box;
}
.loja-custom-color__aviso {
	font-size: 0.74rem;
	font-weight: 400;
	color: var(--loja-muted);
	line-height: 1.4;
}

/* Nome gravado vs. logo na tampa: são alternativas (ver
 * loja_core_personalizacao_toggle_html). */
.loja-personalizacao-tipo {
	flex-basis: 100%;
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem 1.2rem;
	margin: 0 0 0.2rem;
}
.loja-tipo-opcao {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.85rem;
	font-weight: 700;
	color: var(--loja-ink);
	cursor: pointer;
}
.loja-personalizacao-campo {
	flex-basis: 100%;
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
}
.loja-personalizacao-campo[hidden] {
	display: none;
}
.loja-logo-arquivo {
	font-size: 0.9rem;
}
.loja-logo-aviso {
	font-size: 0.74rem;
	font-weight: 400;
	color: var(--loja-muted);
}
.loja-logo-status {
	font-size: 0.8rem;
	font-weight: 700;
	color: var(--loja-accent-dark);
}

/* Brinde por período: [loja_brinde estilo="faixa"] (compacto, perto do preço)
 * e [loja_brinde estilo="destaque"] (bloco maior, seção própria). */
.loja-brinde--faixa {
	display: flex;
	align-items: center;
	gap: 0.7rem;
	margin: 1rem 0 0;
	padding: 0.6rem 1rem 0.6rem 0.6rem;
	background: var(--loja-soft-2);
	border: 1px solid rgba(255, 138, 0, 0.35);
	border-radius: 999px;
	max-width: fit-content;
}
.loja-brinde--faixa img {
	width: 40px;
	height: 40px;
	border-radius: 999px;
	object-fit: cover;
	flex: 0 0 auto;
}
.loja-brinde--faixa span {
	font-size: 0.9rem;
	color: var(--loja-ink);
}
.loja-brinde--faixa strong {
	color: var(--loja-accent-dark);
}

.loja-brinde--destaque {
	display: flex;
	align-items: center;
	gap: 1.75rem;
	max-width: var(--loja-max);
	margin: 0 auto;
	padding: 1.75rem;
	background: linear-gradient(135deg, var(--loja-soft-2) 0%, var(--loja-soft) 100%);
	border: 1px solid rgba(255, 138, 0, 0.35);
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
}
.loja-brinde__media {
	flex: 0 0 auto;
}
.loja-brinde__media img {
	width: 120px;
	height: 120px;
	border-radius: 16px;
	object-fit: cover;
	display: block;
}
.loja-brinde__tag {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #17152D;
	background: var(--loja-sun);
	padding: 0.3rem 0.7rem;
	border-radius: 999px;
	margin-bottom: 0.5rem;
}
.loja-brinde__texto h3 {
	margin: 0 0 0.35rem;
	font-size: 1.3rem;
}
.loja-brinde__texto p {
	margin: 0;
	color: var(--loja-muted);
}

/* Prazo da promoção: badge vermelho pulsante, pra passar urgência de verdade. */
.loja-brinde__cor {
	display: block;
	margin-top: 0.15rem;
	opacity: 0.8;
	font-size: 0.85em;
}
.loja-brinde__prazo {
	display: inline-block;
	margin: 0 0 0.5rem 0.5rem;
	padding: 0.3rem 0.7rem;
	background: #ef4444;
	color: #fff;
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	border-radius: 999px;
	animation: loja-brinde-pulse 1.6s ease-in-out infinite;
}
@keyframes loja-brinde-pulse {
	0%,
	100% {
		transform: scale(1);
		box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.55);
	}
	50% {
		transform: scale(1.06);
		box-shadow: 0 0 0 7px rgba(239, 68, 68, 0);
	}
}
@media (prefers-reduced-motion: reduce) {
	.loja-brinde__prazo {
		animation: none;
	}
}
@media (max-width: 600px) {
	.loja-brinde--destaque {
		flex-direction: column;
		text-align: center;
		gap: 1rem;
	}
}

/* Selos */
.loja-selos {
	list-style: none;
	margin: 1.25rem 0 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.25rem;
}
.loja-vitrine-hero .loja-selos {
	justify-content: center;
}
.loja-selos__item {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.85rem;
	font-weight: 700;
	color: var(--loja-muted);
}
.loja-selos__icon {
	color: var(--loja-accent);
	flex: none;
}

/* Benefícios e "por que" */
.loja-benefits .wp-block-column,
.loja-why .wp-block-column {
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	padding: 1.75rem 1.5rem;
	box-shadow: var(--loja-shadow);
}
.loja-benefits h3,
.loja-why h3 {
	margin: 0 0 0.5rem;
	font-size: 1.15rem;
}
.loja-benefits p,
.loja-why p {
	margin: 0;
	color: var(--loja-muted);
}
.loja-icon {
	display: inline-grid;
	place-items: center;
	width: 48px;
	height: 48px;
	border-radius: 14px;
	background: var(--loja-soft);
	font-size: 1.5rem;
	margin-bottom: 0.9rem;
}

/* Detalhes + especificações */
.loja-details {
	background: var(--loja-surface);
}
.loja-details__image img {
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
}
.loja-list {
	padding-left: 0;
	list-style: none;
	margin: 1rem 0 0;
}
.loja-list li {
	position: relative;
	padding-left: 1.75rem;
	margin-bottom: 0.6rem;
}
.loja-list li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0.45em;
	width: 0.9rem;
	height: 0.9rem;
	border-radius: 50%;
	background: var(--loja-accent);
	box-shadow: inset 0 0 0 3px #fff, 0 0 0 1px var(--loja-accent);
}
.loja-specs table {
	width: 100%;
	border-collapse: collapse;
	border: 0;
	font-size: 0.95rem;
}
.loja-specs td {
	border: 0;
	border-bottom: 1px solid var(--loja-line);
	padding: 0.7rem 0.5rem;
	vertical-align: top;
}
.loja-specs td:first-child {
	font-weight: 800;
	width: 34%;
	color: var(--loja-ink);
}

/* Galeria */
.loja-gallery {
	background: var(--loja-soft-3);
}
.loja-gallery .wp-block-gallery img {
	border-radius: var(--loja-radius);
}

/* Depoimentos */
.loja-quote {
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-left: 5px solid var(--loja-sun);
	border-radius: var(--loja-radius);
	padding: 1.5rem 1.5rem 1.25rem;
	margin: 0;
	box-shadow: var(--loja-shadow);
}
.loja-quote p {
	margin: 0 0 0.75rem;
	font-size: 1.05rem;
}
.loja-quote cite {
	font-style: normal;
	font-weight: 700;
	font-size: 0.9rem;
	color: var(--loja-muted);
}

/* FAQ */
.loja-faq .wp-block-details {
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: 14px;
	padding: 0.9rem 1.2rem;
	margin-bottom: 0.75rem;
}
.loja-faq .wp-block-details summary {
	cursor: pointer;
	font-weight: 800;
	font-size: 1.05rem;
}
.loja-faq .wp-block-details p {
	margin: 0.75rem 0 0;
	color: var(--loja-muted);
}

/* CTA final: o roxo escuro do fundo do logo, com o mesmo brilho laranja->rosa do "2". */
.loja-final-cta {
	background:
		radial-gradient(55% 85% at 100% 100%, rgba(212, 43, 232, 0.35) 0%, transparent 60%),
		radial-gradient(45% 70% at 0% 0%, rgba(255, 138, 0, 0.22) 0%, transparent 60%),
		var(--loja-brand-dark);
	color: #fff;
	text-align: center;
	border-radius: var(--loja-radius) var(--loja-radius) 0 0;
}
body.loja-landing .loja-final-cta h2,
.loja-final-cta .loja-preco,
.loja-final-cta .loja-preco ins {
	color: #fff;
}
.loja-final-cta .loja-preco del,
.loja-final-cta .loja-preco__parcelas,
.loja-final-cta p {
	color: var(--loja-lilac);
}

/* ===== Vitrine (home): grade do shortcode [products] ===== */
.loja-produtos ul.products {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.loja-produtos ul.products::before,
.loja-produtos ul.products::after {
	display: none;
}
.loja-produtos ul.products li.product {
	width: auto !important;
	float: none !important;
	margin: 0 !important;
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	padding: 1rem 1rem 1.25rem;
	box-shadow: var(--loja-shadow);
	display: flex;
	flex-direction: column;
	text-align: center;
	transition: transform 0.15s ease;
}
.loja-produtos ul.products li.product:hover {
	transform: translateY(-3px);
}
.loja-produtos ul.products li.product img {
	border-radius: 14px;
	width: 100%;
	height: auto;
	margin-bottom: 0.9rem;
}
.loja-produtos ul.products li.product .woocommerce-loop-product__title {
	font-size: 1.1rem;
	font-weight: 800;
	margin: 0 0 0.35rem;
	padding: 0;
	color: var(--loja-ink);
}
.loja-produtos ul.products li.product .price {
	font-size: 1.15rem;
	font-weight: 800;
	color: var(--loja-accent-dark);
	margin-bottom: 0.9rem;
	display: block;
}
.loja-produtos ul.products li.product .price del {
	color: var(--loja-muted);
	font-weight: 400;
	font-size: 0.85em;
}
.loja-produtos ul.products li.product .price ins {
	text-decoration: none;
}
.loja-produtos ul.products li.product a.button.loja-card__button {
	margin-top: auto;
	align-self: center;
	text-decoration: none;
	font-size: 0.95rem;
	padding: 0.7rem 1.6rem;
	border-radius: 999px;
	background-color: var(--loja-accent) !important;
	color: #fff !important;
}
.loja-produtos ul.products li.product a.button.loja-card__button:hover {
	background-color: var(--loja-accent-dark) !important;
}
.loja-produtos ul.products li.product .ast-woo-product-category,
.loja-produtos ul.products li.product .star-rating {
	display: none;
}
.loja-produtos ul.products li.product .onsale {
	position: absolute;
	top: 1.4rem;
	left: 1.4rem;
	right: auto !important;
	bottom: auto !important;
	width: max-content !important;
	max-width: none !important;
	transform: none !important;
	display: inline-block;
	text-align: center;
	background: var(--loja-gradient);
	color: #fff;
	border-radius: 999px;
	padding: 0.25rem 0.7rem;
	font-weight: 800;
	font-size: 0.75rem;
	min-height: 0;
	min-width: 0;
	line-height: 1.6;
	margin: 0;
	z-index: 2;
}
.loja-produtos ul.products li.product {
	position: relative;
}
/* A faixa "Promoção" vinha azul (cor padrão do Astra) em qualquer card fora
 * da grade da home — ex.: "Você pode se interessar por..." no carrinho e nos
 * relacionados. Sobrescreve só a cor, sem mexer em posição/tamanho (que o
 * Astra já resolve razoavelmente em contextos menores), pra manter a marca
 * consistente em toda faixa de promoção do site. */
.woocommerce span.onsale {
	background-color: var(--loja-accent-dark) !important;
	background: var(--loja-gradient) !important;
	color: #fff !important;
}

/* ===== Barra fixa de compra (telas pequenas) ===== */
.loja-sticky-cta {
	display: none;
	position: fixed;
	inset: auto 0 0 0;
	z-index: 50;
	background: rgba(255, 255, 255, 0.96);
	backdrop-filter: blur(8px);
	border-top: 1px solid var(--loja-line);
	padding: 0.6rem 1rem;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	box-shadow: 0 -8px 24px rgba(34, 48, 58, 0.08);
}
.loja-sticky-cta .loja-preco {
	font-size: 1.2rem;
	margin: 0;
	white-space: nowrap;
}
/* Só o preço final aqui — o "de" riscado (".loja-preco del") já aparece no
 * formulário logo acima; na barra, largura é curta (preço + botão na mesma
 * linha) e os dois preços juntos quebravam em 2 linhas, deixando a barra
 * alta e apertada. */
.loja-sticky-cta .loja-preco del {
	display: none;
}
.loja-sticky-cta .wp-block-button__link {
	padding: 0.65rem 1.4rem;
	font-size: 1rem;
	box-shadow: none;
	flex-shrink: 0;
	white-space: nowrap;
}

@media (max-width: 782px) {
	.loja-sticky-cta {
		display: flex;
	}
	/* Sem isso, o botão flutuante de "voltar ao topo" do Astra (sempre fixo
	 * em bottom:30px) fica em cima do preço/botão da barra de compra —
	 * sobe ele pra ficar acima da barra. */
	body.loja-landing:has(.loja-sticky-cta) .ast-scroll-to-top-right {
		bottom: 86px;
	}
	.loja-hero,
	.loja-section {
		padding: 2.5rem 1.1rem;
	}
	.loja-landing__secure {
		display: none;
	}
	.loja-produtos ul.products {
		/* !important: o CSS de compatibilidade do Astra
		 * (.woocommerce ul.products.columns-3) é mais específico que este
		 * seletor e ganha da cascata, mesmo aqui dentro do media query. */
		grid-template-columns: 1fr !important;
	}
	.loja-hero .wp-block-columns {
		flex-direction: column-reverse;
	}
	.loja-hero .loja-cor-preview--inline {
		display: flex;
	}
	.loja-hero__media .loja-cor-preview:not(.loja-cor-preview--inline) {
		display: none;
	}
}
@media (min-width: 783px) and (max-width: 1024px) {
	.loja-produtos ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
}

/* ===== Carrinho, checkout e minha conta (WooCommerce) =====
 * Estas páginas usam o template canvas (cabeçalho/rodapé da marca), mas o
 * formulário em si é gerado pelo WooCommerce/Asaas/Melhor Envio — o CSS
 * abaixo só veste esse HTML, sem mudar estrutura ou comportamento. */
.woocommerce-cart .loja-landing__main,
.woocommerce-checkout .loja-landing__main,
.woocommerce-account .loja-landing__main,
.woocommerce-shop .loja-landing__main {
	max-width: var(--loja-max);
	margin: 0 auto;
	padding: 2rem 1.25rem 4rem;
}
.woocommerce-cart .page-title,
.woocommerce-checkout .page-title,
.woocommerce-account .page-title,
.woocommerce-shop .page-title,
.woocommerce-cart h1.entry-title,
.woocommerce-checkout h1.entry-title,
.woocommerce-account h1.entry-title,
.woocommerce-shop h1.entry-title {
	font-size: clamp(1.6rem, 3vw, 2.2rem);
	font-weight: 800;
	color: var(--loja-ink);
	margin: 0 0 1.5rem;
}

/* Avisos (erro, sucesso, informação) */
.woocommerce-error,
.woocommerce-message,
.woocommerce-info,
.woocommerce-notice {
	list-style: none;
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-left: 4px solid var(--loja-accent);
	border-radius: 12px;
	padding: 1rem 1.25rem;
	margin: 0 0 1.5rem;
	font-weight: 600;
	color: var(--loja-ink);
}
.woocommerce-error {
	border-left-color: #dc2626;
}
.woocommerce-error::before,
.woocommerce-message::before,
.woocommerce-info::before {
	display: none;
}

/* Loja só vende pro Brasil ("country_to_state--single", só 1 país liberado
 * em "Vender para países específicos") — o campo continua enviando "BR" no
 * valor, só não tem por que o cliente ver/escolher um select com 1 opção
 * só. "!important": o checkout.js seta "style=display:block" direto nesse
 * elemento (normaliza visibilidade de ".address-field" sempre que o
 * formulário atualiza) — sem brigar com nenhum estado alternativo (esse
 * campo nunca precisa aparecer aqui), só sobrepor. */
#billing_country_field {
	display: none !important;
}

/* Campos de formulário (dados de entrega, CPF/CNPJ, cartão) */
.woocommerce form .form-row label {
	font-weight: 700;
	font-size: 0.9rem;
	color: var(--loja-ink);
	margin-bottom: 0.3rem;
	display: block;
}
.woocommerce form .input-text,
.woocommerce form select,
.woocommerce form textarea,
.select2-container .select2-selection--single {
	border: 1px solid var(--loja-line) !important;
	border-radius: 12px !important;
	padding: 0.7rem 0.9rem !important;
	height: auto !important;
	font-family: var(--loja-font);
	font-size: 1rem;
	background: var(--loja-surface);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.woocommerce form .input-text:focus,
.woocommerce form select:focus,
.woocommerce form textarea:focus {
	border-color: var(--loja-accent) !important;
	outline: none;
	box-shadow: 0 0 0 3px rgba(106, 0, 217, 0.12);
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
	line-height: 2.3 !important;
}

/* O Astra tem CSS de compatibilidade com WooCommerce embutido no tema (não é
 * nosso), que estava aplicando fundo/borda próprios em elementos que também
 * viram cartão abaixo — resultava em caixa dentro de caixa. Zera tudo isso
 * primeiro, sem !important pra não brigar bobamente, só na ordem certa. */
.col-2,
#order_review_heading,
.woocommerce-checkout-review-order-table,
#customer_details {
	background: transparent;
	border: 0;
	box-shadow: none;
}
/* #order_review_heading é exceção: o Astra tem uma regra própria
 * (form #order_review_heading:not(.elementor-widget-woocommerce-checkout-page ...))
 * mais específica que o zera-tudo acima por causa do :not() com um segundo
 * seletor de ID dentro — ela sozinha já pesa mais que qualquer seletor nosso
 * sem !important, então só dá pra vencer com !important mesmo. Sem isso, o
 * título "Seu pedido" ficava com borda e padding próprios, virando uma
 * caixinha solta grudada em cima do cartão do resumo do pedido. */
#order_review_heading {
	border: 0 !important;
	padding: 0 !important;
	margin: 0 0 1rem !important;
}

/* /checkout em 1 coluna: "#customer_details" (cobrança) empilhado ACIMA de
 * "#order_review" (seu pedido) — nada lado a lado. O Astra tem uma regra
 * própria (".woocommerce.woocommerce-checkout form #customer_details
 * .col2-set") pensada pro layout de 2 colunas de sempre — ID + 3 classes,
 * mais específica que a nossa (só o ID): só dá pra vencer com
 * "!important" mesmo. */
#customer_details,
#customer_details .col-1 {
	width: 100% !important;
	float: none !important;
}
#order_review_heading,
#order_review {
	width: 100% !important;
	float: none !important;
}
/* ".col-2" é o endereço de entrega "diferente da cobrança" — esta loja não
 * oferece essa opção (um endereço só, ver seção 0 do mu-plugins), então ela
 * nunca tem conteúdo de verdade. Nada de ":empty" (os espaços em branco do
 * PHP entre as tags já contam como "filho", a pseudo-classe nunca bate) —
 * só esconde direto. */
#customer_details .col-2 {
	display: none;
}

/* Resumo do endereço já preenchido, recolhido — card igual aos outros
 * (".loja-cart-block"), com "Alterar" abrindo o formulário de verdade
 * (mu-plugins/loja-core.php, seção 26). */
.loja-checkout-address-summary {
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
	padding: 1.25rem 1.5rem;
	margin: 0 0 1.5rem;
}
.loja-checkout-address-summary__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}
.loja-checkout-address-summary__label {
	display: block;
	font-weight: 800;
	font-size: 0.95rem;
	color: var(--loja-ink);
	margin-bottom: 0.3rem;
}
.loja-checkout-address-summary__text {
	margin: 0;
	color: var(--loja-muted);
	font-size: 0.92rem;
}
.loja-checkout-address-summary__toggle {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	background: var(--loja-surface);
	border: 1px solid var(--loja-accent-dark);
	color: var(--loja-accent-dark);
	border-radius: 999px;
	padding: 0.5rem 1.1rem;
	font-weight: 700;
	font-size: 0.85rem;
	cursor: pointer;
	white-space: nowrap;
}
.loja-checkout-address-summary__toggle:hover {
	background: var(--loja-accent-dark);
	color: #fff;
}
/* Formulário de verdade some quando o resumo acima está mostrando — some o
 * BLOCO inteiro (não só o "#customer_details" visualmente): com "display:
 * none" no próprio "#customer_details", o checkout.js continua lendo/
 * validando os campos normalmente quando o cliente reabre, só não aparecem
 * até lá. */
#customer_details.loja-billing-collapsed {
	display: none;
}

/* /cart/: cupom + "Total da compra" ficam na lateral da listagem de
 * produtos (pedido do dono da loja — referência: funkypigeon.com/basket),
 * "Entrega" continua embaixo, largura cheia. O cupom mora dentro do MESMO
 * <form> da tabela (o cart.js só intercepta "apply_coupon" num botão de
 * submit dentro de ".woocommerce-cart-form", não importa onde ele apareça
 * visualmente — ver woocommerce/cart/cart.php) e "Entrega"/"Total da
 * compra" moram dentro do MESMO ".cart_totals" (é esse div inteiro que o
 * JS substitui a cada atualização de frete/cupom — AJAX nunca alcança nada
 * fora dele). "display:contents" em cascata (form → tabela/cupom escapam;
 * cart-collaterals → cart_totals escapa; cart_totals → Entrega/resumo
 * escapam) deixa cada pedaço virar um item de grid solto, posicionável
 * livremente, sem perder nenhum dos dois (nem o JS que só atualiza por
 * classe, nem o HTML que precisa ficar dentro do <form>). A venda cruzada
 * não tem mais área própria aqui: virou sugestão dentro da própria listagem
 * de produtos (ver mu-plugins/loja-core.php, seção 21), não uma seção à
 * parte do grid. */
body.woocommerce-cart .woocommerce {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
	column-gap: 2rem;
	row-gap: 1.5rem;
	align-items: start;
	grid-template-areas:
		"breadcrumb breadcrumb"
		"pagehead   pagehead"
		"notices    notices"
		"coupon     coupon"
		"table      summary";
}
body.woocommerce-cart .loja-cart-breadcrumb {
	grid-area: breadcrumb;
}
body.woocommerce-cart .loja-cart-pagehead {
	grid-area: pagehead;
}
body.woocommerce-cart .woocommerce-notices-wrapper {
	grid-area: notices;
}
body.woocommerce-cart .woocommerce-cart-form,
body.woocommerce-cart .cart-collaterals,
body.woocommerce-cart .cart_totals {
	display: contents;
}
/* O item do grid é o wrapper, não ".loja-cart-products": o selo de confiança
 * mora dentro do wrapper mas fora do cartão (sem fundo/borda/sombra
 * duplicados), colado embaixo dele e livre da altura do cartão "Total no
 * carrinho" ao lado (que nem sempre tem a mesma altura). */
body.woocommerce-cart .loja-cart-table-col {
	grid-area: table;
}
body.woocommerce-cart .loja-cart-coupon-block {
	grid-area: coupon;
}
body.woocommerce-cart .loja-cart-sidebar-summary {
	grid-area: summary;
}
/* Tentamos "position:sticky" aqui (resumo gruda ao rolar). Removido: o
 * grid compartilhava linhas entre ".loja-cart-sidebar-summary" e "table"
 * antes (quando o cupom ainda morava na lateral), e quando o carrinho tinha
 * poucos produtos (tabela curta) o "sticky" ultrapassava a própria célula
 * do grid e sobrepunha o cartão "Entrega" logo abaixo ao rolar a página —
 * reproduzido com 1 produto só. O briefing pedia sticky só "desde que não
 * cause problemas" — causou, então fica de fora por ora. */
/* Plugin "Calculadora de Frete e Campos Checkout para o Brasil" injeta via
 * JS um cartão próprio de CEP (campo + botão "CONSULTAR") direto dentro de
 * ".loja-cart-sidebar-summary", independente de qualquer hook do
 * WooCommerce que a gente chame ou não — remover a chamada de
 * "wc_cart_totals_shipping_html()" não impede isso. Fora do padrão visual
 * da loja e redundante com a linha estática "Frete: Será calculado no
 * pagamento". Escondido: não tem nenhum campo essencial pro pedido (o CEP
 * de verdade é pedido no checkout). */
.woocommerce-cart .woo-better-parent-container {
	display: none !important;
}
@media (max-width: 782px) {
	body.woocommerce-cart .woocommerce {
		grid-template-columns: 1fr;
		grid-template-areas:
			"breadcrumb"
			"pagehead"
			"notices"
			"coupon"
			"table"
			"summary";
	}
}

/* Cabeçalho do /cart/: breadcrumb + "Seu carrinho · N produtos • R$ XXX"
 * (ver mu-plugins/loja-core.php, hook "woocommerce_before_cart"). */
.loja-cart-breadcrumb {
	font-size: 0.85rem;
	color: var(--loja-muted);
}
/* No /cart, o espaço embaixo do breadcrumb/cabeçalho vem de graça do
 * "row-gap" do grid (".woocommerce-cart .woocommerce", mais abaixo) — o
 * /checkout usa os dois (seção 25, mu-plugins/loja-core.php) soltos no
 * fluxo normal, sem esse grid, então precisam do próprio espaçamento
 * explícito pra não ficarem colados com o que vem depois (aviso de login,
 * cupom). Mesmo valor (1.5rem) pra manter o mesmo ritmo visual das duas
 * páginas. */
body.woocommerce-checkout .loja-cart-breadcrumb,
body.woocommerce-checkout .loja-cart-pagehead {
	margin-bottom: 1.5rem;
}
.loja-cart-breadcrumb a {
	color: var(--loja-muted);
	text-decoration: none;
}
.loja-cart-breadcrumb a:hover {
	color: var(--loja-ink);
	text-decoration: underline;
}
.loja-cart-breadcrumb span[aria-hidden] {
	margin: 0 0.4rem;
}
.loja-cart-breadcrumb span[aria-current] {
	color: var(--loja-ink);
	font-weight: 700;
}
.loja-cart-pagehead__row {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 0.5rem 1rem;
}
.loja-cart-pagehead__row h1 {
	font-size: 1.8rem;
	font-weight: 800;
	margin: 0;
	color: var(--loja-ink);
}
.loja-cart-pagehead__count {
	font-size: 1rem;
	font-weight: 700;
	color: var(--loja-muted);
	white-space: nowrap;
}
.loja-cart-pagehead__subtitle {
	margin: 0.3rem 0 0;
	color: var(--loja-muted);
}

/* Selos de confiança abaixo do botão de checkout (mesmo ícone de cadeado do
 * cabeçalho do site). */
.loja-cart-trust {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.4rem;
	margin-top: 1rem;
	font-size: 0.82rem;
	color: var(--loja-muted);
	text-align: center;
}
.loja-cart-trust__item {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
}
.loja-cart-trust__item--secure {
	color: var(--loja-accent-dark);
	font-weight: 700;
}
.loja-cart-trust__sep {
	opacity: 0.5;
}

/* Carrinho vazio: não tem tabela/cupom/resumo, só notices + este bloco —
 * precisa ocupar as 2 colunas do grid sozinho (sem área nomeada própria,
 * cairia numa só coluna por acaso do auto-placement). */
body.woocommerce-cart .loja-cart-empty {
	grid-column: 1 / -1;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	max-width: 420px;
	margin: 2.5rem auto;
	padding: 2rem 1.5rem;
}
.loja-cart-empty__icon {
	color: var(--loja-accent-dark);
	margin-bottom: 1.25rem;
}
.loja-cart-empty h1 {
	font-size: 1.5rem;
	font-weight: 800;
	margin: 0 0 0.6rem;
	color: var(--loja-ink);
}
.loja-cart-empty p {
	margin: 0;
	color: var(--loja-muted);
}
.loja-cart-empty .return-to-shop {
	margin: 1.75rem 0 0;
}
.loja-cart-empty .loja-cart-trust {
	margin-top: 2rem;
}

/* Um cartão por coluna (dados de cobrança | resumo do pedido), não um por
 * seção — senão vira caixa dentro de caixa com borda dobrada e seções quase
 * vazias (era exatamente esse o bug: cada bloco interno tinha seu próprio
 * fundo/borda/sombra, duplicando a do cartão que já os envolve). ".cart_totals"
 * é exceção: no /cart ela não é mais 1 cartão só, e sim um apanhado neutro
 * dos cartões próprios (cupom | entrega | total da compra), ver
 * ".loja-cart-block" abaixo — por isso saiu desta lista. */
.col-1,
#order_review,
.loja-cart-products {
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
	/* Sem "overflow:hidden" de propósito: cortava o círculo do hover da
	 * lixeira/stepper do primeiro item, bem perto do canto arredondado do
	 * cartão — a miniatura já tem border-radius própria, não depende do
	 * corte do pai. */
}
.col-1,
#order_review {
	padding: 1.5rem;
}
#order_review {
	overflow: hidden;
}

/* Miniatura do produto na revisão do pedido (checkout) — o template padrão
 * não mostra nenhuma imagem aqui; reusa a mesma foto de verdade da
 * variação escolhida do /cart (seção 10/21). */
.loja-checkout-item {
	display: flex;
	align-items: center;
	gap: 0.75rem;
}
.loja-checkout-item__thumb {
	flex: 0 0 auto;
}
.loja-checkout-item__thumb img {
	display: block;
	width: 56px;
	height: 56px;
	object-fit: cover;
	border-radius: 10px;
}
/* As fotos de origem são quadradas — com 2 empilhadas, cada uma mantém o
 * mesmo quadrado das miniaturas de foto única (nada de faixa cortada). */
.loja-checkout-item__thumb .loja-cart-item__thumb-stack {
	gap: 4px;
}
.loja-checkout-item__thumb .loja-cart-item__thumb-stack img {
	width: 56px;
	height: 56px;
}
.loja-checkout-item__info {
	min-width: 0;
}

/* Upsell do checkout ("Aproveite também", mu-plugins/loja-core.php, seção
 * 24): mesma lista/visual do /cart, "estourando" o padding de "#order_review"
 * (overflow:hidden já existe nele, então o canto arredondado do cartão
 * corta certinho) pra ficar de ponta a ponta, separado por uma linha. */
.loja-checkout-upsell-list {
	list-style: none;
	margin: 1.25rem -1.5rem -1.5rem;
	padding: 0;
	border-top: 1px solid var(--loja-line);
}

/* "Seu pedido" girando enquanto o checkout.js recalcula frete/total (troca
 * de endereço, cupom, upsell adicionado) — mesmo ícone/anel do /cart, só
 * que aqui é um "::after" no próprio título, sem precisar de outro
 * elemento. O overlay branco (blockUI) que o WooCommerce abriria nessa
 * mesma hora já está escondido abaixo. */
#order_review_heading.loja-updating::after {
	content: "";
	display: inline-block;
	width: 15px;
	height: 15px;
	margin-left: 0.6rem;
	vertical-align: middle;
	border: 2px solid rgba(106, 0, 217, 0.25);
	border-top-color: var(--loja-accent-dark);
	border-radius: 50%;
	animation: loja-spin 0.7s linear infinite;
}
.woocommerce-checkout-payment .blockUI,
.woocommerce-checkout-review-order-table .blockUI,
#order_review .blockUI {
	display: none !important;
}

/* Cartões soltos do /cart/: cupom, entrega e total da compra. */
.loja-cart-block {
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
	padding: 1.5rem;
}
.loja-cart-coupon-block {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
}
.loja-cart-coupon-block #coupon_code {
	flex: 1 1 160px;
	padding: 0.65rem 0.9rem;
	border: 1px solid var(--loja-line);
	border-radius: 10px;
	font-family: var(--loja-font);
	font-size: 0.95rem;
}
/* /checkout: mesmo cartão de cupom do /cart. Sem "!important" no "display"
 * de propósito (ver mu-plugins/loja-core.php, seção 25, e o comentário em
 * woocommerce/checkout/form-coupon.php) — quem reabre depois do ".hide()"
 * inicial do checkout.js é um script à parte, não o CSS; assim o "esconder
 * nativo" depois de aplicar um cupom com sucesso continua funcionando. Já a
 * largura precisa de "!important": o Astra tem ".woocommerce form.checkout_
 * coupon{width:50%}" (pensado pro cupom ficar ao lado de alguma coisa no
 * layout de 2 colunas de sempre) — sem exceção nessa, dá pra vencer só na
 * especificidade (nossa regra já tem mais classes), mas a largura ficava
 * pela metade porque a deles tinha a PROPRIEDADE que a nossa não declarava. */
/* O Astra também zera borda/padding do cartão ("padding:0 0 32px", sem
 * borda) e encolhe o botão (padding 8px 16px) com ".woocommerce form.
 * checkout_coupon" — repete aqui os mesmos valores do cartão do /cart. */
.woocommerce-checkout form.checkout_coupon.loja-cart-coupon-block {
	display: flex;
	width: 100% !important;
	margin: 0 0 1.5rem;
	padding: 1.5rem;
	border: 1px solid var(--loja-line);
}
.woocommerce-checkout form.checkout_coupon.loja-cart-coupon-block button.button {
	padding: 0.9rem 2rem;
	line-height: 1;
}
.wc-proceed-to-checkout {
	margin-top: 1.5rem;
}

/* Foco visível no teclado: o stepper "− +" (links, não têm o estilo de
 * foco que ".woocommerce form .input-text:focus" dá aos campos) e o <input>
 * de quantidade (coberto por uma regra mais específica do WooCommerce que
 * zera o box-shadow no foco — computado veio "rgba(0,0,0,0) 0 0 0 0",
 * efetivamente invisível) não mostravam NADA ao navegar com Tab.
 * box-shadow em vez de outline: alguma regra do Astra (não encontrada —
 * nem em busca por todas as folhas de estilo) insiste em "outline-
 * style:none" com prioridade maior que a nossa mesmo com !important + mais
 * classes — outline-width sempre vira 0 quando outline-style computa
 * "none" (regra da especificação), então nenhum valor de largura nosso
 * tinha efeito nos links (.minus/.plus/.remove); box-shadow não tem essa
 * pegadinha, então usamos pra tudo aqui por consistência. */
.woocommerce-cart .quantity .minus:focus,
.woocommerce-cart .quantity .plus:focus,
.woocommerce-cart .quantity .qty:focus,
.woocommerce-cart .loja-cart-item__remove .remove:focus,
.woocommerce-cart #coupon_code:focus,
.woocommerce-cart #calc_shipping_postcode:focus {
	outline: none !important;
	box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--loja-accent-dark) !important;
}

/* Dentro do cartão de cobrança: "Informação adicional" fica sem linha
 * divisória acima (o título já tem a própria linha embaixo). O endereço de
 * entrega alternativo nunca é oferecido nesta loja — o bloco vem vazio e só
 * desenhava uma linha solta, então some. */
.woocommerce-additional-fields {
	margin-top: 1.5rem;
}
.woocommerce-shipping-fields {
	display: none;
}
.woocommerce-billing-fields h3,
#order_review_heading,
body.loja-landing .cart_totals h2 {
	font-size: 1.2rem;
	font-weight: 800;
	margin: 0 0 1rem;
	color: var(--loja-ink);
}
/* "Total no carrinho" agora mora dentro do próprio cartão (não é mais um
 * título solto por cima) — menor e com menos respiro embaixo, pra não
 * competir com o conteúdo logo abaixo. */
body.loja-landing .loja-cart-block--total h2 {
	font-size: 1rem;
	margin-bottom: 0.5rem;
}
.woocommerce-shipping-fields > h3 {
	margin: 0;
	font-size: 1rem;
	font-weight: 700;
}
.woocommerce-shipping-fields > h3 label {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	cursor: pointer;
}
.woocommerce-additional-fields h3 {
	font-size: 1rem;
	font-weight: 700;
	margin: 0 0 0.75rem;
}
.shipping_address {
	margin-top: 1rem;
}

/* Tabelas (resumo, frete): ficam sem moldura própria (já estão dentro de um
 * cartão). A listagem de produtos do carrinho não é mais tabela — ver
 * ".loja-cart-items" mais abaixo. */
table.shop_table {
	width: 100%;
	border-collapse: collapse;
}
table.shop_table th,
table.shop_table td {
	border: 0;
	border-bottom: 1px solid var(--loja-line);
	padding: 0.9rem 0.4rem;
}
table.shop_table td:first-child,
table.shop_table th:first-child {
	padding-left: 0.9rem;
}
table.shop_table td:last-child,
table.shop_table th:last-child {
	padding-right: 0.9rem;
}
table.shop_table tr:last-child td {
	border-bottom: 0;
}

/* Cupom no carrinho: o input vem minúsculo (atributo size do WooCommerce) —
 * aumenta pra caber um código de verdade sem cortar. */
.woocommerce .coupon {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
}
.woocommerce .coupon .input-text#coupon_code {
	width: 220px;
	max-width: 100%;
	height: auto;
	padding: 0.65rem 0.9rem;
	border: 1px solid var(--loja-line);
	border-radius: 10px;
	font-family: var(--loja-font);
	font-size: 0.95rem;
}

/* Botão "Consultar" do simulador de frete (Melhor Envio): o plugin manda
 * estilo inline próprio (azul) — só sai com !important. */
.wc-shipping-simulator-button-current-style {
	background: var(--loja-gradient) !important;
	border: 0 !important;
	border-radius: 999px !important;
	font-weight: 800 !important;
}

/* Calculadora de frete nativa do WooCommerce ("Calcular entrega"/"Mudar
 * endereço"): antes só aparecia depois de clicar no link — sem nenhum CSS
 * nosso, esse link herdava um estilo de botão genérico e ficava com uma
 * caixa estranha. Agora o formulário de CEP já fica sempre visível (não
 * precisa clicar em nada pra trocar o destino) e o link de alternar
 * desaparece, já que não tem mais nada pra alternar. */
.shipping-calculator-button {
	display: none;
}
.shipping-calculator-form {
	display: block !important;
	margin-bottom: 1rem;
	padding-bottom: 1rem;
	border-bottom: 1px solid var(--loja-line);
}
/* País/Estado/Cidade são herança do endereço completo do WooCommerce, mas
 * só vendemos pro Brasil e a cotação (Melhor Envio) só precisa do CEP —
 * então só ele fica visível. Os campos continuam no HTML (só escondidos),
 * com os valores padrão (Brasil/São Paulo) que o Woo já preenche sozinho,
 * então a cotação continua funcionando igual. "display:none" tira esses
 * campos da validação do navegador mesmo sendo "required". */
#calc_shipping_country_field,
#calc_shipping_state_field,
#calc_shipping_city_field {
	display: none !important;
}
.shipping-calculator-form .form-row {
	margin-bottom: 0.8rem;
}
.shipping-calculator-form .form-row:last-of-type {
	margin-bottom: 0;
}
.shipping-calculator-form label {
	display: block;
	margin-bottom: 0.3rem;
	font-size: 0.85rem;
	font-weight: 700;
	color: var(--loja-ink);
}
.shipping-calculator-form select,
.shipping-calculator-form input {
	width: 100%;
	padding: 0.65rem 0.9rem;
	border: 1px solid var(--loja-line);
	border-radius: 10px;
	font-family: var(--loja-font);
	font-size: 0.95rem;
	background: var(--loja-surface);
}
.shipping-calculator-form p:has(button[name="calc_shipping"]) {
	margin-top: 0.8rem;
	margin-bottom: 0;
}

/* Resumo do pedido do CHECKOUT: table/tr/td têm "geração de caixa anônima"
 * — mesmo sobrescrevendo display em td/tr isoladamente, o navegador insiste
 * em encaixar o conteúdo de volta no modelo de tabela enquanto a <table>
 * continuar sendo um contexto de tabela de verdade. Por isso a <table> vira
 * display:flex (coluna) e tbody/thead/tfoot só repassam (display:contents);
 * cada <tr> vira o item de verdade — é NELE que mora a borda inferior, não
 * em th/td isolados. Isso evita o problema que tínhamos antes com
 * display:grid na <table> (th/td como itens de grid INDEPENDENTES, cada um
 * com a própria borda: como a coluna do rótulo é mais estreita que a do
 * valor, a linha divisória de cada fileira aparecia cortada/quebrada no meio
 * em vez de atravessar o cartão inteiro). Com a borda no <tr>, a linha
 * sempre atravessa a largura cheia não importa a proporção interna.
 * Dentro de cada <tr>, th/td usam "flex" pra manter a mesma proporção
 * 2:1 que a tabela tinha (rótulo bem mais largo que o valor), exceto a
 * linha de Envio, que usa flex-direction:column pra empilhar texto/opções
 * de frete e a calculadora de CEP ocupando a largura inteira.
 * O CARRINHO não precisa de nada disso (".cart_totals table"): desde que
 * frete e cupom saíram de dentro dela, uma tabela de verdade já funciona
 * sem truque nenhum. */
#order_review table.woocommerce-checkout-review-order-table {
	display: flex;
	flex-direction: column;
}
#order_review table.woocommerce-checkout-review-order-table thead,
#order_review table.woocommerce-checkout-review-order-table tbody,
#order_review table.woocommerce-checkout-review-order-table tfoot {
	/* !important: o Astra tem ".woocommerce table.shop_table_responsive tr
	 * { display:block }" com 2 classes (especificidade maior que a nossa 1
	 * classe) — sem isso, o celular volta pro table/tr de verdade e perde
	 * o flex das linhas de baixo. */
	display: contents !important;
}
#order_review table.woocommerce-checkout-review-order-table tr {
	display: flex !important;
	justify-content: space-between;
	align-items: baseline;
	border-bottom: 1px solid #E7E4EF;
}
#order_review table.woocommerce-checkout-review-order-table tr.cart_item {
	align-items: center;
}
#order_review table.woocommerce-checkout-review-order-table tr:last-child {
	border-bottom: 0;
}
#order_review table.woocommerce-checkout-review-order-table th,
#order_review table.woocommerce-checkout-review-order-table td {
	border-bottom: 0 !important;
}
#order_review table.woocommerce-checkout-review-order-table th {
	flex: 2 1 0;
	min-width: 0;
}
#order_review table.woocommerce-checkout-review-order-table td {
	flex: 1 1 0;
	min-width: 0;
}
/* Especificidade igual à regra geral das linhas ("tr { align-items: baseline }"
 * acima) — com o seletor curto, ela ganhava e o <td> com as opções de frete
 * ficava do tamanho do conteúdo em vez de ocupar a largura inteira. */
#order_review table.woocommerce-checkout-review-order-table tr.woocommerce-shipping-totals {
	flex-direction: column;
	align-items: stretch;
}
tr.woocommerce-shipping-totals td {
	padding-top: 0;
	/* O Woo imprime nessa ordem: texto/opções de frete primeiro, calculadora
	 * de CEP depois — mas faz mais sentido pedir o CEP ANTES de mostrar
	 * opção nenhuma. display:flex nos filhos deixa reordenar com "order"
	 * sem mexer no HTML. */
	/* !important pelo mesmo motivo de sempre: Astra tem um "display:block"
	 * pro mesmo td que ganha em telas pequenas sem o reforço. */
	display: flex !important;
	flex-direction: column;
}
/* order vai no <form> (filho direto do <td>) e não na <section> interna
 * (.shipping-calculator-form) — essa é só um neto, "order" nela não
 * reordena nada no flex do <td>. */
form.woocommerce-shipping-calculator {
	order: -1;
}

/* Celular: o próprio WooCommerce/Astra escondem o <th> (rótulo) de
 * ".shop_table_responsive" e tentam mostrar "Label: valor" numa linha só via
 * td::before com o data-title — funciona bem pro Subtotal/Total (valor
 * curto), mas o "Envio" tem conteúdo rico (campo de CEP, botão, lista de
 * frete), não um valor curto — vira bagunça com tudo numa correria só. No
 * cartão de frete, mantemos o rótulo "Envio" visível (como no desktop) e
 * desligamos o data-title; no cartão do total, deixamos o padrão
 * "Label: valor" só com um respiro/alinhamento melhor (mesmo estilo já usado
 * na tabela de produtos do carrinho). */
@media (max-width: 782px) {
	.loja-cart-block--shipping table th {
		display: block !important;
		width: auto;
		font-size: 1.2rem;
		font-weight: 800;
		margin: 0 0 1rem;
		color: var(--loja-ink);
	}
	.loja-cart-block--shipping table td::before {
		display: none;
	}
	/* Sem o <th> (escondido pelo Astra em telas pequenas), só sobra o <td>
	 * pro grid de 2 colunas encaixar — e como "Subtotal" e "Total" viram os 2
	 * únicos itens restantes, o grid auto-coloca um do lado do outro na
	 * mesma linha (2 colunas) em vez de empilhado. grid-column:1/-1 força
	 * cada um a ocupar a linha inteira sozinho, como as outras linhas de
	 * celular. */
	.loja-cart-block--total table td {
		display: flex !important;
		grid-column: 1 / -1 !important;
		align-items: center;
		justify-content: space-between;
		gap: 0.75rem;
	}
	.loja-cart-block--total table td::before {
		content: attr(data-title);
		font-weight: 800;
		font-size: 0.78rem;
		color: var(--loja-muted);
		flex: 0 0 auto;
	}
}

/* Métodos de frete e pagamento: separados do resumo do pedido por uma linha,
 * dentro do mesmo cartão do #order_review. */
ul#shipping_method {
	list-style: none;
	/* !important pelo mesmo motivo do display:contents acima — outra regra
	 * do Astra pro mesmo contexto estava zerando essa margem. */
	margin: 1.1rem 0 0 !important;
	padding: 0;
	text-align: left;
}
/* O mesmo CSS "grid" do Astra (shop_table_responsive) que forçava o
 * display:block de antes também manda text-align:right !important — sem
 * sobrescrever com !important aqui, as opções de frete do checkout ficavam
 * alinhadas à direita. */
ul#shipping_method li,
ul#shipping_method li label {
	text-align: left !important;
}
#payment {
	background: transparent !important;
	margin: 1.5rem -1.5rem -1.5rem;
	padding: 1.5rem;
	border-top: 1px solid var(--loja-line);
	border-radius: 0 0 var(--loja-radius) var(--loja-radius);
}
ul.wc_payment_methods {
	list-style: none;
	margin: 0;
	padding: 0;
	background: transparent !important;
}
ul.wc_payment_methods li.wc_payment_method,
ul#shipping_method li {
	border: 1px solid var(--loja-line);
	border-radius: 14px;
	padding: 0.9rem 1rem;
	background: var(--loja-surface);
}
ul.wc_payment_methods li.wc_payment_method {
	/* !important: mesmo motivo do "#shipping_method li" logo abaixo — o
	 * Astra tem uma regra própria (":not()" composto) com especificidade
	 * maior que a nossa e zera o margin-bottom, grudando os cartões de Pix/
	 * Cartão/Boleto um no outro sem reforço aqui. */
	margin-bottom: 0.9rem !important;
}
ul.wc_payment_methods li.wc_payment_method:last-child {
	margin-bottom: 0 !important;
}
/* O Astra tem uma regra própria pra #shipping_method li (lista com recuo
 * pendurado: text-indent negativo pra "pendurar" o radio à esquerda do
 * texto, padding-left:22px, E margin-bottom:0 — as três descobertas em
 * sessões diferentes, por isso os !important foram chegando aos poucos)
 * com especificidade maior que a nossa por causa de um :not() composto —
 * ela ganha mesmo fora de contexto Elementor, porque a especificidade do
 * argumento do :not() conta pro seletor inteiro. Sem o !important aqui, o
 * cartão acima nunca aparece (nem o espaço entre eles): o
 * padding/text-indent/margin do Astra prevalece e os cartões ficam
 * grudados um no outro, com o rádio "pendurado" fora da caixa. */
ul#shipping_method li {
	display: block !important;
	text-indent: 0 !important;
	padding: 0.9rem 1rem !important;
	margin-bottom: 0.9rem !important;
}
ul.wc_payment_methods li.wc_payment_method label,
ul#shipping_method li label {
	font-weight: 700;
}
.payment_box {
	background: var(--loja-soft);
	border-radius: 10px;
	padding: 1rem;
	margin-top: 0.75rem;
	font-size: 0.9rem;
}
.payment_box::before {
	display: none;
}

/* Botões */
.woocommerce #payment #place_order,
.woocommerce .checkout-button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
	background: var(--loja-gradient);
	color: #fff;
	font-weight: 800;
	border: 0;
	border-radius: 999px;
	padding: 0.9rem 2rem;
	box-shadow: 0 8px 20px rgba(106, 0, 217, 0.25);
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #payment #place_order:hover {
	background: var(--loja-gradient-hover);
	color: #fff;
	transform: translateY(-1px);
	box-shadow: 0 10px 24px rgba(138, 32, 240, 0.35);
}
.woocommerce a.button.wc-forward,
.woocommerce button[name="update_cart"] {
	background: var(--loja-surface);
	color: var(--loja-accent-dark);
	border: 1px solid var(--loja-line);
	box-shadow: none;
}

@media (max-width: 782px) {
	.woocommerce-billing-fields,
	.woocommerce-shipping-fields,
	.woocommerce-additional-fields,
	#order_review {
		padding: 1.1rem;
	}
}

/* Stepper de quantidade "− 1 +": o Astra já tem esse recurso pronto (JS
 * próprio, atualiza o input e já clica em "Atualizar carrinho" sozinho —
 * nada escrito à mão aqui), só precisava ser ligado (Personalizar > Loja >
 * "Enable Quantity Plus and Minus", ativado via astra-settings) e estilizado
 * pra combinar com o resto da loja — por padrão vem como 3 caixas quadradas
 * soltas. */
.woocommerce-cart .loja-cart-item .quantity {
	display: inline-flex;
	align-items: stretch;
	border-radius: 999px;
	overflow: hidden;
	background: var(--loja-surface);
}
.woocommerce-cart .loja-cart-item .quantity .qty {
	width: 42px;
	border: 0 !important;
	text-align: center;
	padding: 0.5rem 0 !important;
	font-weight: 700;
	font-family: var(--loja-font);
	-moz-appearance: textfield;
}
.woocommerce-cart .loja-cart-item .quantity .qty::-webkit-outer-spin-button,
.woocommerce-cart .loja-cart-item .quantity .qty::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}
.woocommerce-cart .loja-cart-item .quantity .minus,
.woocommerce-cart .loja-cart-item .quantity .plus {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	text-decoration: none;
	color: var(--loja-ink);
	font-weight: 700;
	font-size: 1.05rem;
	cursor: pointer;
	-webkit-user-select: none;
	user-select: none;
	/* O Astra tem ".woocommerce-js .quantity .minus/.plus{border:1px solid ...}"
	 * de fábrica (o "estilo normal" do recurso pronto que a gente ligou) —
	 * as linhas entre "-", o número e o "+" vinham dali. */
	border: 0 !important;
}
.woocommerce-cart .loja-cart-item .quantity .minus:hover,
.woocommerce-cart .loja-cart-item .quantity .plus:hover {
	background: var(--loja-soft);
}

/* Botão de remover: troca o "×" (herdado do Astra) por uma lixeira — pedido
 * explícito. O aria-label já vem certo do próprio WooCommerce ("Remover
 * {produto} do carrinho"), só o ícone visual muda. SVG inline no HTML (ver
 * cart.php) em vez de máscara de CSS num ::before: a máscara deixava o
 * ícone levemente fora de centro dentro do círculo de hover (não achamos a
 * causa exata) — SVG com largura/altura fixas centraliza por flex sem
 * ambiguidade nenhuma. */
.woocommerce-cart .loja-cart-item__remove .remove {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	color: var(--loja-muted);
}
.woocommerce-cart .loja-cart-item__remove .remove:hover {
	background: var(--loja-soft);
	color: var(--loja-accent-dark);
}
.woocommerce-cart .loja-cart-item__remove .remove .ahfb-svg-iconset {
	display: none;
}

/* Atributos do produto no carrinho (cor, nome gravado etc.) vêm do
 * WooCommerce como uma <dl> crua, sem nenhum estilo — <dt>/<dd> são bloco
 * por padrão do navegador, então "Cor externa:" e "Preto" caem em linhas
 * separadas, uma dupla por vez, uma baixo da outra, sem respiro do nome do
 * produto: fica uma parede de texto comprida e feia na coluna estreita da
 * tabela. "dt"/"dd" viram inline (rótulo e valor na MESMA linha) e o
 * ::after do "dd" força quebra de linha antes do próximo rótulo — sem
 * precisar de um wrapper por par (a WooCommerce não entrega um). */
.product-name dl.variation {
	margin: 0.5rem 0 0;
	font-size: 0.85rem;
	line-height: 1.6;
}
.product-name dl.variation dt,
.product-name dl.variation dd,
.product-name dl.variation dd p {
	display: inline;
	margin: 0;
	padding: 0;
}
.product-name dl.variation dt {
	font-weight: 700;
	color: var(--loja-muted);
}
.product-name dl.variation dt::after {
	content: " ";
}
.product-name dl.variation dd {
	color: var(--loja-ink);
}
.product-name dl.variation dd::after {
	content: "";
	display: block;
}

/* Listagem de produtos do carrinho: lista de cartões, não tabela — pedido
 * explícito do dono da loja ("mudar pra uma listagem sem ser tabulado,
 * mais moderno"). Flexbox simples: foto, nome+variação, e uma linha com
 * quantidade + preço. Sem truque de "tabela fingindo ser lista" (o antigo
 * display:block em td/tr com data-title) — já nasce flexível, então o
 * ajuste de celular é só reduzir o respiro e empilhar foto+corpo. */
.loja-cart-items {
	list-style: none;
	margin: 0;
	padding: 0;
}
.loja-cart-item {
	display: flex;
	align-items: flex-start;
	gap: 1rem;
	padding: 1.25rem;
	border-bottom: 1px solid var(--loja-line);
}
.loja-cart-item:last-child {
	border-bottom: 0;
}
.loja-cart-item__thumb {
	flex: 0 0 auto;
}
.loja-cart-item__thumb img {
	display: block;
	width: 88px;
	height: 88px;
	object-fit: cover;
	border-radius: 12px;
}
.loja-cart-item__body {
	flex: 1 1 auto;
	min-width: 0;
}
.loja-cart-item__name {
	font-weight: 700;
}
.loja-cart-item__name a {
	color: var(--loja-ink);
	text-decoration: none;
}
.loja-cart-item__name a:hover {
	color: var(--loja-accent-dark);
}
.loja-cart-item__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin-top: 0.9rem;
}
.loja-cart-item__price {
	text-align: right;
}
.loja-cart-item__unit-price {
	display: block;
	font-size: 0.78rem;
	color: var(--loja-muted);
}
.loja-cart-item__subtotal {
	display: block;
	font-size: 1.05rem;
	font-weight: 700;
	color: var(--loja-ink);
}
.loja-cart-item__remove {
	flex: 0 0 auto;
}

/* Venda cruzada: sugestões como linhas extras na mesma lista, logo depois
 * do(s) item(ns) real(is) — igual o brinde (mu-plugins/loja-core.php, seção
 * 9) já aparece, só mais uma linha, não um cartão à parte. Fundo levemente
 * diferente (".loja-soft") só pra separar visualmente "o que já tá no
 * carrinho" de "o que é sugestão". */
.loja-cart-suggestions-heading {
	padding: 1rem 1.25rem 0.25rem;
	font-weight: 800;
	font-size: 0.95rem;
	color: var(--loja-accent-dark);
	background: var(--loja-soft);
}
.loja-cart-suggestion {
	background: var(--loja-soft);
}
.loja-cart-suggestion__tag {
	display: block;
	font-size: 0.72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: var(--loja-accent-dark);
	margin-bottom: 0.15rem;
}
/* Bolinhas de cor de verdade (".loja-swatch", mesmo padrão da landing —
 * ver mu-plugins/loja-core.php, "loja_core_color_swatch_html"), só com
 * menos espaço acima/abaixo pra caber na linha do carrinho. */
.loja-cart-suggestion .loja-var-label {
	font-size: 0.78rem;
	margin-top: 0.5rem;
}
.loja-cart-suggestion .loja-swatches {
	margin: 0.3rem 0 0;
}
.loja-cart-suggestion .loja-swatch__dot {
	width: 28px;
	height: 28px;
}

/* Produto com 2 atributos de variação com foto cadastrada pra cada um (ex.:
 * cor externa + cor interna): as duas fotos de verdade, empilhadas, não só
 * uma foto genérica do produto. Com 1 foto só (ou nenhuma, caindo pra
 * "get_image()"), ".loja-cart-item__thumb img" de sempre já resolve. */
.loja-cart-item__thumb-stack {
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.loja-cart-item__thumb-stack img {
	width: 88px;
	height: 41px;
	object-fit: cover;
	border-radius: 10px;
	display: block;
}
.loja-cart-suggestion__add {
	position: relative;
	border: 1px solid var(--loja-accent-dark);
	background: var(--loja-surface);
	color: var(--loja-accent-dark);
	border-radius: 999px;
	padding: 0.5rem 1.1rem;
	font-weight: 700;
	font-size: 0.85rem;
	cursor: pointer;
	white-space: nowrap;
}
.loja-cart-suggestion__add:hover {
	background: var(--loja-accent-dark);
	color: #fff;
}
.loja-cart-suggestion__add:disabled {
	cursor: default;
}
/* Carregando: some o texto (sem encolher o botão), preenche sólido e gira um
 * anelzinho branco no lugar — opacidade reduzida sozinha parecia
 * "desabilitado/quebrado", não "processando". Preenchido sempre (até no
 * ":hover", que fica "ligado" já que o mouse acabou de clicar e continua em
 * cima do botão): um anel roxo em cima de fundo roxo ficava invisível. */
.loja-cart-suggestion__add.is-loading,
.loja-cart-suggestion__add.is-loading:hover {
	background: var(--loja-accent-dark);
	border-color: var(--loja-accent-dark);
	color: transparent;
}
.loja-cart-suggestion__add.is-loading::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 15px;
	height: 15px;
	margin: -8px 0 0 -8px;
	border: 2px solid rgba(255, 255, 255, 0.35);
	border-top-color: #fff;
	border-radius: 50%;
	animation: loja-spin 0.7s linear infinite;
}
@keyframes loja-spin {
	to {
		transform: rotate(360deg);
	}
}

/* Linha de ação embaixo da lista: "Atualizar carrinho" virou só um ícone à
 * esquerda (não precisa de destaque, é uma ação secundária) e o botão de
 * ir pro checkout ocupa o lugar de destaque à direita — pedido explícito
 * pra dar o caminho mais curto até o pagamento sem precisar rolar até a
 * barra lateral. */
.loja-cart-actions {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1rem 1.25rem;
	border-top: 1px solid var(--loja-line);
}
.loja-cart-actions__update {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	padding: 0;
	/* !important: ".woocommerce button[name=update_cart]" (seletor de
	 * atributo, não precisa da classe "button" que a gente tirou daqui)
	 * ainda bate com especificidade maior e devolvia a borda/fundo. */
	border: 0 !important;
	border-radius: 50%;
	background: transparent !important;
	color: var(--loja-muted);
	cursor: pointer;
}
.loja-cart-actions__update:hover {
	background: var(--loja-soft);
	color: var(--loja-accent-dark);
}
/* O WooCommerce (cart.js) cobre ".woocommerce-cart-form" e ".cart_totals"
 * com um overlay branco translúcido (biblioteca blockUI) a cada atualização
 * de quantidade, remoção de item ou cupom — um "carregando" cobrindo a tela
 * inteira. Escondido: o sinal de "processando" vira só o ícone de atualizar
 * (que já existe) girando — ".processing" é a classe que o próprio
 * WooCommerce já adiciona no form/total enquanto isso roda. */
.woocommerce-cart-form .blockUI,
.cart_totals .blockUI {
	display: none !important;
}
.woocommerce-cart-form.processing .loja-cart-actions__update svg {
	animation: loja-spin 0.7s linear infinite;
}
.loja-cart-actions__checkout {
	flex: 0 0 auto;
}

@media (max-width: 480px) {
	.loja-cart-item {
		padding: 1rem;
		gap: 0.75rem;
	}
	.loja-cart-item__thumb img {
		width: 64px;
		height: 64px;
	}
	.loja-cart-item__row {
		justify-content: flex-start;
		gap: 1rem;
	}
	.loja-cart-item__price {
		text-align: left;
	}
}

/* Depoimentos e vídeos de clientes ([loja_depoimentos]) */
.loja-depo-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 1.1rem;
	margin: 0 0 2.2rem;
	max-width: var(--loja-max);
	margin-left: auto;
	margin-right: auto;
}
.loja-depo-card {
	position: relative;
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
	padding: 1.3rem;
}
.loja-depo-head {
	display: flex;
	align-items: center;
	gap: 0.7rem;
	margin-bottom: 0.7rem;
}
.loja-depo-avatar {
	width: 44px;
	height: 44px;
	border-radius: 50%;
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 800;
	color: #fff;
	font-size: 0.95rem;
	background: var(--loja-gradient);
	overflow: hidden;
}
.loja-depo-avatar-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.loja-depo-name {
	font-weight: 800;
	font-size: 0.95rem;
}
.loja-depo-loc {
	color: var(--loja-muted);
	font-size: 0.78rem;
}
.loja-depo-stars {
	color: var(--loja-sun);
	font-size: 0.9rem;
	margin-bottom: 0.5rem;
	letter-spacing: 0.1em;
}
.loja-depo-quote {
	font-size: 0.9rem;
	color: var(--loja-ink);
	margin: 0;
}
.loja-reels-label {
	font-weight: 800;
	font-size: 0.85rem;
	color: var(--loja-muted);
	text-align: center;
	margin: 0 0 0.9rem;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}
.loja-reels-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 190px));
	justify-content: center;
	gap: 1rem;
	max-width: 620px;
	margin: 0 auto;
}
.loja-reel-card {
	position: relative;
	width: 100%;
	aspect-ratio: 9 / 16;
	border-radius: 16px;
	background: var(--loja-gradient);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-direction: column;
	gap: 0.5rem;
	color: #fff;
	box-shadow: var(--loja-shadow);
	text-decoration: none;
	overflow: hidden;
	transition: transform 0.15s ease;
}
a.loja-reel-card:hover {
	transform: translateY(-2px);
}
.loja-reel-card--video {
	aspect-ratio: auto;
	background: none;
	box-shadow: none;
	overflow: visible;
	gap: 0.4rem;
}
.loja-reel-media {
	width: 100%;
	aspect-ratio: 9 / 16;
	border-radius: 16px;
	overflow: hidden;
	background: #000;
	box-shadow: var(--loja-shadow);
}
.loja-reel-media video {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.loja-reel-handle {
	width: 100%;
	font-size: 0.78rem;
	font-weight: 800;
	color: var(--loja-ink);
	text-align: center;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.loja-reel-link {
	width: 100%;
	font-size: 0.72rem;
	font-weight: 700;
	color: var(--loja-accent);
	text-decoration: none;
	text-align: center;
	white-space: nowrap;
}
.loja-reel-link:hover {
	text-decoration: underline;
}
.loja-reel-play {
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.25);
	border: 2px solid #fff;
	position: relative;
}
.loja-reel-play::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 55%;
	transform: translate(-50%, -50%);
	border-style: solid;
	border-width: 8px 0 8px 13px;
	border-color: transparent transparent transparent #fff;
}
.loja-reel-cap {
	font-size: 0.68rem;
	font-weight: 700;
	text-align: center;
	padding: 0 0.6rem;
	opacity: 0.9;
}

/* Formulário "Avaliar" (Minha conta → Pedidos) */
.loja-avaliar-form {
	max-width: 480px;
}
.loja-avaliar-form p {
	margin: 0 0 1.1rem;
}
.loja-avaliar-form label {
	display: block;
	font-weight: 800;
	font-size: 0.85rem;
	margin-bottom: 0.3rem;
	color: var(--loja-ink);
}
.loja-avaliar-form input[type="text"],
.loja-avaliar-form select,
.loja-avaliar-form textarea,
.loja-avaliar-form input[type="file"] {
	width: 100%;
	padding: 0.65rem 0.8rem;
	border: 1px solid var(--loja-line);
	border-radius: 10px;
	font-family: var(--loja-font);
	font-size: 0.95rem;
	background: var(--loja-surface);
}
.loja-avaliar-form textarea {
	resize: vertical;
}
.loja-avaliar-aviso {
	color: var(--loja-muted);
	font-size: 0.8rem;
}

/* Nome do método de frete (ex.: "PAC") abaixo do valor, na linha "Frete" do resumo do /cart. */
.loja-cart-block--total .loja-shipping-label {
	display: block;
	font-size: 0.8rem;
	color: var(--loja-muted, #666477);
}

/* "Fechar" no título "Cobrança & Entrega" do formulário aberto (o "Alterar"
 * do resumo recolhido reaproveita o mesmo estilo de botão). */
.loja-checkout-address-summary[hidden] {
	display: none;
}
.woocommerce-billing-fields > h3.loja-billing-title {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}
.loja-billing-close {
	font-size: 0.85rem;
}

/* Badge "PROMOÇÃO 15% OFF" do upsell do checkout: canto superior direito do
 * card, na altura da linha "OFERTA ESPECIAL" (curta, então não encosta no
 * nome do produto, que vem logo abaixo). */
.loja-checkout-upsell {
	position: relative;
}
.loja-upsell-badge {
	position: absolute;
	top: 1.1rem;
	right: 1.25rem;
	background: var(--loja-gradient);
	color: #fff;
	font-weight: 800;
	font-size: 0.7rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	padding: 0.25rem 0.65rem;
	border-radius: 999px;
	white-space: nowrap;
}
.loja-upsell-badge[hidden] {
	display: none;
}
@media (max-width: 520px) {
	.loja-upsell-badge {
		position: static;
		margin-right: auto;
	}
}

/* ==========================================================================
 * Pedido recebido (/checkout/order-received/ID/): mesmo padrão do /cart e
 * /checkout — cada seção num cartão, título/breadcrumb (mu-plugins/loja-core.php,
 * seção 25a). O aviso "Obrigado. Seu pedido foi recebido." vira o subtítulo
 * do cabeçalho, então o <p> original some. O HTML de Pix/boleto é do plugin
 * do Asaas: só o visual muda aqui.
 * ======================================================================== */
:is(body.woocommerce-order-received, body.woocommerce-account) .woocommerce-thankyou-order-received {
	display: none;
}
:is(body.woocommerce-order-received, body.woocommerce-account) .woocommerce-order-overview,
:is(body.woocommerce-order-received, body.woocommerce-account) section.woocommerce-order-details,
:is(body.woocommerce-order-received, body.woocommerce-account) section.woocommerce-customer-details {
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
	padding: 1.5rem;
	margin: 0 0 1.5rem;
}
:is(body.woocommerce-order-received, body.woocommerce-account) .woocommerce-order-details__title,
:is(body.woocommerce-order-received, body.woocommerce-account) .woocommerce-column__title {
	/* !important: o Astra desenha uma caixa cinza com borda nesses títulos. */
	background: transparent !important;
	border: 0 !important;
	padding: 0 !important;
	margin: 0 0 1rem !important;
	font-size: 1.2rem;
	font-weight: 800;
	color: var(--loja-ink);
}

/* Resumo (número, data, e-mail, total, método). */
:is(body.woocommerce-order-received, body.woocommerce-account) ul.woocommerce-order-overview {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 1rem 2.5rem;
}
/* O WooCommerce limpa o float das <li> com ::before/::after de ul.order_details —
 * num flex viram itens vazios e empurram o primeiro dado. */
:is(body.woocommerce-order-received, body.woocommerce-account) ul.woocommerce-order-overview::before,
:is(body.woocommerce-order-received, body.woocommerce-account) ul.woocommerce-order-overview::after,
:is(body.woocommerce-order-received, body.woocommerce-account) section.woocommerce-order-details > ul.order_details::before,
:is(body.woocommerce-order-received, body.woocommerce-account) section.woocommerce-order-details > ul.order_details::after {
	display: none;
}
:is(body.woocommerce-order-received, body.woocommerce-account) ul.woocommerce-order-overview li {
	float: none;
	border: 0;
	margin: 0;
	padding: 0;
	font-size: 0.78rem;
	line-height: 1.3;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--loja-muted);
}
:is(body.woocommerce-order-received, body.woocommerce-account) ul.woocommerce-order-overview li strong {
	display: block;
	margin-top: 0.2rem;
	font-size: 1.05rem;
	letter-spacing: 0;
	text-transform: none;
	color: var(--loja-ink);
}

/* Detalhes do pagamento (Pix/boleto do plugin do Asaas). */
:is(body.woocommerce-order-received, body.woocommerce-account) section.woocommerce-order-details > ul.order_details {
	list-style: none;
	margin: 0;
	padding: 0;
	display: block;
}
:is(body.woocommerce-order-received, body.woocommerce-account) section.woocommerce-order-details > ul.order_details > li {
	float: none;
	width: auto;
	border: 0;
	margin: 0 0 1rem;
	padding: 0;
	font-size: 0.95rem;
	letter-spacing: 0;
	text-transform: none;
	color: var(--loja-ink);
}
:is(body.woocommerce-order-received, body.woocommerce-account) section.woocommerce-order-details > ul.order_details > li:first-child {
	font-weight: 800;
}
:is(body.woocommerce-order-received, body.woocommerce-account) section.woocommerce-order-details > ul.order_details > li:last-child {
	margin-bottom: 0;
}
:is(body.woocommerce-order-received, body.woocommerce-account) .asaas-pix-instructions {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 1.5rem;
}
:is(body.woocommerce-order-received, body.woocommerce-account) .asaas-pix-instructions .js-pix-qr-code {
	width: 220px;
	height: auto;
	padding: 0.5rem;
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: 16px;
}
:is(body.woocommerce-order-received, body.woocommerce-account) .asaas-pix-instructions__list {
	flex: 1 1 260px;
	margin: 0;
	padding-left: 1.2rem;
	font-size: 0.95rem;
	line-height: 1.5;
	text-transform: none;
	letter-spacing: 0;
}
:is(body.woocommerce-order-received, body.woocommerce-account) .asaas-pix-instructions__list li {
	display: list-item;
	float: none;
	list-style: decimal;
	border: 0;
	margin: 0 0 0.45rem;
	padding: 0;
	font-size: inherit;
	text-transform: none;
	letter-spacing: 0;
}
:is(body.woocommerce-order-received, body.woocommerce-account) .woocommerce-order-details__asaas-pix-payload {
	margin: 0 0 1rem;
	padding: 0.75rem 1rem;
	background: var(--loja-soft);
	border-radius: 12px;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 0.78rem;
	line-height: 1.4;
	color: var(--loja-muted);
	text-transform: none;
	white-space: normal;
	overflow-wrap: anywhere;
	word-break: break-all;
	max-width: 100%;
	height: auto;
	max-height: none;
	overflow: visible;
}
:is(body.woocommerce-order-received, body.woocommerce-account) .woocommerce-order-details__asaas-pix-button {
	margin: 0;
}
:is(body.woocommerce-order-received, body.woocommerce-account) .asaas-pix-copy-to-clipboard > div {
	max-width: 100%;
}

/* Detalhes do pedido: tabela sem moldura, linhas separadas, valores à direita. */
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details {
	width: 100%;
	margin: 0 !important;
	border: 0;
	border-collapse: collapse;
	background: transparent;
}
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details th,
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details td {
	background: transparent;
	border: 0;
	border-bottom: 1px solid var(--loja-line);
	padding: 0.9rem 0 !important;
	vertical-align: middle;
	text-align: left;
}
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details thead th {
	font-weight: 800;
	color: var(--loja-ink);
}
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details td.product-total,
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details thead th.product-total,
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details tfoot td {
	text-align: right;
	white-space: nowrap;
}
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details tfoot th {
	font-weight: 600;
}
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details tfoot tr:last-child th,
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details tfoot tr:last-child td {
	border-bottom: 0;
	padding-bottom: 0 !important;
}
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details .shipped_via {
	display: block;
	color: var(--loja-muted);
	white-space: normal;
}
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details .wc-item-meta {
	list-style: none;
	margin: 0.3rem 0 0;
	padding: 0;
	font-size: 0.85rem;
	color: var(--loja-muted);
}
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details .wc-item-meta p {
	display: inline;
	margin: 0;
	color: var(--loja-ink);
}
:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details a.button {
	background: var(--loja-surface);
	color: var(--loja-accent-dark);
	border: 1px solid var(--loja-line);
	box-shadow: none;
}

/* Endereço de cobrança. */
:is(body.woocommerce-order-received, body.woocommerce-account) section.woocommerce-customer-details address {
	margin: 0;
	padding: 0;
	border: 0;
	font-style: normal;
	line-height: 1.7;
}

@media (max-width: 600px) {
	:is(body.woocommerce-order-received, body.woocommerce-account) .asaas-pix-instructions {
		flex-direction: column;
		align-items: center;
	}
	:is(body.woocommerce-order-received, body.woocommerce-account) .asaas-pix-instructions .js-pix-qr-code {
		order: -1;
	}
	:is(body.woocommerce-order-received, body.woocommerce-account) .asaas-pix-instructions__list {
		flex: 0 0 auto;
		align-self: stretch;
	}
	:is(body.woocommerce-order-received, body.woocommerce-account) table.woocommerce-table--order-details .loja-checkout-item {
		flex-direction: column;
		align-items: flex-start;
		gap: 0.5rem;
	}
}

/* Banner de consentimento de cookies (essenciais, estatísticas de origem e publicidade da Meta) —
 * mu-plugins/loja-consentimento.php. Aceitar, Recusar e Personalizar têm o MESMO tamanho, contraste e destaque:
 * o Guia de Cookies da ANPD considera enviesado destacar só o "aceitar". */
.loja-consent {
	position: fixed;
	left: 1rem;
	right: 1rem;
	bottom: 1rem;
	z-index: 99999;
	max-width: 760px;
	max-height: calc(100vh - 2rem);
	overflow-y: auto;
	margin: 0 auto;
	padding: 1rem 1.25rem;
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	box-shadow: 0 12px 40px rgba(23, 21, 45, 0.22);
	font-size: 0.9rem;
	color: var(--loja-ink);
}
.loja-consent:focus {
	outline: none; /* o foco vai para a caixa (leitor de tela), não para um botão: nenhum botão sai destacado */
}
.loja-consent[hidden],
.loja-consent__vista[hidden] {
	display: none;
}
.loja-consent__vista {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem 1.25rem;
}
.loja-consent p {
	flex: 1 1 320px;
	margin: 0;
	line-height: 1.45;
}
.loja-consent p a {
	color: var(--loja-accent-dark);
	text-decoration: underline;
}
/* Colunas de largura igual: os botões ficam do mesmo tamanho, qualquer que seja o texto. */
.loja-consent__actions {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 1fr;
	flex: 0 0 auto;
	gap: 0.6rem;
}
.loja-consent__btn {
	min-height: 44px;
	border-radius: 999px;
	padding: 0.6rem 1.2rem;
	font-family: inherit;
	font-weight: 800;
	font-size: 0.88rem;
	line-height: 1.1;
	cursor: pointer;
	border: 2px solid var(--loja-accent-dark);
	background: var(--loja-surface);
	color: var(--loja-accent-dark);
}
/* Seletor reforçado: o Astra (páginas fora do canvas) pinta borda/fundo de button:hover e button:focus. */
.loja-consent .loja-consent__btn:hover,
.loja-consent .loja-consent__btn:focus-visible {
	background: var(--loja-accent-dark);
	border-color: var(--loja-accent-dark);
	color: var(--loja-surface);
}
.loja-consent__btn:focus-visible,
.loja-consent__switch input:focus-visible + .loja-consent__slider {
	outline: 3px solid var(--loja-accent-hover);
	outline-offset: 2px;
}
.loja-consent__cats {
	flex: 1 1 100%;
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0.85rem;
}
.loja-consent__cat {
	margin: 0;
	padding: 0;
}
.loja-consent__cat-desc {
	display: block;
	margin: 0.15rem 0 0 calc(42px + 0.6rem);
	color: var(--loja-muted);
	font-size: 0.82rem;
	line-height: 1.4;
}
.loja-consent__switch {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	cursor: pointer;
	font-weight: 800;
}
.loja-consent__cat-nome {
	color: var(--loja-ink);
}
.loja-consent__switch input {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
}
.loja-consent__slider {
	position: relative;
	flex: none;
	width: 42px;
	height: 24px;
	border-radius: 999px;
	background: var(--loja-muted);
	transition: background 0.15s ease;
}
.loja-consent__slider::after {
	content: '';
	position: absolute;
	top: 3px;
	left: 3px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--loja-surface);
	transition: transform 0.15s ease;
}
.loja-consent__switch input:checked + .loja-consent__slider {
	background: var(--loja-accent-dark);
}
.loja-consent__switch input:checked + .loja-consent__slider::after {
	transform: translateX(18px);
}
.loja-consent__switch input:disabled + .loja-consent__slider {
	opacity: 0.6;
}
.loja-consent__switch:has(input:disabled) {
	cursor: default;
}
@media (max-width: 560px) {
	.loja-consent {
		left: 0.5rem;
		right: 0.5rem;
		bottom: 0.5rem;
		padding: 0.9rem 1rem;
	}
	.loja-consent__actions {
		width: 100%;
	}
	.loja-consent__btn {
		padding: 0.6rem 0.4rem;
		font-size: 0.82rem;
	}
	.loja-consent__cat-desc {
		margin-left: 0;
	}
}

/* Ícone de conta no cabeçalho: um pontinho verde indica sessão iniciada. */
.loja-landing__account {
	position: relative;
}
.loja-landing__account.is-logged-in::after {
	content: '';
	position: absolute;
	top: 4px;
	right: 4px;
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: #22c55e;
	border: 2px solid #fff;
}

/* ==========================================================================
 * Minha conta (/my-account/): mesmo padrão do /cart e /checkout — título e
 * breadcrumb no topo, menu e conteúdo em cartões, tabelas sem moldura.
 * mu-plugins/loja-core.php, seção 25b.
 * ======================================================================== */
.woocommerce-account .woocommerce {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 1.5rem;
}
body.woocommerce-account .woocommerce > .loja-cart-breadcrumb,
body.woocommerce-account .woocommerce > .loja-cart-pagehead {
	flex: 0 0 100%;
	margin: 0;
}
body.woocommerce-account .woocommerce > .loja-cart-breadcrumb {
	margin-bottom: -0.75rem;
}
/* O wrapper de avisos vem sempre (vazio) antes de tudo e, num flex com gap,
 * criaria um vão acima do breadcrumb: "display: contents" o tira da jogada
 * e os avisos, quando existem, viram itens de largura cheia. */
body.woocommerce-account .woocommerce > .woocommerce-notices-wrapper {
	display: contents;
}
body.woocommerce-account .woocommerce-notices-wrapper > * {
	flex: 0 0 100%;
	margin: 0;
}

/* Menu lateral. O Astra desenha borda em cada <li>/<a>: zera. */
.woocommerce-MyAccount-navigation {
	flex: 0 0 240px;
	float: none;
	width: auto;
}
.woocommerce-MyAccount-navigation ul {
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	margin: 0;
	padding: 0.6rem;
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
}
.woocommerce-MyAccount-navigation li {
	margin: 0;
	padding: 0;
	border: 0 !important;
}
.woocommerce-MyAccount-navigation li a {
	display: block;
	padding: 0.7rem 1rem;
	border: 0 !important;
	border-radius: 12px;
	color: var(--loja-ink);
	text-decoration: none;
	font-weight: 700;
	font-size: 0.92rem;
	transition: background 0.15s ease;
}
.woocommerce-MyAccount-navigation li a:hover {
	background: var(--loja-soft);
}
.woocommerce-MyAccount-navigation li.is-active a {
	background: var(--loja-gradient);
	color: #fff;
}
.woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--customer-logout a {
	color: var(--loja-muted);
	font-weight: 600;
}

/* Conteúdo. */
.woocommerce-MyAccount-content {
	flex: 1 1 380px;
	float: none;
	width: auto;
	min-width: 0;
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
	padding: 1.5rem;
}
.woocommerce-MyAccount-content > p {
	margin: 0 0 1rem;
}
.woocommerce-MyAccount-content h2,
.woocommerce-MyAccount-content h3,
.woocommerce-MyAccount-content .woocommerce-Address-title h2 {
	font-size: 1.2rem;
	font-weight: 800;
	color: var(--loja-ink);
	margin: 0 0 1rem;
}
.woocommerce-MyAccount-content form button[type="submit"],
.woocommerce-MyAccount-content form .button[type="submit"] {
	margin-top: 1rem;
}
.woocommerce-MyAccount-content fieldset {
	border: 0;
	padding: 0;
	margin: 1.5rem 0 0;
}
.woocommerce-MyAccount-content fieldset legend {
	width: 100%;
	padding: 0 0 0.6rem;
	margin: 0 0 1rem;
	border-bottom: 1px solid var(--loja-line);
	font-size: 1.05rem;
	font-weight: 800;
	color: var(--loja-ink);
}
.woocommerce-MyAccount-content form em {
	display: block;
	margin-top: 0.3rem;
	font-style: normal;
	font-size: 0.82rem;
	color: var(--loja-muted);
}

/* Painel. */
.loja-account-greeting {
	font-size: 1.05rem;
	margin: 0 0 1.25rem;
}
.loja-account-tiles {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: 1rem;
}
.loja-account-tile {
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	padding: 1.1rem 1.25rem;
	border: 1px solid var(--loja-line);
	border-radius: 16px;
	background: var(--loja-soft);
	color: var(--loja-ink);
	text-decoration: none;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.loja-account-tile:hover {
	transform: translateY(-2px);
	box-shadow: var(--loja-shadow);
}
.loja-account-tile__title {
	font-weight: 800;
	color: var(--loja-accent-dark);
}
.loja-account-tile__hint {
	font-size: 0.85rem;
	color: var(--loja-muted);
	line-height: 1.35;
}

/* Pedidos: tabela sem moldura, status colorido, ações pequenas. */
.woocommerce-MyAccount-content table.woocommerce-orders-table {
	width: 100%;
	margin: 0;
	border: 0 !important;
	border-collapse: collapse;
	background: transparent;
}
.woocommerce-MyAccount-content table.woocommerce-orders-table th,
.woocommerce-MyAccount-content table.woocommerce-orders-table td {
	background: transparent;
	border: 0;
	border-bottom: 1px solid var(--loja-line);
	padding: 0.9rem 0.5rem !important;
	text-align: left;
	vertical-align: middle;
}
.woocommerce-MyAccount-content table.woocommerce-orders-table thead th {
	font-size: 0.78rem;
	font-weight: 800;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--loja-muted);
}
.woocommerce-MyAccount-content table.woocommerce-orders-table tbody tr:last-child th,
.woocommerce-MyAccount-content table.woocommerce-orders-table tbody tr:last-child td {
	border-bottom: 0;
}
.woocommerce-orders-table__cell-order-status {
	font-weight: 700;
	color: var(--loja-muted);
}
/* Só no desktop: no celular o ::before da célula é o rótulo "Status:" do tema. */
@media (min-width: 783px) {
	.woocommerce-orders-table__cell-order-status::before {
		content: '';
		display: inline-block;
		width: 8px;
		height: 8px;
		margin-right: 0.45rem;
		border-radius: 50%;
		background: currentColor;
	}
}
.woocommerce-orders-table__row--status-processing .woocommerce-orders-table__cell-order-status,
.woocommerce-orders-table__row--status-completed .woocommerce-orders-table__cell-order-status {
	color: #15803d;
}
.woocommerce-orders-table__row--status-pending .woocommerce-orders-table__cell-order-status,
.woocommerce-orders-table__row--status-on-hold .woocommerce-orders-table__cell-order-status {
	color: #b45309;
}
.woocommerce-orders-table__row--status-cancelled .woocommerce-orders-table__cell-order-status,
.woocommerce-orders-table__row--status-failed .woocommerce-orders-table__cell-order-status {
	color: #b91c1c;
}
.woocommerce-MyAccount-content .woocommerce-orders-table__cell-order-actions .button {
	display: inline-block;
	margin: 0.15rem 0.35rem 0.15rem 0;
	padding: 0.45rem 1rem;
	font-size: 0.82rem;
	line-height: 1.2;
	background: var(--loja-surface);
	color: var(--loja-accent-dark);
	border: 1px solid var(--loja-line);
	box-shadow: none;
}
.woocommerce-MyAccount-content .woocommerce-orders-table__cell-order-actions .button.view,
.woocommerce-MyAccount-content .woocommerce-orders-table__cell-order-actions .button.pay {
	background: var(--loja-gradient);
	color: #fff;
	border: 0;
}
.woocommerce-MyAccount-content .woocommerce-orders-table__cell-order-actions .button.cancel {
	color: #b91c1c;
	border-color: #fecaca;
}

/* Endereços cadastrados: um cartãozinho por endereço. */
.woocommerce-MyAccount-content .woocommerce-Address {
	float: none;
	width: 100%;
	margin: 0 0 1rem;
	padding: 1.1rem 1.25rem;
	border: 1px solid var(--loja-line);
	border-radius: 16px;
}
.woocommerce-MyAccount-content .woocommerce-Address-title {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 0.6rem;
}
.woocommerce-MyAccount-content .woocommerce-Address-title h2,
.woocommerce-MyAccount-content .woocommerce-Address-title h3 {
	margin: 0;
	font-size: 1.05rem;
}
.woocommerce-MyAccount-content .woocommerce-Address-title a.edit {
	flex: 0 0 auto;
	padding: 0.35rem 0.9rem;
	border: 1px solid var(--loja-accent-dark);
	border-radius: 999px;
	font-size: 0.82rem;
	font-weight: 700;
	text-decoration: none;
	color: var(--loja-accent-dark);
}
.woocommerce-MyAccount-content .woocommerce-Address address {
	margin: 0;
	font-style: normal;
	line-height: 1.7;
}

/* Ver pedido (dentro da conta): os cartões da tela de pedido recebido, só
 * mais leves — já estão dentro do cartão do conteúdo. */
body.woocommerce-account .woocommerce-MyAccount-content section.woocommerce-order-details,
body.woocommerce-account .woocommerce-MyAccount-content section.woocommerce-customer-details {
	box-shadow: none;
	border-radius: 16px;
	padding: 1.25rem;
}
body.woocommerce-account .woocommerce-MyAccount-content mark {
	background: none;
	color: var(--loja-ink);
	font-weight: 800;
}

/* Login / cadastro (deslogado): dois cartões iguais, sem caixa dentro de caixa. */
/* Login e cadastro em telas separadas (woocommerce/myaccount/form-login.php):
 * um cartão só, centralizado, com link pra alternar. */
body.woocommerce-account .loja-auth {
	flex: 1 1 100%;
	display: flex;
	justify-content: center;
}
body.woocommerce-account .loja-auth__card {
	width: 100%;
	max-width: 460px;
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
	padding: 1.75rem;
}
body.woocommerce-account .loja-auth__card h2 {
	font-size: 1.3rem;
	font-weight: 800;
	color: var(--loja-ink);
	margin: 0 0 1rem;
}
body.woocommerce-account .loja-auth__card form.login,
body.woocommerce-account .loja-auth__card form.register {
	border: 0;
	border-radius: 0;
	padding: 0;
	margin: 0;
}
body.woocommerce-account .loja-auth__card .woocommerce-privacy-policy-text,
body.woocommerce-account .loja-auth__card form.register > p:not(.form-row) {
	font-size: 0.85rem;
	color: var(--loja-muted);
	line-height: 1.5;
}
body.woocommerce-account .loja-auth__card .lost_password {
	margin: 1rem 0 0;
}
body.woocommerce-account .loja-auth__card button[type="submit"] {
	width: 100%;
	margin-top: 0.5rem;
}
body.woocommerce-account .loja-auth__switch {
	margin: 1.25rem 0 0;
	padding-top: 1.25rem;
	border-top: 1px solid var(--loja-line);
	text-align: center;
	font-size: 0.92rem;
	color: var(--loja-muted);
}
body.woocommerce-account .loja-auth__switch a {
	font-weight: 800;
	color: var(--loja-accent-dark);
}

@media (max-width: 782px) {
	.woocommerce-MyAccount-navigation {
		flex-basis: 100%;
	}
	.woocommerce-MyAccount-navigation ul {
		flex-direction: row;
		flex-wrap: wrap;
	}
	.woocommerce-MyAccount-navigation li a {
		border-radius: 999px;
		padding: 0.55rem 0.95rem;
	}
	.woocommerce-MyAccount-content {
		flex-basis: 100%;
		padding: 1.1rem;
	}
}

/* Resíduos do Astra/WooCommerce na Minha conta. */
.woocommerce-account .woocommerce::before,
.woocommerce-account .woocommerce::after {
	display: none; /* clearfix: num flex com gap viraria um item vazio e abriria um vão no topo */
}
.woocommerce-MyAccount-content table.woocommerce-orders-table {
	border-collapse: collapse !important;
	border-spacing: 0;
}
.woocommerce-MyAccount-content table.woocommerce-orders-table thead,
.woocommerce-MyAccount-content table.woocommerce-orders-table thead tr,
.woocommerce-MyAccount-content table.woocommerce-orders-table thead th {
	background: transparent !important;
}
.woocommerce-MyAccount-content table.woocommerce-orders-table th,
.woocommerce-MyAccount-content table.woocommerce-orders-table td {
	border: 0 !important;
}
/* A divisória mora na LINHA (não nas células): com alturas diferentes por
 * célula (botões empilhados), a borda de cada célula ficava desalinhada. */
.woocommerce-MyAccount-content table.woocommerce-orders-table tr {
	border-bottom: 1px solid var(--loja-line);
}
.woocommerce-MyAccount-content table.woocommerce-orders-table tbody tr:last-child {
	border-bottom: 0;
}
.woocommerce-MyAccount-content .woocommerce-Address-title {
	background: transparent !important;
	border: 0 !important;
	padding: 0 !important;
}
.woocommerce-MyAccount-content .woocommerce-Address address {
	border: 0 !important;
	padding: 0 !important;
}

/* Faixa de boas-vindas do formulário de endereço logo após o cadastro. */
.loja-account-onboarding {
	margin: 0 0 1.25rem;
	padding: 0.9rem 1.1rem;
	background: var(--loja-soft);
	border: 1px solid var(--loja-line);
	border-left: 4px solid var(--loja-accent);
	border-radius: 14px;
	font-size: 0.92rem;
	line-height: 1.5;
}
.loja-account-onboarding strong {
	display: block;
	color: var(--loja-accent-dark);
}

/* Telas de entrada (login, cadastro, ativação): só o logo e o formulário. */
body.loja-auth-screen .loja-landing__aside,
body.loja-auth-screen .loja-landing__footer {
	display: none;
}
body.loja-auth-screen .loja-landing__topbar {
	justify-content: center;
	padding-top: 2.25rem;
}
body.loja-auth-screen .loja-landing__main {
	padding-top: 1.5rem;
	min-height: 60vh;
}
.loja-auth__hint {
	margin: -0.25rem 0 1rem;
	color: var(--loja-muted);
	font-size: 0.92rem;
	line-height: 1.5;
}

/* Barra no topo do site pedindo a confirmação do e-mail (mu-plugins/loja-core.php, seção 25d). */
.loja-verify-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.4rem 1rem;
	padding: 0.65rem 1rem;
	background: var(--loja-accent-dark);
	color: #fff;
	font-size: 0.88rem;
	line-height: 1.4;
	text-align: center;
}
.loja-verify-bar a {
	color: #fff;
	font-weight: 800;
	text-decoration: underline;
	white-space: nowrap;
}

/* Botão "Entrar/Cadastrar com o Google" (mu-plugins/loja-core.php, seção 25e). */
.loja-google-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.7rem;
	width: 100%;
	padding: 0.8rem 1rem;
	background: var(--loja-surface);
	border: 1px solid #dadce0;
	border-radius: 999px;
	color: #3c4043;
	font-weight: 700;
	font-size: 0.95rem;
	text-decoration: none;
	transition: background 0.15s ease, box-shadow 0.15s ease;
}
.loja-google-btn,
.loja-google-btn:hover,
.loja-google-btn span {
	color: #3c4043 !important; /* o tema pinta links de roxo; o botão do Google segue o cinza dele */
}
.loja-google-btn:hover {
	background: #f8f9fa;
	box-shadow: 0 1px 4px rgba(60, 64, 67, 0.25);
}
.loja-auth__or {
	display: flex;
	align-items: center;
	gap: 0.8rem;
	margin: 1.1rem 0;
	color: var(--loja-muted);
	font-size: 0.85rem;
}
.loja-auth__or::before,
.loja-auth__or::after {
	content: '';
	flex: 1;
	height: 1px;
	background: var(--loja-line);
}

/* Tela obrigatória de endereço (/my-account/entrega/): logo + formulário, no estilo do login. */
body.loja-onboarding-screen .woocommerce-MyAccount-navigation {
	display: none;
}
body.loja-onboarding-screen .woocommerce-MyAccount-content {
	flex: 0 1 560px;
	margin: 0 auto;
	padding: 1.75rem;
}
body.loja-onboarding-screen .woocommerce-MyAccount-content > h2,
body.loja-onboarding-screen .woocommerce-MyAccount-content form > h2 {
	font-size: 1.3rem;
}

/* ==========================================================================
 * Disposição dos formulários de endereço (Minha conta, tela de endereço e
 * checkout): grade de 12 colunas por id de campo, igual em qualquer versão dos
 * plugins de campos brasileiros (que misturam form-row-first/last/wide e deixam
 * Número/Bairro sozinhos pela metade). No celular, uma coluna.
 * ======================================================================== */
.woocommerce-address-fields__field-wrapper,
.woocommerce-billing-fields__field-wrapper {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	column-gap: 1rem;
	align-items: start;
}
.woocommerce-address-fields__field-wrapper > .form-row,
.woocommerce-billing-fields__field-wrapper > .form-row {
	grid-column: span 12;
	float: none;
	width: auto !important;
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}
/* Linhas só com campo oculto (tipo de pessoa/CPF/CNPJ do plugin, país) não ocupam célula. */
.woocommerce-address-fields__field-wrapper > .form-row:has(> .woocommerce-input-wrapper > input[type="hidden"]),
.woocommerce-billing-fields__field-wrapper > .form-row:has(> .woocommerce-input-wrapper > input[type="hidden"]) {
	display: none;
}
@media (min-width: 601px) {
	#billing_first_name_field,
	#billing_last_name_field,
	#billing_state_field,
	#billing_phone_field {
		grid-column: span 6;
	}
	/* Bairro e Cidade também em coluna única (linha inteira, base de 12 colunas). */
	#billing_number_field {
		grid-column: span 4;
	}
	#billing_address_2_field {
		grid-column: span 8;
	}
	/* CEP e Endereço (rua) ficam em coluna única, cada um na linha inteira (base: 12 colunas). */
}

/* Cadastro: WhatsApp e CPF/CNPJ lado a lado; o resto, largura cheia. */
body.woocommerce-account .loja-auth__card form.register {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 1rem;
}
body.woocommerce-account .loja-auth__card form.register > * {
	grid-column: 1 / -1;
}
body.woocommerce-account .loja-auth__card form.register > .loja-col-half {
	grid-column: auto;
}
@media (max-width: 480px) {
	body.woocommerce-account .loja-auth__card form.register > .loja-col-half {
		grid-column: 1 / -1;
	}
}

/* Número e Complemento na mesma linha: o complemento não tem rótulo visível, então alinha os dois campos pela base. */
@media (min-width: 601px) {
	#billing_number_field,
	#billing_address_2_field {
		align-self: end;
	}
}
/* Estado (select2) com a mesma altura dos demais campos. */
.woocommerce-address-fields__field-wrapper .select2-container .select2-selection--single,
.woocommerce-billing-fields__field-wrapper .select2-container .select2-selection--single {
	/* !important: o tema soma o padding à altura (46 + 22 = 68px) com regra mais forte. */
	box-sizing: border-box !important;
	height: 46px !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}
.woocommerce-address-fields__field-wrapper .select2-container .select2-selection--single .select2-selection__rendered,
.woocommerce-billing-fields__field-wrapper .select2-container .select2-selection--single .select2-selection__rendered {
	line-height: 44px !important;
}
.woocommerce-address-fields__field-wrapper .select2-container .select2-selection--single .select2-selection__arrow,
.woocommerce-billing-fields__field-wrapper .select2-container .select2-selection--single .select2-selection__arrow {
	height: 44px;
}
.woocommerce-address-fields__field-wrapper select,
.woocommerce-billing-fields__field-wrapper select {
	height: 46px;
	padding-top: 0;
	padding-bottom: 0;
}

/* Campo travado (e-mail da conta no formulário de endereço): visível, mas claramente desabilitado. */
.loja-field-locked input[readonly] {
	background: #F2F2F2;
	color: var(--loja-muted);
	cursor: not-allowed;
}

/* Logo oficial: um pouco maior no cabeçalho e bem maior nas telas só-logo (login, cadastro, endereço). */
.loja-landing__brand img {
	max-height: 48px;
}
body.loja-auth-screen .loja-landing__brand img {
	max-height: 84px;
}

/* ===== Reforma de cores (Brand Kit) =====
 * Só cores: estrutura, tamanhos e comportamento ficam como estavam.
 * Botões, selos e abas ativas seguem usando --loja-gradient (mesma
 * orientação de 135° de antes, agora roxo → magenta → laranja). */
body.loja-landing {
	background: #FFFFFF;
}
body.loja-landing a:hover {
	color: var(--cc-magenta);
}
.woocommerce a.button.wc-forward:hover,
.woocommerce button[name="update_cart"]:hover {
	background: var(--cc-offwhite);
	color: var(--cc-purple);
}
.loja-landing__social a:hover,
.loja-landing__topbar a:hover svg {
	color: var(--cc-purple);
}
.loja-landing__social a:hover {
	color: #fff;
	background: var(--cc-purple);
}
.loja-landing__cart-count {
	background: var(--cc-magenta);
}
.loja-produtos ul.products li.product a.button.loja-card__button:hover {
	background-color: var(--cc-violet) !important;
}
.woocommerce-MyAccount-navigation li a:hover {
	color: var(--cc-purple);
}
.woocommerce del,
.woocommerce .price del,
.loja-produtos .price del {
	color: #777777;
}
.woocommerce .price ins,
.loja-produtos .price ins {
	color: var(--cc-orange);
	background: transparent;
	font-weight: 800;
}

/* Campos de formulário */
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce-page .select2-container--default .select2-selection--single,
.loja-personalizar input[type="text"],
.loja-auth input[type="text"],
.loja-auth input[type="email"],
.loja-auth input[type="password"] {
	background: #FFFFFF;
	border-color: #D9D5E3;
	color: var(--cc-charcoal);
}
.woocommerce form .form-row input.input-text::placeholder,
.woocommerce form .form-row textarea::placeholder,
.loja-auth input::placeholder {
	color: #777383;
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus,
.loja-personalizar input[type="text"]:focus,
.loja-auth input[type="text"]:focus,
.loja-auth input[type="email"]:focus,
.loja-auth input[type="password"]:focus {
	border-color: var(--cc-purple);
	box-shadow: 0 0 0 2px rgba(106, 0, 217, 0.12);
	outline: none;
}
:focus-visible {
	outline-color: var(--cc-purple);
}

/* Rodapé: azul-noite de ponta a ponta */
.loja-landing__footer {
	background: var(--cc-night);
	box-shadow: 0 0 0 100vmax var(--cc-night);
	clip-path: inset(0 -100vmax);
	color: var(--cc-offwhite);
	border-top: 0;
}
.loja-landing__footer a,
body.loja-landing .loja-landing__footer a {
	color: var(--cc-offwhite);
}
.loja-landing__footer a:hover,
body.loja-landing .loja-landing__footer a:hover {
	color: var(--cc-magenta);
}
@media (min-width: 783px) {
	.loja-landing__footer {
		padding-top: 1.75rem;
		padding-bottom: 1.75rem;
	}
}

/* ===== Modo escuro =====
 * Opcional: o padrão é o claro; o cliente liga pelo seletor do cabeçalho
 * (html[data-theme="dark"], guardado no navegador). Só redefine as
 * variáveis e corrige o que não passa por elas; layout e comportamento iguais. */
.loja-logo--escuro {
	display: none !important;
}
html[data-theme="dark"] {
		color-scheme: dark;
		--loja-bg: var(--cc-night);
		--loja-surface: #17152D;
		--loja-soft: #211C45;
		--loja-soft-2: rgba(255, 138, 0, 0.1);
		--loja-soft-3: rgba(212, 43, 232, 0.12);
		--loja-ink: #F2F2F2;
		--loja-text: #D9D6E6;
		--loja-muted: #A9A5BD;
		--loja-accent-dark: #B98CFF;
		--loja-line: #2E2A4A;
		--loja-shadow: 0 12px 32px rgba(0, 0, 0, 0.5);
		--cc-border: #2E2A4A;
	}
html[data-theme="dark"],
html[data-theme="dark"] body,
html[data-theme="dark"] body.loja-landing,
html[data-theme="dark"] body.loja-landing #page,
html[data-theme="dark"] body.loja-landing .site-content {
		background: var(--cc-night) !important;
		color: var(--loja-text);
	}
html[data-theme="dark"] .loja-logo--claro {
		display: none !important;
	}
html[data-theme="dark"] .loja-logo--escuro {
		display: block !important;
	}
html[data-theme="dark"] body.loja-landing a:hover {
		color: #E27BF0;
	}
html[data-theme="dark"] /* Fundos que usavam o roxo da marca com texto branco: voltam ao roxo cheio. */
	.loja-landing__social a:hover,
html[data-theme="dark"] .loja-verify-bar,
html[data-theme="dark"] .woocommerce-MyAccount-navigation li.is-active a {
		background: var(--cc-purple);
		color: #fff;
	}
html[data-theme="dark"] .woocommerce-MyAccount-navigation li.is-active a {
		background: var(--loja-gradient);
	}
html[data-theme="dark"] .loja-produtos ul.products li.product a.button.loja-card__button {
		background-color: var(--cc-purple) !important;
	}
html[data-theme="dark"] .loja-produtos ul.products li.product a.button.loja-card__button:hover {
		background-color: var(--cc-violet) !important;
	}
html[data-theme="dark"] /* Campos */
	.woocommerce form .form-row input.input-text,
html[data-theme="dark"] .woocommerce form .form-row textarea,
html[data-theme="dark"] .woocommerce form .form-row select,
html[data-theme="dark"] .woocommerce-page .select2-container--default .select2-selection--single,
html[data-theme="dark"] .select2-dropdown,
html[data-theme="dark"] .loja-personalizar input[type="text"],
html[data-theme="dark"] .loja-auth input[type="text"],
html[data-theme="dark"] .loja-auth input[type="email"],
html[data-theme="dark"] .loja-auth input[type="password"] {
		background: #0E0B2A;
		border-color: #3A3560;
		color: var(--cc-offwhite);
	}
html[data-theme="dark"] .select2-container--default .select2-selection--single .select2-selection__rendered,
html[data-theme="dark"] .select2-container--default .select2-results__option {
		color: var(--cc-offwhite);
	}
html[data-theme="dark"] .woocommerce form .form-row input.input-text::placeholder,
html[data-theme="dark"] .woocommerce form .form-row textarea::placeholder,
html[data-theme="dark"] .loja-auth input::placeholder {
		color: #8C88A3;
	}
html[data-theme="dark"] .woocommerce form .form-row input.input-text:focus,
html[data-theme="dark"] .woocommerce form .form-row textarea:focus,
html[data-theme="dark"] .woocommerce form .form-row select:focus {
		border-color: var(--cc-violet);
		box-shadow: 0 0 0 2px rgba(138, 32, 240, 0.35);
	}
html[data-theme="dark"] /* Preços e tabelas do Woo */
	.woocommerce del,
html[data-theme="dark"] .woocommerce .price del,
html[data-theme="dark"] .loja-produtos .price del {
		color: #8C88A3;
	}
html[data-theme="dark"] .woocommerce table.shop_table,
html[data-theme="dark"] .woocommerce table.shop_table th,
html[data-theme="dark"] .woocommerce table.shop_table td,
html[data-theme="dark"] .woocommerce-checkout #payment,
html[data-theme="dark"] .woocommerce-checkout #payment ul.payment_methods {
		background: transparent;
		border-color: var(--loja-line);
		color: var(--loja-text);
	}
html[data-theme="dark"] .woocommerce-checkout #payment div.payment_box {
		background: var(--loja-soft);
		color: var(--loja-text);
	}
html[data-theme="dark"] .woocommerce-checkout #payment div.payment_box::before {
		border-bottom-color: var(--loja-soft);
	}
html[data-theme="dark"] .loja-landing__footer {
		background: #02000F;
		box-shadow: 0 0 0 100vmax #02000F;
	}
html[data-theme="dark"] .loja-sticky-cta {
		background: rgba(23, 21, 45, 0.96);
	}

html[data-theme="dark"] {
		--loja-accent: var(--cc-violet);
	}
html[data-theme="dark"] ul.wc_payment_methods li.wc_payment_method,
html[data-theme="dark"] ul#shipping_method li {
		background: var(--loja-surface);
		border-color: #3A3560;
	}
html[data-theme="dark"] ul.wc_payment_methods li.wc_payment_method label,
html[data-theme="dark"] ul#shipping_method li label,
html[data-theme="dark"] .woocommerce-checkout #payment ul.payment_methods li label,
html[data-theme="dark"] .woocommerce-checkout #payment ul.payment_methods li label a {
		color: var(--cc-offwhite) !important;
	}
html[data-theme="dark"] .woocommerce-checkout #payment div.payment_box,
html[data-theme="dark"] .woocommerce-checkout #payment div.payment_box p,
html[data-theme="dark"] .payment_box,
html[data-theme="dark"] .payment_box p {
		background: var(--loja-soft) !important;
		color: var(--loja-text) !important;
	}
html[data-theme="dark"] .woocommerce-checkout #payment div.payment_box::before {
		display: none;
	}
html[data-theme="dark"] .woocommerce form .form-row label,
html[data-theme="dark"] .woocommerce-checkout label,
html[data-theme="dark"] .woocommerce-checkout h3,
html[data-theme="dark"] .woocommerce-checkout th,
html[data-theme="dark"] .woocommerce-checkout td,
html[data-theme="dark"] .woocommerce-cart table.cart th,
html[data-theme="dark"] .woocommerce-cart table.cart td {
		color: var(--loja-text);
	}
html[data-theme="dark"] .woocommerce-checkout-review-order,
html[data-theme="dark"] .woocommerce-checkout #order_review {
		border-color: var(--loja-line);
	}

html[data-theme="dark"] #order_review,
html[data-theme="dark"] .woocommerce table.shop_table,
html[data-theme="dark"] .woocommerce table.shop_table tr,
html[data-theme="dark"] .woocommerce table.shop_table th,
html[data-theme="dark"] .woocommerce table.shop_table td,
html[data-theme="dark"] .woocommerce-checkout-review-order-table th,
html[data-theme="dark"] .woocommerce-checkout-review-order-table td,
html[data-theme="dark"] .cart_totals th,
html[data-theme="dark"] .cart_totals td,
html[data-theme="dark"] .woocommerce-orders-table th,
html[data-theme="dark"] .woocommerce-orders-table td {
		border-color: var(--loja-line) !important;
	}
html[data-theme="dark"] .woocommerce .quantity .qty,
html[data-theme="dark"] .loja-cart-products .quantity input {
		color: var(--cc-offwhite);
	}


/* ===== Cabeçalho novo: faixa de ofertas, busca, conta/carrinho e menu ===== */
.loja-header {
	position: relative;
	z-index: 40;
}
.loja-header__promo {
	background: linear-gradient(90deg, var(--loja-soft) 0%, var(--loja-soft-3) 100%);
	font-size: 0.9rem;
}
.loja-header__promo-inner {
	max-width: var(--loja-max);
	margin: 0 auto;
	padding: 0.55rem 1.25rem;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}
.loja-header__promo-link {
	display: inline-flex;
	align-items: center;
	gap: 0.65rem;
	text-decoration: none;
	color: var(--loja-muted);
}
.loja-header__promo-link strong {
	color: var(--loja-accent-dark);
	font-weight: 800;
}
.loja-header__promo-badge,
.loja-nav__pct {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	border-radius: 999px;
	background: var(--cc-magenta);
	color: #fff;
	font-weight: 800;
	font-size: 0.78rem;
	line-height: 1;
}
.loja-header__promo-sep {
	width: 1px;
	height: 16px;
	background: var(--loja-line);
}
.loja-header__promo .loja-landing__social {
	gap: 1rem;
}
.loja-header__promo .loja-landing__social a {
	width: auto;
	height: auto;
	background: transparent;
	color: var(--loja-accent-dark);
	border-radius: 0;
}
.loja-header__promo .loja-landing__social a:hover {
	background: transparent;
	color: var(--cc-magenta);
}

/* Linha principal: logo, busca, conta, carrinho, modo escuro */
.loja-header .loja-landing__topbar {
	gap: 1.5rem;
	padding-top: 1rem;
	padding-bottom: 1rem;
}
.loja-header__search {
	flex: 1 1 auto;
	max-width: 620px;
	display: flex;
	align-items: center;
	gap: 0.6rem;
	padding: 0.3rem 0.3rem 0.3rem 1rem;
	border: 1px solid var(--loja-line);
	border-radius: 999px;
	background: var(--loja-surface);
	box-shadow: 0 4px 16px rgba(106, 0, 217, 0.08);
	color: var(--loja-muted);
}
.loja-header__search:focus-within {
	border-color: var(--cc-purple);
	box-shadow: 0 0 0 2px rgba(106, 0, 217, 0.12);
}
.loja-header__search input[type="search"] {
	flex: 1;
	min-width: 0;
	border: 0;
	background: transparent;
	box-shadow: none;
	outline: none;
	font: inherit;
	font-size: 1rem;
	color: var(--loja-ink);
	padding: 0.45rem 0;
}
.loja-header__search button {
	flex: none;
	width: 52px;
	height: 40px;
	border: 0;
	border-radius: 999px;
	background: var(--cc-purple);
	color: #fff;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	padding: 0;
}
.loja-header__search button:hover {
	background: var(--cc-violet);
}
.loja-header .loja-landing__aside {
	gap: 1.4rem;
}
.loja-landing__account,
.loja-landing__cart {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	color: var(--loja-ink);
	text-decoration: none;
	font-weight: 600;
}
.loja-landing__account-text {
	display: flex;
	flex-direction: column;
	line-height: 1.2;
	font-weight: 700;
	font-size: 0.92rem;
}
.loja-landing__account-text small {
	font-size: 0.82rem;
	font-weight: 400;
	color: var(--loja-muted);
}
.loja-landing__account:hover,
.loja-landing__cart:hover {
	color: var(--cc-purple);
}
.loja-landing__cart {
	padding-left: 1.4rem;
	border-left: 1px solid var(--loja-line);
}
.loja-landing__cart-count {
	top: -8px;
	right: -14px;
}
.loja-landing__account.is-logged-in::after {
	left: 17px;
}
.loja-theme-toggle {
	width: 38px;
	height: 38px;
	border-radius: 999px;
	border: 1px solid var(--loja-line);
	background: var(--loja-soft);
	color: var(--loja-ink);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	padding: 0;
}
.loja-theme-toggle:hover {
	color: var(--cc-purple);
}
.loja-theme-toggle__sun,
html[data-theme="dark"] .loja-theme-toggle__moon {
	display: none;
}
html[data-theme="dark"] .loja-theme-toggle__sun {
	display: block;
}

/* Menu principal */
.loja-nav {
	background: linear-gradient(90deg, var(--loja-soft) 0%, var(--loja-soft-3) 100%);
}
.loja-nav__list {
	max-width: var(--loja-max);
	margin: 0 auto;
	padding: 0 1.25rem;
	list-style: none;
	display: flex;
	align-items: stretch;
	justify-content: space-between;
	gap: 0.25rem;
}
.loja-nav__item {
	position: relative;
	display: flex;
	align-items: center;
	margin: 0;
}
.loja-nav__link {
	display: inline-flex;
	align-items: center;
	gap: 0.55rem;
	padding: 0.95rem 0.9rem;
	color: var(--loja-ink);
	font-weight: 600;
	font-size: 0.95rem;
	text-decoration: none;
	border-bottom: 3px solid transparent;
	white-space: nowrap;
}
.loja-nav__link:hover,
.loja-nav__item.is-active > .loja-nav__link {
	color: var(--cc-purple);
}
.loja-nav__item.is-active > .loja-nav__link {
	border-bottom-color: var(--cc-purple);
	font-weight: 800;
}
.loja-nav__item.is-offer > .loja-nav__link {
	color: var(--cc-magenta);
	font-weight: 800;
}
.loja-nav__toggle {
	margin-left: -0.55rem;
	padding: 0.5rem;
	border: 0;
	background: transparent;
	color: var(--loja-ink);
	cursor: pointer;
	display: inline-flex;
}
.loja-nav__item.is-open .loja-nav__caret {
	transform: rotate(180deg);
}
.loja-nav__sub {
	display: none;
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 220px;
	margin: 0;
	padding: 0.5rem;
	list-style: none;
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: 14px;
	box-shadow: var(--loja-shadow);
	z-index: 50;
}
.loja-nav__item.is-open > .loja-nav__sub,
.loja-nav__item.has-children:hover > .loja-nav__sub,
.loja-nav__item.has-children:focus-within > .loja-nav__sub {
	display: block;
}
.loja-nav__sub li {
	margin: 0;
}
.loja-nav__sub a {
	display: block;
	padding: 0.6rem 0.8rem;
	border-radius: 10px;
	color: var(--loja-ink);
	text-decoration: none;
	font-weight: 600;
	font-size: 0.92rem;
}
.loja-nav__sub a:hover {
	background: var(--loja-soft);
	color: var(--cc-purple);
}

@media (max-width: 960px) {
	.loja-header .loja-landing__topbar {
		flex-wrap: wrap;
		gap: 0.75rem 1rem;
	}
	.loja-header__search {
		order: 3;
		flex: 1 1 100%;
		max-width: none;
	}
	.loja-landing__account-text,
	.loja-landing__cart-label {
		display: none;
	}
	.loja-landing__cart {
		padding-left: 0;
		border-left: 0;
	}
	.loja-header__promo-text,
	.loja-header__promo-sep {
		display: none;
	}
}

/* Telas de entrada: só logo e formulário (sem faixa, busca nem menu) */
body.loja-auth-screen .loja-header__promo,
body.loja-auth-screen .loja-header__search,
body.loja-auth-screen .loja-nav {
	display: none;
}

html[data-theme="dark"] .loja-header__search {
	background: #0E0B2A;
	border-color: #3A3560;
	box-shadow: none;
}
html[data-theme="dark"] .loja-header__promo,
html[data-theme="dark"] .loja-nav {
	background: linear-gradient(90deg, #17152D 0%, #211C45 100%);
}
html[data-theme="dark"] .loja-nav__link:hover,
html[data-theme="dark"] .loja-nav__item.is-active > .loja-nav__link,
html[data-theme="dark"] .loja-landing__account:hover,
html[data-theme="dark"] .loja-landing__cart:hover,
html[data-theme="dark"] .loja-theme-toggle:hover {
	color: #B98CFF;
}
html[data-theme="dark"] .loja-nav__item.is-active > .loja-nav__link {
	border-bottom-color: #B98CFF;
}
html[data-theme="dark"] .loja-nav__item.is-offer > .loja-nav__link {
	color: #E27BF0;
}
.loja-field-locked.form-row input[readonly],
.woocommerce form .form-row.loja-field-locked input.input-text[readonly] {
	background: #F2F2F2;
	color: var(--loja-muted);
}
html[data-theme="dark"] .woocommerce form .form-row.loja-field-locked input.input-text[readonly] {
	background: #211C45;
}
.loja-theme-toggle,
.loja-theme-toggle:hover,
.loja-theme-toggle:focus,
.loja-theme-toggle:active {
	background: var(--loja-soft);
	border-color: var(--loja-line);
	box-shadow: none;
}
.loja-theme-toggle:focus-visible {
	outline: 2px solid var(--cc-purple);
	outline-offset: 2px;
}

/* Menu principal na cor do rodapé (azul-noite) */
.loja-nav,
html[data-theme="dark"] .loja-nav {
	background: var(--cc-night);
}
html[data-theme="dark"] .loja-nav {
	background: #02000F;
}
.loja-nav__link,
.loja-nav__toggle {
	color: var(--cc-offwhite);
}
.loja-nav__link:hover,
.loja-nav__item.is-active > .loja-nav__link,
html[data-theme="dark"] .loja-nav__link:hover,
html[data-theme="dark"] .loja-nav__item.is-active > .loja-nav__link {
	color: #fff;
}
.loja-nav__item.is-active > .loja-nav__link,
html[data-theme="dark"] .loja-nav__item.is-active > .loja-nav__link {
	border-bottom-color: var(--cc-magenta);
}
.loja-nav__item.is-offer > .loja-nav__link,
html[data-theme="dark"] .loja-nav__item.is-offer > .loja-nav__link {
	color: #FF8A00;
}
.loja-nav__toggle:hover,
.loja-nav__toggle:focus {
	background: transparent;
	color: #fff;
}
body.loja-landing .loja-nav .loja-nav__link,
body.loja-landing .loja-nav .loja-nav__toggle {
	color: var(--cc-offwhite);
}
body.loja-landing .loja-nav .loja-nav__link:hover,
body.loja-landing .loja-nav .loja-nav__item.is-active > .loja-nav__link {
	color: #fff;
}
body.loja-landing .loja-nav .loja-nav__item.is-offer > .loja-nav__link {
	color: #FF8A00;
}
body.loja-landing .loja-nav .loja-nav__sub a {
	color: var(--loja-ink);
}
body.loja-landing .loja-nav .loja-nav__sub a:hover {
	color: var(--cc-purple);
}

/* ===== Listagem de produtos (todos, categoria, ofertas, busca) ===== */
.loja-archive {
	max-width: var(--loja-max);
	margin: 0 auto;
	padding: 2rem 1.25rem 3rem;
}
.loja-archive__head {
	margin: 0.75rem 0 1.75rem;
}
.loja-archive__layout {
	display: grid;
	grid-template-columns: 260px minmax(0, 1fr);
	gap: 1.75rem;
	align-items: start;
}
.loja-filters {
	display: grid;
	gap: 1rem;
	position: sticky;
	top: 1rem;
}
.loja-filters__box {
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	box-shadow: var(--loja-shadow);
	padding: 1.25rem;
	margin: 0;
}
.loja-filters__box h2 {
	font-size: 1.05rem;
	margin: 0 0 0.85rem;
}
.loja-filters__cats,
.loja-filters__cats ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
.loja-filters__cats ul {
	margin: 0.15rem 0 0.35rem 0.9rem;
	border-left: 2px solid var(--loja-line);
	padding-left: 0.6rem;
}
.loja-filters__cats li {
	margin: 0;
}
.loja-filters__cats a {
	display: block;
	padding: 0.45rem 0.7rem;
	border-radius: 10px;
	color: var(--loja-ink);
	text-decoration: none;
	font-weight: 600;
	font-size: 0.93rem;
}
.loja-filters__cats a small {
	color: var(--loja-muted);
	font-weight: 400;
}
.loja-filters__cats a:hover {
	background: var(--loja-soft);
	color: var(--cc-purple);
}
.loja-filters__cats li.is-current > a {
	background: var(--cc-purple);
	color: #fff;
}
.loja-filters__cats li.is-current > a small {
	color: rgba(255, 255, 255, 0.8);
}
.loja-filters__price {
	border: 0;
	padding: 0;
	margin: 0 0 0.9rem;
	display: flex;
	align-items: center;
	gap: 0.5rem;
	flex-wrap: wrap;
}
.loja-filters__price legend {
	font-weight: 700;
	font-size: 0.9rem;
	padding: 0;
	margin-bottom: 0.4rem;
	float: left;
	width: 100%;
}
.loja-filters__price label {
	flex: 1 1 0;
	min-width: 0;
}
.loja-filters__price input {
	width: 100%;
	padding: 0.55rem 0.7rem;
	border: 1px solid #D9D5E3;
	border-radius: 10px;
	background: var(--loja-surface);
	color: var(--loja-ink);
	font: inherit;
	font-size: 0.92rem;
}
.loja-filters__price input:focus {
	border-color: var(--cc-purple);
	box-shadow: 0 0 0 2px rgba(106, 0, 217, 0.12);
	outline: none;
}
.loja-filters__check {
	display: flex;
	align-items: center;
	gap: 0.55rem;
	margin: 0 0 1rem;
	font-size: 0.92rem;
	color: var(--loja-text);
}
.loja-filters__box .button {
	width: 100%;
}
.loja-filters__clear {
	display: block;
	text-align: center;
	margin-top: 0.7rem;
	font-size: 0.88rem;
}
.loja-archive__toolbar {
	display: flex;
	justify-content: flex-end;
	margin-bottom: 1rem;
}
.loja-archive__toolbar .woocommerce-ordering {
	margin: 0;
}
.loja-archive__toolbar select {
	padding: 0.6rem 2rem 0.6rem 0.9rem;
	border: 1px solid #D9D5E3;
	border-radius: 999px;
	background-color: var(--loja-surface);
	color: var(--loja-ink);
	font: inherit;
	font-size: 0.92rem;
}
.loja-archive__results ul.products {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}
.loja-archive__results .woocommerce-pagination {
	margin-top: 2rem;
	text-align: center;
}
.loja-archive__results .woocommerce-pagination ul {
	display: inline-flex;
	gap: 0.4rem;
	border: 0;
	padding: 0;
}
.loja-archive__results .woocommerce-pagination ul li {
	border: 0;
	margin: 0;
}
.loja-archive__results .woocommerce-pagination a,
.loja-archive__results .woocommerce-pagination span {
	display: inline-flex;
	min-width: 38px;
	height: 38px;
	align-items: center;
	justify-content: center;
	border-radius: 999px;
	border: 1px solid var(--loja-line);
	background: var(--loja-surface);
	color: var(--loja-ink);
	font-weight: 700;
	padding: 0 0.6rem;
}
.loja-archive__results .woocommerce-pagination .current {
	background: var(--cc-purple);
	border-color: var(--cc-purple);
	color: #fff;
}
.loja-archive__empty {
	text-align: center;
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	padding: 3rem 1rem;
}
@media (max-width: 1000px) {
	.loja-archive__results ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 782px) {
	.loja-archive__layout {
		grid-template-columns: 1fr;
	}
	.loja-filters {
		position: static;
	}
	.loja-archive__results ul.products {
		grid-template-columns: 1fr !important;
	}
}
html[data-theme="dark"] .loja-filters__price input,
html[data-theme="dark"] .loja-archive__toolbar select {
	background: #0E0B2A;
	border-color: #3A3560;
	color: var(--cc-offwhite);
}
html[data-theme="dark"] .loja-filters__cats a:hover {
	color: #B98CFF;
}

/* Ajustes da listagem (Astra impõe 4 colunas e títulos grandes) */
.loja-archive__results ul.products,
.loja-archive__results ul.products.columns-4,
.loja-archive__results ul.products.columns-3 {
	grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}
@media (max-width: 1000px) {
	.loja-archive__results ul.products,
	.loja-archive__results ul.products.columns-4 {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
}
@media (max-width: 782px) {
	.loja-archive__results ul.products,
	.loja-archive__results ul.products.columns-4 {
		grid-template-columns: 1fr !important;
	}
}
body.loja-landing .loja-filters__box h2 {
	font-size: 1.05rem;
	margin: 0 0 0.85rem;
}
body.loja-landing .loja-filters__cats a {
	color: var(--loja-ink);
}
body.loja-landing .loja-filters__cats a:hover {
	color: var(--cc-purple);
}
body.loja-landing .loja-filters__cats li.is-current > a {
	color: #fff;
}
.loja-archive__toolbar .woocommerce-ordering select {
	width: auto;
	min-width: 220px;
}
.loja-filters__cats a small {
	white-space: nowrap;
}

/* Busca ao vivo */
.loja-header__search {
	position: relative;
}
.loja-busca__lista {
	position: absolute;
	top: calc(100% + 8px);
	left: 0;
	right: 0;
	z-index: 60;
	background: var(--loja-surface);
	border: 1px solid var(--loja-line);
	border-radius: 18px;
	box-shadow: var(--loja-shadow);
	padding: 0.4rem;
	max-height: min(70vh, 470px);
	overflow-y: auto;
}
.loja-busca__lista[hidden] {
	display: none;
}
body.loja-landing .loja-busca__item {
	display: grid;
	grid-template-columns: 48px minmax(0, 1fr) auto;
	align-items: center;
	gap: 0.75rem;
	padding: 0.5rem 0.6rem;
	border-radius: 12px;
	color: var(--loja-ink);
	text-decoration: none;
}
.loja-busca__item img {
	width: 48px;
	height: 48px;
	object-fit: cover;
	border-radius: 10px;
}
.loja-busca__nome {
	font-weight: 700;
	font-size: 0.92rem;
	line-height: 1.3;
}
.loja-busca__preco {
	font-weight: 800;
	font-size: 0.9rem;
	white-space: nowrap;
	text-align: right;
}
.loja-busca__preco del {
	display: block;
	font-weight: 400;
	font-size: 0.78rem;
}
body.loja-landing .loja-busca__item:hover,
body.loja-landing .loja-busca__item.is-active {
	background: var(--loja-soft);
	color: var(--cc-purple);
}
body.loja-landing .loja-busca__todos {
	display: block;
	margin-top: 0.25rem;
	padding: 0.7rem;
	text-align: center;
	border-top: 1px solid var(--loja-line);
	font-weight: 700;
	font-size: 0.9rem;
}
.loja-busca__vazio {
	margin: 0;
	padding: 1rem;
	text-align: center;
	color: var(--loja-muted);
}
.loja-archive__results ul.products li.product a.button {
	margin-top: auto !important;
}

/* ===== Listagem: acabamento (visual de loja, sem sombras pesadas) ===== */
.loja-archive {
	padding-top: 1.5rem;
}
.loja-archive__head {
	margin: 0.5rem 0 2rem;
	padding-bottom: 1.25rem;
	border-bottom: 1px solid var(--loja-line);
}
.loja-archive__head .loja-cart-pagehead__row h1 {
	font-size: 2rem;
}
.loja-archive__layout {
	grid-template-columns: 240px minmax(0, 1fr);
	gap: 2.5rem;
}
.loja-filters {
	gap: 1.75rem;
}
.loja-filters__box {
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	padding: 0;
}
.loja-filters__box + .loja-filters__box {
	border-top: 1px solid var(--loja-line);
	padding-top: 1.5rem;
}
body.loja-landing .loja-filters__box h2 {
	font-size: 0.78rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--loja-muted);
	margin: 0 0 0.75rem;
}
.loja-filters__cats a {
	padding: 0.5rem 0.75rem;
	border-radius: 8px;
	font-weight: 600;
}
.loja-filters__cats ul {
	border-left: 1px solid var(--loja-line);
	margin-left: 0.75rem;
}
.loja-filters__cats a small {
	margin-left: 0.2rem;
}
body.loja-landing .loja-filters__cats li.is-current > a {
	background: var(--loja-soft);
	color: var(--cc-purple);
	font-weight: 800;
}
body.loja-landing .loja-filters__cats li.is-current > a small {
	color: var(--loja-muted);
}
.loja-filters__price legend {
	display: none;
}
.loja-filters__price {
	margin-bottom: 0.9rem;
}
.loja-filters__box .button {
	box-shadow: none;
	padding: 0.7rem 1rem;
	font-size: 0.92rem;
}

/* Contagem e ordenação no cabeçalho, acima da linha, à direita do título */
.loja-archive__tools {
	display: flex;
	align-items: center;
	gap: 1rem;
}
.loja-archive__tools .woocommerce-ordering {
	margin: 0;
}
.loja-archive__count {
	margin: 0;
	color: var(--loja-muted);
	font-size: 0.92rem;
	font-weight: 600;
}
.loja-archive__toolbar .woocommerce-ordering select {
	min-width: 200px;
	padding: 0.55rem 2rem 0.55rem 1rem;
	font-size: 0.9rem;
}

html[data-theme="dark"] body.loja-landing .loja-filters__cats li.is-current > a {
	color: #B98CFF;
}
.loja-filters .loja-filters__box button.button {
	box-shadow: none !important;
}

/* Menu alinhado à esquerda (não distribuído na largura toda) */
.loja-nav__list {
	justify-content: flex-start;
	gap: 1.25rem;
}
.loja-archive__results .astra-shop-summary-wrap {
	display: flex;
	flex-direction: column;
	flex: 1;
}
.loja-archive__results ul.products li.product .price {
	margin-bottom: 0.9rem;
}

/* Botão "Ver detalhes" à esquerda, como o título e o preço */
.loja-archive__results ul.products li.product a.button.loja-card__button {
	align-self: flex-start;
}

/* Menu hambúrguer (celular e tablet) */
.loja-nav-burger {
	display: none;
	width: 42px;
	height: 42px;
	padding: 0;
	border: 1px solid var(--loja-line);
	border-radius: 12px;
	background: var(--loja-soft);
	color: var(--loja-ink);
	align-items: center;
	justify-content: center;
	cursor: pointer;
}
.loja-nav-burger:hover,
.loja-nav-burger:focus {
	background: var(--loja-soft);
	color: var(--cc-purple);
}
.loja-nav-burger__close,
.loja-header.is-menu-open .loja-nav-burger__open {
	display: none;
}
.loja-header.is-menu-open .loja-nav-burger__close {
	display: block;
}
@media (max-width: 960px) {
	.loja-nav-burger {
		display: inline-flex;
	}
	.loja-header .loja-landing__topbar {
		flex-wrap: wrap;
		justify-content: flex-start;
	}
	.loja-header .loja-landing__brand {
		margin-right: auto;
	}
	.loja-nav {
		display: none;
	}
	.loja-header.is-menu-open .loja-nav {
		display: block;
		border-top: 1px solid rgba(255, 255, 255, 0.08);
	}
	.loja-nav__list {
		flex-direction: column;
		gap: 0;
		padding: 0.5rem 1.25rem 1rem;
	}
	.loja-nav__item {
		flex-wrap: wrap;
		border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	}
	.loja-nav__item:last-child {
		border-bottom: 0;
	}
	.loja-nav__link {
		flex: 1;
		padding: 0.9rem 0;
		border-bottom: 0 !important;
	}
	.loja-nav__item.is-active > .loja-nav__link {
		color: #fff;
		font-weight: 800;
	}
	.loja-nav__toggle {
		margin: 0;
		padding: 0.9rem 0.5rem;
	}
	.loja-nav__sub,
	.loja-nav__item.has-children:hover > .loja-nav__sub,
	.loja-nav__item.has-children:focus-within > .loja-nav__sub {
		display: none;
		position: static;
		width: 100%;
		min-width: 0;
		margin: 0 0 0.6rem;
		padding: 0 0 0 1.75rem;
		background: transparent;
		border: 0;
		border-radius: 0;
		box-shadow: none;
	}
	.loja-nav__item.is-open > .loja-nav__sub {
		display: block;
	}
	body.loja-landing .loja-nav .loja-nav__sub a {
		color: var(--cc-offwhite);
		padding: 0.6rem 0;
	}
	body.loja-landing .loja-nav .loja-nav__sub a:hover {
		background: transparent;
		color: #fff;
	}
}
body.loja-auth-screen .loja-nav-burger {
	display: none;
}
@media (max-width: 960px) {
	.loja-nav__item.has-children.is-open > .loja-nav__sub,
	.loja-nav__item.has-children.is-open:hover > .loja-nav__sub {
		display: block;
	}
}

/* Listagem responsiva (vem depois do bloco de acabamento, que redefine as colunas) */
@media (max-width: 1000px) {
	.loja-archive__layout {
		grid-template-columns: 210px minmax(0, 1fr);
		gap: 1.75rem;
	}
}
@media (max-width: 782px) {
	.loja-archive {
		padding: 1rem 1rem 2.5rem;
	}
	.loja-archive__layout {
		grid-template-columns: minmax(0, 1fr);
		gap: 1.5rem;
	}
	.loja-archive__head .loja-cart-pagehead__row h1 {
		font-size: 1.6rem;
	}
	.loja-archive__tools {
		width: 100%;
		justify-content: space-between;
	}
	.loja-archive__tools .woocommerce-ordering {
		flex: 1;
	}
	.loja-archive__toolbar .woocommerce-ordering select,
	.loja-archive__tools select {
		width: 100%;
		min-width: 0;
	}
	/* Categorias viram "chips" em linha, filtros em linha de baixo */
	.loja-filters__cats,
	.loja-filters__cats ul {
		display: flex;
		flex-wrap: wrap;
		gap: 0.4rem;
		margin: 0;
		padding: 0;
		border: 0;
	}
	.loja-filters__cats li {
		display: contents;
	}
	.loja-filters__cats a {
		border: 1px solid var(--loja-line);
		border-radius: 999px;
		padding: 0.4rem 0.9rem;
		font-size: 0.88rem;
	}
	body.loja-landing .loja-filters__cats li.is-current > a {
		border-color: var(--cc-purple);
	}
	.loja-filters__price {
		flex-wrap: nowrap;
	}
}
@media (min-width: 561px) and (max-width: 782px) {
	.loja-archive__results ul.products,
	.loja-archive__results ul.products.columns-4,
	.loja-archive__results ul.products.columns-3 {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
}

/* Filtros colapsáveis no celular */
.loja-filters__toggle {
	display: none;
}
@media (max-width: 782px) {
	.loja-filters {
		gap: 0;
	}
	.loja-filters__toggle {
		display: flex;
		align-items: center;
		gap: 0.6rem;
		width: 100%;
		padding: 0.8rem 1rem;
		border: 1px solid var(--loja-line);
		border-radius: 14px;
		background: var(--loja-surface);
		color: var(--loja-ink);
		font: inherit;
		font-weight: 700;
		font-size: 0.95rem;
		cursor: pointer;
		text-align: left;
	}
	.loja-filters__toggle:hover,
	.loja-filters__toggle:focus {
		background: var(--loja-surface);
		color: var(--cc-purple);
		border-color: var(--cc-purple);
	}
	.loja-filters__toggle > span:first-of-type {
		flex: 1;
	}
	.loja-filters__badge {
		min-width: 22px;
		height: 22px;
		padding: 0 6px;
		border-radius: 999px;
		background: var(--cc-magenta);
		color: #fff;
		font-size: 0.75rem;
		font-weight: 800;
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}
	.loja-filters.is-open .loja-filters__caret {
		transform: rotate(180deg);
	}
	.loja-filters__body {
		display: none;
		margin-top: 1rem;
		gap: 1.5rem;
	}
	.loja-filters.is-open .loja-filters__body {
		display: grid;
	}
}

/* Faixa de ofertas: produto em promoção passando, um por vez */
.loja-header__promo-link {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	min-width: 0;
	flex: 1;
}
.loja-header__promo-label {
	display: inline-flex;
	align-items: center;
	gap: 0.55rem;
	flex: none;
	text-decoration: none;
	color: var(--loja-accent-dark);
}
.loja-ticker {
	display: grid;
	min-width: 0;
	flex: 1;
}
.loja-ticker__item {
	grid-area: 1 / 1;
	display: flex;
	align-items: center;
	gap: 0.55rem;
	min-width: 0;
	opacity: 0;
	visibility: hidden;
	transform: translateY(6px);
	transition: opacity 0.35s ease, transform 0.35s ease, visibility 0.35s;
	text-decoration: none;
	color: var(--loja-muted);
	white-space: nowrap;
}
.loja-ticker__item.is-active {
	opacity: 1;
	visibility: visible;
	transform: none;
}
.loja-ticker__name {
	overflow: hidden;
	text-overflow: ellipsis;
	min-width: 0;
}
.loja-ticker__pct {
	flex: none;
	padding: 0.1rem 0.5rem;
	border-radius: 999px;
	background: var(--loja-gradient);
	color: #fff;
	font-weight: 800;
	font-size: 0.72rem;
	letter-spacing: 0.03em;
}
.loja-ticker__price {
	flex: none;
	font-weight: 800;
	color: var(--cc-orange);
}
body.loja-landing .loja-ticker__item:hover .loja-ticker__name {
	color: var(--cc-purple);
}
@media (max-width: 960px) {
	.loja-header__promo-sep {
		display: block;
	}
}
@media (max-width: 560px) {
	.loja-header__promo-label strong,
	.loja-header__promo-sep {
		display: none;
	}
	.loja-landing__social {
		gap: 0.7rem;
	}
}
@media (prefers-reduced-motion: reduce) {
	.loja-ticker__item {
		transition: none;
	}
}

/* Home com banners: o bloco de abertura antigo sai da tela (o 1º banner o substitui),
 * mas continua no HTML para leitores de tela e SEO manterem o <h1>. */
body.loja-has-banners .loja-vitrine-hero {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Botão "voltar ao topo" do Astra: no padrão da marca (círculo roxo, sem o azul padrão) */
#ast-scroll-top.ast-scroll-top-icon {
	width: 44px;
	height: 44px;
	border-radius: 999px !important;
	background: var(--cc-gradient-purple, linear-gradient(135deg, #6A00D9, #8A20F0)) !important;
	color: #fff !important;
	box-shadow: 0 8px 20px rgba(106, 0, 217, 0.3);
	border: 0;
	right: 1rem;
	bottom: 1rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
#ast-scroll-top.ast-scroll-top-icon:hover,
#ast-scroll-top.ast-scroll-top-icon:focus-visible {
	background: var(--cc-violet, #8A20F0) !important;
	transform: translateY(-2px);
	box-shadow: 0 10px 24px rgba(138, 32, 240, 0.4);
	outline: 2px solid var(--cc-purple, #6A00D9);
	outline-offset: 2px;
}
#ast-scroll-top.ast-scroll-top-icon .ast-icon {
	/* O Astra liga/desliga o display do botão por JS, então o centro é feito no ícone (tamanho total do botão). */
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	line-height: 0;
}
#ast-scroll-top.ast-scroll-top-icon .ast-icon svg {
	fill: currentColor;
	width: 18px;
	height: 18px;
	margin: 0;
	/* O Astra empurra a seta 3,6px pra cima (pensado pro quadrado dele); no círculo ela precisa ficar no centro. */
	transform: rotate(180deg) !important;
}
/* Nas landings de produto a barra fixa de compra fica embaixo (celular): sobe o botão acima dela. */
body:has(.loja-sticky-cta) #ast-scroll-top.ast-scroll-top-icon {
	bottom: 86px;
}
@media (min-width: 783px) {
	body:has(.loja-sticky-cta) #ast-scroll-top.ast-scroll-top-icon {
		bottom: 1rem;
	}
}

/* ===== Cabeçalho fixo ao rolar (assets/header.js marca .is-stuck) ===== */
html {
	scroll-padding-top: 130px;
}
.loja-header.is-stuck .loja-header__sticky {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 100;
	max-height: 100vh;
	max-height: 100dvh;
	overflow-y: auto;
	background: var(--loja-surface);
	box-shadow: 0 6px 24px rgba(23, 21, 45, 0.18);
}
body.admin-bar .loja-header.is-stuck .loja-header__sticky {
	top: 32px;
}
.loja-header.is-stuck .loja-header__promo {
	display: none;
}
.loja-header.is-stuck .loja-landing__topbar {
	padding-top: 0.55rem;
	padding-bottom: 0.55rem;
}
.loja-header.is-stuck .loja-nav__link {
	padding-top: 0.7rem;
	padding-bottom: 0.7rem;
}
/* Com o submenu aberto o painel precisa poder passar da barra (overflow vira auto ao rolar). */
@media (max-width: 960px) {
	html {
		scroll-padding-top: 70px;
	}
	.loja-header.is-stuck .loja-header__search {
		display: none;
	}
}
@media (min-width: 961px) {
	.loja-header.is-stuck .loja-header__sticky {
		overflow: visible;
	}
}

/* Rolagem suave nos links de âncora (ex.: "Ver produtos" -> #produtos) e no "voltar ao topo".
 * Quem pede menos animação no sistema continua com rolagem instantânea. */
html {
	scroll-behavior: smooth;
}
@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}
}

/* Aviso de produto personalizado (página do produto, checkout e pedido recebido) */
.loja-pers-aviso {
	display: block;
	margin-top: 0.6rem;
	font-size: 0.82rem;
	line-height: 1.45;
	color: var(--loja-muted);
	text-align: left;
}
.loja-pers-aviso--pedido {
	margin: 1rem 0;
	padding: 0.9rem 1rem;
	border: 1px solid var(--loja-line);
	border-radius: 14px;
	background: var(--loja-soft);
}

/* Rodapé: identificação do fornecedor à esquerda, páginas legais à direita */
.loja-landing__footer {
	align-items: flex-start;
}
.loja-footer__id {
	display: grid;
	gap: 0.35rem;
	max-width: 520px;
}
.loja-footer__meta {
	font-size: 0.82rem;
	opacity: 0.85;
}
.loja-footer__links {
	display: flex;
	flex-wrap: wrap;
	gap: 0.55rem 1.4rem;
	justify-content: flex-end;
	max-width: 520px;
}
.loja-landing__footer .loja-footer__links a,
.loja-landing__footer .loja-footer__meta a {
	margin-left: 0;
}
@media (max-width: 782px) {
	.loja-footer__links {
		justify-content: flex-start;
	}
}

/* ===== Páginas legais (termos, políticas): leitura confortável ===== */
.loja-legal {
	max-width: var(--loja-max);
	margin: 0 auto;
	padding: 1.5rem 1.25rem 4rem;
}
.loja-legal__head {
	margin: 0.75rem 0 2rem;
	padding-bottom: 1.25rem;
	border-bottom: 1px solid var(--loja-line);
}
.loja-legal__head h1 {
	margin: 0;
	font-size: clamp(1.8rem, 3.2vw, 2.4rem);
	font-weight: 800;
	color: var(--loja-ink);
}
.loja-legal__layout {
	display: block;
}
.loja-legal__layout.has-toc {
	display: grid;
	grid-template-columns: 250px minmax(0, 1fr);
	gap: 3rem;
	align-items: start;
}
.loja-legal__toc {
	position: sticky;
	/* abaixo do cabeçalho fixo (ele gruda no topo ao rolar) */
	top: 130px;
	max-height: calc(100vh - 150px);
	overflow-y: auto;
	padding: 1.1rem 1.1rem 1.2rem;
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	background: var(--loja-surface);
}
body.loja-landing .loja-legal__toc h2 {
	margin: 0 0 0.7rem;
	font-size: 0.74rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--loja-muted);
}
.loja-legal__toc ol {
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: toc;
}
.loja-legal__toc li {
	counter-increment: toc;
	margin: 0;
}
.loja-legal__toc a {
	display: block;
	padding: 0.38rem 0.5rem;
	border-radius: 8px;
	font-size: 0.86rem;
	line-height: 1.35;
	font-weight: 600;
	text-decoration: none;
	color: var(--loja-text);
}
.loja-legal__toc a::before {
	content: counter(toc) ". ";
	color: var(--loja-muted);
}
body.loja-landing .loja-legal__toc a:hover {
	background: var(--loja-soft);
	color: var(--cc-purple);
}
.loja-legal__content {
	max-width: 780px;
	font-size: 1.02rem;
	line-height: 1.75;
	color: var(--loja-text);
}
.loja-legal__content h2 {
	margin: 2.6rem 0 0.9rem;
	padding-top: 0.2rem;
	font-size: 1.45rem;
	line-height: 1.25;
	scroll-margin-top: 130px;
}
.loja-legal__content > h2:first-child,
.loja-legal__content > p:first-child + h2 {
	margin-top: 1.8rem;
}
.loja-legal__content h3 {
	margin: 1.8rem 0 0.6rem;
	font-size: 1.12rem;
	color: var(--loja-ink);
}
.loja-legal__content p,
.loja-legal__content ul,
.loja-legal__content ol {
	margin: 0 0 1.05rem;
}
.loja-legal__content ul,
.loja-legal__content ol {
	padding-left: 1.4rem;
}
.loja-legal__content li {
	margin-bottom: 0.4rem;
}
.loja-legal__content li::marker {
	color: var(--cc-purple);
}
.loja-legal__content a {
	color: var(--cc-purple);
	text-decoration: underline;
	text-underline-offset: 2px;
}
.loja-legal__content strong {
	color: var(--loja-ink);
}
/* Primeiro parágrafo como introdução */
.loja-legal__content > p:first-child {
	padding: 1rem 1.2rem;
	border-left: 4px solid var(--cc-purple);
	border-radius: 0 12px 12px 0;
	background: var(--loja-soft);
	font-size: 1.05rem;
}
/* Tabelas: dentro de um bloco com rolagem horizontal; ocupam toda a largura quando cabem */
.loja-legal__table {
	max-width: 100%;
	margin: 1.2rem 0 1.6rem;
	overflow-x: auto;
	border: 1px solid var(--loja-line);
	border-radius: 14px;
	-webkit-overflow-scrolling: touch;
}
.loja-legal__content table {
	width: 100%;
	margin: 0;
	border-collapse: separate;
	border-spacing: 0;
	font-size: 0.92rem;
	line-height: 1.5;
}
.loja-legal__content thead th {
	background: var(--loja-soft);
	color: var(--loja-ink);
	font-weight: 800;
	text-align: left;
}
.loja-legal__content th,
.loja-legal__content td {
	padding: 0.75rem 0.9rem;
	text-align: left;
	vertical-align: top;
	border-bottom: 1px solid var(--loja-line);
	min-width: 140px;
}
.loja-legal__content tbody tr:last-child td {
	border-bottom: 0;
}
.loja-legal__content tbody tr:nth-child(even) td {
	background: rgba(106, 0, 217, 0.025);
}
.loja-legal__content td ul,
.loja-legal__content td ol {
	margin-bottom: 0;
}
@media (max-width: 960px) {
	.loja-legal__layout.has-toc {
		grid-template-columns: minmax(0, 1fr);
		gap: 1.5rem;
	}
	.loja-legal__toc {
		position: static;
		max-height: none;
	}
	.loja-legal__toc ol {
		columns: 2;
		column-gap: 1.2rem;
	}
	.loja-legal__toc li {
		break-inside: avoid;
	}
}
@media (max-width: 560px) {
	.loja-legal {
		padding: 1rem 1rem 3rem;
	}
	.loja-legal__toc ol {
		columns: 1;
	}
	.loja-legal__content {
		font-size: 1rem;
	}
	.loja-legal__content h2 {
		font-size: 1.28rem;
	}
	.loja-legal__content th,
	.loja-legal__content td {
		min-width: 120px;
		padding: 0.65rem 0.7rem;
	}
}
html[data-theme="dark"] .loja-legal__content tbody tr:nth-child(even) td {
	background: rgba(255, 255, 255, 0.03);
}

.loja-legal__content,
.loja-legal__content * {
	overflow-wrap: anywhere;
}
.loja-legal__content table * {
	overflow-wrap: break-word;
}
body.loja-landing .loja-legal__toc a {
	color: var(--loja-text);
}

/* Formulário de direitos do titular dentro da página legal: ocupa a coluna inteira, sem recuo */
.loja-legal__content .loja-dt {
	max-width: none;
	margin: 0 0 2rem;
}
.loja-legal__content .loja-dt__card {
	max-width: none;
}
.loja-legal__content .loja-dt .loja-dt__card h2 {
	margin-top: 0;
	scroll-margin-top: 0;
}
.loja-legal__content .loja-dt input[type="text"],
.loja-legal__content .loja-dt input[type="email"],
.loja-legal__content .loja-dt select,
.loja-legal__content .loja-dt textarea {
	width: 100%;
	max-width: 100%;
}

/* Rodapé: identificação à esquerda e links à direita em duas colunas (quebra para uma coluna no celular) */
.loja-landing__footer {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
	gap: 1.5rem 3rem;
	align-items: start;
}
.loja-footer__id,
.loja-footer__links {
	max-width: none;
}
.loja-footer__links {
	justify-content: flex-end;
	align-content: flex-start;
}
@media (max-width: 782px) {
	.loja-landing__footer {
		grid-template-columns: minmax(0, 1fr);
	}
	.loja-footer__links {
		justify-content: flex-start;
	}
}

/* Página "Direitos do titular": formulário à esquerda e explicação à direita */
.loja-dt-pagina {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 320px;
	gap: 2rem;
	align-items: start;
}
.loja-legal__layout:not(.has-toc) .loja-legal__content:has(.loja-dt-pagina) {
	max-width: none;
}
.loja-legal__content > .loja-dt-pagina {
	margin-top: 0;
}
.loja-dt-pagina__ajuda {
	position: sticky;
	top: 130px;
	padding: 1.3rem 1.4rem;
	border: 1px solid var(--loja-line);
	border-radius: var(--loja-radius);
	background: var(--loja-soft);
	font-size: 0.95rem;
	line-height: 1.6;
}
.loja-legal__content .loja-dt-pagina__ajuda h2 {
	margin: 0 0 0.7rem;
	font-size: 1.15rem;
}
.loja-legal__content .loja-dt-pagina__ajuda h3 {
	margin: 1.3rem 0 0.5rem;
	font-size: 1rem;
}
.loja-dt-pagina__ajuda p:last-child {
	margin-bottom: 0;
}
@media (max-width: 960px) {
	.loja-dt-pagina {
		grid-template-columns: minmax(0, 1fr);
	}
	.loja-dt-pagina__ajuda {
		position: static;
		order: -1;
	}
}

/* Select do formulário de direitos: o Astra fixa altura/linha pequenas e cortava o texto da opção */
.loja-legal__content .loja-dt select,
.loja-dt select {
	height: auto;
	min-height: 48px;
	line-height: 1.4;
	padding: 0.7rem 2.6rem 0.7rem 0.9rem;
	-webkit-appearance: none;
	appearance: none;
	background-color: var(--loja-surface);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236A00D9' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 0.9rem center;
	cursor: pointer;
	overflow: visible;
	text-overflow: ellipsis;
}
.loja-legal__content .loja-dt input[type="text"],
.loja-legal__content .loja-dt input[type="email"] {
	min-height: 48px;
	line-height: 1.4;
}

/* Redes sociais no rodapé: círculos sob os links, alinhados à direita */
.loja-footer__social {
	grid-column: 2;
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	justify-content: flex-end;
}
.loja-landing__footer .loja-footer__social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	margin: 0;
	border-radius: 999px;
	border: 1px solid rgba(255, 255, 255, 0.25);
	color: var(--cc-offwhite);
	transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.loja-landing__footer .loja-footer__social a:hover {
	background: var(--cc-purple);
	border-color: var(--cc-purple);
	color: #fff;
}
@media (max-width: 782px) {
	.loja-footer__social {
		grid-column: 1;
		justify-content: flex-start;
	}
}

/* Botão flutuante do WhatsApp: no canto direito, à esquerda da seta de voltar ao topo */
.loja-whatsapp-fixo {
	position: fixed;
	right: calc(1rem + 44px + 0.65rem);
	bottom: 1rem;
	z-index: 9990;
	width: 44px;
	height: 44px;
	border-radius: 999px;
	background: #25D366;
	color: #07301A;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 8px 20px rgba(7, 48, 26, 0.3);
	text-decoration: none;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.loja-whatsapp-fixo svg {
	width: 24px;
	height: 24px;
}
body.loja-landing .loja-whatsapp-fixo:hover,
.loja-whatsapp-fixo:focus-visible {
	color: #07301A;
	transform: translateY(-2px);
	box-shadow: 0 10px 24px rgba(7, 48, 26, 0.4);
	outline: 2px solid #fff;
	outline-offset: 2px;
}
/* Landings de produto no celular têm a barra fixa de compra embaixo: sobe junto com a seta de topo */
body:has(.loja-sticky-cta) .loja-whatsapp-fixo {
	bottom: 86px;
}
@media (min-width: 783px) {
	body:has(.loja-sticky-cta) .loja-whatsapp-fixo {
		bottom: 1rem;
	}
}
@media print {
	.loja-whatsapp-fixo {
		display: none;
	}
}

/* Itens ativos (fundo roxo/degradê): o hover geral dos links (magenta) sumia com o texto; o texto fica branco */
body.loja-landing .woocommerce-MyAccount-navigation li.is-active a,
body.loja-landing .woocommerce-MyAccount-navigation li.is-active a:hover,
body.loja-landing .woocommerce-MyAccount-navigation li.is-active a:focus {
	color: #fff;
}

/* ==========================================================================
 * Painel da afiliada (/my-account/afiliado/...): menu próprio no lugar do
 * menu da Minha conta. Plugin loja-afiliados, Loja_Aff_Account::render_navigation().
 * Reaproveita .woocommerce-MyAccount-navigation (cartão, itens, is-active e a
 * versão em "pílulas" no celular); aqui só o link "Voltar" e a coluna.
 * ======================================================================== */
.loja-aff-nav {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
}
.loja-aff-nav .loja-aff-nav__back {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	align-self: flex-start;
	padding: 0.35rem 0.5rem;
	margin-left: 0.25rem;
	border-radius: 8px;
	color: var(--loja-muted);
	font-size: 0.88rem;
	font-weight: 700;
	text-decoration: none;
	transition: color 0.15s ease, background 0.15s ease;
}
.loja-aff-nav .loja-aff-nav__back:hover,
.loja-aff-nav .loja-aff-nav__back:focus-visible {
	color: var(--loja-accent-dark);
	background: var(--loja-soft);
}
.loja-aff-nav .loja-aff-nav__back:focus-visible {
	outline: 2px solid var(--loja-accent-dark);
	outline-offset: 2px;
}
@media (min-width: 783px) {
	.loja-aff-nav {
		position: sticky;
		/* abaixo do cabeçalho fixo (ele gruda no topo ao rolar) */
		top: 130px;
	}
	/* O link "Voltar" ocupa 2rem + 0.6rem de respiro acima do cartão do menu: o conteúdo desce o mesmo tanto e os dois cartões começam alinhados. */
	.loja-aff-nav .loja-aff-nav__back {
		min-height: 2rem;
		box-sizing: border-box;
	}
	body.loja-aff-area .woocommerce-MyAccount-content {
		margin-top: 2.6rem;
	}
}
@media (max-width: 782px) {
	.loja-aff-nav {
		gap: 0.4rem;
	}
	.loja-aff-nav .loja-aff-nav__back {
		margin-left: 0;
	}
	/* Seis itens em pílulas: rolagem horizontal numa linha só em vez de quebrar em 3 linhas. */
	.loja-aff-nav ul {
		flex-wrap: nowrap;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}
	.loja-aff-nav ul::-webkit-scrollbar {
		display: none;
	}
	.loja-aff-nav li {
		flex: 0 0 auto;
	}
	.loja-aff-nav li a {
		white-space: nowrap;
	}
}
