/* Viveiros da Bairrada — v2.5.2 · complementos ao style.css (layout demo5), sem o alterar */
:root { --accent: #B7CF3F; --on-accent: #1B1F1A; }

/* Cartões da página inicial: títulos sempre na mesma linha */
.card-link__text { min-height: calc(1.55em * 3); }

/* Cartões de catálogo */
.litter__img--contain { object-fit: contain; background: #fff; padding: 16px; border-bottom: 1px solid var(--line); }
.litter__summary { display: -webkit-box; -webkit-line-clamp: 3; line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; min-height: calc(1.55em * 3); font-size: 14px; line-height: 1.55; color: var(--muted); }
.litter__foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.litter__more { font-size: 14px; font-weight: 700; color: var(--green); white-space: nowrap; }
.litter[hidden], .cat-group[hidden], [data-viveiro][hidden] { display: none; }

/* Grupos e subtítulos */
.cat-group { display: flex; flex-direction: column; gap: 24px; }
.cat-group + .cat-group { margin-top: 24px; }
.subhead { display: flex; align-items: flex-end; justify-content: space-between; gap: 8px 24px; flex-wrap: wrap; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.subhead > div { display: flex; flex-direction: column; gap: 10px; }
.subhead__title { font-family: var(--serif); font-size: 34px; font-weight: 600; line-height: 1.15; color: var(--green); }
.subhead__title--sm { font-size: 26px; }
.subhead__count { font-size: 14px; font-weight: 700; color: var(--muted-2); white-space: nowrap; }
.status-note { font-size: 14px; color: var(--muted-2); }
.filterbar__end.status-note { align-self: center; margin-top: 24px; }
.section--filter { padding-bottom: 0; }

/* Ficha de produto */
.profile__img--contain { object-fit: contain; background: #fff; border: 1px solid var(--line); padding: 24px; }
.contact-card .btn { width: 100%; }
.contact-card > span > .pill { display: inline-block; }
.prose .table-wrap { margin-top: 1.1em; }
.prose .rtable { font-size: 15px; }
.rtable tbody th { padding: 16px; text-align: left; font-size: 14px; font-weight: 700; color: var(--green); border-bottom: 1px solid #EEE9DE; white-space: nowrap; }
.rtable tbody tr:last-child th { border-bottom: 0; }
.rtable .pill { display: inline-block; }

/* Guias */
.guide-tables { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px 24px; }
.guide-block { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.guide-block .rtable th, .guide-block .rtable td { padding: 12px 14px; }
.agenda-item:not(a):hover .agenda-item__title { color: inherit; }
.benefits--1 { grid-template-columns: 1fr; }
.contact-card--flow { grid-column: auto; gap: 24px; }
.contact-card:not(.contact-card--green) .benefits svg { color: var(--green); }

/* Contactos */
.section-head__lead--wide { width: auto; max-width: 720px; }
.contact-facts { gap: 16px; }
.contact-facts .event-fact { align-items: flex-start; height: 100%; }
.contact-facts .event-fact > span { min-width: 0; overflow-wrap: anywhere; }
.contact-facts .event-fact a { color: var(--ink); font-weight: 600; }
.contact-facts .event-fact a:hover { color: var(--green); }
.contact-card > .hours-row { display: flex; justify-content: space-between; gap: 16px; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.16); }
.hours-row.is-closed { opacity: .7; }

/* Lista de orçamento (usa o aspeto da barra de cookies do demo5) */
.cookies .head-actions { flex-shrink: 0; }
body.has-lista .footer { padding-bottom: 120px; }
[data-addlista].is-in { background: var(--soft); border-color: var(--green); }

@media (max-width: 1024px) {
  .guide-tables { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .subhead__title { font-size: 28px; }
  .filterbar__end.status-note { margin-top: 0; margin-left: 0; }
  .cookies { flex-direction: column; align-items: stretch; }
}

/* v1.1.0 · acertos */
.litter__img--contain + .litter__body .litter__head { min-height: 56px; align-items: flex-start; }
.contact-card > a.btn { align-items: center; justify-content: center; margin-top: 4px; }
.contact-card > a.btn--accent, .contact-card > a.btn--accent:hover { color: var(--on-accent, var(--ink)); }
button.btn--outline { background: transparent; }
button.btn--outline:hover { background: var(--green); color: #fff; }
.contact-card--green .contact-card__note { color: rgba(255,255,255,.8); border-top-color: rgba(255,255,255,.16); }
.contact-facts .event-fact--wide { grid-column: 1 / -1; }
.section--white + .promos { padding-top: 112px; }
.contact-facts .status-note { font-weight: 500; }

/* v2.5.0 · nota legal junto a todos os números de telefone (custo da chamada) */
.tel-btn { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 6px; }
.tel-btn .tel-nota { font-size: 12px; white-space: normal; }
.promo .tel-btn { align-self: flex-start; position: relative; }
.promo .tel-btn .tel-nota { position: absolute; top: 100%; left: 0; margin-top: 8px; white-space: nowrap; }  /* botões dos dois blocos alinhados */
@media (max-width: 1024px) {                          /* blocos empilhados: a nota volta ao fluxo normal */
  .promo .tel-btn .tel-nota { position: static; margin-top: 0; white-space: normal; }
}
.head-actions .tel-btn { align-self: flex-start; }
.footer__tel { display: flex; flex-direction: column; gap: 2px; }
.footer__tel .tel-nota { font-size: 12px; white-space: normal; }
@media (min-width: 1025px) and (max-width: 1280px) {
  .topbar__group > span:first-child { display: none; }
  .topbar__tel .tel-nota { display: inline; }
}

/* v2.5.0 · proteção de dados (RGPD) e páginas legais */
.rgpd-note { margin-top: 32px; padding: 20px 24px; border: 1px solid var(--line); border-radius: 16px; font-size: 14px; line-height: 1.6; color: var(--muted); }
.rgpd-note strong { display: block; margin-bottom: 6px; color: var(--green); font-size: 15px; }
.rgpd-note p { margin: 0; }
.rgpd-note a { color: var(--green); text-decoration: underline; text-underline-offset: 3px; }
.lista__rgpd { display: block; margin-top: 2px; font-size: 13px; opacity: .8; }
.prose--legal { font-size: 17px; }
.footer__bottom nav a:last-child { white-space: nowrap; }
button.btn--line-light { background: transparent; }                /* v2.5.0 · «Limpar» da lista era ilegível (fundo por omissão do navegador) */

/* v2.5.0 · aviso de cookies (verde da marca) */
.cc { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 20px; background: rgba(10, 16, 12, .55); }
.cc[hidden] { display: none; }
.cc__box { width: 100%; max-width: 580px; max-height: calc(100vh - 40px); overflow-y: auto; background: #fff; color: var(--ink); border-radius: 16px;
  padding: 26px 28px 18px; box-shadow: 0 30px 80px -20px rgba(0,0,0,.55); font-family: var(--sans); }
.cc__title { margin: 0 0 8px; font-size: 18px; font-weight: 800; color: var(--green); }
.cc__text { margin: 0; font-size: 15px; line-height: 1.6; color: #3A4239; }
.cc__text a, .cc__by a { color: var(--green); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.cc__prefs { display: flex; flex-direction: column; margin-top: 16px; border-top: 1px solid var(--line); }
.cc__prefs[hidden] { display: none; }
.cc__cat { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 14px 0; border-bottom: 1px solid var(--line); cursor: pointer; }
.cc__cat-txt { display: flex; flex-direction: column; gap: 3px; }
.cc__cat-txt strong { font-size: 15px; color: var(--green); }
.cc__cat-txt span { font-size: 13.5px; line-height: 1.5; color: var(--muted); }
.cc__always { flex-shrink: 0; font-size: 12px; font-weight: 700; color: var(--green); background: var(--soft); padding: 5px 10px; border-radius: 999px; white-space: nowrap; }
.cc__switch { position: relative; flex-shrink: 0; width: 46px; height: 26px; }
.cc__switch input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; z-index: 1; }
.cc__switch span { position: absolute; inset: 0; border-radius: 999px; background: #CFC8B8; transition: background .2s; }
.cc__switch span::after { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: transform .2s; }
.cc__switch input:checked + span { background: var(--green); }
.cc__switch input:checked + span::after { transform: translateX(20px); }
.cc__switch input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.cc__btns { display: grid; grid-template-columns: 1fr auto 1fr; gap: 10px; margin-top: 20px; }
.cc__btn { white-space: nowrap; }
.cc__box:focus { outline: none; }
.cc__btn { min-height: 46px; padding: 0 14px; border-radius: 10px; border: 2px solid var(--green); background: var(--green); color: #fff;
  font: 700 15px/1.2 var(--sans); cursor: pointer; transition: background .15s, color .15s; }
.cc__btn:hover { background: #1A3224; border-color: #1A3224; }
.cc__btn--line { background: #fff; color: var(--green); }
.cc__btn--line:hover { background: var(--soft); color: var(--green); border-color: var(--green); }
.cc__btn[hidden] { display: none; }
.cc__btn:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.cc__by { margin: 14px 0 0; text-align: center; font-size: 12px; color: var(--muted); }
.cc__by a { font-weight: 600; text-decoration: none; }
.footer__cc { background: none; border: 0; padding: 0; font: inherit; color: rgba(255,255,255,.7); cursor: pointer; }
.footer__cc:hover { color: var(--accent); }
.prose .rtable--cookies td { font-size: 15px; }
.prose h3 + p, .prose h3 + .table-wrap { margin-top: .6em; }
@media (max-width: 560px) {
  .cc { align-items: flex-end; padding: 10px; }
  .cc__box { padding: 22px 20px 14px; }
  .cc__btns { grid-template-columns: 1fr; }
}

/* v2.5.0 · submenu sem quebras de linha (desktop) e bandeiras no seletor de idioma */
@media (min-width: 1401px) {
  .submenu a { white-space: nowrap; }
}
.flag { display: block; height: auto; border-radius: 2px; box-shadow: 0 0 0 1px rgba(255,255,255,.35); }
.topbar__group--right a .flag { width: 22px; }
.topbar__group--right a[aria-current] .flag { box-shadow: 0 0 0 1px rgba(255,255,255,.35), 0 0 0 3px rgba(255,255,255,.18); }
.topbar__group--right a:hover .flag { box-shadow: 0 0 0 2px var(--accent); }
.affil__ph .flag { width: 30px; }
.affil a.affil__ph:hover .flag { box-shadow: 0 0 0 2px var(--accent); }

/* v2.5.0 · logótipo carregado no backoffice */
.brand--img { gap: 0; }
.brand__img { display: block; height: var(--logo-h, 56px); width: auto; max-width: min(640px, 40vw); object-fit: contain; object-position: left center; }
.brand--sym .brand__logo { width: var(--logo-h, 52px); height: var(--logo-h, 52px); }   /* v2.5.1: altura também no modo «só o símbolo» */
.brand--footer .brand__img { max-width: 100%; }
@media (max-width: 1400px) {
  .brand__img { max-width: 60vw; }
}
@media (max-width: 640px) {
  .brand__img { height: calc(var(--logo-h, 56px) * .8); max-width: 62vw; }
  .brand--sym .brand__logo { width: calc(var(--logo-h, 52px) * .8); height: calc(var(--logo-h, 52px) * .8); }
}

/* v2.5.2 · créditos IDDigital no rodapé */
.footer__copy { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.footer__credit { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
.footer__credit img { display: block; width: auto; height: 20px; opacity: .85; transition: opacity .15s; }
.footer__credit:hover img { opacity: 1; }

/* v2.18.0 · modo de manutenção */
.maint-body { margin: 0; }
.maint { position: relative; min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; justify-content: space-between; gap: 40px;
  padding: clamp(20px, 4vw, 48px) clamp(20px, 6vw, 80px); color: #fff; background: #1B2E23; overflow: hidden; }
.maint::before { content: ""; position: absolute; inset: 0; background: var(--maint-bg) center / cover no-repeat; opacity: .35; }
.maint::after { content: ""; position: absolute; inset: 0; background: linear-gradient(110deg, rgba(20, 34, 26, .95) 0%, rgba(20, 34, 26, .78) 55%, rgba(20, 34, 26, .45) 100%); }
.maint > * { position: relative; z-index: 1; }
.maint__top { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.maint__langs { display: flex; gap: 14px; }
.maint__langs a { color: rgba(255, 255, 255, .75); font-weight: 700; font-size: 14px; text-decoration: none; }
.maint__langs a[aria-current], .maint__langs a:hover { color: var(--accent); }
.maint__box { max-width: 760px; margin-bottom: 8vh; }
.maint__kicker { margin: 0 0 14px; color: var(--accent); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; font-size: 14px; }
.maint__title { margin: 0 0 18px; font-size: clamp(34px, 5.4vw, 64px); line-height: 1.05; color: #fff; }
.maint__text { margin: 0 0 14px; font-size: clamp(17px, 1.6vw, 20px); line-height: 1.6; color: rgba(255, 255, 255, .88); }
.maint__until { margin: 0 0 26px; font-weight: 700; color: #fff; }
.maint__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }
.maint-team { position: sticky; top: 0; z-index: 1000; padding: 8px 16px; background: #E8A33D; color: #1B1F1A; font-weight: 700; font-size: 14px; text-align: center; }

/* v2.18.2 · rodapé: dois emails juntos */
.footer__emails { display: flex; flex-direction: column; gap: 6px; }

/* v2.18.3 · Sobre: imagem inteira (sem cortes) e dois emails no cartão */
.profile__img:not(.profile__img--contain) { height: auto; }   /* a ficha de produto mantém a sua altura */
.contact-card__mails > span { display: flex; flex-direction: column; gap: 6px; }
.contact-card__mails a { color: inherit; }
.contact-card__mails a:hover { color: var(--accent); }

/* v2.18.4 · Sobre: imagem à esquerda; à direita o cartão e, por baixo, o texto e os botões */
.profile--sobre .profile__side { grid-column: 9 / span 4; display: flex; flex-direction: column; gap: 36px; min-width: 0; }
.profile--sobre .profile__side .contact-card { grid-column: auto; }
.profile__text { display: flex; flex-direction: column; gap: 28px; }
@media (max-width: 1024px) {
  .profile--sobre .profile__side { grid-column: 1 / -1; }
  .profile--sobre .profile__text { order: -1; }          /* no telemóvel: texto antes do cartão */
}

/* v2.19.0 · catálogo: «Adicionar à lista» em cada cartão (o cartão continua todo clicável) */
.litter--card { position: relative; }
.litter--card:hover { transform: translateY(-4px); border-color: #D2C9B6; box-shadow: 0 18px 40px -24px rgba(27,31,26,.35); }
.litter__link { position: absolute; inset: 0; z-index: 1; border-radius: inherit; }
.litter__link:focus-visible { outline: 3px solid var(--accent); outline-offset: -3px; }
.litter__add { position: relative; z-index: 2; align-self: stretch; justify-content: center; }
.litter__add.is-in, [data-addlista].is-in { background: var(--green); border-color: var(--green); color: #fff; }

/* contador no botão «Pedir orçamento» */
[data-orc-link] { position: relative; }
.orc-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px; margin-left: 8px; padding: 0 6px; border-radius: 999px;
  background: var(--green); color: #fff; font-size: 12px; font-weight: 800; line-height: 1; }

/* aviso ao adicionar ou retirar da lista */
.lista-aviso { position: fixed; left: 50%; bottom: 24px; z-index: 1200; display: flex; align-items: center; gap: 18px; max-width: calc(100% - 32px);
  padding: 14px 20px; border-radius: 14px; background: var(--green); color: #fff; font-weight: 600; font-size: 15px;
  box-shadow: 0 18px 40px -16px rgba(16,24,19,.55); opacity: 0; transform: translate(-50%, 16px); pointer-events: none; transition: opacity .2s, transform .2s; }
.lista-aviso.is-on { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.lista-aviso a { color: var(--accent); font-weight: 800; white-space: nowrap; }
body.has-lista .lista-aviso { bottom: 110px; }

/* página «Pedido de orçamento» */
.quote { width: 100%; gap: 28px; }
.quote__box { width: 100%; margin: 0; padding: 28px; border: 1px solid var(--line); border-radius: 20px; background: #fff; display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.quote__title { padding: 0; font-family: var(--serif); font-size: 24px; font-weight: 600; color: var(--green); float: left; width: 100%; margin-bottom: 4px; }
.quote__items { display: flex; flex-direction: column; gap: 10px; }
.quote__items:empty { display: none; }
.quote__item { display: grid; grid-template-columns: minmax(0, 1fr) 180px 44px; align-items: center; gap: 16px; padding: 12px 12px 12px 18px; border: 1px solid var(--line); border-radius: 14px; background: var(--bg, #F4EFE8); }
.quote__name { display: flex; flex-direction: column; font-weight: 700; color: var(--ink); }
.quote__name small { font-weight: 500; font-size: 13px; color: var(--muted); }
.quote__qty { display: flex; flex-direction: column; gap: 4px; font-size: 12px; font-weight: 700; color: var(--muted); }
.quote__qty .input { height: 42px; }
.quote__remove { width: 44px; height: 44px; border: 0; border-radius: 12px; background: transparent; color: var(--muted); font-size: 18px; cursor: pointer; }
.quote__remove:hover { background: #F8E3DC; color: #7A2E17; }
.quote__empty { margin: 0; color: var(--muted); }
.quote__trap { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.quote__send { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.quote--sent { display: flex; flex-direction: column; gap: 24px; }
.field__req { color: #A63A1F; }
.check.is-invalid { color: #7A2E17; }
@media (max-width: 640px) {
  .quote__box { padding: 20px; }
  .quote__item { grid-template-columns: minmax(0, 1fr) 44px; }
  .quote__remove { grid-column: 2; grid-row: 1; }
  .quote__qty { grid-column: 1 / -1; grid-row: 2; }
}
