/* ==========================================================================
   Renova - Banner de consentimento de cookies
   DESTINO: wp-content/themes/renova/assets/css/consent.css
   Enfileirado por inc/consent.php (depende de renova-main, versao RENOVA_VER).

   Mobile-first. Usa os tokens --rv-* do tema, sempre com fallback caso o
   ficheiro seja carregado isolado.

   EMPILHAMENTO (facto do tema):
     .rv-topbar (topo)            -> estatico, dentro do fluxo
     .rv-header                   -> sticky, top:0, z-index:100
     .rv-overlay / .rv-mobile-nav -> 150 / 200
     drawer de filtros            -> 190 / 200
     .rv-sticky-cta/.rv-sticky-buy-> 120 (barra fixa inferior, so mobile)
     #order_review (checkout)     -> sticky top:88px, z-index:10
   O banner e' modal de facto para a decisao e vive por cima de tudo (99990),
   sem nunca tapar o cabecalho sticky (esta ancorado ao fundo do ecra).

   Regra legal traduzida em CSS: "Aceitar todos", "Rejeitar todos" e
   "Personalizar" partilham a MESMA classe .rv-cc__btn, com o mesmo tamanho,
   peso, cor e contraste. Nao existe variante visual que torne aceitar mais
   apelativo do que recusar (sem dark patterns).
   ========================================================================== */

.rv-cc {
  position: fixed;
  z-index: 99990;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 0 12px calc(12px + env(safe-area-inset-bottom, 0px));
  display: flex;
  justify-content: center;
  font-family: var(--rv-font, "Hanken Grotesk", "Segoe UI", -apple-system, Helvetica, Arial, sans-serif);
}

.rv-cc[hidden] { display: none; }

/* O contentor nao deve capturar o foco visivel do browser como se fosse um
   controlo: o contorno pertence aos botoes. */
.rv-cc:focus { outline: none; }

.rv-cc__card {
  width: 100%;
  max-width: 640px;
  max-height: min(86vh, 760px);
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  background: var(--rv-surface, #FFFFFF);
  color: var(--rv-ink, #1B1815);
  border: 1px solid var(--rv-border-strong, #DAD2C6);
  border-radius: var(--rv-radius-lg, 20px);
  box-shadow: var(--rv-shadow-lg, 0 14px 34px rgba(58, 42, 28, .13));
  padding: 18px 16px 16px;
  animation: rv-cc-in .22s var(--rv-ease, cubic-bezier(.2, .7, .2, 1)) both;
}

@keyframes rv-cc-in {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .rv-cc__card { animation: none; }
}

/* Enquanto a decisao nao esta tomada, as barras fixas inferiores do tema
   (CTA de produto) sairiam por baixo do banner e competiriam pelo mesmo
   espaco. Escondemo-las apenas durante esse periodo. */
html.rv-cc-visible .rv-sticky-cta,
html.rv-cc-visible .rv-sticky-buy { display: none !important; }

/* --------------------------------------------------------------------------
   Texto
   -------------------------------------------------------------------------- */

.rv-cc__title {
  font-family: var(--rv-font-display, inherit);
  font-size: 19px;
  line-height: 1.25;
  font-weight: 700;
  letter-spacing: -0.01em;
  margin: 0 0 8px;
  color: var(--rv-ink, #1B1815);
}

.rv-cc__text {
  font-size: 14px;
  line-height: 1.55;
  margin: 0;
  color: var(--rv-ink, #1B1815);
}

.rv-cc__link {
  color: var(--rv-primary-ink, #0A5C4B);
  text-underline-offset: 3px;
  text-decoration: underline;
}

.rv-cc__link:hover,
.rv-cc__link:focus-visible { color: var(--rv-primary, #0E7C66); }

.rv-cc__foot {
  margin: 12px 0 0;
  font-size: 12px;
  line-height: 1.5;
  color: var(--rv-muted, #6B665E);
}

/* --------------------------------------------------------------------------
   Painel granular
   -------------------------------------------------------------------------- */

.rv-cc__panel {
  margin: 14px 0 2px;
  border-top: 1px solid var(--rv-border, #E9E3DA);
  padding-top: 12px;
}

.rv-cc__panel[hidden] { display: none; }

.rv-cc__fieldset {
  border: 0;
  margin: 0;
  padding: 0;
  min-inline-size: 0;
}

.rv-cc__legend {
  padding: 0;
  margin: 0 0 10px;
  font-size: 13px;
  font-weight: 700;
  color: var(--rv-muted, #6B665E);
  text-transform: uppercase;
  letter-spacing: .04em;
}

.rv-cc__row {
  padding: 12px 0;
  border-bottom: 1px solid var(--rv-border, #E9E3DA);
}

.rv-cc__row:last-child { border-bottom: 0; padding-bottom: 4px; }

.rv-cc__row-main {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}

.rv-cc__row-desc {
  margin: 6px 0 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--rv-muted, #6B665E);
}

/* Interruptor acessivel: a caixa nativa fica invisivel mas focavel e clicavel
   atraves do <label>, mantendo teclado, leitores de ecra e estados nativos. */
.rv-cc__switch {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  min-height: var(--rv-touch, 48px);
  font-size: 15px;
  font-weight: 600;
}

.rv-cc__switch input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  border: 0;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  overflow: hidden;
  white-space: nowrap;
}

.rv-cc__track {
  flex: 0 0 auto;
  width: 48px;
  height: 28px;
  border-radius: 999px;
  background: var(--rv-border-strong, #DAD2C6);
  border: 1px solid var(--rv-border-strong, #DAD2C6);
  position: relative;
  transition: background-color .18s var(--rv-ease, ease), border-color .18s var(--rv-ease, ease);
}

.rv-cc__knob {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #FFFFFF;
  box-shadow: 0 1px 3px rgba(58, 42, 28, .28);
  transition: transform .18s var(--rv-ease, ease);
}

.rv-cc__switch input:checked + .rv-cc__track {
  background: var(--rv-primary, #0E7C66);
  border-color: var(--rv-primary, #0E7C66);
}

.rv-cc__switch input:checked + .rv-cc__track .rv-cc__knob { transform: translateX(20px); }

/* Foco visivel: a caixa nativa esta escondida, por isso o contorno vai para o
   interruptor (mesma espessura do resto do tema). */
.rv-cc__switch input:focus-visible + .rv-cc__track {
  outline: 3px solid var(--rv-primary, #0E7C66);
  outline-offset: 3px;
}

.rv-cc__switch input:disabled + .rv-cc__track {
  opacity: .65;
  cursor: not-allowed;
}

.rv-cc__switch input:disabled ~ .rv-cc__switch-label { cursor: not-allowed; }

@media (prefers-reduced-motion: reduce) {
  .rv-cc__track,
  .rv-cc__knob { transition: none; }
}

.rv-cc__badge {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--rv-primary-ink, #0A5C4B);
  background: var(--rv-primary-tint, #E6F2EE);
  border: 1px solid var(--rv-primary-tint-2, #D4E9E2);
  border-radius: 999px;
  padding: 4px 10px;
}

/* --------------------------------------------------------------------------
   Botoes: rigorosamente iguais entre si (exigencia legal)
   -------------------------------------------------------------------------- */

.rv-cc__actions {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  margin-top: 14px;
}

.rv-cc__btn {
  -webkit-appearance: none;
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: var(--rv-touch, 48px);
  padding: 12px 16px;
  font-family: inherit;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  color: var(--rv-ink, #1B1815);
  background: var(--rv-surface, #FFFFFF);
  border: 2px solid var(--rv-border-strong, #DAD2C6);
  border-radius: var(--rv-radius-sm, 10px);
  cursor: pointer;
  transition: border-color .15s var(--rv-ease, ease), background-color .15s var(--rv-ease, ease);
}

.rv-cc__btn:hover {
  border-color: var(--rv-primary, #0E7C66);
  background: var(--rv-primary-tint, #E6F2EE);
}

.rv-cc__btn:focus-visible {
  outline: 3px solid var(--rv-primary, #0E7C66);
  outline-offset: 3px;
}

.rv-cc__btn[hidden] { display: none; }

@media (prefers-reduced-motion: reduce) {
  .rv-cc__btn { transition: none; }
}

/* Contraste forcado (Windows): garante contorno visivel em todos os controlos. */
@media (forced-colors: active) {
  .rv-cc__btn { border: 2px solid ButtonText; }
  .rv-cc__track { border: 2px solid ButtonText; }
  .rv-cc__switch input:checked + .rv-cc__track { background: Highlight; }
}

/* --------------------------------------------------------------------------
   Ligacao "Definicoes de cookies" (rodape, shortcode ou conteudo)
   No rodape e' um <a>, pelo que herda .rv-footer a e .rv-footer-col ul a.
   O <button> so aparece se for usado fora de um contexto de ligacoes.
   -------------------------------------------------------------------------- */

button.rv-cc-open {
  background: none;
  border: 0;
  padding: 3px 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
  text-decoration: none;
}

button.rv-cc-open:hover,
button.rv-cc-open:focus-visible { text-decoration: underline; }

/* --------------------------------------------------------------------------
   Desktop
   -------------------------------------------------------------------------- */

@media (min-width: 600px) {
  .rv-cc { padding: 0 20px calc(20px + env(safe-area-inset-bottom, 0px)); }
  .rv-cc__card { padding: 22px 24px 20px; }
  .rv-cc__title { font-size: 21px; }
  .rv-cc__text { font-size: 15px; }

  /* Os tres botoes de escolha ficam lado a lado, com larguras iguais. */
  .rv-cc__actions { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .rv-cc__btn--save,
  .rv-cc__btn--close { grid-column: 1 / -1; }
}

@media (min-width: 1024px) {
  .rv-cc { justify-content: flex-start; }
  .rv-cc__card { max-width: 700px; margin-left: 8px; }
}

/* ===== v0.7.1: o banner nunca pode tapar conteudo nem o botao de compra =====
   Em ecras pequenos o cartao era mais alto que metade do ecra e cobria o
   "Finalizar encomenda" no checkout. Limitamos a altura (com scroll interno) e
   o JS acrescenta espaco no fim da pagina enquanto o banner estiver aberto. */
@media (max-width:600px){
  .rv-cc .rv-cc__card{max-height:60vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
}
body.rv-cc-aberto{padding-bottom:var(--rv-cc-altura,0px)}
/* ===== v0.7.2: banner COMPACTO em telemovel =====
   O cartao ocupava 61% do ecra e cobria o botao de finalizar encomenda no
   checkout. Em ecras pequenos encurtamos o texto de introducao (fica acessivel
   na Politica de Privacidade e ao abrir "Personalizar") e limitamos a altura.
   Os tres botoes mantem o mesmo peso visual (exigencia legal). */
@media (max-width:600px){
  .rv-cc .rv-cc__card{max-height:42vh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-top:14px;padding-bottom:14px}
  .rv-cc .rv-cc__text{
    display:-webkit-box;
    -webkit-line-clamp:3;
    -webkit-box-orient:vertical;
    overflow:hidden;
    font-size:.85rem;
    margin-bottom:10px;
  }
  .rv-cc .rv-cc__title{font-size:1rem;margin-bottom:6px}
  /* com o painel de personalizacao aberto, o texto completo volta a aparecer */
  .rv-cc:has(#rv-cc-panel:not([hidden])) .rv-cc__text{-webkit-line-clamp:unset;overflow:visible}
}
@media (max-width:600px) and (max-height:700px){
  .rv-cc .rv-cc__card{max-height:38vh}
}
/* ===== v0.7.3: no CHECKOUT e no CARRINHO o banner ancora no TOPO =====
   Ancorado em baixo, o banner sobrepunha-se ao botao "Finalizar encomenda" em
   telemovel (o CTA esta sempre no fim da pagina). Nestas duas paginas passa a
   ficar por baixo do cabecalho, onde nunca colide com o botao de compra.
   Nas restantes paginas mantem-se em baixo, que e o padrao esperado. */
.woocommerce-checkout .rv-cc,
.woocommerce-cart .rv-cc{
  top:0;
  bottom:auto;
  align-items:flex-start;
}
.woocommerce-checkout .rv-cc__card,
.woocommerce-cart .rv-cc__card{
  margin-top:12px;
  border-radius:var(--rv-radius);
}
/* com o banner no topo, o espaco extra no fim da pagina deixa de ser preciso */
.woocommerce-checkout.rv-cc-aberto,
.woocommerce-cart.rv-cc-aberto{padding-bottom:0 !important}
/* ===== v0.7.5: banner de consentimento = BARRA COMPACTA em baixo =====
   Correccao: ancorar no topo tapava o titulo e o topo do formulario no
   checkout em desktop. Volta a ancorar em baixo, mas como barra baixa em vez
   de cartao alto, para nunca cobrir conteudo util. Mantem os requisitos
   legais: tres botoes com o mesmo peso, sem dark patterns. */
.woocommerce-checkout .rv-cc,
.woocommerce-cart .rv-cc{
  top:auto;
  bottom:0;
  align-items:flex-end;
}
.woocommerce-checkout .rv-cc__card,
.woocommerce-cart .rv-cc__card{margin-top:0}

/* Barra compacta em qualquer pagina, a partir de tablet */
@media (min-width:768px){
  .rv-cc__card{
    max-width:none;
    width:100%;
    border-radius:0;
    border-left:0;
    border-right:0;
    border-bottom:0;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:20px 28px;
    padding:14px clamp(16px,4vw,40px);
  }
  .rv-cc__head{margin:0;min-width:0}
  .rv-cc__title{font-size:1rem;margin:0 0 2px}
  .rv-cc__text{
    font-size:.82rem;margin:0;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  }
  .rv-cc__actions{margin:0;flex-wrap:nowrap;white-space:nowrap}
  .rv-cc__panel{grid-column:1 / -1}
  /* com o painel de personalizacao aberto volta a ler-se tudo */
  .rv-cc:has(#rv-cc-panel:not([hidden])) .rv-cc__text{-webkit-line-clamp:unset;overflow:visible}
  .rv-cc:has(#rv-cc-panel:not([hidden])) .rv-cc__card{max-height:80vh;overflow-y:auto}
}
/* ===== v0.7.8: banner MESMO compacto em telemovel =====
   A 366px cobria o botao de finalizar encomenda. Reduzimos para cerca de
   metade: texto a duas linhas, botoes em grelha 3x1 e paddings curtos.
   O texto completo continua acessivel em "Personalizar" e na Politica. */
@media (max-width:767.98px){
  .rv-cc__card{
    max-height:none !important;
    padding:12px 14px calc(12px + env(safe-area-inset-bottom,0px)) !important;
    border-radius:14px 14px 0 0;
  }
  .rv-cc__head{margin:0 0 10px}
  .rv-cc__title{font-size:.95rem;margin:0 0 4px}
  .rv-cc__text{
    font-size:.78rem;line-height:1.35;margin:0;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  }
  .rv-cc__actions{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
    margin:0;
  }
  .rv-cc__actions .rv-cc__btn{width:100%;padding:11px 10px;font-size:.85rem;min-height:44px}
  /* "Personalizar" a toda a largura, por baixo dos dois principais */
  .rv-cc__actions .rv-cc__btn:nth-child(3){grid-column:1 / -1}
  .rv-cc__foot{margin:8px 0 0;font-size:.72rem}
  /* com o painel aberto pode crescer e rolar por dentro */
  .rv-cc:has(#rv-cc-panel:not([hidden])) .rv-cc__card{max-height:80vh !important;overflow-y:auto}
  .rv-cc:has(#rv-cc-panel:not([hidden])) .rv-cc__text{-webkit-line-clamp:unset;overflow:visible}
}
/* v0.7.9: o banner voltou a ancorar em baixo (v0.7.5), por isso o espaco extra
   no fim da pagina volta a ser NECESSARIO no checkout e no carrinho. Anula a
   regra da v0.7.3 que o punha a zero quando o banner estava no topo. */
.woocommerce-checkout.rv-cc-aberto,
.woocommerce-cart.rv-cc-aberto{
  padding-bottom:var(--rv-cc-altura,0px) !important;
}
/* v0.8.7: em telemovel o rodape legal do banner (responsavel pelo tratamento,
   NIF, morada) ocupava um terco do cartao. Fica a uma linha, com o resto
   acessivel em "Personalizar" e na Politica de Privacidade, que esta ligada. */
@media (max-width:767.98px){
  .rv-cc__foot{
    display:-webkit-box;
    -webkit-line-clamp:1;
    -webkit-box-orient:vertical;
    overflow:hidden;
    font-size:.7rem;
    margin:6px 0 0;
    opacity:.85;
  }
  .rv-cc:has(#rv-cc-panel:not([hidden])) .rv-cc__foot{
    -webkit-line-clamp:unset;overflow:visible;
  }
}