/* O tema (Elementor/ShopEngine) monta o resumo do produto num container
   flex em linha, e o widget de SKU logo acima tem largura "auto" (só o
   tamanho do texto). Sem forçar 100% aqui, este bloco "cabe" ao lado do
   SKU na mesma linha em vez de quebrar para a linha de baixo. O limite de
   largura visual fica no wrapper interno (.sbx-orc-single-inner), nunca
   neste elemento — senão o flexbox volta a achar que ele "cabe" ao lado. */
.sbx-orc-single-form {
	display: block !important;
	width: 100% !important;
	flex: 1 1 100% !important;
	clear: both;
	float: none;
}
.sbx-orc-single-inner {
	margin: 15px 0;
	max-width: 380px;
	text-align: left;
}
.sbx-orc-single-form label {
	display: block;
	margin-bottom: 5px;
	font-weight: 600;
}
.sbx-orc-single-row {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 8px;
}
.sbx-orc-variacoes {
	margin-bottom: 10px;
}
.sbx-orc-variacao-campo {
	margin-bottom: 10px;
}
.sbx-orc-variacao-campo label {
	font-weight: 600;
	font-size: 13px;
	margin-bottom: 8px;
}
.sbx-orc-variacao-select {
	width: 100%;
	height: 40px;
	padding: 0 10px;
	border: 1px solid #ccd5db;
	border-radius: 6px;
	background: #fff;
	font-size: 14px;
}
.sbx-orc-variacao-select:disabled {
	background: #f4f7f9;
	color: #9aa5ac;
	cursor: not-allowed;
}
.sbx-orc-single-form .sbx-orc-add-single:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}
.sbx-orc-single-form .swatch.sbx-orc-swatch-selecionado {
	outline: 2px solid var( --e-global-color-primary, #013755 );
	outline-offset: 2px;
}
/* Stepper de quantidade (- valor +), usado no produto único, nas
   grades de produto e na tabela de itens do orçamento. A altura das
   duas setas acompanha automaticamente a altura do campo no meio
   (align-items: stretch), então continua correta em qualquer contexto
   sem precisar fixar valores repetidos. */
.sbx-orc-stepper {
	display: inline-flex;
	align-items: stretch;
	flex: 0 0 auto;
	border: 1px solid #ccd5db;
	border-radius: 6px;
	overflow: hidden;
}
.sbx-orc-stepper .sbx-orc-step {
	flex: 0 0 28px;
	width: 28px;
	background: #f4f7f9;
	border: none;
	color: #33424c;
	font-size: 16px;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
}
.sbx-orc-stepper .sbx-orc-step:hover {
	background: #e1e6ea;
}
.sbx-orc-stepper input[type="number"] {
	border: none !important;
	border-left: 1px solid #ccd5db !important;
	border-right: 1px solid #ccd5db !important;
	border-radius: 0 !important;
	text-align: center;
	-moz-appearance: textfield;
}
.sbx-orc-stepper input[type="number"]::-webkit-outer-spin-button,
.sbx-orc-stepper input[type="number"]::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.sbx-orc-single-form .sbx-orc-qtd {
	width: 44px;
}
.sbx-orc-btn {
	background: var( --e-global-color-primary, #013755 ) !important;
	color: #fff !important;
	border: none !important;
	border-radius: 5px !important;
	font-family: inherit;
	font-weight: 500;
	font-size: 15px;
	padding: 12px 26px;
	cursor: pointer;
	transition: filter 0.15s ease;
}
.sbx-orc-btn:hover {
	filter: brightness( 1.15 );
}

/* Altura consistente entre o campo de quantidade e o botão ao lado dele
   (o tema define alturas diferentes para input e button por padrão).
   Escopo: produto único e grades de produto — a tabela do orçamento
   mantém o visual compacto original. */
.sbx-orc-qtd,
.sbx-orc-qtd-loop,
.sbx-orc-single-row .sbx-orc-step,
.sbx-orc-loop-add .sbx-orc-step,
.sbx-orc-single-row .sbx-orc-stepper,
.sbx-orc-loop-add .sbx-orc-stepper {
	height: 40px !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	box-sizing: border-box !important;
}
.sbx-orc-single-form .sbx-orc-btn,
.sbx-orc-add-loop,
.sbx-orc-ver-opcoes {
	height: 40px !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	box-sizing: border-box !important;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
}
.sbx-orc-msg {
	margin-top: 8px;
	font-size: 0.9em;
}
.sbx-orc-msg.sucesso {
	color: #1a7a2e;
}
.sbx-orc-msg.erro {
	color: #b30000;
}

.sbx-orc-wrap {
	--sbx-azul: var( --e-global-color-primary, #013755 );
	--sbx-borda: #e1e6ea;
	font-family: inherit;
	max-width: 860px;
	margin: 0 auto;
	padding: 10px 0 60px;
}
.sbx-orc-wrap h2 {
	font-size: 20px;
	margin: 0 0 16px;
	padding-bottom: 10px;
	border-bottom: 2px solid var(--sbx-borda);
	color: var(--sbx-azul);
}
.sbx-orc-wrap h2:not(:first-child) {
	margin-top: 36px;
}

/* Tabela de itens */
.sbx-orc-tabela {
	width: 100%;
	border-collapse: collapse;
	background: #fff;
	border: 1px solid var(--sbx-borda);
	border-radius: 8px;
	overflow: hidden;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
.sbx-orc-tabela th {
	background: #f4f7f9;
	text-transform: uppercase;
	font-size: 12px;
	letter-spacing: 0.03em;
	color: #4a5a66;
}
.sbx-orc-tabela th,
.sbx-orc-tabela td {
	padding: 12px 14px;
	text-align: left;
	border-bottom: 1px solid var(--sbx-borda);
}
.sbx-orc-tabela th:nth-child(2),
.sbx-orc-tabela td:nth-child(2),
.sbx-orc-tabela th:nth-child(3),
.sbx-orc-tabela td:nth-child(3) {
	text-align: center;
}
.sbx-orc-tabela tbody tr:last-child td {
	border-bottom: none;
}
.sbx-orc-sku {
	margin-top: 2px;
	font-size: 12px;
	color: #8a97a1;
}
.sbx-orc-variacao {
	margin-top: 2px;
	font-size: 12px;
	color: #4a5a66;
	font-weight: 500;
}
.sbx-orc-tabela a {
	color: var(--sbx-azul);
	font-weight: 600;
	text-decoration: none;
}
.sbx-orc-tabela a:hover {
	text-decoration: underline;
}
.sbx-orc-qtd-tabela {
	width: 64px !important;
	flex: 0 0 64px !important;
	padding: 6px 8px;
	border: 1px solid var(--sbx-borda);
	border-radius: 5px;
	text-align: center;
}
.sbx-orc-btn-perigo {
	background: #b30000 !important;
}
.sbx-orc-btn-perigo:hover {
	filter: brightness( 1.15 );
}
.sbx-orc-remover {
	padding: 8px 16px !important;
	font-size: 13px !important;
}
.sbx-orc-remover:hover {
	background: #b30000;
	color: #fff;
}

/* Formulário */
.sbx-orc-form {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 18px 22px;
	background: #fff;
	border: 1px solid var(--sbx-borda);
	border-radius: 10px;
	padding: 26px 28px;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
.sbx-orc-campo {
	display: flex;
	flex-direction: column;
	min-width: 0;
}
.sbx-orc-full {
	grid-column: 1 / -1;
}
.sbx-orc-form label,
.sbx-orc-label {
	font-weight: 600;
	font-size: 13px;
	margin-bottom: 6px;
	color: #33424c;
}
.sbx-orc-form input,
.sbx-orc-form select,
.sbx-orc-form textarea {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid #ccd5db;
	border-color: #ccd5db !important;
	border-radius: 6px;
	font-size: 14px;
	font-family: inherit;
	background: #fff;
	box-sizing: border-box;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.sbx-orc-form input:focus,
.sbx-orc-form select:focus,
.sbx-orc-form textarea:focus {
	outline: none;
	border-color: var(--sbx-azul) !important;
	box-shadow: 0 0 0 3px rgba(26, 82, 118, 0.12);
}
.sbx-orc-form input.sbx-orc-invalido {
	border-color: #b30000 !important;
}
.sbx-orc-checkbox {
	display: flex !important;
	align-items: center;
	gap: 6px;
	margin-top: 8px;
	font-weight: 400 !important;
	font-size: 13px !important;
	color: #4a5a66;
	cursor: pointer;
}
.sbx-orc-checkbox input {
	width: auto !important;
	margin: 0;
	cursor: pointer;
}
.sbx-orc-form input:disabled {
	background: #f4f7f9;
	color: #8a97a1;
	cursor: not-allowed;
}
.sbx-orc-campo-erro {
	color: #b30000;
	font-size: 12px;
	margin-top: 4px;
	min-height: 14px;
}
.sbx-orc-enviar-wrap {
	margin-top: 6px;
}
.sbx-orc-enviar-wrap .sbx-orc-btn {
	padding: 13px 30px;
	font-size: 15px;
	border-radius: 6px;
}

/* Seletor pessoa física / jurídica */
.sbx-orc-toggle-pessoa {
	display: inline-flex;
	border: 1px solid var(--sbx-borda);
	border-radius: 8px;
	overflow: hidden;
	width: fit-content;
}
.sbx-orc-toggle-pessoa label {
	margin: 0;
	padding: 10px 20px;
	font-size: 14px;
	font-weight: 600;
	color: #4a5a66;
	cursor: pointer;
	background: #f4f7f9;
	transition: background 0.15s ease, color 0.15s ease;
	user-select: none;
}
.sbx-orc-toggle-pessoa label + label {
	border-left: 1px solid var(--sbx-borda);
}
.sbx-orc-toggle-pessoa label.ativo {
	background: var(--sbx-azul);
	color: #fff;
}
.sbx-orc-toggle-pessoa input {
	position: absolute;
	opacity: 0;
	width: 0;
	height: 0;
}

.sbx-orc-erro {
	background: #fdecec;
	border: 1px solid #f3caca;
	color: #7a1010;
	padding: 14px 18px;
	margin-bottom: 20px;
	border-radius: 8px;
}
.sbx-orc-erro ul {
	margin: 6px 0 0;
	padding-left: 20px;
}
.sbx-orc-sucesso {
	background: #eafbea;
	border: 1px solid #bfe8c4;
	color: #1a5c2c;
	padding: 18px 20px;
	border-radius: 8px;
	font-size: 15px;
}

/* Modal de "orçamento enviado com sucesso" */
.sbx-orc-modal-overlay {
	position: fixed;
	inset: 0;
	background: rgba(10, 20, 28, 0.6);
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 100000;
	padding: 20px;
	animation: sbxOrcFadeIn 0.2s ease;
}
.sbx-orc-modal {
	background: #fff;
	border-radius: 14px;
	padding: 40px 36px 32px;
	max-width: 420px;
	width: 100%;
	text-align: center;
	box-shadow: 0 25px 60px rgba( 0, 0, 0, 0.3 );
	animation: sbxOrcModalIn 0.35s cubic-bezier( 0.17, 0.89, 0.32, 1.28 );
}
.sbx-orc-modal-icone {
	width: 64px;
	height: 64px;
	border-radius: 50%;
	background: #1a7a2e;
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 auto 20px;
}
.sbx-orc-modal h2 {
	margin: 0 0 10px;
	font-size: 20px;
	color: var( --sbx-azul, #013755 );
	border: none;
	padding: 0;
}
.sbx-orc-modal p {
	margin: 0 0 6px;
	color: #4a5a66;
	font-size: 15px;
	line-height: 1.5;
}
.sbx-orc-modal-redirect {
	margin-top: 16px !important;
	font-size: 13px !important;
	color: #8a97a1 !important;
}
@keyframes sbxOrcFadeIn {
	from { opacity: 0; }
	to { opacity: 1; }
}
@keyframes sbxOrcModalIn {
	from { opacity: 0; transform: scale( 0.9 ) translateY( 12px ); }
	to { opacity: 1; transform: scale( 1 ) translateY( 0 ); }
}
.sbx-orc-vazio {
	padding: 30px 0;
	font-size: 15px;
}
.sbx-orc-vazio a {
	color: var(--sbx-azul);
	font-weight: 600;
}

/* Mantém o rodapé colado na base da janela quando a página fica curta
   (orçamento vazio). Só afeta a página que exibe essa mensagem. */
body:has( .sbx-orc-vazio ) {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}
body:has( .sbx-orc-vazio ) main.site-main {
	flex: 1 0 auto;
}

@media (max-width: 640px) {
	.sbx-orc-form {
		grid-template-columns: 1fr;
		padding: 20px;
	}
	.sbx-orc-tabela {
		display: block;
		overflow-x: auto;
	}
}

/* Corrige a altura fixa dos cards de produto do tema (fazia o botão
   "Adicionar ao orçamento" vazar por cima da linha seguinte) e garante
   que todos os cards de uma linha fiquem com a mesma altura, com o
   botão sempre alinhado na base do card. */
ul.products {
	display: flex !important;
	flex-wrap: wrap;
}
ul.products li.product {
	height: auto !important;
	display: flex !important;
	flex-direction: column;
}
.shopengine-single-product-item {
	display: flex !important;
	flex-direction: column;
	height: 100%;
}

.sbx-orc-loop-add {
	display: flex;
	gap: 6px;
	margin-top: auto !important;
}
.sbx-orc-qtd-loop {
	width: 48px !important;
	flex: 0 0 48px !important;
	padding: 0 4px !important;
	border: 1px solid #ccd5db;
	border-radius: 5px;
	text-align: center;
	font-size: 13px;
}
.sbx-orc-add-loop {
	flex: 1 1 auto;
	min-width: 0;
	margin-top: 0 !important;
	padding: 0 6px !important;
	font-size: 13px !important;
	text-align: center;
	white-space: normal !important;
	line-height: 1.2 !important;
}
.sbx-orc-ver-opcoes {
	flex: 1 1 auto;
	width: 100%;
	min-width: 0;
	margin-top: 0 !important;
	padding: 0 6px !important;
	font-size: 13px !important;
	text-align: center;
	white-space: normal !important;
	line-height: 1.2 !important;
	display: flex;
	align-items: center;
	justify-content: center;
}

/* Remove o overlay padrão do ShopEngine (favoritar/comparar/quick view/"Ler mais") */
.overlay-add-to-cart {
	display: none !important;
}

/* Selo de categoria na página do produto (widget "Product Categories" do
   ShopEngine): vinha com padding e fonte enormes do template padrão,
   deixando o botão desproporcional ao resto da página. */
.elementor-widget-shopengine-product-categories {
	margin: 0 !important;
	padding: 0 !important;
}
.elementor-widget-shopengine-product-categories .elementor-widget-container {
	margin: 0 0 16px 0 !important;
	padding: 8px 20px !important;
	border-radius: 6px !important;
}
.elementor-widget-shopengine-product-categories .product-cats-links a {
	font-size: 14px !important;
}
/* Título do produto acima do selo de categoria (o template original tinha o
   selo em primeiro). Os dois ficam com ordem negativa para não afetar a
   posição dos demais widgets do resumo, que continuam em 0 (ordem padrão). */
.elementor-widget-shopengine-product-title {
	order: -2 !important;
	margin-bottom: 8px !important;
}
.elementor-widget-shopengine-product-categories {
	order: -1 !important;
}

/* Título do produto centralizado nas grades, apenas no desktop */
@media (min-width: 783px) {
	ul.products li.product .woocommerce-loop-product__title,
	.shopengine-single-product-item .product-title {
		text-align: center;
	}
}

/* Ícone "Meu orçamento" fixo no canto superior direito da tela. */
.sbx-orc-cart-icone {
	position: fixed;
	top: 16px;
	right: 16px;
	z-index: 9999;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 2px 8px rgba( 0, 0, 0, 0.18 );
	text-decoration: none;
	color: var( --e-global-color-primary, #013755 );
	transition: transform 0.15s ease;
}
.sbx-orc-cart-icone:hover {
	transform: scale( 1.08 );
	color: var( --e-global-color-primary, #013755 );
}
.sbx-orc-cart-icone .fa-shopping-cart {
	font-size: 18px;
	line-height: 1;
	display: inline-block;
}
.sbx-orc-cart-icone.sbx-orc-cart-pulso .fa-shopping-cart {
	animation: sbxOrcPulso 0.4s ease;
}
@keyframes sbxOrcPulso {
	0%   { transform: scale( 1 ); }
	35%  { transform: scale( 1.4 ); }
	65%  { transform: scale( 0.9 ); }
	100% { transform: scale( 1 ); }
}
.sbx-orc-cart-count {
	position: absolute;
	top: -4px;
	right: -4px;
	background: #b30000;
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	line-height: 1;
	min-width: 18px;
	height: 18px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 2px;
	box-shadow: 0 0 0 2px #fff;
}

@media (max-width: 782px) {
	.sbx-orc-cart-icone {
		top: 50%;
		bottom: auto;
		right: 12px;
		transform: translateY( -50% );
	}
	.sbx-orc-cart-icone:hover {
		transform: translateY( -50% ) scale( 1.08 );
	}
}
