

body.woocommerce-cart,
body.woocommerce-checkout {
	background-color: var(--scs-card) !important;
}

/* Trava a barra de scroll horizontal (e qualquer overflow visual) causada
   pela técnica de quebra 100vw abaixo — aplica-se a QUALQUER página que
   use o nosso <main> standalone (Carrinho, Checkout e Minha Conta), em
   vez de depender de repetir isto por cada body class à parte (o que
   tinha ficado esquecido para Carrinho/Checkout, causando o bug). */
body:has(#sevencoffee-standalone-main) {
	overflow-x: hidden !important;
}

/* Quando esta página usa o nosso modelo próprio (Carrinho/Checkout), este
   <main> escapa a qualquer largura/padding imposto pelo contentor do tema,
   para o nosso conteúdo controlar sempre a largura real da página. */
#sevencoffee-standalone-main.sevencoffee-standalone-page {
	display: block;
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(-50vw + 50%);
	margin-right: calc(-50vw + 50%);
	overflow-x: hidden;
}

/* ---------------------------------------------------------------------
   CORES DA MARCA EM TODA A PARTE — links, checkboxes e rádios nativos
   do browser são, por padrão, AZUIS (cor de sistema do Chrome/Safari).
   Isto acontece em qualquer link/checkbox que o WooCommerce gera e que
   não tenha uma classe nossa (ex: "política de privacidade", "termos e
   condições", "o que é o MBWAY?", caixa "li e aceito os termos"). Estas
   regras aplicam-se às 3 páginas (carrinho, checkout, conta) para nunca
   mais aparecer azul em nenhum sítio.
--------------------------------------------------------------------- */
/* [v2.5.43] O ":not(.button)" é ESSENCIAL — não remover.

   BUG QUE ISTO CORRIGE: estas regras existem para matar o azul dos links, e
   excluíam as NOSSAS classes de botão (.sevencoffee-btn-dark/-outline). Mas
   o WooCommerce desenha os botões DELE com <a class="button"> — sem classe
   nossa. Resultado: esses botões apanhavam "color: var(--scs-dark)", que é
   exatamente a mesma cor do fundo do botão (var(--scs-dark)). Texto castanho-escuro
   sobre fundo castanho-escuro: INVISÍVEL. Só aparecia ao passar o rato por
   cima, porque a regra de hover mudava a cor para caramelo.

   Passou despercebido muito tempo porque quase todos os botões do site são
   nossos e usam as classes nossas. Só se nota nos botões que o WooCommerce
   desenha sozinho: o "Ver Produtos" dos Descarregamentos, o "Voltar à loja"
   do carrinho vazio, e o banner novo do WooCommerce 11.

   PORQUE É QUE ESTA REGRA GANHAVA À REGRA DO BOTÃO: as duas têm !important,
   por isso decide a especificidade — e esta (4 classes) é mais específica do
   que ".woocommerce a.button" (2 classes). Ao acrescentar :not(.button),
   os botões deixam de entrar aqui e ficam com a cor certa. */
.sevencoffee-page-wrapper a:not(.button):not(.sevencoffee-btn-dark):not(.sevencoffee-btn-outline),
body.woocommerce-account .woocommerce a:not(.button):not(.sevencoffee-btn-dark):not(.sevencoffee-btn-outline),
.sevencoffee-auth a:not(.button):not(.sevencoffee-btn-dark):not(.sevencoffee-btn-outline) {
	color: var(--scs-dark) !important;
}

.sevencoffee-page-wrapper a:hover:not(.button):not(.sevencoffee-btn-dark):not(.sevencoffee-btn-outline),
body.woocommerce-account .woocommerce a:hover:not(.button):not(.sevencoffee-btn-dark):not(.sevencoffee-btn-outline),
.sevencoffee-auth a:hover:not(.button):not(.sevencoffee-btn-dark):not(.sevencoffee-btn-outline) {
	color: var(--scs-accent) !important;
}

/* Rede de segurança: qualquer botão desenhado pelo WooCommerce fica sempre
   com texto branco sobre o fundo escuro da marca, em qualquer das 3 páginas
   e em qualquer estado (normal, rato por cima, foco pelo teclado). Escrito
   com especificidade alta de propósito, para nunca mais ser ultrapassado por
   uma regra de links. */
.sevencoffee-page-wrapper a.button,
.sevencoffee-page-wrapper a.button:hover,
.sevencoffee-page-wrapper a.button:focus,
body.woocommerce-account .woocommerce a.button,
body.woocommerce-account .woocommerce a.button:hover,
body.woocommerce-account .woocommerce a.button:focus,
.sevencoffee-auth a.button,
.sevencoffee-auth a.button:hover,
.sevencoffee-auth a.button:focus {
	color: var(--scs-card) !important;
}

.sevencoffee-page-wrapper button:not(.sevencoffee-btn-dark):not(.sevencoffee-btn-outline):not([class*="qty-btn"]),
body.woocommerce-account .woocommerce button:not(.sevencoffee-btn-dark):not(.sevencoffee-btn-outline):not([class*="qty-btn"]) {
	color: var(--scs-text);
}

.sevencoffee-page-wrapper input[type="checkbox"],
.sevencoffee-page-wrapper input[type="radio"],
body.woocommerce-account .woocommerce input[type="checkbox"],
body.woocommerce-account .woocommerce input[type="radio"],
.sevencoffee-auth input[type="checkbox"],
.sevencoffee-auth input[type="radio"] {
	accent-color: var(--scs-dark);
}

.sevencoffee-page-wrapper {
	max-width: 1400px;
	margin: 0 auto !important;
	padding: 130px 32px 160px !important;
	font-family: var(--scs-font-body);
	color: var(--scs-text);
}

.sevencoffee-page-wrapper.sevencoffee-checkout,
.sevencoffee-page-wrapper.sevencoffee-cart {
	max-width: max(1400px, min(1900px, 70vw));
}

.sevencoffee-page-title {
	font-family: var(--scs-font-heading);
	font-size: 2.2rem;
	margin: 0 0 32px;
}

.sevencoffee-checkout__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px;
	margin-bottom: 32px;
}

.sevencoffee-checkout__header .sevencoffee-page-title {
	margin-bottom: 0;
}

.sevencoffee-checkout__secure-badge {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: var(--scs-soft-bg);
	color: var(--scs-dark);
	border-radius: var(--scs-radius-full);
	padding: 8px 16px;
	font-size: 0.78rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

/* ---------- Botões partilhados (usados em vários sítios) ---------- */
.sevencoffee-btn-dark,
.sevencoffee-btn-outline {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	border-radius: var(--scs-radius-sm);
	padding: 14px 28px;
	font-size: 0.82rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	font-weight: 600;
	font-family: var(--scs-font-body);
	text-decoration: none;
	cursor: pointer;
	white-space: normal;
	line-height: 1.3;
	transition: background-color 0.2s ease, color 0.2s ease, transform 0.15s ease;
}

.sevencoffee-btn-dark {
	background-color: var(--scs-dark) !important;
	color: var(--scs-card) !important;
	border: 1px solid var(--scs-dark) !important;
}

.sevencoffee-btn-dark:hover {
	background-color: var(--scs-dark-hover) !important;
	border-color: var(--scs-dark-hover) !important;
	transform: translateY(-1px);
}

.sevencoffee-btn-outline {
	background-color: transparent !important;
	color: var(--scs-text) !important;
	border: 1px solid var(--scs-dark) !important;
}

.sevencoffee-btn-outline:hover {
	background-color: var(--scs-dark) !important;
	color: var(--scs-card) !important;
}

.sevencoffee-checkout-heading {
	font-family: var(--scs-font-heading);
	font-size: 1.25rem;
	margin: 0 0 16px;
}

/* ==========================================================================
   CARRINHO
   ========================================================================== */
.sevencoffee-cart__layout {
	display: grid !important;
	/* [v2.5.57] minmax em vez de 400px fixos. Com largura fixa, num
	   laptop de 1100px a coluna da esquerda ficava com ~600px e os
	   campos apertavam; e a caixa lateral nunca encolhia, mesmo quando
	   já não cabia bem. Agora ela cede espaço a partir dos 320px. */
	grid-template-columns: minmax(0, 1fr) minmax(320px, 400px) !important;
	gap: 32px;
	align-items: start;
	margin-top: 24px;
}

.sevencoffee-page-subtitle {
	color: var(--scs-muted);
	font-size: 0.95rem;
	margin: -20px 0 24px;
}

.sevencoffee-cart-table {
	background: var(--scs-card);
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius);
	overflow: hidden;
	box-shadow: var(--scs-shadow);
}

.sevencoffee-cart-row {
	display: flex;
	gap: var(--scs-space-4);
	align-items: flex-start;
	padding: var(--scs-space-6);
	border-bottom: 1px solid var(--scs-border);
	position: relative;
	transition: background-color 0.15s ease;
}

.sevencoffee-cart-row:last-child {
	border-bottom: none;
}

.sevencoffee-cart-row:hover {
	background: var(--scs-soft-bg);
}

.sevencoffee-cart-row__thumb {
	flex-shrink: 0;
	display: block;
}

.sevencoffee-cart-row__thumb img {
	width: 92px;
	height: 92px;
	object-fit: cover;
	border-radius: var(--scs-radius);
	border: 1px solid var(--scs-border);
	display: block;
}

.sevencoffee-cart-row__info {
	flex: 1;
	min-width: 0;
}

.sevencoffee-cart-row__top {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 12px;
}

.sevencoffee-cart-row__name {
	font-weight: 700;
	color: var(--scs-text) !important;
	text-decoration: none;
	font-size: 1.02rem;
	overflow-wrap: break-word;
}

.sevencoffee-cart-row__name:hover {
	color: var(--scs-accent) !important;
}

.sevencoffee-cart-row__subtotal {
	font-weight: 700;
	font-size: 1rem;
	color: var(--scs-text);
	white-space: nowrap;
	flex-shrink: 0;
}

/* Meta dos itens (variações + dados de Pack: "Produtos escolhidos" / "Oferta") */
.sevencoffee-cart-row__meta {
	margin: 6px 0 0;
	font-size: 0.85rem;
	color: var(--scs-muted);
}

.sevencoffee-cart-row__meta .wc-item-meta,
.sevencoffee-cart-row__meta dl.variation {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.sevencoffee-cart-row__meta .wc-item-meta strong,
.sevencoffee-cart-row__meta dl.variation dt {
	color: var(--scs-text);
	font-weight: 600;
}

.sevencoffee-cart-row__bottom {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-top: 14px;
}

.sevencoffee-qty-stepper {
	display: inline-flex;
	align-items: center;
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius-full);
	overflow: hidden;
	background: var(--scs-card);
}

.sevencoffee-qty-btn {
	width: 32px;
	height: 32px;
	flex-shrink: 0;
	border: none;
	background: transparent;
	color: var(--scs-dark);
	font-size: 1.1rem;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background-color 0.15s ease;
}

.sevencoffee-qty-btn:hover {
	background: var(--scs-soft-bg);
}

.sevencoffee-qty-stepper input.qty {
	width: 38px;
	border: none;
	text-align: center;
	padding: 0;
	font-family: var(--scs-font-body);
	font-weight: 600;
	-moz-appearance: textfield;
}

.sevencoffee-qty-stepper input.qty::-webkit-inner-spin-button,
.sevencoffee-qty-stepper input.qty::-webkit-outer-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.sevencoffee-cart-row__remove {
	color: var(--scs-muted) !important;
	text-decoration: underline !important;
	font-size: 0.82rem;
	font-weight: 600;
	white-space: nowrap;
}

.sevencoffee-cart-row__remove:hover {
	color: var(--scs-error) !important;
}

.sevencoffee-cart__actions {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
}

/* O carrinho atualiza-se sozinho ao mudar a quantidade (ver shop.js) —
   este botão só existe "escondido" para continuar a funcionar como
   gatilho interno; a pessoa nunca precisa de lhe tocar. */
.sevencoffee-cart__actions button[name="update_cart"] {
	display: none;
	margin-top: 20px;
}

.sevencoffee-cart__actions .sevencoffee-btn-outline {
	padding: 12px 22px;
}

.sevencoffee-cart__coupon {
	display: flex;
	gap: 10px;
	margin-top: 16px;
	flex-wrap: wrap;
}

.sevencoffee-cart__coupon input.input-text {
	flex: 1;
	min-width: 180px;
	padding: 12px 14px;
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius-sm);
	font-family: var(--scs-font-body);
}

.sevencoffee-cart__coupon button {
	padding: 12px 22px;
}

/* [v2.5.62] O aspeto vem agora do padrão .scs-empty-state, em
   assets/tokens.css. Estas regras eram IDÊNTICAS às do outro ecrã,
   escritas duas vezes em ficheiros diferentes. */
.sevencoffee-cart__empty {
	background: var(--scs-card);
	border: 1px dashed var(--scs-border-strong);
	border-radius: var(--scs-radius);
	padding: var(--scs-space-12) var(--scs-space-6);
	text-align: center;
	color: var(--scs-muted);
}

/* ---------- Totais (caixa lateral) ---------- */
.sevencoffee-cart-totals,
.sevencoffee-order-review__totals {
	background: var(--scs-card);
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius);
	padding: 24px;
	box-shadow: var(--scs-shadow);
}

.sevencoffee-cart-totals h2 {
	font-family: var(--scs-font-heading);
	font-size: 1.25rem;
	margin: 0 0 16px;
}

.sevencoffee-cart-totals__row {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 10px 0;
	border-bottom: 1px solid var(--scs-border);
	font-size: 0.9rem;
}

.sevencoffee-cart-totals__row:first-of-type {
	border-top: none;
}

.sevencoffee-cart-totals__row--total {
	border-bottom: none;
	border-top: 2px solid var(--scs-border);
	font-size: 1.15rem;
	font-weight: 700;
	padding-top: 16px;
	margin-top: 4px;
}

.sevencoffee-cart-totals__row--coupon {
	color: var(--scs-muted);
}

.sevencoffee-cart-totals__checkout {
	margin-top: 20px;
}

.sevencoffee-cart-totals__checkout .sevencoffee-btn-dark {
	width: 100%;
}

.sevencoffee-cart-totals__trust {
	display: flex;
	justify-content: center;
	gap: 22px;
	margin-top: 16px;
	color: var(--scs-muted);
}

/* Calculadora de envio (markup nativo do WooCommerce, dentro da nossa caixa) */
.sevencoffee-cart-totals .shipping-calculator-form {
	margin-top: 8px;
}

.sevencoffee-cart-totals .shipping-calculator-form p {
	margin: 0 0 10px;
}

.sevencoffee-cart-totals select,
.sevencoffee-cart-totals .shipping-calculator-form input.input-text {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius-sm);
	font-family: var(--scs-font-body);
	margin-bottom: 8px;
}

.sevencoffee-cart-totals .shipping-calculator-button {
	color: var(--scs-dark);
	font-weight: 600;
	font-size: 0.85rem;
}

/* ==========================================================================
   CHECKOUT
   ========================================================================== */
.sevencoffee-checkout__layout {
	display: grid !important;
	/* [v2.5.57] Ver a nota igual em .sevencoffee-cart__layout. Aqui era
	   pior: 420px fixos ao lado do formulário de faturação, que é a
	   parte com mais campos (nome+apelido lado a lado, NIF, morada,
	   localidade, código postal, telefone). Num laptop de 1100px
	   sobravam ~600px para tudo isso. */
	grid-template-columns: minmax(0, 1fr) minmax(320px, 420px) !important;
	gap: 28px;
	align-items: start;
}

.sevencoffee-checkout__details {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.sevencoffee-step-heading {
	display: flex;
	align-items: center;
	gap: 12px;
	font-family: var(--scs-font-heading);
	font-size: 1.3rem;
	color: var(--scs-text);
}

.sevencoffee-step-number {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	flex-shrink: 0;
	border-radius: 50%;
	background: var(--scs-dark);
	color: var(--scs-card);
	font-family: var(--scs-font-body);
	font-size: 0.95rem;
	font-weight: 700;
}

/* Campos de faturação/envio: WooCommerce gera o HTML via woocommerce_form_field(),
   por isso o estilo aplica-se às classes nativas .form-row / .input-text, mas
   sem nenhum wrapper estranho do Elementor à volta — controlamos tudo. */
#customer_details {
	background: var(--scs-card);
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius);
	padding: var(--scs-space-6);
}

#customer_details .col-2 {
	border-top: 1px solid var(--scs-border);
	padding-top: 20px;
	margin-top: 20px;
}

/* O nosso título numerado ("1. Informação de Faturação") já cumpre o papel
   deste título nativo do WooCommerce, por isso escondemo-lo para não ficar
   duplicado. O título da secção de Envio ("col-2"), esse, mantém-se. */
#customer_details > .col-1 > h3,
#customer_details > .woocommerce-billing-fields > h3 {
	display: none;
}

#customer_details h3 {
	font-family: var(--scs-font-heading);
	font-size: 1.2rem;
	margin: 0 0 16px;
}

.woocommerce-checkout .form-row {
	margin-bottom: 16px !important;
}

.woocommerce-checkout .form-row label {
	font-size: 0.72rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--scs-muted);
	font-weight: 700;
	margin-bottom: 8px;
	display: block;
}

.woocommerce-checkout .form-row input.input-text,
.woocommerce-checkout .form-row textarea,
.woocommerce-checkout .form-row select,
.woocommerce-checkout .select2-container .select2-selection--single {
	background: var(--scs-card);
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius-sm);
	padding: 12px 14px;
	width: 100%;
	font-size: 0.95rem;
	font-family: var(--scs-font-body);
	color: var(--scs-text);
	height: auto;
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.woocommerce-checkout .form-row input.input-text:focus,
.woocommerce-checkout .form-row textarea:focus,
.woocommerce-checkout .form-row select:focus {
	outline: none !important;
	border-color: var(--scs-accent) !important;
	box-shadow: 0 0 0 3px rgba(212, 163, 115, 0.15) !important;
}

/* Select2 dropdown styling */
.woocommerce-checkout .select2-container .select2-selection--single {
	display: flex;
	align-items: center;
}

.woocommerce-checkout .select2-container--default .select2-selection--single .select2-selection__rendered {
	padding: 0;
	color: var(--scs-text);
	font-family: var(--scs-font-body);
	font-size: 0.95rem;
	line-height: 1.5;
}

.woocommerce-checkout .select2-container--default .select2-selection--single .select2-selection__arrow {
	height: 100%;
}

/* ---------- Resumo da encomenda (produtos + totais + pagamento) ---------- */
.sevencoffee-order-review {
	background: var(--scs-card);
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius);
	padding: var(--scs-space-6);
	box-shadow: var(--scs-shadow);
}

.sevencoffee-order-review__items {
	margin-bottom: 16px;
}

/* ---------- Cupão (movido para dentro do Passo 2) ---------- */
.sevencoffee-checkout-coupon {
	margin-bottom: 16px;
}

.sevencoffee-checkout-coupon__toggle {
	background: none !important;
	border: none !important;
	padding: 0;
	color: var(--scs-dark) !important;
	font-size: 0.85rem;
	font-weight: 600;
	text-decoration: underline;
	cursor: pointer;
}

.sevencoffee-checkout-coupon__toggle:hover {
	background: none !important;
	color: var(--scs-accent) !important;
}

.sevencoffee-checkout-coupon__form {
	margin-top: 10px;
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.sevencoffee-checkout-coupon__form .form-row {
	flex: 1;
	min-width: 160px;
	margin: 0 !important;
}

.sevencoffee-checkout-coupon__form input.input-text {
	width: 100%;
	padding: 11px 12px;
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius-sm);
	font-family: var(--scs-font-body);
}

.sevencoffee-checkout-coupon__form button {
	background-color: var(--scs-dark) !important;
	color: var(--scs-card) !important;
	border: none !important;
	border-radius: var(--scs-radius-sm);
	padding: 0 20px;
	font-size: 0.8rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	font-weight: 600;
	cursor: pointer;
}

.sevencoffee-order-review__item {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 14px 0;
	border-bottom: 1px solid var(--scs-border);
}

.sevencoffee-order-review__item-remove {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	margin-top: 2px;
	border-radius: 50%;
	color: var(--scs-muted) !important;
	background: var(--scs-soft-bg);
	text-decoration: none !important;
	font-size: 1.05rem;
	line-height: 1;
}

.sevencoffee-order-review__item-remove:hover {
	background: var(--scs-error) !important;
	color: var(--scs-card) !important;
}

.sevencoffee-order-review__item-thumb {
	flex-shrink: 0;
}

.sevencoffee-order-review__item-thumb img {
	width: 48px;
	height: 48px;
	object-fit: cover;
	border-radius: var(--scs-radius-sm);
	border: 1px solid var(--scs-border);
	display: block;
}

.sevencoffee-order-review__item-info {
	display: block;
	flex: 1;
	min-width: 0;
	max-width: 100%;
	font-size: 0.88rem;
	padding-top: 1px;
}

/* Linha de topo: nome (+ quantidade) à esquerda, preço à direita — igual
   à lógica já usada no Carrinho. Mantê-los na mesma linha flex (em vez
   de espalhados pela linha toda do item, junto com o thumb e o botão de
   remover) é o que evita o preço "fugir" para fora do cartão quando o
   texto do pack é longo. */
.sevencoffee-order-review__item-top {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 10px;
	width: 100%;
}

.sevencoffee-order-review__item-name {
	flex: 1;
	min-width: 0;
	font-weight: 600;
	line-height: 1.4;
	overflow-wrap: break-word;
}

.sevencoffee-order-review__item-name .product-quantity {
	font-weight: 600;
	color: var(--scs-muted);
	white-space: nowrap;
}

.sevencoffee-order-review__item-total {
	flex-shrink: 0;
	font-weight: 700;
	font-size: 0.9rem;
	white-space: nowrap;
}

/* Meta do Pack ("Produtos escolhidos" / "Oferta") — mesma lógica já usada
   no Carrinho: lista em coluna, sem o espaçamento estranho por defeito do
   <dl>/<dt>/<dd> do WooCommerce, a toda a largura por baixo do preço. */
.sevencoffee-order-review__item-info .wc-item-meta,
.sevencoffee-order-review__item-info dl.variation {
	display: flex;
	flex-direction: column;
	gap: 2px;
	width: 100%;
	margin: 6px 0 0;
	padding: 0;
	font-size: 0.78rem;
	color: var(--scs-muted);
}

.sevencoffee-order-review__item-info .wc-item-meta > *,
.sevencoffee-order-review__item-info dl.variation dt,
.sevencoffee-order-review__item-info dl.variation dd {
	margin: 0;
	padding: 0;
	overflow-wrap: break-word;
	line-height: 1.4;
}

.sevencoffee-order-review__item-info .wc-item-meta strong,
.sevencoffee-order-review__item-info dl.variation dt {
	color: var(--scs-text);
	font-weight: 600;
}

.sevencoffee-order-review__totals {
	box-shadow: none;
	border: none;
	padding: 16px 0 0;
}

.sevencoffee-order-review__payment,
div#payment.sevencoffee-order-review__payment {
	margin-top: 20px;
	border-top: 1px solid var(--scs-border);
	padding-top: 20px;
	background: transparent !important;
	background-color: transparent !important;
}

/* ---------- Métodos de pagamento — grelha de cartões clicáveis ---------- */
.sevencoffee-order-review ul.payment_methods,
body.woocommerce-order-pay #payment ul.payment_methods {
	list-style: none;
	margin: 0 0 16px;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
	gap: 10px;
}

.sevencoffee-order-review ul.payment_methods li,
body.woocommerce-order-pay #payment ul.payment_methods li {
	position: relative;
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius);
	background: var(--scs-card) !important;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
	overflow: hidden;
}

.sevencoffee-order-review ul.payment_methods li:hover,
body.woocommerce-order-pay #payment ul.payment_methods li:hover {
	border-color: var(--scs-accent);
}

/* O rádio nativo fica presente (acessibilidade/teclado) mas visualmente
   escondido — o cartão inteiro funciona como a área clicável. */
.sevencoffee-order-review ul.payment_methods li input.input-radio,
body.woocommerce-order-pay #payment ul.payment_methods li input.input-radio {
	position: absolute;
	top: 12px;
	left: 12px;
	margin: 0 !important;
	accent-color: var(--scs-dark);
	width: 16px;
	height: 16px;
	z-index: 1;
}

.sevencoffee-order-review ul.payment_methods li label,
body.woocommerce-order-pay #payment ul.payment_methods li label {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-width: 0;
	margin: 0 !important;
	padding: 22px 12px 14px;
	cursor: pointer;
	font-weight: 600;
	font-size: 0.8rem;
	text-align: center;
}

/* Os ícones de cada gateway vêm com tamanhos de ficheiro diferentes —
   forçamos sempre a mesma ALTURA, a largura ajusta-se à proporção. */
.sevencoffee-order-review ul.payment_methods li label img,
body.woocommerce-order-pay #payment ul.payment_methods li label img {
	height: 22px;
	width: auto;
	max-width: 100%;
	flex-shrink: 0;
	object-fit: contain;
}

.sevencoffee-order-review ul.payment_methods li label a,
body.woocommerce-order-pay #payment ul.payment_methods li label a {
	font-size: 0.7rem;
	color: var(--scs-muted);
	margin-top: 2px;
}

.sevencoffee-order-review ul.payment_methods li.woocommerce-checkout-payment-method-selected,
.sevencoffee-order-review ul.payment_methods li:has(input:checked),
body.woocommerce-order-pay #payment ul.payment_methods li.woocommerce-checkout-payment-method-selected,
body.woocommerce-order-pay #payment ul.payment_methods li:has(input:checked) {
	border-color: var(--scs-dark);
	box-shadow: 0 0 0 1px var(--scs-dark);
	background: var(--scs-soft-bg) !important;
}

/* O método selecionado, se tiver campos próprios (ex: número de cartão),
   ocupa a largura toda da grelha para mostrar esses campos com espaço. */
.sevencoffee-order-review ul.payment_methods li:has(input:checked):has(.payment_box),
body.woocommerce-order-pay #payment ul.payment_methods li:has(input:checked):has(.payment_box) {
	grid-column: 1 / -1;
}

.sevencoffee-order-review ul.payment_methods li:has(input:checked):has(.payment_box) label,
body.woocommerce-order-pay #payment ul.payment_methods li:has(input:checked):has(.payment_box) label {
	flex-direction: row;
	justify-content: flex-start;
	padding-left: 38px;
}

.sevencoffee-order-review div.payment_box,
body.woocommerce-order-pay #payment div.payment_box {
	background: transparent !important;
	border-top: 1px solid var(--scs-border);
	padding: 14px 16px;
	margin: 0 !important;
	font-size: 0.85rem;
}

.sevencoffee-order-review div.payment_box:empty,
body.woocommerce-order-pay #payment div.payment_box:empty {
	display: none;
}

.sevencoffee-order-review div.payment_box::before,
body.woocommerce-order-pay #payment div.payment_box::before {
	display: none;
}

/* ---------- Cartões guardados (dentro da caixa da Stripe) [v2.5.53] ----------
   PORQUE É QUE ISTO É PRECISO:
   Os seletores acima estão escritos como "ul.payment_methods li" — descendente,
   não filho direto. Apanham QUALQUER <li> lá dentro, a qualquer profundidade.
   A lista de cartões guardados da Stripe fica aninhada assim:

       ul.payment_methods > li (Stripe) > .payment_box
           > ul.woocommerce-SavedPaymentMethods > li   <-- apanhado sem querer

   Resultado: cada cartão guardado herdava text-align:center, flex-direction:
   column, padding de 22px no topo e o rádio em position:absolute no canto —
   ficava o texto ao meio e a bolinha sozinha em cima à esquerda.
   Nunca se viu antes porque esta lista SÓ existe depois de um cliente guardar
   um cartão, e nenhum teste tinha chegado a esse ponto.

   Aqui repomos tudo para uma linha normal: rádio à esquerda, texto ao lado.
   NÃO se mudaram os seletores originais para "child" (>) de propósito — o
   WooCommerce muda a estrutura interna entre versões e isso partiria o
   desenho principal dos métodos de pagamento, que está a funcionar bem. */
.sevencoffee-order-review ul.woocommerce-SavedPaymentMethods,
body.woocommerce-order-pay #payment ul.woocommerce-SavedPaymentMethods {
	list-style: none;
	margin: 0 0 var(--scs-space-4);
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--scs-space-2);
}

/* [v2.5.54] O <li> passa a FLEX. Na v2.5.53 ficou "display: block" e o
   resultado foi o rádio numa linha e o texto na linha de baixo — porque na
   marcação do WooCommerce o <input> é IRMÃO do <label>, não está dentro
   dele. Pôr só o label em flex não os junta; é o <li> que tem de o fazer. */
.sevencoffee-order-review ul.woocommerce-SavedPaymentMethods li,
body.woocommerce-order-pay #payment ul.woocommerce-SavedPaymentMethods li {
	position: relative;
	display: flex !important;
	align-items: center;
	gap: var(--scs-space-3);
	/* [v2.5.60] Havia AQUI um "padding: 0 !important" logo a seguir a este,
	   que anulava o de cima — sobra da v2.5.53, quando o <li> ainda era
	   "display: block" e o padding vivia no <label>. Ao passar o <li> para
	   flex na v2.5.54, o padding voltou para cá mas a linha antiga ficou.
	   Resultado: as caixas dos cartões guardados estavam sem respiro
	   interior nenhum. */
	padding: var(--scs-space-3) !important;
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius-sm);
	background: var(--scs-card) !important;
	margin: 0 !important;
	overflow: visible;
}

.sevencoffee-order-review ul.woocommerce-SavedPaymentMethods li:hover,
body.woocommerce-order-pay #payment ul.woocommerce-SavedPaymentMethods li:hover {
	border-color: var(--scs-accent);
}

.sevencoffee-order-review ul.woocommerce-SavedPaymentMethods li:has(input:checked),
body.woocommerce-order-pay #payment ul.woocommerce-SavedPaymentMethods li:has(input:checked) {
	border-color: var(--scs-dark);
	box-shadow: 0 0 0 1px var(--scs-dark);
	background: var(--scs-soft-bg) !important;
}

/* O rádio volta ao fluxo normal, à esquerda do texto. */
.sevencoffee-order-review ul.woocommerce-SavedPaymentMethods li input,
body.woocommerce-order-pay #payment ul.woocommerce-SavedPaymentMethods li input {
	position: static !important;
	top: auto !important;
	left: auto !important;
	width: 16px;
	height: 16px;
	margin: 0 !important;
	accent-color: var(--scs-dark);
	flex-shrink: 0;
}

.sevencoffee-order-review ul.woocommerce-SavedPaymentMethods li label,
body.woocommerce-order-pay #payment ul.woocommerce-SavedPaymentMethods li label {
	flex: 1 1 auto;
	display: block !important;
	padding: 0 !important;
	margin: 0 !important;
	text-align: left !important;
	font-weight: 500;
	font-size: 0.85rem;
	line-height: 1.35;
	cursor: pointer;
}

/* ---------- Botões Apple Pay / Google Pay (Stripe Express Checkout) [v2.5.54] ----------
   Estes botões são desenhados pela Stripe dentro de um <iframe>, por isso o
   INTERIOR (logótipo, texto, cor de fundo preta) NÃO se consegue estilizar —
   é a Apple e a Google que mandam nisso, por regras de marca delas.
   O que se pode controlar é o espaço à volta: largura, altura, cantos,
   espaçamento e o separador "OU". É o que se faz aqui, para deixarem de
   parecer colados ao resto da página. */
.sevencoffee-page-wrapper #wc-stripe-express-checkout-element,
.sevencoffee-page-wrapper .wc-stripe-express-checkout-element,
.sevencoffee-cart-totals #wc-stripe-express-checkout-element,
.sevencoffee-order-review #wc-stripe-express-checkout-element,
body.woocommerce-order-pay #payment #wc-stripe-express-checkout-element {
	margin: 0 0 14px;
	max-width: 100%;
}

/* Os cantos arredondados têm de ser aplicados ao contentor com overflow
   escondido — o iframe da Stripe é sempre de cantos retos. */
.sevencoffee-page-wrapper .StripeElement--express-checkout,
.sevencoffee-page-wrapper #wc-stripe-express-checkout-element iframe {
	border-radius: var(--scs-radius) !important;
	overflow: hidden;
}

/* O separador "— OU —" entre o express checkout e o formulário normal. */
.sevencoffee-page-wrapper #wc-stripe-express-checkout-button-separator,
.sevencoffee-page-wrapper .wc-stripe-express-checkout-button-separator {
	display: flex !important;
	align-items: center;
	gap: 14px;
	margin: 18px 0 26px !important;
	border: 0 !important;
	font-size: 0.72rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--scs-muted);
	text-align: center;
}

.sevencoffee-page-wrapper #wc-stripe-express-checkout-button-separator::before,
.sevencoffee-page-wrapper #wc-stripe-express-checkout-button-separator::after,
.sevencoffee-page-wrapper .wc-stripe-express-checkout-button-separator::before,
.sevencoffee-page-wrapper .wc-stripe-express-checkout-button-separator::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: var(--scs-border);
}

/* No CARRINHO os botões ficam dentro da caixa lateral dos totais, logo a
   seguir ao "Finalizar Compra" — por isso levam a mesma largura total. */
.sevencoffee-cart-totals #wc-stripe-express-checkout-element,
.sevencoffee-cart-totals .wc-stripe-express-checkout-element {
	width: 100%;
	margin-top: 12px;
}

/* Em mobile o separador aperta um pouco. */
@media (max-width: 767px) {
	.sevencoffee-page-wrapper #wc-stripe-express-checkout-button-separator,
	.sevencoffee-page-wrapper .wc-stripe-express-checkout-button-separator {
		margin: 14px 0 20px !important;
	}
}

/* ---------- Página "pagar encomenda" [v2.5.56] ----------
   /checkout/pagar-encomenda/{id}/ — onde o cliente volta para retomar um
   pagamento que ficou pendente.

   PORQUE É QUE ISTO PASSOU A SER PRECISO AGORA:
   Esta página é desenhada pelo WooCommerce, não por nós, e o <body> NÃO
   leva a classe "sevencoffee-checkout" nem existe lá nenhum
   .sevencoffee-order-review. Todo o nosso CSS de pagamento depende desse
   seletor, por isso NADA se aplicava: rádios nativos desalinhados,
   etiquetas por cima do texto, botão roxo por omissão do WooCommerce.
   A v2.5.34 tratou disto a meio — deu o espaçamento e a largura à página
   (ver o bloco crítico em account.php) mas nunca estilizou o que está lá
   dentro. Na altura não se notava porque, só com cartão, as encomendas
   nunca ficavam pendentes. Com MB WAY ficam SEMPRE à espera da aprovação
   na app, e esta passou a ser uma página que os clientes veem mesmo.

   As regras dos métodos de pagamento são REAPROVEITADAS: acrescentou-se
   "body.woocommerce-order-pay #payment" como alias em cada regra de
   .sevencoffee-order-review, em vez de duplicar o desenho. Assim uma
   alteração futura ao checkout aplica-se aqui automaticamente.
   O que falta é só o que é próprio desta página. */

/* A tabela do resumo da encomenda (nativa do WooCommerce). */
body.woocommerce-order-pay .woocommerce table.shop_table {
	width: 100%;
	border-collapse: collapse;
	background: var(--scs-card);
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius);
	overflow: hidden;
	margin-bottom: 24px;
	font-size: 0.9rem;
}

body.woocommerce-order-pay .woocommerce table.shop_table th,
body.woocommerce-order-pay .woocommerce table.shop_table td {
	padding: 14px 18px;
	text-align: left;
	border-bottom: 1px solid var(--scs-border);
}

body.woocommerce-order-pay .woocommerce table.shop_table thead th {
	font-size: 0.72rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--scs-muted);
	background: var(--scs-soft-bg);
}

body.woocommerce-order-pay .woocommerce table.shop_table td.product-total,
body.woocommerce-order-pay .woocommerce table.shop_table th[scope="row"] {
	text-align: right;
}

body.woocommerce-order-pay .woocommerce table.shop_table tfoot tr:last-child th,
body.woocommerce-order-pay .woocommerce table.shop_table tfoot tr:last-child td {
	border-bottom: 0;
	font-weight: 700;
	font-size: 1rem;
}

/* A caixa que envolve os métodos de pagamento. */
body.woocommerce-order-pay #payment {
	background: var(--scs-card);
	border: 1px solid var(--scs-border);
	border-radius: var(--scs-radius);
	padding: 22px;
}

/* O botão de pagar — vinha roxo, por omissão do WooCommerce. */
body.woocommerce-order-pay #payment .form-row.place-order,
body.woocommerce-order-pay #payment .form-row {
	margin: 18px 0 0;
	padding: 0;
}

body.woocommerce-order-pay #payment button#place_order {
	width: 100%;
	background: var(--scs-dark) !important;
	color: var(--scs-card) !important;
	border: 0 !important;
	border-radius: var(--scs-radius);
	padding: 16px 28px;
	font-size: 0.95rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	cursor: pointer;
	transition: opacity 0.2s ease;
}

body.woocommerce-order-pay #payment button#place_order:hover {
	opacity: 0.88;
}

/* Nota de privacidade e caixa dos termos, iguais às do checkout. */
body.woocommerce-order-pay #payment .woocommerce-privacy-policy-text p,
body.woocommerce-order-pay #payment .woocommerce-terms-and-conditions-wrapper {
	font-size: 0.8rem;
	color: var(--scs-muted);
}

@media (max-width: 767px) {
	body.woocommerce-order-pay #payment {
		padding: 16px;
	}
	body.woocommerce-order-pay .woocommerce table.shop_table th,
	body.woocommerce-order-pay .woocommerce table.shop_table td {
		padding: 11px 12px;
	}
}

.sevencoffee-place-order {
	margin-top: 16px;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.sevencoffee-place-order-btn {
	width: 100%;
	font-size: 0.95rem;
	padding: 16px 28px;
	order: 3;
}

.sevencoffee-place-order .woocommerce-terms-and-conditions-wrapper {
	font-size: 0.85rem;
	color: var(--scs-muted);
	order: 1;
}

.sevencoffee-place-order__privacy {
	font-size: 0.78rem;
	color: var(--scs-muted);
	margin: 0;
	order: 2;
}

.sevencoffee-place-order__privacy:empty {
	display: none;
}

/* ---------------------------------------------------------------------
   SEGURANÇA: esconder qualquer lista de métodos de pagamento "em bruto"
   que apareça FORA do nosso template (ex: resíduo de um widget antigo
   do Elementor que tenha ficado na página, ou de um plugin de pagamento
   que insira a sua própria cópia da lista). A nossa própria lista, que
   está sempre dentro de ".sevencoffee-order-review__payment", nunca é
   afetada por esta regra.
--------------------------------------------------------------------- */
/* Esconde apenas listas de pagamento renderizadas FORA do nosso template.
   O nosso div de pagamento tem sempre id="payment" (necessário para os
   gateways de pagamento funcionarem). Qualquer outro div com esta classe
   mas sem esse ID é uma cópia duplicada de outro plugin/widget. */
body.woocommerce-checkout div.woocommerce-checkout-payment:not(#payment) {
	display: none !important;
}

/* Campo "NIF / VAT / Tax ID" — obrigatório só para PT/ES (controlado por
   JS em shop.js, consoante o País de Faturação escolhido). Por defeito o
   campo nasce "opcional"; quando o JS confirma que o país é PT ou ES,
   escondemos o aviso "(Opcional)" do WooCommerce e mostramos um asterisco
   vermelho, exatamente como qualquer outro campo obrigatório do checkout. */
#billing_nif_field.scs-nif-required .optional {
	display: none;
}

#billing_nif_field.scs-nif-required label::after {
	content: " *";
	color: var(--scs-error);
}

/* ==========================================================================
   RESPONSIVO — desktop / laptop / tablet / mobile
   ========================================================================== */
/* ---------- Campos lado a lado (Nome / Apelido, etc.) [v2.5.57] ----------
   O WooCommerce põe .form-row-first e .form-row-last com float:left e
   width:47%. Isso NÃO colapsa sozinho em ecrã estreito: num telemóvel de
   360px, dois campos a 47% ficam com ~160px cada, e "Apelido" ou "Código
   postal" ficam com espaço para meia palavra.
   Aqui convertemos para flexbox (que respeita o espaço disponível) e
   empilhamos por completo abaixo dos 600px. Escolheu-se 600px e não 767px
   porque entre os dois ainda cabem confortavelmente lado a lado. */
.woocommerce-checkout .form-row-first,
.woocommerce-checkout .form-row-last {
	float: none !important;
	width: 100% !important;
	box-sizing: border-box;
}

@media (min-width: 601px) {
	.woocommerce-checkout .woocommerce-billing-fields__field-wrapper,
	.woocommerce-checkout .woocommerce-shipping-fields__field-wrapper,
	.woocommerce-checkout .woocommerce-account-fields {
		display: flex;
		flex-wrap: wrap;
		gap: 0 16px;
	}

	.woocommerce-checkout .woocommerce-billing-fields__field-wrapper > .form-row,
	.woocommerce-checkout .woocommerce-shipping-fields__field-wrapper > .form-row {
		flex: 1 1 100%;
		min-width: 0;
	}

	.woocommerce-checkout .woocommerce-billing-fields__field-wrapper > .form-row-first,
	.woocommerce-checkout .woocommerce-billing-fields__field-wrapper > .form-row-last,
	.woocommerce-checkout .woocommerce-shipping-fields__field-wrapper > .form-row-first,
	.woocommerce-checkout .woocommerce-shipping-fields__field-wrapper > .form-row-last {
		flex: 1 1 calc(50% - 8px);
		min-width: 0;
	}
}

/* Impedir que qualquer campo do checkout provoque scroll horizontal —
   o erro mais comum e o mais irritante em telemóvel. */
.woocommerce-checkout .form-row input.input-text,
.woocommerce-checkout .form-row textarea,
.woocommerce-checkout .form-row select {
	max-width: 100%;
	box-sizing: border-box;
}

/* ---------- Telemóvel pequeno (até 480px) [v2.5.57] ----------
   Não havia nenhum breakpoint abaixo dos 767px no checkout. Entre 767 e
   360px há mais de o dobro de diferença, e o que serve num iPhone grande
   aperta num telemóvel pequeno. */
@media (max-width: 480px) {
	.sevencoffee-page-wrapper {
		padding-left: 12px !important;
		padding-right: 12px !important;
	}

	.sevencoffee-order-review,
	#customer_details,
	.sevencoffee-cart-totals {
		padding: 14px;
	}

	.sevencoffee-page-title {
		font-size: 1.8rem;
	}

	.sevencoffee-cart-row {
		padding: 14px;
		gap: 12px;
	}

	/* O nome do produto e o preço deixam de competir pela mesma linha. */
	.sevencoffee-order-review__item-top {
		flex-direction: column;
		align-items: flex-start;
		gap: 4px;
	}

	.woocommerce-checkout .form-row input.input-text,
	.woocommerce-checkout .form-row textarea,
	.woocommerce-checkout .form-row select {
		font-size: 16px; /* abaixo de 16px o Safari faz zoom sozinho ao focar */
	}
}

/* ---------- Links de Termos e Privacidade [v2.5.58] ----------
   PROBLEMA: nas caixas de aceitação, os links "Termos e Condições" e
   "política de privacidade" ficavam INVISÍVEIS — só apareciam ao passar o
   rato por cima. Herdavam a cor de um <a> sem regra própria, que no fundo
   claro destas caixas dava branco sobre branco.
   É grave, e não só por estética: a caixa dos termos é de aceitação
   OBRIGATÓRIA, e o cliente tem de conseguir LER o que está a aceitar
   antes de o fazer. Um link invisível para os termos é, na prática, uma
   aceitação às cegas.
   Aplica-se ao checkout e à página de pagar encomenda. */
.sevencoffee-order-review .woocommerce-terms-and-conditions-wrapper a,
.sevencoffee-order-review .woocommerce-privacy-policy-text a,
.sevencoffee-place-order .woocommerce-terms-and-conditions-wrapper a,
.sevencoffee-place-order__privacy a,
body.woocommerce-order-pay #payment .woocommerce-terms-and-conditions-wrapper a,
body.woocommerce-order-pay #payment .woocommerce-privacy-policy-text a,
body.woocommerce-order-pay .woocommerce-terms-and-conditions-wrapper a,
body.woocommerce-order-pay .woocommerce-privacy-policy-text a {
	color: var(--scs-dark) !important;
	font-weight: 600;
	text-decoration: underline !important;
	text-underline-offset: 2px;
}

.sevencoffee-order-review .woocommerce-terms-and-conditions-wrapper a:hover,
.sevencoffee-order-review .woocommerce-privacy-policy-text a:hover,
.sevencoffee-place-order .woocommerce-terms-and-conditions-wrapper a:hover,
.sevencoffee-place-order__privacy a:hover,
body.woocommerce-order-pay #payment .woocommerce-terms-and-conditions-wrapper a:hover,
body.woocommerce-order-pay #payment .woocommerce-privacy-policy-text a:hover,
body.woocommerce-order-pay .woocommerce-terms-and-conditions-wrapper a:hover,
body.woocommerce-order-pay .woocommerce-privacy-policy-text a:hover {
	color: var(--scs-accent) !important;
}

/* ---------- A tabela do resumo em telemóvel [v2.5.58] ----------
   PROBLEMA: a tabela nativa do WooCommerce na página de pagar encomenda
   tem larguras de coluna próprias e NÃO encolhe. Num telemóvel de 440px
   a página ficava mais larga do que o ecrã: via-se metade do nome do
   produto cortado à esquerda, e era preciso arrastar a página de lado.
   SOLUÇÃO: abaixo dos 767px a tabela deixa de ser tabela. Cada linha
   passa a um bloco e cada célula a uma linha com o rótulo à esquerda e o
   valor à direita — o padrão habitual para tabelas em telemóvel.
   O rótulo vem do atributo data-title, que o WooCommerce já preenche. */
@media (max-width: 767px) {
	body.woocommerce-order-pay .woocommerce table.shop_table,
	body.woocommerce-order-pay .woocommerce table.shop_table tbody,
	body.woocommerce-order-pay .woocommerce table.shop_table tfoot,
	body.woocommerce-order-pay .woocommerce table.shop_table tr,
	body.woocommerce-order-pay .woocommerce table.shop_table td,
	body.woocommerce-order-pay .woocommerce table.shop_table th {
		display: block !important;
		width: 100% !important;
		box-sizing: border-box;
	}

	body.woocommerce-order-pay .woocommerce table.shop_table thead {
		display: none !important; /* os cabeçalhos passam a ser os rótulos de cada linha */
	}

	body.woocommerce-order-pay .woocommerce table.shop_table tbody tr {
		padding: 14px 0;
		border-bottom: 1px solid var(--scs-border);
	}

	body.woocommerce-order-pay .woocommerce table.shop_table tbody td {
		border: 0 !important;
		padding: 4px 14px !important;
		text-align: left !important;
	}

	/* Rótulos escritos à mão, e NÃO com attr(data-title).
	   VERIFIQUEI no HTML real desta página: a tabela do "pagar encomenda"
	   NÃO tem atributos data-title nas células — só as classes
	   .product-name / .product-quantity / .product-subtotal. Uma regra com
	   attr(data-title) daria apenas ": " solto antes de cada valor.
	   Os textos aqui são os mesmos do <thead>, que fica escondido. */
	body.woocommerce-order-pay .woocommerce table.shop_table tbody td.product-quantity::before {
		content: "Qtd: ";
	}

	body.woocommerce-order-pay .woocommerce table.shop_table tbody td.product-subtotal::before,
	body.woocommerce-order-pay .woocommerce table.shop_table tbody td.product-total::before {
		content: "Total: ";
	}

	body.woocommerce-order-pay .woocommerce table.shop_table tbody td.product-quantity::before,
	body.woocommerce-order-pay .woocommerce table.shop_table tbody td.product-subtotal::before,
	body.woocommerce-order-pay .woocommerce table.shop_table tbody td.product-total::before {
		font-weight: 700;
		font-size: 0.72rem;
		letter-spacing: 0.06em;
		text-transform: uppercase;
		color: var(--scs-muted);
	}

	/* O nome do produto não precisa de rótulo — é evidente. */
	body.woocommerce-order-pay .woocommerce table.shop_table tbody td.product-name {
		font-weight: 600;
		font-size: 0.95rem;
	}

	/* A lista de produtos escolhidos do Pack, dentro da célula do nome. */
	body.woocommerce-order-pay .woocommerce table.shop_table .wc-item-meta {
		list-style: none;
		margin: 8px 0 0;
		padding: 0;
		font-weight: 400;
		font-size: 0.82rem;
		color: var(--scs-muted);
	}

	body.woocommerce-order-pay .woocommerce table.shop_table .wc-item-meta p {
		margin: 0 0 6px;
	}

	body.woocommerce-order-pay .woocommerce table.shop_table .wc-item-meta strong {
		color: var(--scs-text);
		display: block;
	}

	/* Os totais no rodapé: rótulo e valor na mesma linha. */
	body.woocommerce-order-pay .woocommerce table.shop_table tfoot tr {
		display: flex !important;
		justify-content: space-between;
		align-items: baseline;
		gap: 12px;
		padding: 10px 14px;
		border-bottom: 1px solid var(--scs-border);
	}

	body.woocommerce-order-pay .woocommerce table.shop_table tfoot th,
	body.woocommerce-order-pay .woocommerce table.shop_table tfoot td {
		width: auto !important;
		padding: 0 !important;
		border: 0 !important;
		text-align: left !important;
	}

	body.woocommerce-order-pay .woocommerce table.shop_table tfoot td {
		text-align: right !important;
		font-weight: 600;
	}

	/* Rede de segurança: nada nesta página pode causar scroll lateral. */
	body.woocommerce-order-pay #sevencoffee-standalone-main {
		overflow-x: hidden !important;
	}
}

/* ---------- Laptop pequeno e tablet horizontal (1025–1200px) [v2.5.57] ----------
   FAIXA QUE NÃO ESTAVA COBERTA. Acima de 1024px o layout mantinha-se em
   duas colunas com a lateral fixa, e o padding lateral continuava nos
   32px do desktop. Num portátil de 1280px ou num tablet deitado, a coluna
   do formulário ficava com pouco mais de 600px para caber nome+apelido
   lado a lado, NIF, morada, localidade, código postal e telefone.
   Aqui apertamos o intervalo e as margens antes de chegar ao ponto em que
   o layout passa a uma coluna. */
@media (max-width: 1200px) and (min-width: 1025px) {
	.sevencoffee-page-wrapper {
		padding-left: 24px !important;
		padding-right: 24px !important;
	}

	.sevencoffee-cart__layout,
	.sevencoffee-checkout__layout {
		gap: 20px;
	}

	.sevencoffee-order-review,
	#customer_details {
		padding: 18px;
	}
}

/* ---------- Tablet vertical (768–1024px) [v2.5.57] ----------
   Já estava em coluna única, mas herdava o padding lateral de 32px do
   desktop — 64px desperdiçados numa largura em que cada pixel conta. E a
   caixa lateral, agora por baixo do formulário, não tinha limite de
   largura: num tablet de 1024px esticava de ponta a ponta e ficava
   estranha, com o total sozinho à direita a metros do rótulo. */
@media (max-width: 1024px) and (min-width: 768px) {
	.sevencoffee-page-wrapper {
		padding-left: 24px !important;
		padding-right: 24px !important;
	}

	.sevencoffee-cart__layout,
	.sevencoffee-checkout__layout {
		gap: 22px;
	}

	/* A caixa lateral deixa de esticar quando passa para baixo. */
	.sevencoffee-cart-totals,
	.sevencoffee-order-review {
		max-width: 560px;
		margin-left: auto;
		margin-right: auto;
	}
}

@media (max-width: 1024px) {
	/* O !important aqui NÃO é decorativo: as regras base destes dois
	   seletores (linhas ~216 e ~521) declaram grid-template-columns com
	   !important, para vencer o Elementor. Sem !important também aqui,
	   esta regra perdia e o layout ficava em 2 colunas em tablet/mobile.
	   Até à v2.5.51 era isso mesmo que acontecia dentro deste ficheiro —
	   só não se via porque o bloco de CSS crítico inline em
	   includes/account/account.php repete estas regras com !important e
	   entra depois. REGRA: ao pôr !important numa regra base, verificar
	   sempre os breakpoints dessa mesma regra. [v2.5.51] */
	.sevencoffee-cart__layout,
	.sevencoffee-checkout__layout {
		grid-template-columns: 1fr !important;
	}

	.sevencoffee-page-wrapper.sevencoffee-checkout,
	.sevencoffee-page-wrapper.sevencoffee-cart {
		max-width: 1400px;
	}

	/* Mais respiro no topo em tablet — o cabeçalho fixo do site muda de
	   comportamento por volta desta largura, e ficava muito colado. */
	.sevencoffee-page-wrapper {
		padding-top: 150px !important;
	}
}

@media (max-width: 767px) {
	.sevencoffee-page-wrapper {
		padding: 140px 16px 60px !important;
	}

	.sevencoffee-page-title {
		font-size: 1.7rem;
		margin-bottom: 20px;
	}

	.sevencoffee-cart-row {
		flex-direction: column;
		padding: 16px;
	}

	.sevencoffee-cart-row__thumb img {
		width: 72px;
		height: 72px;
	}

	.sevencoffee-cart-row__top {
		flex-direction: column;
		gap: 4px;
	}

	.sevencoffee-cart__actions {
		flex-direction: column;
		align-items: stretch;
	}

	.sevencoffee-cart__coupon {
		flex-direction: column;
	}

	#customer_details {
		padding: 18px;
	}

	.sevencoffee-order-review {
		padding: 18px;
	}

	.sevencoffee-order-review__item-top {
		flex-wrap: wrap;
	}

	.sevencoffee-order-review__item-total {
		margin-left: auto;
	}

	.sevencoffee-order-review ul.payment_methods,
body.woocommerce-order-pay #payment ul.payment_methods {
		grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
	}

	.sevencoffee-order-review ul.payment_methods li label img,
body.woocommerce-order-pay #payment ul.payment_methods li label img {
		height: 18px;
	}
}

/* ==========================================================================
   [v2.5.34] Páginas de "encomenda recebida" e "pagar encomenda"
   Enquadramento (folga do cabeçalho + max-width centrado) para o conteúdo
   do WooCommerce que aparece nestas páginas dentro do nosso <main>, mas sem
   o .sevencoffee-page-wrapper. Restrito por classe do <body> a estas duas
   páginas — o formulário de checkout normal não é afetado.
   Espelha o bloco de critical CSS inline em includes/account/account.php.
   ========================================================================== */
body.woocommerce-order-received #sevencoffee-standalone-main,
body.woocommerce-order-pay #sevencoffee-standalone-main {
	max-width: max(1400px, min(1900px, 70vw));
	margin: 0 auto;
	padding: 130px 32px 160px;
	box-sizing: border-box;
}

@media (max-width: 1024px) {
	body.woocommerce-order-received #sevencoffee-standalone-main,
	body.woocommerce-order-pay #sevencoffee-standalone-main {
		max-width: 1400px;
		padding: 150px 24px 120px;
	}
}

@media (max-width: 767px) {
	body.woocommerce-order-received #sevencoffee-standalone-main,
	body.woocommerce-order-pay #sevencoffee-standalone-main {
		padding: 140px 16px 60px;
	}
}
