/*
Theme Name: Motorhome Ecopark
Description: Tema personalizado do Motorhome Ecopark. Header/footer geridos pela página de definições "Ecopark — Definições do Site". Conteúdo das páginas editável em blocos nativos do WordPress.
Author: Motorhome Ecopark
Version: 2.0.0
Text Domain: ecopark
*/

html, body { margin: 0; padding: 0; }
body { overscroll-behavior: none; }
main > :first-child { margin-top: 0 !important; }
main > :last-child { margin-bottom: 0 !important; }
::-webkit-scrollbar { display: none; }

/* Bloco de aviso de campo em falta na página de definições */
.ecopark-missing-field { background: #ffdad6; color: #ba1a1a; padding: 2px 8px; border-radius: 4px; font-size: 12px; }

/* Rede de segurança para títulos grandes em mobile — nunca deixar
   font-size fixo (48px/32px/24px) rebentar em ecrãs pequenos, mesmo
   que alguma classe do Tailwind não gere corretamente via CDN. */
@media (max-width: 640px) {
  .text-headline-display { font-size: 30px !important; line-height: 38px !important; }
  .wp-block-cover h1 { font-size: 32px; line-height: 1.15; }
  .text-headline-lg { font-size: 24px !important; line-height: 32px !important; }
  .text-headline-md { font-size: 20px !important; line-height: 28px !important; }
  img { max-width: 100%; height: auto; }
  header .font-headline-sm { font-size: 15px !important; line-height: 18px !important; }
  header .font-label-sm { font-size: 9px !important; }

  /* Galeria "Momentos de quem já cá está" — em ecrãs estreitos, cada linha
     do mosaico (que pode conter 2 ou 3 fotos) passa a empilhar em coluna
     única. A altura de cada foto é controlada no próprio bloco de HTML
     da homepage (classe .ecopark-gallery-row), não aqui, para não entrar
     em conflito quando o número de fotos por linha mudar. */
  .ecopark-gallery-grid {
    display: flex !important;
    flex-direction: column !important;
  }
}

/* A barra de admin do WordPress (só visível para quem tem sessão iniciada)
   também fica fixa no topo — sem isto, sobrepõe-se ao nosso cabeçalho. */
body.admin-bar #ecopark-header { top: 32px; }
@media screen and (max-width: 782px) {
  body.admin-bar #ecopark-header { top: 46px; }
}

/* Esconder o triângulo por defeito do menu hambúrguer (details/summary) */
#ecopark-header summary::-webkit-details-marker { display: none; }
#ecopark-header summary { list-style: none; }

/* Limitar o tamanho do logótipo — sem isto, o WordPress mostra a imagem
   no tamanho original em que foi carregada, que pode ser enorme. */
.custom-logo { height: 44px !important; width: auto !important; max-width: 160px; object-fit: contain; }

/* Cores da marca nos botões do editor de blocos (WordPress não as aplica
   sozinho — os estilos "is-style-fill"/"is-style-outline" vêm em branco/preto
   por defeito, sem saber nada da nossa paleta). */
.wp-block-button.is-style-fill .wp-block-button__link {
  background-color: #6B4E3D;
  color: #ffffff;
  border-radius: 0.75rem;
  padding: 0.9rem 1.5rem;
  font-weight: 600;
}
.wp-block-button.is-style-fill .wp-block-button__link:hover {
  background-color: #825700;
}
.wp-block-button.is-style-outline .wp-block-button__link {
  background-color: rgba(255,255,255,0.9);
  color: #2b1609;
  border: none;
  border-radius: 0.75rem;
  padding: 0.9rem 1.5rem;
  font-weight: 600;
}
.wp-block-button.is-style-outline .wp-block-button__link:hover {
  background-color: #ffffff;
}
/* Botão normal (sem estilo especial) — usado em CTAs secundários fora do herói */
.wp-block-button:not(.is-style-outline):not(.is-style-fill) .wp-block-button__link {
  background-color: #4A6741;
  color: #ffffff;
  border-radius: 0.75rem;
  padding: 0.8rem 1.4rem;
  font-weight: 600;
}
.wp-block-button:not(.is-style-outline):not(.is-style-fill) .wp-block-button__link:hover {
  background-color: #3a5233;
}

/* Botão específico do herói da Homepage — usa o azul-céu da marca */
.wp-block-button.hero-cta-blue .wp-block-button__link {
  background-color: #8FB8D8;
  color: #0c2a3e;
}
.wp-block-button.hero-cta-blue .wp-block-button__link:hover {
  background-color: #7aa8cc;
}

/* Rede de segurança para o título do Hero — cor e tipo de letra aplicam-se
   sempre, independentes do Tailwind CDN e de qualquer atributo que o
   Gutenberg possa descartar ao gravar o bloco. O TAMANHO fica de fora
   daqui de propósito e vive só nas media queries abaixo, para nunca
   entrar em conflito de prioridade com a regra de mobile. */
.wp-block-cover h1,
.ecopark-hero-title {
  color: #ffffff !important;
  font-family: 'Lora', serif !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
}

/* Tamanho do título do Hero em desktop (ecrãs a partir de 641px) —
   sem !important de propósito: serve de valor por defeito, mas o
   style="font-size:...px" que puseres no HTML do Hero ganha sempre. */
@media (min-width: 641px) {
  .wp-block-cover h1,
  .ecopark-hero-title {
    font-size: 48px;
    line-height: 1.15;
  }
}

/* O badge flutuante do reCAPTCHA fica preso atrás da barra fixa de
   WhatsApp/Ligar/GPS no fundo do ecrã em mobile. Como já mostramos o
   aviso legal obrigatório por baixo de cada formulário de contacto
   ("Este site está protegido por reCAPTCHA..."), a Google permite
   esconder o badge flutuante sem deixar de cumprir os termos de uso.
   Ver: https://developers.google.com/recaptcha/docs/faq */
.grecaptcha-badge {
  visibility: hidden !important;
}

/* ============================================================
   Componentes reutilizáveis das páginas de conteúdo
   (Preços, FAQ, Contactos, Sobre Nós, e futuras páginas)
   Centralizados aqui em vez de repetidos em cada página, para
   evitar duplicação e inconsistências entre ficheiros/línguas.
   ============================================================ */

.ecopark-price-cards { display:grid; grid-template-columns:repeat(2, 1fr); gap:24px; }
.ecopark-extras-grid { display:grid; grid-template-columns:repeat(2, 1fr); gap:16px; }
.ecopark-feature-grid { display:grid; grid-template-columns:repeat(2, 1fr); gap:12px 16px; }
.ecopark-contact-grid { display:grid; grid-template-columns:1.1fr 1fr; gap:40px; }
.ecopark-route-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; }
.ecopark-values-grid { display:grid; grid-template-columns:repeat(4, 1fr); gap:32px; }
.ecopark-team-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:24px; }

@media (max-width: 900px) {
  .ecopark-contact-grid { grid-template-columns:1fr; }
  .ecopark-route-grid { grid-template-columns:1fr; }
  .ecopark-values-grid { grid-template-columns:repeat(2, 1fr); }
  .ecopark-team-grid { grid-template-columns:1fr; }
  .ecopark-about-location-grid { grid-template-columns:1fr !important; }
}
@media (max-width: 768px) {
  .ecopark-price-cards { grid-template-columns:1fr !important; }
  .ecopark-extras-grid { grid-template-columns:1fr !important; }
  .ecopark-feature-grid { grid-template-columns:1fr !important; }
}

.ecopark-contact-row { display:flex; align-items:flex-start; gap:12px; margin-bottom:14px; }
.ecopark-contact-row:last-child { margin-bottom:0; }

.ecopark-cork-icon {
  border-radius:50%; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  background-image: linear-gradient(rgba(247,243,234,0.82), rgba(247,243,234,0.82)), url('http://ecopark-new-website.local/wp-content/uploads/2026/09/cork-texture.png');
  background-size: cover;
  background-position: center;
  box-shadow: 0 2px 8px rgba(43,22,9,0.12);
}
.ecopark-cork-icon .material-symbols-outlined { color:#6B4E3D; font-size:20px; }
.ecopark-cork-icon.is-accent .material-symbols-outlined { color:#4A6741 !important; }
.ecopark-cork-icon.is-water .material-symbols-outlined { color:#3E7CA6; }

@keyframes ecopark-ping {
  75%, 100% { transform: scale(2); opacity: 0; }
}

.ecopark-faq-item { border-bottom:1px solid rgba(107,78,61,0.15); }
.ecopark-faq-item:last-child { border-bottom:none; }
.ecopark-faq-item summary {
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:20px 4px;
  font-family:'Lora',serif;
  font-weight:600;
  color:#2b1609;
  font-size:16px;
}
.ecopark-faq-item summary::-webkit-details-marker { display:none; }
.ecopark-faq-item .ecopark-faq-icon {
  flex-shrink:0;
  width:28px;
  height:28px;
  border-radius:50%;
  background:#F7F3EA;
  color:#4A6741;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:transform 0.2s ease;
}
.ecopark-faq-item[open] .ecopark-faq-icon { transform:rotate(45deg); }
.ecopark-faq-item .ecopark-faq-answer {
  padding:0 4px 20px;
  margin:0;
  color:#6B4E3D;
  font-size:14px;
  line-height:1.6;
  max-width:680px;
}

/* ============================================================
   Página de Reviews — filtros, grelha de citações e bloco
   de estatísticas agregadas. Centralizado aqui (usado nas 6
   línguas) em vez de repetido em cada ficheiro.
   ============================================================ */
.ecopark-review-filters { display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin:0 0 40px; }
.ecopark-review-filter {
  background:#ffffff; border:1px solid rgba(107,78,61,0.2); color:#6B4E3D;
  font-size:13px; font-weight:700; padding:8px 18px; border-radius:999px; cursor:pointer;
}
.ecopark-review-filter.is-active { background:#4A6741; border-color:#4A6741; color:#ffffff; }
.ecopark-review-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:20px; }
@media (max-width: 900px) {
  .ecopark-review-grid { grid-template-columns:repeat(2, 1fr); }
}
@media (max-width: 600px) {
  .ecopark-review-grid { grid-template-columns:1fr; }
}
.ecopark-review-card { background:#ffffff; border-radius:16px; padding:24px; display:flex; flex-direction:column; gap:14px; }
.ecopark-review-quote { color:#434840; font-size:14px; line-height:1.6; margin:0; font-style:italic; }
.ecopark-review-meta { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:auto; }
.ecopark-review-name { color:#2b1609; font-size:13px; font-weight:600; }
.ecopark-review-platform {
  font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:0.04em;
  padding:4px 10px; border-radius:999px; white-space:nowrap;
}
.ecopark-review-platform.google { background:#fce8e6; color:#d93025; }
.ecopark-review-platform.park4night { background:#e8f0fe; color:#1a56c4; }
.ecopark-review-platform.campercontact { background:#eaf3e8; color:#3d6b2f; }
.ecopark-review-empty { text-align:center; color:#6B4E3D; font-size:14px; padding:40px 0; display:none; }

.ecopark-review-stats-grid { display:grid; grid-template-columns:repeat(4, 1fr); gap:16px; margin:0 0 48px; }
@media (max-width: 700px) {
  .ecopark-review-stats-grid { grid-template-columns:repeat(2, 1fr); }
}
@media (max-width: 420px) {
  .ecopark-review-stats-grid { grid-template-columns:1fr; }
}
.ecopark-review-stat-card { background:#ffffff; border-radius:16px; padding:24px; text-align:center; }
.ecopark-review-stat-icon {
  width:36px; height:36px; border-radius:50%; margin:0 auto 12px;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden; background:#ffffff; box-shadow:0 0 0 2px #F7F3EA, 0 2px 6px rgba(43,22,9,0.15);
}
.ecopark-review-stat-icon img { width:22px; height:22px; object-fit:contain; }
.ecopark-review-stat-icon.is-total { background:#4A6741; }
.ecopark-review-stat-icon.is-total .material-symbols-outlined { color:#ffffff; font-size:18px; }
.ecopark-review-stat-count { font-family:'Lora',serif; font-weight:700; color:#2b1609; font-size:20px; margin:0 0 4px; }
.ecopark-review-stat-avg { color:#6B4E3D; font-size:14px; margin:0 0 6px; }
.ecopark-review-stat-stars { color:#E5A94B; font-size:14px; letter-spacing:2px; }

.ecopark-review-book-images { display:flex; gap:20px; justify-content:center; align-items:flex-start; flex-wrap:wrap; margin-top:20px; }
.ecopark-review-book-image-box {
  width:220px; max-width:100%; height:320px; flex:1 1 140px;
  display:flex; align-items:center; justify-content:center;
  background:#F7F3EA; border-radius:8px; overflow:hidden;
  box-shadow:0 4px 16px rgba(43,22,9,0.15);
  padding:24px; box-sizing:border-box;
}
.ecopark-review-book-image-box img { width:100%; height:100%; object-fit:contain; }
