/* ==========================================================================
   Renova - Overrides do WooCommerce (woocommerce.css)
   Alinha os templates nativos do WooCommerce com o sistema de design Renova.
   Carregado depois de main.css. Usa os mesmos tokens.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Grelha de produtos nativa (ul.products)
   -------------------------------------------------------------------------- */
.woocommerce ul.products,
.woocommerce-page ul.products{
  display:grid!important;gap:16px;margin:0 0 24px;padding:0;list-style:none;
  grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.woocommerce ul.products::before,
.woocommerce ul.products::after{content:none!important} /* remove clearfix antigo */
.woocommerce ul.products li.product{width:auto!important;margin:0!important;float:none!important;
  padding:0!important}
@media (max-width:640px){
  .woocommerce ul.products,
  .woocommerce-page ul.products{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
}

/* --------------------------------------------------------------------------
   2. Botoes nativos (.button, add-to-cart) -> estilo rv-btn
   -------------------------------------------------------------------------- */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce .button.alt,
.woocommerce-page a.button,
.woocommerce-page button.button{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;padding:12px 20px;border:1px solid var(--rv-primary);border-radius:var(--rv-radius-sm);
  background:var(--rv-primary);color:#fff;font-weight:600;font-size:15px;line-height:1.2;
  text-decoration:none;cursor:pointer;transition:background .15s,border-color .15s}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover,
.woocommerce .button.alt:hover{background:var(--rv-primary-ink);border-color:var(--rv-primary-ink);color:#fff}

/* Botao secundario (ex.: "Continuar a comprar") */
.woocommerce a.button.wc-backward,
.woocommerce .button.wc-forward:not(.checkout){background:transparent;color:var(--rv-ink);
  border-color:var(--rv-border)}
.woocommerce a.button.wc-backward:hover{background:var(--rv-bg);color:var(--rv-ink);border-color:var(--rv-muted)}

/* Botao de finalizar compra: cor de destaque */
.woocommerce .checkout-button,
.woocommerce #place_order{background:var(--rv-accent);border-color:var(--rv-accent);color:var(--rv-ink);
  font-weight:700}
.woocommerce .checkout-button:hover,
.woocommerce #place_order:hover{background:var(--rv-accent-ink);border-color:var(--rv-accent-ink);color:#fff}

/* --------------------------------------------------------------------------
   3. Preco nativo (.price)
   -------------------------------------------------------------------------- */
.woocommerce .price,
.woocommerce div.product p.price,
.woocommerce div.product span.price{color:var(--rv-ink);font-weight:800;font-size:20px}
.woocommerce .price del{color:var(--rv-muted);font-weight:400;font-size:14px;margin-right:6px}
.woocommerce .price ins{text-decoration:none;color:var(--rv-ink)}
.woocommerce div.product p.price{font-size:clamp(24px,4vw,32px)}

/* Etiqueta de promocao nativa */
.woocommerce span.onsale{background:var(--rv-accent);color:var(--rv-ink);min-height:auto;
  min-width:auto;padding:5px 10px;border-radius:999px;font-weight:700;font-size:12px;line-height:1}

/* --------------------------------------------------------------------------
   4. Single product - layout 2 colunas
   -------------------------------------------------------------------------- */
.woocommerce div.product{display:block}
@media (min-width:900px){
  .woocommerce div.product{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}
  .woocommerce div.product .woocommerce-product-gallery{grid-column:1;margin:0}
  .woocommerce div.product .summary{grid-column:2;margin:0;float:none;width:auto}
  .woocommerce div.product .woocommerce-tabs,
  .woocommerce div.product .related,
  .woocommerce div.product .up-sells{grid-column:1 / -1}
}
.woocommerce div.product .woocommerce-product-gallery{width:100%!important}
.woocommerce div.product .product_title{margin-bottom:12px}
.woocommerce div.product form.cart{margin:20px 0}
.woocommerce div.product form.cart .quantity{margin-right:10px}
.woocommerce div.product form.cart .quantity input.qty{min-height:48px;width:72px;
  border:1px solid var(--rv-border);border-radius:var(--rv-radius-sm);text-align:center;font-size:16px}
.woocommerce div.product .single_add_to_cart_button{min-height:48px}

/* Abas de produto */
.woocommerce div.product .woocommerce-tabs ul.tabs{padding:0;margin:0 0 16px;display:flex;
  flex-wrap:wrap;gap:8px;border-bottom:1px solid var(--rv-border)}
.woocommerce div.product .woocommerce-tabs ul.tabs::before{border:0}
.woocommerce div.product .woocommerce-tabs ul.tabs li{background:transparent;border:0;border-radius:0;
  margin:0;padding:0}
.woocommerce div.product .woocommerce-tabs ul.tabs li a{padding:12px 4px;font-weight:600;
  color:var(--rv-muted);border-bottom:2px solid transparent}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:var(--rv-primary);
  border-bottom-color:var(--rv-primary)}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after{content:none}

/* Tabela de atributos nativa */
.woocommerce table.shop_attributes{border:1px solid var(--rv-border);border-radius:var(--rv-radius);
  overflow:hidden}
.woocommerce table.shop_attributes th{background:var(--rv-bg);color:var(--rv-muted);font-weight:600;
  padding:12px 16px;width:42%}
.woocommerce table.shop_attributes td{padding:12px 16px;font-style:normal}
.woocommerce table.shop_attributes tr:not(:last-child) th,
.woocommerce table.shop_attributes tr:not(:last-child) td{border-bottom:1px solid var(--rv-border)}

/* --------------------------------------------------------------------------
   5. Carrinho
   -------------------------------------------------------------------------- */
.woocommerce table.shop_table{border:1px solid var(--rv-border);border-radius:var(--rv-radius);
  border-collapse:separate;border-spacing:0;overflow:hidden}
.woocommerce table.shop_table th{background:var(--rv-bg);color:var(--rv-ink);font-weight:700;
  padding:14px 12px;font-size:14px}
.woocommerce table.shop_table td{padding:14px 12px;border-top:1px solid var(--rv-border);
  vertical-align:middle}
.woocommerce .cart_item img{max-width:64px;border-radius:var(--rv-radius-sm)}
.woocommerce .cart-collaterals .cart_totals,
.woocommerce-cart .cart-collaterals .cart_totals{background:var(--rv-surface);
  border:1px solid var(--rv-border);border-radius:var(--rv-radius);padding:20px}
.woocommerce .cart-collaterals .cart_totals h2{margin-top:0}
.woocommerce a.remove{color:var(--rv-danger)!important;font-weight:700}
.woocommerce a.remove:hover{background:var(--rv-danger)!important;color:#fff!important}
.woocommerce .quantity input.qty{min-height:44px;border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm)}
@media (max-width:640px){
  .woocommerce table.shop_table_responsive tr td{padding:10px 12px}
}

/* --------------------------------------------------------------------------
   6. Checkout
   -------------------------------------------------------------------------- */
.woocommerce form .form-row{padding:0 0 14px;margin:0}
.woocommerce .col2-set,
.woocommerce-page .col2-set{display:grid;gap:24px}
@media (min-width:900px){
  .woocommerce-checkout .col2-set{grid-template-columns:1fr 1fr}
  .woocommerce-checkout #customer_details{width:auto}
}
.woocommerce form .form-row label{font-weight:600;font-size:14px;margin-bottom:4px;display:block}
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce .select2-container .select2-selection--single{min-height:48px;padding:10px 12px;
  border:1px solid var(--rv-border);border-radius:var(--rv-radius-sm);font-size:16px;width:100%;
  background:var(--rv-surface);color:var(--rv-ink)}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus{border-color:var(--rv-primary);outline:none;
  box-shadow:0 0 0 3px var(--rv-primary-tint)}
.woocommerce .select2-container .select2-selection--single .select2-selection__rendered{
  line-height:26px;padding:0}
.woocommerce #order_review,
.woocommerce-checkout #order_review{background:var(--rv-surface);border:1px solid var(--rv-border);
  border-radius:var(--rv-radius);padding:20px}
.woocommerce-checkout #payment{background:transparent;border-radius:0}
.woocommerce-checkout #payment ul.payment_methods{border:1px solid var(--rv-border);
  border-radius:var(--rv-radius);background:var(--rv-bg)}

/* --------------------------------------------------------------------------
   7. Mensagens (message / info / error)
   -------------------------------------------------------------------------- */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.woocommerce-noreviews,
.woocommerce .woocommerce-error{border:1px solid var(--rv-border);border-radius:var(--rv-radius);
  border-top:0;border-left:4px solid var(--rv-primary);background:var(--rv-surface);
  padding:14px 16px;margin:0 0 20px;list-style:none;box-shadow:var(--rv-shadow)}
.woocommerce-message{border-left-color:var(--rv-primary);background:var(--rv-primary-tint)}
.woocommerce-info{border-left-color:var(--rv-accent);background:var(--rv-accent-tint)}
.woocommerce-error{border-left-color:var(--rv-danger);background:#FEF2F2}
.woocommerce-message::before,
.woocommerce-info::before,
.woocommerce-error::before{display:none} /* remove icones font nativos */
.woocommerce-message .button,
.woocommerce-info .button{margin-top:8px}

/* --------------------------------------------------------------------------
   8. Notas / paginacao / ordenacao
   -------------------------------------------------------------------------- */
.woocommerce .woocommerce-result-count{color:var(--rv-muted);font-size:14px;margin:0}
.woocommerce .woocommerce-ordering select{min-height:48px;border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);padding:0 12px;background:var(--rv-surface);color:var(--rv-ink)}
.woocommerce nav.woocommerce-pagination ul{border:0;display:flex;gap:6px;justify-content:center}
.woocommerce nav.woocommerce-pagination ul li{border:0;margin:0}
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span{min-width:48px;min-height:48px;
  display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);padding:0 12px;color:var(--rv-ink)}
.woocommerce nav.woocommerce-pagination ul li span.current{background:var(--rv-primary);
  color:#fff;border-color:var(--rv-primary)}

/* Estrelas de avaliacao */
.woocommerce .star-rating span{color:var(--rv-star)}

/* Sem produtos: usa o estado vazio do tema, mas suaviza o texto nativo */
.woocommerce-info.woocommerce-no-products-found,
.woocommerce ul.products li.no-products{color:var(--rv-muted)}

/* === Fase 2.2: correcoes visuais pos-QA === */
/* Botao add-to-cart WooCommerce: verde da marca (nao o roxo default) */
.woocommerce .single_add_to_cart_button,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce .button.alt{background:var(--rv-primary)!important;color:#fff!important;border-color:var(--rv-primary)!important;min-height:48px;font-weight:700;border-radius:var(--rv-radius-sm)}
.woocommerce .single_add_to_cart_button:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce .button.alt:hover{background:var(--rv-primary-ink)!important;border-color:var(--rv-primary-ink)!important}
/* Botoes secundarios WooCommerce coerentes com o tema */
.woocommerce .button:not(.alt):not(.rv-btn){background:var(--rv-surface);color:var(--rv-ink);border:1px solid var(--rv-border);min-height:44px;border-radius:var(--rv-radius-sm)}
/* Trust bar dentro do resumo do produto (coluna estreita): 2 colunas, sem overlap */
.rv-summary .rv-trust-bar{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
.rv-summary .rv-trust-bar .rv-trust-item{font-size:13px}
@media (max-width:420px){.rv-summary .rv-trust-bar{grid-template-columns:1fr}}
/* Icone decorativo do hero: limitar tamanho */
.rv-hero__media svg{width:100%;max-width:300px;height:auto;margin-inline:auto}

/* ==========================================================================
   === Fase 3: coerencia com a nova identidade (tipografia + CRO) ===
   ========================================================================== */

/* Preco do produto na pagina single: tipografia display, forte e premium */
.woocommerce div.product p.price,
.woocommerce div.product span.price{
  font-family:var(--rv-font-display);font-weight:800;letter-spacing:-0.02em;color:var(--rv-ink)}
.woocommerce div.product p.price ins,
.woocommerce div.product span.price ins{color:var(--rv-ink)}
.woocommerce div.product p.price del{font-family:var(--rv-font);font-weight:500}

/* Botao "adicionar ao carrinho" (single): verde grande, elevado, com micro-lift */
.woocommerce div.product form.cart .single_add_to_cart_button,
.woocommerce div.product .single_add_to_cart_button{
  min-height:54px;font-weight:800;font-size:16px;border-radius:var(--rv-radius-sm);
  box-shadow:var(--rv-shadow-primary);
  transition:background .15s,border-color .15s,box-shadow .15s,transform .15s cubic-bezier(.2,.7,.2,1)}
.woocommerce div.product form.cart .single_add_to_cart_button:hover{transform:translateY(-1px)}
.woocommerce div.product form.cart .single_add_to_cart_button:active{transform:translateY(0)}

/* Botao de finalizar compra: coral de accao, elevado */
.woocommerce .checkout-button,
.woocommerce #place_order{min-height:54px;font-weight:800;box-shadow:var(--rv-shadow-accent);
  border-radius:var(--rv-radius-sm)}

/* Etiqueta de promocao nativa: coral coerente com o pricebox */
.woocommerce span.onsale{box-shadow:var(--rv-shadow)}

/* Blocos de resumo (carrinho/checkout): sombra quente coerente */
.woocommerce .cart-collaterals .cart_totals,
.woocommerce #order_review,
.woocommerce-checkout #order_review{box-shadow:var(--rv-shadow)}

/* Quantidade: fundo quente para consistencia com os cartoes */
.woocommerce div.product form.cart .quantity input.qty{background:var(--rv-surface)}

/* Mensagem de sucesso: menta da marca (ja aplicada) + botao com micro-lift */
.woocommerce-message .button:hover{transform:translateY(-1px)}

/* ==========================================================================
   === FASE 4: POLISH DE ESPACAMENTO (WooCommerce) ===
   --------------------------------------------------------------------------
   Refina respiro do single em mobile/tablet e coerencia da coluna de compra.
   Nao quebra add-to-cart/checkout. Anexado ao fim (vence por ordem); onde e'
   preciso vencer o layout nativo do WooCommerce, a especificidade iguala ou
   supera a das regras nativas (div.summary), sem !important. PT-EU, sem
   travessoes, zero overflow a 360px.
   ========================================================================== */

/* Coluna de compra (.summary/.rv-buybox): ocupa sempre a largura disponivel.
   Anula o float:right / width:48% que o layout nativo do WooCommerce aplica a
   div.summary. Sem esta correccao a caixa de compra fica estreita na coluna
   (desktop) ou flutua a meio (banda 769-899px). A grelha 2 colunas do tema
   continua a colocar galeria e resumo lado a lado em >=900px. */
.woocommerce div.product div.summary{float:none;width:auto}
.woocommerce div.product .rv-gallery{float:none;width:auto;margin:0}

/* Single em coluna unica (<900px): resumo separado da galeria com respiro. */
@media (max-width:899px){
  .woocommerce div.product div.summary{margin-top:clamp(20px,4vw,28px)}
}

/* Grelha 2 colunas do single: gap responsivo (menos aresta em tablets largos). */
@media (min-width:900px){
  .woocommerce div.product{gap:clamp(28px,3.4vw,48px)}
}

/* Ritmo da coluna de compra: o form add-to-cart segue o gap do buybox (20px),
   sem a margem dupla que o WooCommerce injecta em form.cart. */
.woocommerce div.product .rv-buybox form.cart{margin:0}

/* === Fix buybox width (v0.4.1): a coluna de compra deve preencher a celula do grid.
   O WooCommerce nativo forca .summary a width:48%+float:right (mesma especificidade que o override
   anterior, ganhava por ordem de carregamento). Reforcado com especificidade maior + !important. === */
.woocommerce div.product div.summary,
.woocommerce div.product div.summary.rv-buybox,
.woocommerce div.product div.summary.entry-summary{float:none !important;width:auto !important;max-width:none !important}


/* ================= POLISH v0.5.0 (workflow): checkout + cart classicos ================= */
/* ==========================================================================
   Renova - Checkout CLASSICO do WooCommerce (polish)
   --------------------------------------------------------------------------
   Este ficheiro completa o que faltava: a woocommerce.css so preparava o
   checkout de blocos, por isso o checkout classico (templates default) ficava
   partido (formulario espremido a direita, coluna esquerda vazia).
   Aqui montamos o layout de duas colunas (dados do cliente a esquerda,
   resumo do pedido em cartao sticky a direita), cartoes de pagamento
   seleccionaveis, tabela de revisao limpa e botao de finalizar destacado.

   Regras:
   - TODOS os selectores vivem dentro de .woocommerce-checkout (o body e o form
     recebem essa classe), por isso nada afecta outras paginas.
   - So variaveis do :root (main.css). Zero cores hardcoded.
   - Mobile-first. A partir de 900px passamos a duas colunas.
   - PT-EU pre-Acordo, sem travessoes (so hifen normal).
   - Onde e' preciso vencer a woocommerce.css ou o CSS inline do modulo CRO,
     a especificidade iguala ou supera (id #order_review / #payment), sem
     abusar de !important.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Coluna esquerda (dados do cliente): empilha facturacao e envio
   --------------------------------------------------------------------------
   A woocommerce.css poe .col2-set em duas colunas a partir dos 900px. No novo
   layout o #customer_details ja e' a coluna estreita da esquerda, por isso
   facturacao e envio devem ficar EMPILHADOS (nao lado a lado). O id vence a
   regra .woocommerce .col2-set sem !important. */
.woocommerce-checkout #customer_details{
  display:block;
  width:100%;
  min-width:0;
}

/* Cada bloco (facturacao / envio + notas) como cartao subtil estilo Shopify. */
.woocommerce-checkout #customer_details .col-1,
.woocommerce-checkout #customer_details .col-2{
  background:var(--rv-surface);
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius);
  box-shadow:var(--rv-shadow);
  padding:clamp(16px,3vw,24px);
  width:100%;
  min-width:0;
}
.woocommerce-checkout #customer_details .col-2{
  margin-top:20px;
}

/* Titulos das seccoes (Detalhes de facturacao / Enviar para...). */
.woocommerce-checkout #customer_details h3{
  font-family:var(--rv-font-display);
  font-size:clamp(18px,2.2vw,22px);
  line-height:1.2;
  margin:0 0 var(--rv-s4);
  padding-bottom:10px;
  border-bottom:1px solid var(--rv-border);
}

/* Cabecalho "Enviar para uma morada diferente" (checkbox + titulo). */
.woocommerce-checkout #ship-to-different-address{
  font-size:16px;
  margin:0 0 var(--rv-s3);
  padding-bottom:0;
  border-bottom:0;
}
.woocommerce-checkout #ship-to-different-address label{
  display:flex;
  align-items:center;
  gap:10px;
  margin:0;
  font-weight:700;
  cursor:pointer;
}
.woocommerce-checkout #ship-to-different-address input[type="checkbox"]{
  width:18px;
  height:18px;
  margin:0;
  accent-color:var(--rv-primary);
  flex:0 0 auto;
}

/* --------------------------------------------------------------------------
   2. Campos do formulario: rotulo por cima, campos generosos, pares em linha
   -------------------------------------------------------------------------- */
/* Envolvemos cada wrapper de campos numa grelha flexivel: por defeito cada
   campo ocupa a linha inteira; Nome/Apelido e outros pares ficam a 50%. */
.woocommerce-checkout .woocommerce-billing-fields__field-wrapper,
.woocommerce-checkout .woocommerce-shipping-fields__field-wrapper,
.woocommerce-checkout .woocommerce-additional-fields__field-wrapper{
  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,
.woocommerce-checkout .woocommerce-additional-fields__field-wrapper > .form-row{
  flex:1 1 100%;
  min-width:0;
  float:none;
}
/* Nome / Apelido (e outros pares first/last) lado a lado em ecra largo. */
.woocommerce-checkout .form-row-first,
.woocommerce-checkout .form-row-last{
  flex:1 1 calc(50% - 8px);
}

/* Rotulo por cima, sempre visivel. */
.woocommerce-checkout form.checkout .form-row label{
  display:block;
  margin-bottom:6px;
  font-weight:600;
  font-size:14px;
  color:var(--rv-ink);
}
.woocommerce-checkout form.checkout .form-row .required{
  color:var(--rv-accent-ink);
  border:0;
}
.woocommerce-checkout form.checkout .form-row .optional{
  color:var(--rv-muted);
  font-weight:500;
}

/* Campos com respiro, altura tactil e foco com anel da marca. A escala de
   especificidade (.woocommerce-checkout form.checkout ...) supera a base da
   woocommerce.css sem depender da ordem de carregamento. */
.woocommerce-checkout form.checkout .form-row input.input-text,
.woocommerce-checkout form.checkout .form-row textarea,
.woocommerce-checkout form.checkout .form-row select,
.woocommerce-checkout form.checkout .select2-container .select2-selection--single{
  width:100%;
  min-height:52px;
  padding:13px 14px;
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);
  background:var(--rv-surface);
  color:var(--rv-ink);
  font-family:var(--rv-font);
  font-size:16px;
  line-height:1.4;
}
.woocommerce-checkout form.checkout .form-row textarea{
  min-height:104px;
  line-height:1.55;
  resize:vertical;
}
.woocommerce-checkout form.checkout .form-row input.input-text:focus,
.woocommerce-checkout form.checkout .form-row textarea:focus,
.woocommerce-checkout form.checkout .form-row select:focus,
.woocommerce-checkout form.checkout .select2-container--focus .select2-selection--single,
.woocommerce-checkout form.checkout .select2-container--open .select2-selection--single{
  border-color:var(--rv-primary);
  outline:none;
  box-shadow:0 0 0 3px var(--rv-primary-tint);
}
/* Alinha o texto do select2 (pais) com a altura do campo. */
.woocommerce-checkout form.checkout .select2-container .select2-selection--single{
  display:flex;
  align-items:center;
}
.woocommerce-checkout form.checkout .select2-container .select2-selection__rendered{
  padding:0;
  line-height:1.4;
  color:var(--rv-ink);
}
.woocommerce-checkout form.checkout .select2-container .select2-selection__arrow{
  height:100%;
  top:0;
}

/* Estado invalido dado pela validacao do WooCommerce. */
.woocommerce-checkout form.checkout .woocommerce-invalid input.input-text,
.woocommerce-checkout form.checkout .woocommerce-invalid select,
.woocommerce-checkout form.checkout .woocommerce-invalid .select2-selection{
  border-color:var(--rv-danger);
}

/* Espacamento vertical entre campos. */
.woocommerce-checkout form.checkout .form-row{
  padding:0 0 16px;
  margin:0;
}

/* --------------------------------------------------------------------------
   3. Titulo e cartao do resumo do pedido (base, uma coluna)
   -------------------------------------------------------------------------- */
.woocommerce-checkout #order_review_heading{
  font-family:var(--rv-font-display);
  font-size:clamp(18px,2.2vw,22px);
  line-height:1.2;
  margin:var(--rv-s6) 0 var(--rv-s3);
}

/* O cartao ja recebe fundo/borda/sombra da woocommerce.css; aqui damos padding
   confortavel e garantimos que nao transborda dentro da grelha. */
.woocommerce-checkout #order_review{
  padding:clamp(18px,3vw,26px);
  min-width:0;
}

/* --------------------------------------------------------------------------
   4. Tabela de revisao: linhas limpas dentro do cartao
   --------------------------------------------------------------------------
   Removemos a borda/quadro da tabela (herdada de table.shop_table) para nao
   criar caixa dentro de caixa. Ancoramos em #order_review para vencer as
   regras de .woocommerce table.shop_table sem !important. */
.woocommerce-checkout #order_review table.shop_table{
  width:100%;
  margin:0 0 var(--rv-s2);
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  font-size:15px;
}
.woocommerce-checkout #order_review table.shop_table th,
.woocommerce-checkout #order_review table.shop_table td{
  padding:12px 0;
  border:0;
  background:transparent;
  vertical-align:top;
}

/* Cabecalho da tabela: rotulos discretos. */
.woocommerce-checkout #order_review table.shop_table thead th{
  padding-top:0;
  color:var(--rv-muted);
  font-size:12px;
  font-weight:700;
  letter-spacing:.04em;
  text-transform:uppercase;
  border-bottom:1px solid var(--rv-border);
}
.woocommerce-checkout #order_review table.shop_table thead th.product-total{
  text-align:right;
}

/* Linhas de produto: nome + quantidade a esquerda, preco a direita. */
.woocommerce-checkout #order_review table.shop_table tbody tr.cart_item td{
  border-bottom:1px solid var(--rv-border);
}
.woocommerce-checkout #order_review table.shop_table td.product-name{
  color:var(--rv-ink);
  font-weight:600;
  line-height:1.4;
}
.woocommerce-checkout #order_review table.shop_table td.product-name img{
  width:48px;
  height:48px;
  object-fit:contain;
  float:left;
  margin:0 12px 0 0;
  padding:4px;
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);
  background:var(--rv-surface);
}
.woocommerce-checkout #order_review table.shop_table td.product-name .product-quantity{
  display:inline;
  margin-left:6px;
  color:var(--rv-muted);
  font-weight:600;
}
.woocommerce-checkout #order_review table.shop_table td.product-name dl.variation{
  margin:4px 0 0;
  font-size:13px;
  color:var(--rv-muted);
}
.woocommerce-checkout #order_review table.shop_table td.product-total{
  text-align:right;
  white-space:nowrap;
  font-weight:600;
  color:var(--rv-ink);
}

/* Totais (subtotal / envio / total). */
.woocommerce-checkout #order_review table.shop_table tfoot th{
  text-align:left;
  font-weight:600;
  color:var(--rv-muted);
}
.woocommerce-checkout #order_review table.shop_table tfoot td{
  text-align:right;
  white-space:nowrap;
  color:var(--rv-ink);
}
.woocommerce-checkout #order_review table.shop_table tfoot tr th,
.woocommerce-checkout #order_review table.shop_table tfoot tr td{
  padding:10px 0;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr:first-child th,
.woocommerce-checkout #order_review table.shop_table tfoot tr:first-child td{
  padding-top:14px;
}
/* Linha do total: destaque forte. */
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total th,
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total td{
  padding-top:14px;
  border-top:2px solid var(--rv-border);
  font-size:18px;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total th{
  color:var(--rv-ink);
  font-weight:800;
}
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total td .amount,
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total td .woocommerce-Price-amount{
  font-family:var(--rv-font-display);
  font-weight:800;
  font-size:22px;
  letter-spacing:-0.01em;
  color:var(--rv-primary);
}
.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total td small.includes_tax{
  display:block;
  font-family:var(--rv-font);
  font-size:12px;
  font-weight:500;
  color:var(--rv-muted);
}

/* --------------------------------------------------------------------------
   5. Metodos de pagamento como cartoes seleccionaveis
   --------------------------------------------------------------------------
   Anulamos a moldura unica em torno da lista (posta na woocommerce.css) e
   transformamos cada li.wc_payment_method num cartao com estado seleccionado. */
.woocommerce-checkout #payment{
  background:transparent;
  border:0;
  border-radius:0;
  padding:0;
  margin-top:var(--rv-s4);
}
.woocommerce-checkout #payment ul.payment_methods.methods{
  margin:0;
  padding:0;
  border:0;
  background:transparent;
  list-style:none;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method{
  position:relative;
  margin:0;
  padding:0;
  list-style:none;
  background:var(--rv-surface);
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);
  overflow:hidden;
  transition:border-color .15s var(--rv-ease),background .15s var(--rv-ease),box-shadow .15s var(--rv-ease);
}
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method:hover{
  border-color:var(--rv-border-strong);
}
/* Estado seleccionado: borda verde + fundo menta (usa :has, suportado nos
   navegadores actuais). */
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method:has(input.input-radio:checked),
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method:has(input[type="radio"]:checked){
  border-color:var(--rv-primary);
  background:var(--rv-primary-tint);
  box-shadow:0 0 0 1px var(--rv-primary) inset;
}

/* Radio posicionado; o rotulo ocupa a linha toda e alinha logos a direita. */
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method > input[type="radio"]{
  position:absolute;
  top:18px;
  left:16px;
  width:20px;
  height:20px;
  margin:0;
  accent-color:var(--rv-primary);
  cursor:pointer;
}
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method > label{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:var(--rv-touch);
  margin:0;
  padding:15px 16px 15px 48px;
  font-weight:600;
  font-size:15px;
  color:var(--rv-ink);
  cursor:pointer;
}
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method > label img{
  margin:0 0 0 auto;
  max-height:26px;
  width:auto;
  display:inline-block;
}

/* Caixa de instrucoes (revela-se por baixo do metodo escolhido). */
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method .payment_box{
  margin:0;
  padding:14px 16px 16px 48px;
  background:transparent;
  border-top:1px solid var(--rv-border);
  border-radius:0;
  color:var(--rv-muted);
  font-size:14px;
  line-height:1.55;
}
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method:has(input:checked) .payment_box{
  border-top-color:var(--rv-primary-tint-2);
}
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method .payment_box::before{
  display:none;
}
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method .payment_box p{
  margin:0 0 8px;
}
.woocommerce-checkout #payment ul.payment_methods.methods li.wc_payment_method .payment_box p:last-child{
  margin-bottom:0;
}

/* Termos e condicoes (quando existe pagina de termos definida). */
.woocommerce-checkout #payment .woocommerce-terms-and-conditions-wrapper{
  margin:var(--rv-s4) 0 var(--rv-s2);
  font-size:14px;
  color:var(--rv-muted);
}
.woocommerce-checkout #payment .woocommerce-form__label-for-checkbox{
  display:flex;
  align-items:flex-start;
  gap:10px;
  margin:0;
}
.woocommerce-checkout #payment .woocommerce-form__input-checkbox{
  width:18px;
  height:18px;
  margin-top:2px;
  accent-color:var(--rv-primary);
  flex:0 0 auto;
}

/* --------------------------------------------------------------------------
   6. Botao de finalizar: primario grande, largura total do cartao
   --------------------------------------------------------------------------
   A ancoragem em #order_review #place_order supera as regras de
   .woocommerce #place_order (raio/sombra/altura). O verde ja e' garantido pela
   regra .button.alt da woocommerce.css; aqui refinamos forma e destaque. */
.woocommerce-checkout #payment .place-order{
  margin:0;
  padding:0;
}
.woocommerce-checkout #order_review #place_order{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-height:54px;
  margin-top:var(--rv-s2);
  padding:14px 22px;
  background:var(--rv-primary);
  border:1px solid var(--rv-primary);
  border-radius:var(--rv-radius);
  color:#fff;
  font-family:var(--rv-font-display);
  font-weight:800;
  font-size:16px;
  line-height:1.2;
  letter-spacing:.01em;
  box-shadow:var(--rv-shadow-primary);
  transition:background .15s,border-color .15s,box-shadow .15s,transform .15s var(--rv-ease);
}
.woocommerce-checkout #order_review #place_order:hover{
  background:var(--rv-primary-ink);
  border-color:var(--rv-primary-ink);
  color:#fff;
  transform:translateY(-1px);
}
.woocommerce-checkout #order_review #place_order:active{
  transform:translateY(0);
}

/* --------------------------------------------------------------------------
   7. Cupao: discreto e bem alinhado
   -------------------------------------------------------------------------- */
/* Aviso "Tem um cupao?": neutro (nao o realce coral do woocommerce-info). */
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info{
  background:var(--rv-bg);
  border:1px solid var(--rv-border);
  border-left:4px solid var(--rv-border-strong);
  box-shadow:none;
  color:var(--rv-muted);
  font-size:14px;
}
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info a{
  color:var(--rv-primary);
  font-weight:600;
}
/* Formulario do cupao: cartao tracejado subtil. */
.woocommerce-checkout form.checkout_coupon{
  margin:0 0 var(--rv-s6);
  padding:16px;
  border:1px dashed var(--rv-border-strong);
  border-radius:var(--rv-radius-sm);
  background:var(--rv-surface);
  box-shadow:none;
}
.woocommerce-checkout form.checkout_coupon p:first-child{
  margin:0 0 12px;
  color:var(--rv-muted);
  font-size:14px;
}
.woocommerce-checkout form.checkout_coupon .form-row{
  padding:0;
}
.woocommerce-checkout form.checkout_coupon .button{
  min-height:48px;
}

/* --------------------------------------------------------------------------
   8. Blocos de confianca do tema (.rv-checkout-cro*): reforco subtil
   --------------------------------------------------------------------------
   O CSS inline do modulo ja da o essencial; aqui so ajustamos o encaixe dentro
   do cartao de revisao (a ancoragem em #order_review vence o inline). */
.woocommerce-checkout #order_review .rv-checkout-cro{
  font-size:13.5px;
}
.woocommerce-checkout #order_review .rv-checkout-cro--secure{
  margin:0 0 var(--rv-s4);
}
.woocommerce-checkout #order_review .rv-checkout-cro__reassure{
  margin:var(--rv-s4) 0;
}
.woocommerce-checkout #order_review .rv-checkout-cro--pay{
  margin-top:var(--rv-s3);
  justify-content:center;
  text-align:center;
}
.woocommerce-checkout #order_review .rv-checkout-cro--pay .rv-pay-icons{
  justify-content:center;
}

/* --------------------------------------------------------------------------
   9. Mensagens de validacao dentro do checkout
   -------------------------------------------------------------------------- */
.woocommerce-checkout .woocommerce-NoticeGroup-checkout .woocommerce-error,
.woocommerce-checkout form.checkout .woocommerce-error{
  margin:0 0 var(--rv-s4);
}

/* --------------------------------------------------------------------------
   10. Responsivo: >= 900px passa a duas colunas com resumo sticky
   --------------------------------------------------------------------------
   Transformamos o form.checkout numa grelha de 2 colunas. #customer_details
   ocupa a coluna 1 (as duas linhas); o titulo e o cartao de revisao ficam na
   coluna 2. Usamos posicionamento explicito por linha/coluna, robusto face a
   ordem real do markup (o #order_review vem depois no HTML). */
@media (min-width:900px){
  .woocommerce-checkout form.checkout{
    display:grid;
    grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);
    gap:0 var(--rv-s8);
    align-items:start;
  }
  .woocommerce-checkout form.checkout #customer_details{
    grid-column:1;
    grid-row:1 / span 2;
    min-width:0;
  }
  .woocommerce-checkout form.checkout #order_review_heading{
    grid-column:2;
    grid-row:1;
    margin:0 0 var(--rv-s3);
  }
  .woocommerce-checkout form.checkout #order_review{
    grid-column:2;
    grid-row:2;
    position:sticky;
    top:24px;
  }
}

/* Ecra intermedio: manter a leitura confortavel do cartao de revisao. */
@media (min-width:900px) and (max-width:1099px){
  .woocommerce-checkout form.checkout{
    gap:0 var(--rv-s6);
  }
}

/* --------------------------------------------------------------------------
   11. Responsivo: < 600px empilha pares e reforca alvos tacteis
   -------------------------------------------------------------------------- */
@media (max-width:599px){
  .woocommerce-checkout .form-row-first,
  .woocommerce-checkout .form-row-last{
    flex:1 1 100%;
  }
  .woocommerce-checkout #order_review{
    padding:18px;
  }
  .woocommerce-checkout #order_review #place_order{
    min-height:52px;
  }
}


/* ==========================================================================
   Renova - Carrinho classico WooCommerce (_p_cart.css)
   Marca "Portateis Recondicionados". Shortcode [woocommerce_cart], template
   default (cart/cart.php). Depende dos tokens do :root de main.css e assenta
   por cima da seccao 5 de woocommerce.css (mesma linguagem, sem duplicar).
   TODOS os selectores vivem sob .woocommerce-cart (classe do body na pagina).
   Mobile-first. So tokens (sem cores hardcoded). Zero travessoes. PT-EU.
   Estrutura default:
     .woocommerce > .woocommerce-notices-wrapper
                  > form.woocommerce-cart-form > table.shop_table.cart
                  > .cart-collaterals > .cross-sells + .cart_totals
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Base (mobile-first): empilhamento e ordem das colaterais
   Em mobile o fluxo natural poe cross-sells antes dos totais; reordenamos para
   Totais primeiro (accao de compra), Sugestoes depois.
   -------------------------------------------------------------------------- */
.woocommerce-cart .woocommerce-cart-form{
  margin:0 0 var(--rv-s6);
}

.woocommerce-cart .cart-collaterals{
  display:flex;
  flex-direction:column;
  gap:var(--rv-s8);
  margin:0;
  width:100%;
}
.woocommerce-cart .cart-collaterals .cart_totals{order:1;margin:0;float:none;width:auto}
.woocommerce-cart .cart-collaterals .cross-sells{order:2;margin:0;width:100%}

/* --------------------------------------------------------------------------
   2. Tabela de itens (desktop/tablet): cabecalho, celulas, miniatura, nome
   -------------------------------------------------------------------------- */
.woocommerce-cart table.shop_table.cart{
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius);
  overflow:hidden;
  background:var(--rv-surface);
  margin:0;
}

/* Cabecalho: rotulos subtis em maiusculas */
.woocommerce-cart table.shop_table.cart thead th{
  background:var(--rv-bg);
  color:var(--rv-muted);
  font-weight:700;
  font-size:12px;
  letter-spacing:.04em;
  text-transform:uppercase;
  text-align:left;
  padding:14px 12px;
  border-bottom:1px solid var(--rv-border);
}

/* Celulas do corpo */
.woocommerce-cart table.shop_table.cart td{
  padding:16px 12px;
  border-top:1px solid var(--rv-border);
  vertical-align:middle;
  background:var(--rv-surface);
}
.woocommerce-cart table.shop_table.cart tbody tr.cart_item:first-child td{
  border-top:0;
}

/* Larguras de coluna para um alinhamento limpo */
.woocommerce-cart table.shop_table.cart th.product-remove,
.woocommerce-cart table.shop_table.cart td.product-remove{width:40px;text-align:center}
.woocommerce-cart table.shop_table.cart th.product-thumbnail,
.woocommerce-cart table.shop_table.cart td.product-thumbnail{width:96px}
.woocommerce-cart table.shop_table.cart th.product-quantity,
.woocommerce-cart table.shop_table.cart td.product-quantity{width:120px}
.woocommerce-cart table.shop_table.cart td.product-price,
.woocommerce-cart table.shop_table.cart td.product-subtotal{white-space:nowrap}

/* Miniatura: ~72px, cantos suaves, fundo branco para o produto respirar */
.woocommerce-cart td.product-thumbnail img{
  width:72px;
  max-width:72px;
  height:72px;
  object-fit:contain;
  padding:6px;
  background:#fff;
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);
}

/* Nome do produto: ligacao clara que acende no hover */
.woocommerce-cart td.product-name{font-size:15px;line-height:1.35}
.woocommerce-cart td.product-name a{
  color:var(--rv-ink);
  font-weight:600;
  text-decoration:none;
}
.woocommerce-cart td.product-name a:hover{color:var(--rv-primary);text-decoration:none}

/* Variacoes e avisos por baixo do nome */
.woocommerce-cart td.product-name .variation,
.woocommerce-cart td.product-name dl.variation{
  margin:6px 0 0;
  font-size:13px;
  color:var(--rv-muted);
  line-height:1.4;
}
.woocommerce-cart td.product-name dl.variation dt{font-weight:600;margin:0}
.woocommerce-cart td.product-name dl.variation dd{margin:0 0 4px}
.woocommerce-cart td.product-name .backorder_notification{
  display:block;
  margin-top:6px;
  font-size:12px;
  color:var(--rv-accent-ink);
}

/* Preco unitario mais discreto; subtotal em destaque */
.woocommerce-cart td.product-price{color:var(--rv-muted);font-weight:600}
.woocommerce-cart td.product-subtotal{color:var(--rv-ink);font-weight:800}

/* --------------------------------------------------------------------------
   3. Quantidade: campo estilado (stepper visual)
   -------------------------------------------------------------------------- */
.woocommerce-cart td.product-quantity .quantity{display:inline-flex;align-items:center}
.woocommerce-cart td.product-quantity input.qty,
.woocommerce-cart .quantity input.qty{
  width:84px;
  min-height:48px;
  padding:0 10px;
  text-align:center;
  font-size:16px;
  font-weight:600;
  color:var(--rv-ink);
  background:var(--rv-surface);
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);
}
.woocommerce-cart td.product-quantity input.qty:focus,
.woocommerce-cart .quantity input.qty:focus{
  border-color:var(--rv-primary);
  outline:none;
  box-shadow:0 0 0 3px var(--rv-primary-tint);
}

/* --------------------------------------------------------------------------
   4. Remover item: "x" subtil circular (mais suave que o vermelho default)
   Vence as regras !important de a.remove do woocommerce.css por especificidade.
   -------------------------------------------------------------------------- */
.woocommerce-cart td.product-remove a.remove{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:30px;
  height:30px;
  margin:0 auto;
  border:1px solid transparent;
  border-radius:999px;
  font-size:20px;
  line-height:1;
  font-weight:400;
  color:var(--rv-muted)!important;
  background:transparent!important;
  transition:color .15s var(--rv-ease),background .15s var(--rv-ease),border-color .15s var(--rv-ease);
}
.woocommerce-cart td.product-remove a.remove:hover{
  color:var(--rv-danger)!important;
  background:var(--rv-surface)!important;
  border-color:var(--rv-border)!important;
  text-decoration:none;
}

/* --------------------------------------------------------------------------
   5. Linha de accoes: cupao + "Actualizar carrinho" bem alinhados
   -------------------------------------------------------------------------- */
.woocommerce-cart table.shop_table.cart td.actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:12px;
  width:100%;
  padding:16px 12px;
  background:var(--rv-bg);
  border-top:1px solid var(--rv-border);
}
.woocommerce-cart td.actions .coupon{
  display:flex;
  gap:8px;
  flex:1 1 320px;
  max-width:440px;
}
.woocommerce-cart td.actions .coupon .input-text#coupon_code,
.woocommerce-cart td.actions .coupon input.input-text{
  flex:1 1 auto;
  min-width:0;
  min-height:48px;
  padding:0 14px;
  font-size:16px;
  color:var(--rv-ink);
  background:var(--rv-surface);
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);
}
.woocommerce-cart td.actions .coupon input.input-text:focus{
  border-color:var(--rv-primary);
  outline:none;
  box-shadow:0 0 0 3px var(--rv-primary-tint);
}

/* Botoes de accao secundaria (aplicar cupao / actualizar): estilo ghost.
   O primario (verde) fica reservado para "Finalizar compra". */
.woocommerce-cart td.actions button.button[name="apply_coupon"],
.woocommerce-cart td.actions button.button[name="update_cart"]{
  min-height:48px;
  padding:0 18px;
  font-weight:600;
  font-size:15px;
  color:var(--rv-ink);
  background:var(--rv-surface);
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);
}
.woocommerce-cart td.actions button.button[name="apply_coupon"]:hover,
.woocommerce-cart td.actions button.button[name="update_cart"]:hover:not([disabled]){
  border-color:var(--rv-primary);
  color:var(--rv-primary);
  background:var(--rv-surface);
}
/* "Actualizar carrinho" empurrado para a direita */
.woocommerce-cart td.actions button.button[name="update_cart"]{margin-left:auto}
.woocommerce-cart td.actions button.button[name="update_cart"][disabled]{
  opacity:.5;
  cursor:not-allowed;
}

/* --------------------------------------------------------------------------
   6. Cartao de totais (.cart_totals) + botao "Finalizar compra"
   -------------------------------------------------------------------------- */
.woocommerce-cart .cart_totals{
  background:var(--rv-surface);
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius);
  box-shadow:var(--rv-shadow);
  padding:var(--rv-s6);
}
.woocommerce-cart .cart_totals h2{
  margin:0 0 var(--rv-s4);
  font-family:var(--rv-font-display);
  font-size:clamp(18px,2.4vw,22px);
  font-weight:800;
  letter-spacing:-0.02em;
}

/* Tabela interna sem a moldura da tabela (ja esta dentro do cartao) */
.woocommerce-cart .cart_totals table.shop_table{
  border:0;
  border-radius:0;
  overflow:visible;
  background:transparent;
  margin:0;
}
.woocommerce-cart .cart_totals table.shop_table th,
.woocommerce-cart .cart_totals table.shop_table td{
  padding:12px 0;
  border:0;
  border-top:1px solid var(--rv-border);
  background:transparent;
  vertical-align:top;
}
.woocommerce-cart .cart_totals table.shop_table tr:first-child th,
.woocommerce-cart .cart_totals table.shop_table tr:first-child td{border-top:0}
.woocommerce-cart .cart_totals table.shop_table th{
  text-align:left;
  font-weight:500;
  color:var(--rv-muted);
}
.woocommerce-cart .cart_totals table.shop_table td{
  text-align:right;
  font-weight:700;
  color:var(--rv-ink);
}

/* Linha do total: enfase forte, tipografia display */
.woocommerce-cart .cart_totals tr.order-total th{
  color:var(--rv-ink);
  font-weight:700;
  font-size:16px;
}
.woocommerce-cart .cart_totals tr.order-total td,
.woocommerce-cart .cart_totals tr.order-total td strong .amount,
.woocommerce-cart .cart_totals tr.order-total td .amount{
  font-family:var(--rv-font-display);
  font-size:clamp(20px,3vw,24px);
  font-weight:800;
  color:var(--rv-ink);
  letter-spacing:-0.02em;
}
.woocommerce-cart .cart_totals tr.order-total td small.includes_tax,
.woocommerce-cart .cart_totals .tax_label,
.woocommerce-cart .cart_totals .woocommerce-Price-taxLabel{
  display:block;
  font-family:var(--rv-font);
  font-size:12px;
  font-weight:500;
  color:var(--rv-muted);
}

/* Calculadora de portes e metodos de envio */
.woocommerce-cart .cart_totals .woocommerce-shipping-methods{
  list-style:none;
  margin:0;
  padding:0;
}
.woocommerce-cart .cart_totals .woocommerce-shipping-methods li{
  display:flex;
  align-items:center;
  gap:8px;
  padding:4px 0;
}
.woocommerce-cart .cart_totals .woocommerce-shipping-methods li input[type="radio"]{
  width:18px;
  height:18px;
  accent-color:var(--rv-primary);
  flex:0 0 auto;
}
.woocommerce-cart .cart_totals .shipping-calculator-button{
  color:var(--rv-primary);
  font-weight:600;
  text-decoration:underline;
}
.woocommerce-cart .cart_totals .shipping-calculator-form{margin-top:10px}
.woocommerce-cart .cart_totals .shipping-calculator-form p{margin:0 0 8px}
.woocommerce-cart .cart_totals .shipping-calculator-form input,
.woocommerce-cart .cart_totals .shipping-calculator-form select{
  width:100%;
  min-height:48px;
  padding:0 12px;
  font-size:16px;
  color:var(--rv-ink);
  background:var(--rv-surface);
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);
}

/* Botao "Finalizar compra": primario grande, largura total, verde da marca */
.woocommerce-cart .wc-proceed-to-checkout{
  margin-top:var(--rv-s4);
  padding:0;
}
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-height:54px;
  padding:14px 24px;
  font-size:16px;
  font-weight:800;
  border-radius:var(--rv-radius-sm);
  color:#fff!important;
  background:var(--rv-primary)!important;
  border:1px solid var(--rv-primary)!important;
  box-shadow:var(--rv-shadow-primary);
  transition:background .15s var(--rv-ease),border-color .15s var(--rv-ease),transform .15s var(--rv-ease),box-shadow .15s var(--rv-ease);
}
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover{
  color:#fff!important;
  background:var(--rv-primary-ink)!important;
  border-color:var(--rv-primary-ink)!important;
  transform:translateY(-1px);
  text-decoration:none;
}
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:active{transform:translateY(0)}

/* --------------------------------------------------------------------------
   7. Carrinho vazio: estado elegante com CTA para a loja
   -------------------------------------------------------------------------- */
.woocommerce-cart .cart-empty,
.woocommerce-cart .wc-empty-cart-message{
  max-width:560px;
  margin:0 auto;
  padding:var(--rv-s12) 16px var(--rv-s4);
  text-align:center;
  background:transparent;
  border:0;
  border-radius:0;
  box-shadow:none;
  font-family:var(--rv-font-display);
  font-size:clamp(19px,2.6vw,24px);
  font-weight:800;
  letter-spacing:-0.02em;
  color:var(--rv-ink);
}
.woocommerce-cart .cart-empty::before,
.woocommerce-cart .wc-empty-cart-message::before{display:none}

.woocommerce-cart .return-to-shop{
  text-align:center;
  margin:0;
  padding:var(--rv-s4) 16px var(--rv-s12);
}
.woocommerce-cart .return-to-shop a.button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:54px;
  min-width:min(280px,100%);
  padding:0 28px;
  font-size:16px;
  font-weight:800;
  color:#fff;
  background:var(--rv-primary);
  border:1px solid var(--rv-primary);
  border-radius:var(--rv-radius-sm);
  box-shadow:var(--rv-shadow-primary);
  transition:background .15s var(--rv-ease),border-color .15s var(--rv-ease),transform .15s var(--rv-ease);
}
.woocommerce-cart .return-to-shop a.button:hover{
  color:#fff;
  background:var(--rv-primary-ink);
  border-color:var(--rv-primary-ink);
  transform:translateY(-1px);
  text-decoration:none;
}

/* --------------------------------------------------------------------------
   8. Cross-sells: grelha de cartoes (reutiliza ul.products do tema)
   -------------------------------------------------------------------------- */
.woocommerce-cart .cross-sells{
  padding-top:var(--rv-s8);
  border-top:1px solid var(--rv-border);
}
.woocommerce-cart .cross-sells > h2{
  margin:0 0 var(--rv-s6);
  font-family:var(--rv-font-display);
  font-size:clamp(20px,2.8vw,26px);
  font-weight:800;
  letter-spacing:-0.02em;
}
/* A grelha ul.products herda o layout responsivo definido em woocommerce.css.
   Garantimos apenas que preenche a largura disponivel sem margem excedente. */
.woocommerce-cart .cross-sells ul.products{margin:0}

/* --------------------------------------------------------------------------
   9. Layout desktop (>=992px): tabela e cartao lado a lado, totais sticky
   .cart-collaterals passa a display:contents para que .cart_totals e
   .cross-sells participem directamente na grelha flex de .woocommerce:
   Linha 1: formulario (~62%) + cartao de totais (~34%, sticky)
   Linha 2: cross-sells a largura total.
   -------------------------------------------------------------------------- */
@media (min-width:992px){
  .woocommerce-cart .woocommerce{
    display:flex;
    flex-wrap:wrap;
    align-items:flex-start;
    gap:var(--rv-s8);
  }

  /* Avisos a toda a largura, no topo */
  .woocommerce-cart .woocommerce > .woocommerce-notices-wrapper{
    order:0;
    flex:1 1 100%;
    width:100%;
  }
  .woocommerce-cart .woocommerce > .woocommerce-notices-wrapper:empty{display:none}

  /* Colaterais deixam de ser caixa: filhos sobem para a grelha flex */
  .woocommerce-cart .cart-collaterals{display:contents}

  .woocommerce-cart .woocommerce-cart-form{
    order:1;
    flex:1 1 62%;
    min-width:0;
    margin:0;
  }
  .woocommerce-cart .cart_totals{
    order:2;
    flex:0 1 34%;
    max-width:34%;
    position:sticky;
    top:88px;
  }
  .woocommerce-cart .cross-sells{
    order:3;
    flex:1 1 100%;
    width:100%;
    margin-top:var(--rv-s4);
  }
}

/* --------------------------------------------------------------------------
   10. Responsivo (<768px): a tabela colapsa em cartoes, uma linha por celula
   com rotulo (data-title). Totais e botoes a largura total.
   -------------------------------------------------------------------------- */
@media (max-width:767px){
  /* Esconde o cabecalho da tabela (os rotulos passam para cada celula) */
  .woocommerce-cart table.shop_table.cart thead{
    position:absolute;
    width:1px;
    height:1px;
    overflow:hidden;
    clip:rect(0 0 0 0);
    white-space:nowrap;
  }

  .woocommerce-cart table.shop_table.cart,
  .woocommerce-cart table.shop_table.cart tbody{
    display:block;
    border:0;
    background:transparent;
    overflow:visible;
  }

  /* Cada item vira um cartao */
  .woocommerce-cart table.shop_table.cart tbody tr.cart_item{
    display:block;
    position:relative;
    margin:0 0 var(--rv-s4);
    padding:16px 48px 16px 16px;
    background:var(--rv-surface);
    border:1px solid var(--rv-border);
    border-radius:var(--rv-radius);
    box-shadow:var(--rv-shadow);
  }

  /* Celulas em linha: rotulo a esquerda, valor a direita */
  .woocommerce-cart table.shop_table.cart tbody tr.cart_item td{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    width:auto;
    padding:8px 0;
    border:0;
    border-top:1px solid var(--rv-border);
    text-align:right;
    background:transparent;
  }
  .woocommerce-cart table.shop_table.cart tbody tr.cart_item td::before{
    content:attr(data-title);
    flex:0 0 auto;
    margin-right:auto;
    font-size:13px;
    font-weight:600;
    color:var(--rv-muted);
    text-align:left;
  }

  /* Miniatura: sem rotulo, sem separador, alinhada a esquerda */
  .woocommerce-cart table.shop_table.cart tbody tr.cart_item td.product-thumbnail{
    justify-content:flex-start;
    padding-top:0;
    border-top:0;
  }
  .woocommerce-cart td.product-thumbnail::before{display:none}
  .woocommerce-cart td.product-thumbnail img{width:88px;max-width:88px;height:88px}

  /* Nome: a toda a largura, sem rotulo */
  .woocommerce-cart table.shop_table.cart tbody tr.cart_item td.product-name{
    display:block;
    text-align:left;
    padding-top:10px;
    border-top:0;
    font-size:16px;
  }
  .woocommerce-cart td.product-name::before{display:none}

  /* Remover: canto superior direito do cartao */
  .woocommerce-cart table.shop_table.cart tbody tr.cart_item td.product-remove{
    position:absolute;
    top:10px;
    right:10px;
    width:auto;
    padding:0;
    border-top:0;
  }
  .woocommerce-cart td.product-remove::before{display:none}

  /* Linha de accoes empilhada, tudo a largura total */
  .woocommerce-cart table.shop_table.cart td.actions{
    display:block;
    padding:16px;
    border-radius:var(--rv-radius);
    border:1px solid var(--rv-border);
    margin-top:var(--rv-s2);
  }
  .woocommerce-cart td.actions .coupon{
    display:flex;
    flex-wrap:wrap;
    max-width:none;
    margin-bottom:12px;
  }
  .woocommerce-cart td.actions .coupon input.input-text{flex:1 1 100%}
  .woocommerce-cart td.actions .coupon button.button[name="apply_coupon"]{flex:1 1 100%}
  .woocommerce-cart td.actions button.button[name="update_cart"]{
    width:100%;
    margin-left:0;
  }

  /* Totais e cartao a largura total */
  .woocommerce-cart .cart_totals{padding:var(--rv-s4)}
}


/* ============ v0.5.1: portes gratis (barra) + Multibanco + thank-you + NIF ============ */

/* Barra de progressao de portes gratis (carrinho + checkout) */
.rv-freeship{
  background:var(--rv-primary-tint);
  border:1px solid var(--rv-primary-tint-2);
  border-radius:var(--rv-radius);
  padding:12px 16px;
  margin:0 0 20px;
}
.rv-freeship__msg{margin:0 0 8px;font-size:.92rem;color:var(--rv-ink);display:flex;align-items:center;gap:8px}
.rv-freeship__icon{font-size:1.05em;flex:0 0 auto}
.rv-freeship--done .rv-freeship__msg{color:var(--rv-primary-ink)}
.rv-freeship__bar{height:8px;border-radius:999px;background:#fff;overflow:hidden;box-shadow:inset 0 0 0 1px var(--rv-primary-tint-2)}
.rv-freeship__bar span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--rv-primary),var(--rv-primary-ink));transition:width .5s var(--rv-ease)}
.rv-freeship--done .rv-freeship__bar span{background:var(--rv-primary)}

/* Cartao de referencia Multibanco (thank-you + emails) */
.renova-eupago-multibanco{margin:24px 0}
.renova-mb-card{
  max-width:440px;
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius);
  overflow:hidden;
  box-shadow:var(--rv-shadow);
  background:var(--rv-surface);
}
.renova-mb-card__brand{
  background:var(--rv-ink);
  color:#fff;
  font-family:var(--rv-font-display);
  font-weight:700;
  letter-spacing:.02em;
  padding:10px 16px;
  font-size:.95rem;
}
.renova-mb-card__grid{padding:4px 16px}
.renova-mb-item{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--rv-border)}
.renova-mb-item:last-child{border-bottom:0}
.renova-mb-item__label{color:var(--rv-muted);font-size:.86rem}
.renova-mb-item__value{font-weight:700;font-size:1.1rem;letter-spacing:.04em;color:var(--rv-ink)}
.renova-mb-item--amount .renova-mb-item__value{color:var(--rv-primary-ink)}
.renova-mb-note{margin:12px 0 0;color:var(--rv-muted);font-size:.88rem;max-width:520px}

/* Thank-you: alinhar as duas moradas (facturacao / envio) */
.woocommerce-order-received .woocommerce-customer-details .col2-set,
.woocommerce-order-received .woocommerce-customer-details .addresses{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:20px;
  width:100%;
  margin:0;
}
.woocommerce-order-received .woocommerce-customer-details .col-1,
.woocommerce-order-received .woocommerce-customer-details .col-2{
  float:none;
  width:auto;
  margin:0;
  background:var(--rv-surface);
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius);
  padding:18px 20px;
  box-shadow:var(--rv-shadow);
}
.woocommerce-order-received .woocommerce-customer-details .woocommerce-column__title{
  margin:0 0 10px;
  font-size:1.05rem;
}
.woocommerce-order-received .woocommerce-customer-details address{
  border:0;
  padding:0;
  font-style:normal;
  line-height:1.6;
  color:var(--rv-ink);
}
.woocommerce-order-received .rv-order-nif{margin:8px 0 0;color:var(--rv-muted);font-size:.9rem}
@media (max-width:600px){
  .woocommerce-order-received .woocommerce-customer-details .col2-set,
  .woocommerce-order-received .woocommerce-customer-details .addresses{grid-template-columns:1fr}
}

/* Campo NIF no checkout */
.woocommerce-checkout #billing_nif_field{margin-top:2px}


/* ===== v0.5.2 QA: filtros (redesign) ===== */
/* ==========================================================================
   Renova - Fase 3: redesenho dos FILTROS do catalogo (_p3_filters.css)
   --------------------------------------------------------------------------
   Marca "Portateis Recondicionados". Estiliza o markup real de templates/
   filters.php SEM o alterar: acordeao colapsavel, checkboxes desenhadas,
   listas longas com scroll interno, painel/drawer em mobile.

   Carrega DEPOIS de main.css / woocommerce.css (mesmos tokens do :root).
   So ACRESCENTA e sobrepoe pelo fim; nao reescreve regras anteriores.
   Todos os selectores vivem sob .rv-filters (ou o contexto do catalogo).

   Regras: mobile-first, so tokens (sem cores hardcoded), contraste AA,
   alvos tacteis confortaveis, zero overflow a 360px, PT-EU pre-Acordo,
   ZERO travessoes (so hifen normal). Comentarios sem travessoes.

   Comportamento (ver _p3_filters.js):
     - Cada legend vira um botao acessivel (aria-expanded) que abre/fecha o
       painel do grupo. Por omissao abrem os 3 primeiros grupos (e qualquer
       grupo com seleccao activa); os restantes ficam fechados.
     - Grupos com muitas opcoes recebem .rv-filter-group--scroll (lista com
       max-height + scroll subtil, so em desktop).
     - Em mobile o formulario vira um painel deslizante; o estado .is-open ja
       e alternado pelo toggle .rv-filters__toggle (main.js). O JS deste modulo
       so acrescenta overlay, bloqueio de scroll, foco e botao fechar.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Cartao do formulario (base / desktop)
   -------------------------------------------------------------------------- */
.rv-filters{
  position:relative;
  padding:var(--rv-s4);
}

/* Sem JavaScript o botao "Filtros" nao faz nada: escondemo-lo para nao
   confundir (o formulario ja aparece inline por melhoria progressiva). */
html:not(.rv-js) .rv-filters__toggle{display:none}

/* --------------------------------------------------------------------------
   2. Cabecalho dos filtros: titulo + contador + limpar
   -------------------------------------------------------------------------- */
.rv-filters .rv-filters__header{
  display:flex;
  align-items:center;
  gap:12px;
  margin:0 0 var(--rv-s2);
  padding-bottom:12px;
  border-bottom:1px solid var(--rv-border);
}
.rv-filters .rv-filters__title{
  flex:1 1 auto;
  display:flex;
  align-items:center;
  margin:0;
  font-family:var(--rv-font-display);
  font-size:17px;
  font-weight:800;
  letter-spacing:-0.01em;
  color:var(--rv-ink);
}

/* Contador total de filtros activos (injectado por JS). Puramente visual. */
.rv-filters__count{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:22px;
  padding:0 7px;
  margin-left:8px;
  border-radius:999px;
  background:var(--rv-primary);
  color:#fff;
  font-family:var(--rv-font);
  font-size:12px;
  font-weight:700;
  line-height:1;
}
.rv-filters__count[hidden]{display:none}

/* Botao de fechar do painel mobile (injectado por JS; escondido em desktop). */
.rv-filters__close{
  display:none;
  align-items:center;
  justify-content:center;
  width:44px;
  height:44px;
  flex:0 0 auto;
  margin:-4px -6px -4px 0;
  border:0;
  background:transparent;
  color:var(--rv-ink);
  border-radius:var(--rv-radius-sm);
  cursor:pointer;
  transition:background-color .15s var(--rv-ease),color .15s var(--rv-ease);
}
.rv-filters__close:hover{background:var(--rv-bg);color:var(--rv-primary)}

/* --------------------------------------------------------------------------
   3. Grupo colapsavel (acordeao): cabecalho clicavel + chevron
   O JS transforma a legend num <button.rv-filter-group__toggle> e envolve o
   conteudo num <div.rv-filter-group__panel>.
   -------------------------------------------------------------------------- */
.rv-filters .rv-filter-group{
  padding:0;
  margin:0;
  border:0;
  min-width:0;
}
.rv-filters .rv-filter-group:not(:last-of-type){
  border-bottom:1px solid var(--rv-border);
}

/* A legend passa a bloco de largura total para acolher o botao. */
.rv-filters .rv-filter-group__legend{
  display:block;
  width:100%;
  float:none;
  margin:0;
  padding:0;
}

/* Cabecalho do grupo: alvo largo, tipografia display, chevron a direita. */
.rv-filter-group__toggle{
  display:flex;
  align-items:center;
  gap:10px;
  width:100%;
  min-height:52px;
  padding:14px 4px;
  background:transparent;
  border:0;
  font-family:var(--rv-font-display);
  font-size:15px;
  font-weight:700;
  letter-spacing:-0.01em;
  color:var(--rv-ink);
  text-align:left;
  cursor:pointer;
  transition:color .15s var(--rv-ease);
}
.rv-filter-group__toggle:hover{color:var(--rv-primary-ink)}
.rv-filter-group__legend-text{
  flex:1 1 auto;
  min-width:0;
}

/* Contador por grupo (injectado por JS): so aparece com seleccao activa. */
.rv-filter-group__badge{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:22px;
  padding:0 7px;
  border-radius:999px;
  background:var(--rv-primary);
  color:#fff;
  font-family:var(--rv-font);
  font-size:12px;
  font-weight:700;
  line-height:1;
}
.rv-filter-group__badge[hidden]{display:none}

/* Chevron: roda 180 graus quando o grupo esta aberto. */
.rv-filter-group__chevron{
  flex:0 0 auto;
  color:var(--rv-muted);
  transition:transform .2s var(--rv-ease),color .15s var(--rv-ease);
}
.rv-filter-group__toggle:hover .rv-filter-group__chevron{color:var(--rv-primary)}
.rv-filter-group__toggle[aria-expanded="true"] .rv-filter-group__chevron{
  transform:rotate(180deg);
  color:var(--rv-primary);
}

/* Painel colapsavel do grupo. */
.rv-filter-group__panel{
  padding:0 4px 14px;
}
.rv-filter-group__panel[hidden]{display:none}

/* --------------------------------------------------------------------------
   4. Opcoes: linha compacta + checkbox desenhada + estado marcado
   -------------------------------------------------------------------------- */
.rv-filters .rv-filter-group__options{
  display:flex;
  flex-direction:column;
  gap:2px;
}

.rv-filters .rv-filter-option{
  display:flex;
  align-items:center;
  gap:12px;
  min-height:42px;
  margin:0;
  padding:7px 8px;
  border-radius:var(--rv-radius-sm);
  font-size:14px;
  line-height:1.3;
  color:var(--rv-ink);
  cursor:pointer;
  transition:background-color .14s var(--rv-ease),color .14s var(--rv-ease);
}
.rv-filters .rv-filter-option:hover{background:var(--rv-bg)}

/* Linha marcada em destaque (menta + verde forte). */
.rv-filters .rv-filter-option:has(.rv-filter-option__input:checked){
  background:var(--rv-primary-tint);
  color:var(--rv-primary-ink);
  font-weight:600;
}

.rv-filters .rv-filter-option__label{
  flex:1 1 auto;
  min-width:0;
}

/* Checkbox quadrada personalizada com check da cor da marca. */
.rv-filters .rv-filter-option__input{
  appearance:none;
  -webkit-appearance:none;
  flex:0 0 auto;
  width:20px;
  height:20px;
  margin:0;
  border:1.5px solid var(--rv-border-strong);
  border-radius:6px;
  background:var(--rv-surface);
  cursor:pointer;
  transition:background-color .14s var(--rv-ease),border-color .14s var(--rv-ease),box-shadow .14s var(--rv-ease);
}
.rv-filters .rv-filter-option__input:hover{border-color:var(--rv-primary)}
.rv-filters .rv-filter-option__input:checked{
  border-color:var(--rv-primary);
  background-color:var(--rv-primary);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:center;
  background-size:13px 13px;
}
.rv-filters .rv-filter-option__input:focus-visible{
  outline:3px solid var(--rv-primary);
  outline-offset:2px;
}

/* --------------------------------------------------------------------------
   5. Escala de preco (min. / max.) dentro do painel
   -------------------------------------------------------------------------- */
.rv-filters .rv-filter-group--price .rv-filter-price{
  padding-top:2px;
}
.rv-filters .rv-filter-price__label{
  font-weight:600;
  letter-spacing:.02em;
  text-transform:uppercase;
  font-size:11px;
}

/* --------------------------------------------------------------------------
   6. Accoes: botao "Aplicar filtros"
   -------------------------------------------------------------------------- */
.rv-filters .rv-filters__actions{
  display:flex;
  gap:8px;
  margin-top:var(--rv-s4);
  padding-top:var(--rv-s4);
  border-top:1px solid var(--rv-border);
}

/* --------------------------------------------------------------------------
   7. Contador no gatilho mobile "Filtros" (injectado por JS)
   -------------------------------------------------------------------------- */
.rv-filters__toggle-count{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:22px;
  padding:0 7px;
  margin-left:2px;
  border-radius:999px;
  background:var(--rv-accent);
  color:var(--rv-ink);
  font-size:12px;
  font-weight:800;
  line-height:1;
}
.rv-filters__toggle-count[hidden]{display:none}

/* --------------------------------------------------------------------------
   8. Overlay do painel mobile (injectado por JS)
   -------------------------------------------------------------------------- */
.rv-filters-overlay{
  position:fixed;
  inset:0;
  z-index:190;
  background:rgba(20,24,27,.5);
  opacity:0;
  visibility:hidden;
  transition:opacity .28s var(--rv-ease),visibility 0s linear .28s;
}
.rv-filters-overlay.is-open{
  opacity:1;
  visibility:visible;
  transition:opacity .28s var(--rv-ease),visibility 0s linear 0s;
}

/* Bloqueio do scroll do corpo enquanto o painel esta aberto. */
body.rv-filters-lock{overflow:hidden}

/* ==========================================================================
   9. Desktop (>= 768px): listas longas com scroll + accoes sticky
   ========================================================================== */
@media (min-width:768px){
  /* O overlay so faz sentido em mobile. */
  .rv-filters-overlay{display:none}

  /* Listas longas (Ecra, Processador, RAM...): altura maxima + scroll subtil,
     para nao ocupar o ecra todo. A classe e adicionada pelo JS quando o grupo
     tem muitas opcoes. */
  .rv-filter-group--scroll .rv-filter-group__options{
    max-height:232px;
    overflow-y:auto;
    padding-right:6px;
    scrollbar-width:thin;
    scrollbar-color:var(--rv-border-strong) transparent;
    overscroll-behavior:contain;
  }
  .rv-filter-group--scroll .rv-filter-group__options::-webkit-scrollbar{
    width:8px;
  }
  .rv-filter-group--scroll .rv-filter-group__options::-webkit-scrollbar-track{
    background:transparent;
  }
  .rv-filter-group--scroll .rv-filter-group__options::-webkit-scrollbar-thumb{
    background:var(--rv-border-strong);
    border:2px solid transparent;
    border-radius:999px;
    background-clip:content-box;
  }
  .rv-filter-group--scroll .rv-filter-group__options:hover::-webkit-scrollbar-thumb{
    background:var(--rv-muted);
    background-clip:content-box;
  }

  /* "Aplicar filtros" encosta ao fundo do cartao da sidebar. So se fixa quando
     a lista de filtros e mais alta que o ecra (senao fica no fim, normal). */
  .rv-filters .rv-filters__actions{
    position:sticky;
    bottom:0;
    z-index:2;
    margin:var(--rv-s4) calc(-1 * var(--rv-s4)) calc(-1 * var(--rv-s4));
    padding:14px var(--rv-s4);
    background:var(--rv-surface);
    border-top:1px solid var(--rv-border);
    border-radius:0 0 var(--rv-radius) var(--rv-radius);
    box-shadow:0 -6px 12px -8px rgba(58,42,28,.14);
  }
}

/* ==========================================================================
   10. Mobile (<= 767px, com JS): formulario vira painel deslizante
   Reutiliza o estado .is-open que o toggle .rv-filters__toggle (main.js) ja
   alterna. Sem JS o formulario mantem-se inline (melhoria progressiva).
   ========================================================================== */
@media (max-width:767.98px){
  html.rv-js .rv-filters{
    position:fixed;
    top:0;
    right:0;
    bottom:0;
    left:auto;
    z-index:200;
    width:min(92vw,380px);
    max-width:100%;
    margin:0;
    padding:0;
    border:0;
    border-radius:0;
    background:var(--rv-surface);
    box-shadow:var(--rv-shadow-lg);
    display:flex;
    flex-direction:column;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
    transform:translateX(100%);
    visibility:hidden;
    transition:transform .28s var(--rv-ease),visibility 0s linear .28s;
  }
  html.rv-js .rv-filters.is-open{
    transform:translateX(0);
    visibility:visible;
    transition:transform .28s var(--rv-ease),visibility 0s linear 0s;
  }

  /* Cabecalho fixo no topo do painel, com o botao fechar visivel. */
  html.rv-js .rv-filters .rv-filters__header{
    position:sticky;
    top:0;
    z-index:3;
    margin:0;
    padding:14px 16px;
    background:var(--rv-surface);
    border-bottom:1px solid var(--rv-border);
  }
  html.rv-js .rv-filters .rv-filters__close{display:inline-flex}

  /* Sem padding no formulario: os cabecalhos e paineis ganham margem lateral. */
  html.rv-js .rv-filters .rv-filter-group__toggle{
    padding-left:16px;
    padding-right:16px;
  }
  html.rv-js .rv-filters .rv-filter-group__panel{
    padding-left:16px;
    padding-right:16px;
  }

  /* Accoes fixas no fundo do painel (sempre alcancaveis). */
  html.rv-js .rv-filters .rv-filters__actions{
    position:sticky;
    bottom:0;
    z-index:3;
    margin:0;
    padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px));
    background:var(--rv-surface);
    border-top:1px solid var(--rv-border);
  }
}


/* ===== v0.5.2 QA: checkout/cart/thankyou fixes ===== */
/* ==========================================================================
   Renova - Correccoes reportadas: carrinho + checkout + agradecimento (P3)
   --------------------------------------------------------------------------
   Marca "Portateis Recondicionados". Templates CLASSICOS do WooCommerce.
   Este ficheiro SOBREPOE pontos especificos de woocommerce.css / CSS inline
   do modulo CRO. Deve ser carregado DEPOIS de main.css + woocommerce.css.
   Para garantir vitoria mesmo com ordem de carregamento ambigua, os overrides
   criticos sao ancorados em body.woocommerce-* (mais especificidade).

   So tokens do :root (main.css). Zero cores hardcoded. Mobile-first.
   PT-EU pre-Acordo, sem travessoes (so hifen). Chaves equilibradas.

   FACTO: .rv-header e' sticky (~73px, z-index:100). Os blocos sticky do
   conteudo usam top:88px (limpam o cabecalho) e z-index:10 (ficam SEMPRE por
   baixo do cabecalho, nunca o tapam).

   Indice:
     1. Sticky sem sobreposicao (totais do carrinho + revisao do checkout)
     2. Linha de accoes do carrinho (cupao + actualizar + continuar) em desktop
     3. Rotulo "(inclui X IVA)" discreto no total (carrinho + checkout)
     4. Barra de portes gratis alinhada ao cartao de totais
     5. Pagina de agradecimento: moradas lado a lado + cartao Multibanco
   ========================================================================== */


/* ==========================================================================
   1. STICKY SEM SOBREPOSICAO
   --------------------------------------------------------------------------
   O top tem de LIMPAR o cabecalho (88px > 73px) e o z-index tem de ser
   INFERIOR ao do cabecalho (100). align-self:start impede o esticar do item
   de grelha/flex, o que mantem o comportamento sticky correcto e evita que o
   cartao invada o rodape ou as seccoes seguintes.
   ========================================================================== */

/* Carrinho: cartao de totais (a partir de 992px vive na grelha flex de
   .woocommerce via .cart-collaterals{display:contents}). */
@media (min-width:992px){
  body.woocommerce-cart .cart_totals{
    top:88px;
    z-index:10;
    align-self:flex-start;
  }
}

/* Checkout: revisao da encomenda (a partir de 900px e' a coluna direita
   sticky). O top nativo era 24px (ficava sob o cabecalho). */
@media (min-width:900px){
  body.woocommerce-checkout form.checkout #order_review{
    top:88px;
    z-index:10;
    align-self:start;
  }
}


/* ==========================================================================
   2. LINHA DE ACCOES DO CARRINHO (desktop)
   --------------------------------------------------------------------------
   Celula .actions a toda a largura, numa linha flex bem distribuida:
   grupo do cupao a esquerda (com input de largura adequada, nunca minusculo)
   e "Actualizar carrinho" + "Continuar a comprar" alinhados a direita.
   Em mobile empilha (ver seccao 2b). Ancorado em table.shop_table.cart para
   vencer as regras existentes por especificidade.
   ========================================================================== */
body.woocommerce-cart table.shop_table.cart td.actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:12px 16px;
  width:100%;
}

/* Grupo do cupao: fica a esquerda, nao cresce (para nao empurrar o input). */
body.woocommerce-cart table.shop_table.cart td.actions .coupon{
  display:flex;
  align-items:center;
  gap:8px;
  flex:0 1 auto;
  max-width:none;
  margin:0;
}

/* Input do cupao: base generosa, encolhe com limite (nunca minusculo). */
body.woocommerce-cart table.shop_table.cart td.actions .coupon input#coupon_code,
body.woocommerce-cart table.shop_table.cart td.actions .coupon input.input-text{
  flex:0 1 320px;
  width:auto;
  min-width:200px;
}

/* Botao "Aplicar cupao": largura natural, sem quebrar o texto. */
body.woocommerce-cart table.shop_table.cart td.actions .coupon button.button{
  flex:0 0 auto;
  white-space:nowrap;
}

/* "Actualizar carrinho" empurrado para a direita; "Continuar a comprar"
   segue logo a seguir, pelo que ambos ficam alinhados a direita. */
body.woocommerce-cart table.shop_table.cart td.actions button.button[name="update_cart"]{
  flex:0 0 auto;
  margin-left:auto;
}
body.woocommerce-cart table.shop_table.cart td.actions .rv-cart-continue{
  flex:0 0 auto;
  margin:0;
}

/* 2b. Mobile (<=767px): a linha de accoes empilha tudo a largura total. */
@media (max-width:767px){
  body.woocommerce-cart table.shop_table.cart td.actions{
    display:block;
  }
  body.woocommerce-cart table.shop_table.cart td.actions .coupon{
    max-width:none;
  }
  body.woocommerce-cart table.shop_table.cart td.actions .coupon input#coupon_code,
  body.woocommerce-cart table.shop_table.cart td.actions .coupon input.input-text{
    flex:1 1 100%;
    min-width:0;
    width:100%;
  }
  body.woocommerce-cart table.shop_table.cart td.actions button.button[name="update_cart"]{
    width:100%;
    margin-left:0;
  }
  body.woocommerce-cart table.shop_table.cart td.actions .rv-cart-continue{
    display:flex;
    width:100%;
    margin-top:12px;
  }
}


/* ==========================================================================
   3. ROTULO "(inclui X,XX EUR IVA)" DISCRETO
   --------------------------------------------------------------------------
   O small.includes_tax ficava com o valor (.amount) a herdar a tipografia
   grande/forte do total. Poe TUDO discreto: ~11px, peso normal, cor muted,
   incluindo o .amount interno. A especificidade (small.includes_tax .amount)
   supera a regra do total grande.
   ========================================================================== */

/* --- Carrinho --- */
body.woocommerce-cart .cart_totals tr.order-total td small.includes_tax{
  display:block;
  font-family:var(--rv-font);
  font-size:11px;
  font-weight:400;
  color:var(--rv-muted);
  letter-spacing:normal;
}
body.woocommerce-cart .cart_totals tr.order-total td small.includes_tax .amount,
body.woocommerce-cart .cart_totals tr.order-total td small.includes_tax .woocommerce-Price-amount{
  font-family:var(--rv-font);
  font-size:11px;
  font-weight:400;
  color:var(--rv-muted);
  letter-spacing:normal;
}

/* --- Checkout --- */
body.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total td small.includes_tax{
  display:block;
  font-family:var(--rv-font);
  font-size:11px;
  font-weight:400;
  color:var(--rv-muted);
  letter-spacing:normal;
}
body.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total td small.includes_tax .amount,
body.woocommerce-checkout #order_review table.shop_table tfoot tr.order-total td small.includes_tax .woocommerce-Price-amount{
  font-family:var(--rv-font);
  font-size:11px;
  font-weight:400;
  color:var(--rv-muted);
  letter-spacing:normal;
}


/* ==========================================================================
   4. BARRA DE PORTES GRATIS (.rv-freeship)
   --------------------------------------------------------------------------
   Carrinho: e' impressa como primeiro filho DENTRO do .cart_totals (hook
   woocommerce_before_cart_totals). Transformamo-la numa faixa de topo do
   cartao, alinhada as arestas do cartao (mesma largura), com o mesmo respiro
   horizontal do conteudo do cartao. Funciona em desktop e mobile.
   ========================================================================== */

/* O cartao passa a recortar a faixa nos cantos (topo arredondado coerente). */
body.woocommerce-cart .cart_totals{
  overflow:hidden;
}

/* Faixa de topo: sangra para as arestas do cartao via margens negativas
   iguais ao padding do cartao (var(--rv-s6)=24px em desktop). O padding
   horizontal (24px) faz o conteudo da faixa alinhar com o resto do cartao.
   So a borda inferior serve de separador; cantos superiores arredondados. */
body.woocommerce-cart .cart_totals .rv-freeship{
  margin:calc(-1 * var(--rv-s6)) calc(-1 * var(--rv-s6)) var(--rv-s6);
  padding:12px var(--rv-s6);
  border-width:0 0 1px;
  border-radius:var(--rv-radius) var(--rv-radius) 0 0;
}

/* Mobile: o cartao de totais usa padding var(--rv-s4)=16px, por isso as
   margens negativas e o padding da faixa acompanham para manter o alinhamento. */
@media (max-width:767px){
  body.woocommerce-cart .cart_totals .rv-freeship{
    margin:calc(-1 * var(--rv-s4)) calc(-1 * var(--rv-s4)) var(--rv-s4);
    padding:12px var(--rv-s4);
  }
}

/* Checkout: a barra e' um bloco autonomo na coluna direita, por cima do
   titulo/revisao. Colocamo-la explicitamente na grelha (coluna 2, 1a linha)
   para nao ser auto-posicionada numa celula errada; o #customer_details passa
   a abranger as 3 linhas da esquerda. Aqui NAO sangra (nao esta dentro de um
   cartao), mantem a sua caixa tintada com respiro inferior. */
@media (min-width:900px){
  body.woocommerce-checkout form.checkout #customer_details{
    grid-column:1;
    grid-row:1 / span 3;
  }
  body.woocommerce-checkout form.checkout .rv-freeship{
    grid-column:2;
    grid-row:1;
    align-self:start;
    margin:0 0 var(--rv-s3);
  }
  body.woocommerce-checkout form.checkout #order_review_heading{
    grid-column:2;
    grid-row:2;
    margin:0 0 var(--rv-s3);
  }
  body.woocommerce-checkout form.checkout #order_review{
    grid-column:2;
    grid-row:3;
  }
}


/* ==========================================================================
   5. PAGINA DE AGRADECIMENTO (.woocommerce-order-received)
   --------------------------------------------------------------------------
   Reforca as duas moradas lado a lado (grelha 2 colunas, topos alinhados) e
   garante boa apresentacao do cartao de referencia Multibanco.
   ========================================================================== */

/* A seccao de detalhes do cliente ocupa a largura toda. */
body.woocommerce-order-received .woocommerce-customer-details{
  width:100%;
}

/* Moradas (facturacao / envio) em duas colunas iguais, topos alinhados. */
body.woocommerce-order-received .woocommerce-customer-details .col2-set,
body.woocommerce-order-received .woocommerce-customer-details .addresses{
  display:grid;
  grid-template-columns:1fr 1fr;
  align-items:start;
  gap:20px;
  width:100%;
  margin:0;
}
body.woocommerce-order-received .woocommerce-customer-details .col-1,
body.woocommerce-order-received .woocommerce-customer-details .col-2{
  float:none;
  width:auto;
  min-width:0;
  margin:0;
}

/* Uma unica coluna em ecra estreito. */
@media (max-width:600px){
  body.woocommerce-order-received .woocommerce-customer-details .col2-set,
  body.woocommerce-order-received .woocommerce-customer-details .addresses{
    grid-template-columns:1fr;
  }
}

/* Cartao de referencia Multibanco: apresentacao limpa e responsiva. */
body.woocommerce-order-received .renova-eupago-multibanco{
  margin:var(--rv-s6) 0;
}
body.woocommerce-order-received .renova-mb-card{
  width:100%;
  max-width:440px;
  margin:0;
}

/* ===== v0.5.3: repor carrinho a 2 colunas em desktop (o alinhamento da barra
   de portes pos .cart-collaterals a display:contents e partiu as colunas) ===== */
@media (min-width:992px){
  .woocommerce-cart .woocommerce{
    display:flex;
    align-items:flex-start;
    gap:32px;
  }
  .woocommerce-cart .woocommerce-cart-form{
    flex:1 1 0%;
    min-width:0;
    width:auto;
    margin:0;
  }
  .woocommerce-cart .cart-collaterals{
    display:block;
    flex:0 0 360px;
    width:360px;
    max-width:360px;
    margin:0;
    position:sticky;
    top:88px;
  }
  .woocommerce-cart .cart-collaterals .cart_totals{
    float:none;
    width:100%;
    margin:0;
  }
}
@media (max-width:991.98px){
  .woocommerce-cart .woocommerce{display:block;}
  .woocommerce-cart .cart-collaterals{
    display:block;
    width:auto;
    max-width:none;
    position:static;
  }
}

/* ===== v0.5.4: carrinho 2 colunas via GRID (vence flex/contents anteriores) ===== */
@media (min-width:992px){
  .woocommerce-cart .woocommerce{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) 360px !important;
    align-items:start !important;
    gap:32px !important;
  }
  .woocommerce-cart .woocommerce-cart-form{
    min-width:0 !important;
    width:auto !important;
    max-width:none !important;
    margin:0 !important;
    float:none !important;
    flex:none !important;
  }
  .woocommerce-cart .cart-collaterals{
    display:block !important;
    width:auto !important;
    max-width:none !important;
    margin:0 !important;
    float:none !important;
    flex:none !important;
    position:sticky;
    top:88px;
  }
  .woocommerce-cart .cart-collaterals .cart_totals{
    width:100% !important;
    float:none !important;
    margin:0 !important;
  }
}
@media (max-width:991.98px){
  .woocommerce-cart .woocommerce{display:block !important;}
  .woocommerce-cart .cart-collaterals{display:block !important;width:auto !important;max-width:none !important;position:static;}
}

/* ===== v0.5.5: carrinho 2 colunas DEFINITIVO (flex-wrap + collaterals:contents)
   Linha 1: barra de confianca + avisos (largura total).
   Linha 2: form (esquerda) + totais (direita, sticky).
   Linha 3: cross-sells (largura total). Vence _p3/_p4/_p4b anteriores. ===== */
@media (min-width:992px){
  .woocommerce-cart .woocommerce{
    display:flex !important;
    flex-wrap:wrap !important;
    align-items:flex-start !important;
    gap:0 32px !important;
  }
  .woocommerce-cart .woocommerce > .rv-trust-bar,
  .woocommerce-cart .woocommerce > .woocommerce-notices-wrapper{
    flex:0 0 100% !important;
    width:100% !important;
    max-width:none !important;
    margin:0 0 20px !important;
  }
  .woocommerce-cart .woocommerce > .woocommerce-notices-wrapper:empty{display:none !important;margin:0 !important;}
  .woocommerce-cart .cart-collaterals{display:contents !important;}
  .woocommerce-cart .woocommerce-cart-form{
    flex:1 1 0% !important;
    min-width:0 !important;
    width:auto !important;
    max-width:none !important;
    margin:0 !important;
    order:1 !important;
  }
  .woocommerce-cart .cart_totals{
    flex:0 0 360px !important;
    width:360px !important;
    max-width:360px !important;
    margin:0 !important;
    order:2 !important;
    position:sticky;
    top:88px;
  }
  .woocommerce-cart .cross-sells{
    flex:0 0 100% !important;
    width:100% !important;
    max-width:none !important;
    order:3 !important;
    margin:40px 0 0 !important;
  }
}
@media (max-width:991.98px){
  .woocommerce-cart .woocommerce{display:block !important;}
  .woocommerce-cart .cart-collaterals{display:block !important;width:auto !important;max-width:none !important;position:static;}
  .woocommerce-cart .cart_totals{width:auto !important;max-width:none !important;position:static;}
}


/* ===== v0.7.0: preco de referencia (Omnibus) ===== */

/* ==========================================================================
   M12. PRECO DE REFERENCIA "EQUIVALENTE NOVO" (conformidade DL 109-G/2021)
   --------------------------------------------------------------------------
   Bloco anexado a woocommerce.css (carregada DEPOIS de main.css, por isso
   sobrepoe com seguranca as regras de .rv-price e .rv-pricebox).

   Principio de desenho, que e' tambem o principio legal: o valor de referencia
   NUNCA pode parecer um preco anterior nosso. Logo:
     - proibido text-decoration:line-through no valor de referencia;
     - rotulo "Equivalente novo" sempre visivel ao lado do valor;
     - a poupanca fala sempre "face a novo", nunca "desconto".
   Mobile-first, tokens --rv-*.
   ========================================================================== */

/* --- Badge sobre a media do cartao: "62% abaixo de novo" ------------------ */
.rv-badge--vsnew{
  background:var(--rv-accent);
  color:var(--rv-ink);
  font-size:11px;
  font-weight:800;
  letter-spacing:0;
  cursor:help;
}
@media (min-width:480px){
  .rv-badge--vsnew{font-size:12px}
}

/* --- Linha de referencia nos cartoes (.rv-price) -------------------------- */
.rv-price--hasref{row-gap:6px}

/* "IVA incluido" passa a ficar logo abaixo do preco de venda (em main.css tem
   order:9). Sem referencia o resultado visual e' o mesmo de antes. */
.rv-price .rv-price__vat{order:1}

.rv-price__ref{
  order:4;
  flex-basis:100%;
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:6px;
  margin-top:2px;
  font-size:13px;
  line-height:1.35;
  color:var(--rv-muted);
}
.rv-price__ref-label{
  font-weight:600;
  color:var(--rv-muted);
  border-bottom:1px dotted var(--rv-border-strong);
  cursor:help;
}
.rv-price__ref-label::after{content:":"}
/* Nunca riscado: o risco comunicaria "preco anterior praticado por nos". */
.rv-price__ref-value,
.rv-price__ref-value .woocommerce-Price-amount,
.rv-price__ref-value bdi{
  font-weight:700;
  color:var(--rv-ink);
  text-decoration:none !important;
}
.rv-price__vsnew{
  order:5;
  flex-basis:100%;
  font-size:13px;
  font-weight:700;
  line-height:1.4;
  color:var(--rv-accent-ink);
}
.rv-price--lg .rv-price__ref,
.rv-price--lg .rv-price__vsnew{font-size:14px}

/* --- Caixa de referencia na ficha de produto (.rv-pricebox) --------------- */
/* "IVA incluido" sobe para logo abaixo do preco; a caixa fica a seguir e as
   prestacoes (order:6 em main.css) mantem-se no fim. */
.rv-pricebox .rv-pricebox__vat{order:3}

.rv-refbox{
  order:4;
  flex-basis:100%;
  margin:10px 0 0;
  padding:12px 14px;
  background:var(--rv-bg-sand);
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);
}
.rv-refbox__line{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:8px;
  margin:0;
  font-size:15px;
  line-height:1.35;
}
.rv-refbox__label{
  font-weight:600;
  color:var(--rv-muted);
}
.rv-refbox__label::after{content:":"}
.rv-refbox__value,
.rv-refbox__value .woocommerce-Price-amount,
.rv-refbox__value bdi{
  font-weight:800;
  color:var(--rv-ink);
  text-decoration:none !important;
}
.rv-refbox__pct{
  align-self:center;
  background:var(--rv-accent-tint);
  color:var(--rv-accent-ink);
  font-size:12px;
  font-weight:800;
  line-height:1;
  padding:4px 9px;
  border-radius:999px;
  white-space:nowrap;
}
.rv-refbox__save{
  margin:8px 0 0;
  font-size:14px;
  font-weight:700;
  line-height:1.45;
  color:var(--rv-accent-ink);
}
.rv-refbox__note{
  margin:10px 0 0;
  padding-top:10px;
  border-top:1px solid var(--rv-border);
  font-size:12px;
  font-weight:400;
  line-height:1.55;
  color:var(--rv-muted);
}

/* --- Nota legal solta (rodape do catalogo, paginas de conteudo) ----------- */
.rv-refnote{
  max-width:78ch;
  margin:var(--rv-s6) 0 0;
  padding:12px 14px;
  background:var(--rv-surface);
  border:1px solid var(--rv-border);
  border-radius:var(--rv-radius-sm);
  font-size:12px;
  line-height:1.6;
  color:var(--rv-muted);
}

/* --- Rede de seguranca visual --------------------------------------------
   Se algum plugin ou template residual imprimir um <del> dentro dos blocos de
   preco do tema, ele nao chega a ser visto: um preco riscado e' juridicamente
   um anuncio de reducao e so pode existir cumprindo a regra dos 30 dias.
   -------------------------------------------------------------------------- */
.rv-price del,
.rv-pricebox del,
.rv-card__price del,
.rv-sticky-buy__price del{display:none !important}
.rv-price ins,
.rv-pricebox ins,
.rv-card__price ins,
.rv-sticky-buy__price ins{text-decoration:none}

/* ===== v0.7.6: formulario do checkout em DUAS COLUNAS =====
   Estava tudo empilhado a toda a largura (parede de 21 campos, 1091px de
   altura). O WooCommerce ja marca os campos com form-row-first / form-row-last;
   passamos o contentor a grelha e emparelhamos os campos curtos. */
@media (min-width:760px){
  .woocommerce-checkout .woocommerce-billing-fields__field-wrapper,
  .woocommerce-checkout .woocommerce-shipping-fields__field-wrapper,
  .woocommerce-checkout .woocommerce-additional-fields__field-wrapper{
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr));
    column-gap:16px;
    row-gap:2px;
    align-items:start;
  }
  .woocommerce-checkout .woocommerce-billing-fields__field-wrapper > .form-row,
  .woocommerce-checkout .woocommerce-shipping-fields__field-wrapper > .form-row{
    grid-column:1 / -1;
    width:auto !important;
    max-width:none !important;
    float:none !important;
    margin-left:0 !important;
    margin-right:0 !important;
  }
  /* pares naturais */
  .woocommerce-checkout .form-row-first,
  .woocommerce-checkout .form-row-last,
  .woocommerce-checkout #billing_city_field,
  .woocommerce-checkout #shipping_city_field,
  .woocommerce-checkout #billing_postcode_field,
  .woocommerce-checkout #shipping_postcode_field,
  .woocommerce-checkout #billing_nif_field,
  .woocommerce-checkout #billing_phone_field{
    grid-column:span 1;
  }
  /* estes ficam sempre a toda a largura */
  .woocommerce-checkout #billing_address_1_field,
  .woocommerce-checkout #billing_address_2_field,
  .woocommerce-checkout #shipping_address_1_field,
  .woocommerce-checkout #shipping_address_2_field,
  .woocommerce-checkout #billing_email_field,
  .woocommerce-checkout #billing_country_field,
  .woocommerce-checkout #shipping_country_field,
  .woocommerce-checkout #order_comments_field{
    grid-column:1 / -1;
  }
  /* campos escondidos nao devem abrir buracos na grelha */
  .woocommerce-checkout .form-row[style*="display: none"],
  .woocommerce-checkout .form-row[style*="display:none"]{display:none !important}
}

/* ritmo vertical mais compacto e legivel */
.woocommerce-checkout .form-row{margin-bottom:14px}
.woocommerce-checkout .form-row label{margin-bottom:5px;display:block}
.woocommerce-checkout #customer_details .col-1,
.woocommerce-checkout #customer_details .col-2{padding:clamp(18px,2.4vw,26px)}
/* v0.7.6a: Nome/Apelido lado a lado (a regra de largura total tinha mais
   especificidade que .form-row-first/.form-row-last; igualamos o seletor). */
@media (min-width:760px){
  .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{
    grid-column:span 1;
  }
}
/* ===== v0.8.0: larguras das colunas do CARRINHO =====
   A coluna "Remover" estava a ocupar 393px e o nome do produto so 132px.
   Fixamos a grelha da tabela: o nome fica com o espaco todo e as restantes
   colunas com a largura estritamente necessaria. */
@media (min-width:768px){
  .woocommerce-cart table.shop_table.cart{table-layout:fixed;width:100%}
  .woocommerce-cart table.shop_table.cart th.product-remove,
  .woocommerce-cart table.shop_table.cart td.product-remove{width:52px;text-align:center;padding-left:8px;padding-right:8px}
  .woocommerce-cart table.shop_table.cart th.product-thumbnail,
  .woocommerce-cart table.shop_table.cart td.product-thumbnail{width:96px}
  .woocommerce-cart table.shop_table.cart th.product-name,
  .woocommerce-cart table.shop_table.cart td.product-name{width:auto;text-align:left}
  .woocommerce-cart table.shop_table.cart th.product-price,
  .woocommerce-cart table.shop_table.cart td.product-price{width:110px;text-align:right}
  .woocommerce-cart table.shop_table.cart th.product-quantity,
  .woocommerce-cart table.shop_table.cart td.product-quantity{width:120px;text-align:center}
  .woocommerce-cart table.shop_table.cart th.product-subtotal,
  .woocommerce-cart table.shop_table.cart td.product-subtotal{width:120px;text-align:right}
  /* o nome pode quebrar em varias linhas sem esmagar as outras colunas */
  .woocommerce-cart td.product-name a{display:inline-block;line-height:1.35;overflow-wrap:anywhere}
}

/* Linha de accoes (cupao + botoes) a toda a largura e bem distribuida */
.woocommerce-cart table.shop_table.cart td.actions{
  width:auto !important;
  padding:16px 12px;
}
@media (min-width:768px){
  .woocommerce-cart td.actions{
    display:flex;
    align-items:center;
    gap:12px;
    flex-wrap:wrap;
  }
  .woocommerce-cart td.actions .coupon{
    display:flex;
    align-items:center;
    gap:8px;
    margin:0;
    flex:1 1 auto;
    max-width:420px;
  }
  .woocommerce-cart td.actions .coupon #coupon_code{flex:1 1 auto;min-width:0;width:auto}
  .woocommerce-cart td.actions > .button,
  .woocommerce-cart td.actions > .rv-btn{margin-left:auto;flex:0 0 auto}
  .woocommerce-cart td.actions .rv-cart-continue{margin-left:0}
}
/* v0.8.1: o table-layout:fixed quebrava o colspan da linha de accoes (cupao),
   que ficava com a largura da primeira coluna. Voltamos a layout automatico e
   guiamos as larguras pelos cabecalhos, que o auto-layout respeita. */
@media (min-width:768px){
  .woocommerce-cart table.shop_table.cart{table-layout:auto}
  .woocommerce-cart table.shop_table.cart th.product-remove{width:52px}
  .woocommerce-cart table.shop_table.cart th.product-thumbnail{width:96px}
  .woocommerce-cart table.shop_table.cart th.product-name{width:auto}
  .woocommerce-cart table.shop_table.cart th.product-price{width:110px}
  .woocommerce-cart table.shop_table.cart th.product-quantity{width:120px}
  .woocommerce-cart table.shop_table.cart th.product-subtotal{width:120px}
  .woocommerce-cart table.shop_table.cart td.actions{width:auto !important}
}
/* v0.8.2: causa raiz das colunas do carrinho.
   A celula .actions (cupao + botoes) tem colspan e, em layout automatico, a
   largura do seu conteudo era atribuida a PRIMEIRA coluna, empurrando
   "Remover" para 393px. Solucao: fixar a grelha da tabela e tirar a linha de
   accoes do fluxo da tabela (passa a bloco), deixando de influenciar colunas. */
@media (min-width:768px){
  .woocommerce-cart table.shop_table.cart{table-layout:fixed !important;width:100%}
  .woocommerce-cart table.shop_table.cart tr:has(> td.actions){display:block;width:100%}
  .woocommerce-cart table.shop_table.cart td.actions{
    display:flex !important;
    width:100% !important;
    box-sizing:border-box;
    align-items:center;
    gap:12px;
    flex-wrap:wrap;
  }
  .woocommerce-cart table.shop_table.cart td.actions .coupon{
    display:flex;align-items:center;gap:8px;margin:0;flex:1 1 340px;max-width:460px;
  }
  .woocommerce-cart table.shop_table.cart td.actions .coupon #coupon_code{flex:1 1 auto;min-width:0}
  .woocommerce-cart table.shop_table.cart td.actions button[name="update_cart"]{margin-left:auto}
}
/* v0.8.3: a celula .actions tem colspan=6 e so ocupa a largura toda enquanto
   FOR uma celula de tabela. Ao poe-la a flex/bloco caia para a 1.a coluna.
   Mantemo-la como table-cell e organizamos apenas o CONTEUDO. */
@media (min-width:768px){
  .woocommerce-cart table.shop_table.cart tr:has(> td.actions){display:table-row}
  .woocommerce-cart table.shop_table.cart td.actions{
    display:table-cell !important;
    width:auto !important;
    text-align:left;
    padding:16px 12px;
    vertical-align:middle;
  }
  .woocommerce-cart table.shop_table.cart td.actions .coupon{
    display:inline-flex;
    align-items:center;
    gap:8px;
    margin:0 16px 0 0;
    vertical-align:middle;
    width:auto;
    max-width:none;
    float:none;
  }
  .woocommerce-cart table.shop_table.cart td.actions .coupon #coupon_code{width:220px;min-width:0;margin:0}
  .woocommerce-cart table.shop_table.cart td.actions > .button,
  .woocommerce-cart table.shop_table.cart td.actions > .rv-btn{
    display:inline-flex;
    align-items:center;
    vertical-align:middle;
    margin:0 0 0 8px;
    float:none;
  }
}
/* ===== v0.8.4: espacamentos do CARRINHO em telemovel =====
   Problemas corrigidos: a miniatura do produto estava escondida (display:none),
   havia 48px de padding a direita por causa do botao de remover, a barra de
   portes gratis sangrava com margens negativas e o bloco de accoes ocupava
   262px. Passa a um cartao com imagem a esquerda e dados a direita. */
@media (max-width:767.98px){

  /* ---- cartao de artigo ---- */
  .woocommerce-cart table.shop_table.cart tr.cart_item{
    position:relative;
    display:grid;
    grid-template-columns:76px minmax(0,1fr);
    grid-template-areas:
      "img nome"
      "img preco"
      "qtd sub";
    column-gap:14px;
    row-gap:6px;
    align-items:start;
    padding:14px 40px 14px 14px;
    margin:0 0 12px;
  }

  /* miniatura: VOLTA a aparecer */
  .woocommerce-cart tr.cart_item td.product-thumbnail{
    display:block !important;
    grid-area:img;
    padding:0 !important;
    width:76px;
  }
  .woocommerce-cart tr.cart_item td.product-thumbnail::before{display:none !important}
  .woocommerce-cart tr.cart_item td.product-thumbnail img{
    width:76px;height:76px;object-fit:contain;
    border:1px solid var(--rv-border);border-radius:var(--rv-radius-sm);
    background:#fff;padding:4px;display:block;
  }

  .woocommerce-cart tr.cart_item td.product-name{
    grid-area:nome;padding:0 !important;text-align:left;
  }
  .woocommerce-cart tr.cart_item td.product-name::before{display:none !important}
  .woocommerce-cart tr.cart_item td.product-name a{font-size:.92rem;line-height:1.35}

  .woocommerce-cart tr.cart_item td.product-price{
    grid-area:preco;padding:0 !important;justify-content:flex-start;font-size:.88rem;color:var(--rv-muted);
  }
  .woocommerce-cart tr.cart_item td.product-quantity{grid-area:qtd;padding:6px 0 0 !important;justify-content:flex-start}
  .woocommerce-cart tr.cart_item td.product-subtotal{grid-area:sub;padding:6px 0 0 !important;justify-content:flex-end;font-weight:700}

  /* remover: circulo discreto no canto */
  .woocommerce-cart tr.cart_item td.product-remove{
    position:absolute;top:8px;right:8px;
    padding:0 !important;width:auto;height:auto;
  }
  .woocommerce-cart tr.cart_item td.product-remove::before{display:none !important}
  .woocommerce-cart tr.cart_item td.product-remove a.remove{
    width:30px;height:30px;line-height:28px;font-size:20px;
  }

  /* ---- barra de portes gratis: sem margens negativas ---- */
  .woocommerce-cart .rv-freeship{margin:0 0 14px !important}

  /* ---- accoes (cupao + botoes) mais compactas ---- */
  .woocommerce-cart td.actions{padding:14px !important;margin:0 !important}
  .woocommerce-cart td.actions .coupon{
    display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin:0 0 10px;
  }
  .woocommerce-cart td.actions .coupon #coupon_code{width:100%;min-width:0;margin:0}
  .woocommerce-cart td.actions .coupon .button{white-space:nowrap}
  .woocommerce-cart td.actions button[name="update_cart"],
  .woocommerce-cart td.actions .rv-cart-continue{
    width:100%;margin:0 0 8px;justify-content:center;
  }
  .woocommerce-cart td.actions .rv-cart-continue{margin-bottom:0}

  /* ---- totais ---- */
  .woocommerce-cart .cart_totals{padding:16px !important}
  .woocommerce-cart .cart_totals table th,
  .woocommerce-cart .cart_totals table td{padding:9px 0 !important}
  .woocommerce-cart .cart-collaterals{margin-top:18px}
}
/* v0.8.4a: uma regra anterior do colapso mobile da tabela usava !important em
   display e padding, e anulava a grelha do cartao de artigo. Forcamos. */
@media (max-width:767.98px){
  .woocommerce-cart table.shop_table.cart tr.cart_item{
    display:grid !important;
    padding:14px 44px 14px 14px !important;
  }
  .woocommerce-cart td.actions{
    display:block !important;
    padding:14px !important;
  }
  .woocommerce-cart tr.cart_item td.product-thumbnail{display:block !important}
  .woocommerce-cart tr.cart_item td.product-name,
  .woocommerce-cart tr.cart_item td.product-price{padding:0 !important}
  .woocommerce-cart tr.cart_item td.product-quantity,
  .woocommerce-cart tr.cart_item td.product-subtotal{padding:6px 0 0 !important}
}
/* v0.8.6: acertar o interior do cartao de artigo em telemovel.
   O nome saia alinhado a direita e as etiquetas ::before do WooCommerce
   (Preco, Quantidade, Subtotal) baralhavam a ultima linha. */
@media (max-width:767.98px){
  /* nome e preco: alinhados a esquerda, sem etiqueta */
  .woocommerce-cart tr.cart_item td.product-name,
  .woocommerce-cart tr.cart_item td.product-price{
    text-align:left !important;
    display:block !important;
  }
  .woocommerce-cart tr.cart_item td.product-name::before,
  .woocommerce-cart tr.cart_item td.product-price::before,
  .woocommerce-cart tr.cart_item td.product-subtotal::before,
  .woocommerce-cart tr.cart_item td.product-quantity::before{
    content:none !important;display:none !important;
  }
  .woocommerce-cart tr.cart_item td.product-name a{
    display:block;text-align:left;font-weight:600;
  }
  .woocommerce-cart tr.cart_item td.product-price{
    color:var(--rv-muted);font-size:.86rem;
  }
  .woocommerce-cart tr.cart_item td.product-price::after{
    content:" por unidade";color:var(--rv-muted);font-size:.8em;
  }

  /* ultima linha: quantidade a esquerda, subtotal a direita, alinhados */
  .woocommerce-cart tr.cart_item td.product-quantity{
    display:flex !important;align-items:center;justify-content:flex-start;
    padding:10px 0 0 !important;
  }
  .woocommerce-cart tr.cart_item td.product-quantity .quantity{margin:0}
  .woocommerce-cart tr.cart_item td.product-quantity input.qty{
    width:64px;height:40px;text-align:center;
  }
  .woocommerce-cart tr.cart_item td.product-subtotal{
    display:flex !important;align-items:center;justify-content:flex-end;
    padding:10px 0 0 !important;
    font-weight:800;font-size:1.05rem;color:var(--rv-ink);
  }
  /* separador subtil entre os dados e a linha final */
  .woocommerce-cart tr.cart_item td.product-quantity,
  .woocommerce-cart tr.cart_item td.product-subtotal{
    border-top:1px solid var(--rv-border);margin-top:8px;
  }
}
/* ===== v0.9.0: scroll infinito do catalogo =====
   A paginacao continua no HTML (motores de busca e sem-JavaScript). Quando o
   infinite.js corre, ela sai do fluxo visual mas permanece acessivel a
   leitores de ecra, e aparece a zona de estado com o botao "Ver mais". */
.rv-pagination--oculta{
  position:absolute;
  width:1px;height:1px;
  padding:0;margin:-1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  white-space:nowrap;border:0;
}
.rv-infinito{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  padding:28px 16px 8px;
  text-align:center;
}
.rv-infinito__estado{
  min-height:1.2em;
  font-size:.88rem;
  color:var(--rv-muted);
}
.rv-infinito__botao{
  min-width:230px;
  justify-content:center;
}
.rv-infinito__botao[disabled]{opacity:.6;cursor:progress}
@media (max-width:600px){
  .rv-infinito{padding:20px 12px 4px}
  .rv-infinito__botao{width:100%;min-width:0}
}
/* ==========================================================================
   9-bis. Carrinho desktop: sticky que NAO invade os cross-sells  (v0.9.2)
   --------------------------------------------------------------------------
   Antes: .cart_totals era ele proprio sticky. Com .cart-collaterals em
   display:contents, o seu bloco de contencao era o .woocommerce inteiro, que
   inclui a linha dos cross-sells. O cartao podia por isso escorregar por cima
   do "Tambem pode gostar".

   Agora: .cart_totals e' so a coluna (estica ate a altura da linha 1) e quem
   cola e' o filho .rv-cart-totals__inner, criado em inc/cart-layout.php. O
   bloco de contencao do filho e' a coluna, logo o cartao para exactamente
   onde a tabela de artigos acaba.

   O aspecto de cartao (fundo, moldura, sombra, espacamento) muda do exterior
   para o interior apenas neste ponto de rotura. Em mobile e tablet nada disto
   se aplica: o .cart_totals continua a ser o cartao e nao ha sticky nenhum.
   ========================================================================== */
@media (min-width:992px){
  /* Esticar a coluna ate a altura da linha 1: e' isto que da ao invólucro
     espaco para percorrer. Duas regras anteriores trabalhavam contra isto e
     ambas tem de ser vencidas:
       .woocommerce{align-items:flex-start}          (contentor)
       body.woocommerce-cart .cart_totals{align-self:flex-start}  (item)
     O align-self do item ganha sempre ao align-items do contentor, por isso
     nao basta mudar o contentor. Daqui o prefixo body. para igualar a
     especificidade da regra que estava a limitar. */
  .woocommerce-cart .woocommerce{align-items:stretch}
  body.woocommerce-cart .cart_totals{align-self:stretch}

  /* A coluna deixa de ter aspecto proprio e deixa de colar. O prefixo body.
     e' preciso porque existe uma regra anterior, com essa especificidade, que
     ainda declara position:sticky neste elemento. */
  body.woocommerce-cart .cart_totals{
    position:static;
    background:none;
    border:0;
    border-radius:0;
    box-shadow:none;
    padding:0;
  }

  /* O cartao propriamente dito, agora por dentro. Estatico por omissao. */
  body.woocommerce-cart .rv-cart-totals__inner{
    background:var(--rv-surface);
    border:1px solid var(--rv-border);
    border-radius:var(--rv-radius);
    box-shadow:var(--rv-shadow);
    padding:var(--rv-s6);
    position:static;
  }

  /* So cola quando o assets/js/cart-sticky.js confirma que vale a pena E que
     e' seguro: o cartao tem de caber na janela (senao o botao de compra ficava
     preso fora de vista) e a lista de artigos tem de ser mais alta do que ele
     (senao nao ha por onde deslizar). Sem JavaScript fica estatico, que e' o
     comportamento seguro. */
  body.woocommerce-cart .rv-cart-totals__inner.rv-cart-totals--fixa{
    position:sticky;
    top:88px;
  }

  /* Os cross-sells ficam com prioridade de pintura sobre qualquer resto de
     posicionamento, para que nunca mais possam ser tapados. */
  .woocommerce-cart .cross-sells{position:relative;z-index:1}
}