﻿/* ==========================================================================
   FEIRA DO LIVRO DO PORTO — FOLHA DE ESTILOS UNIFICADA
   Ficheiro único: todo o CSS do site, dividido por secções abaixo.
   Ordem das secções segue a ordem em que os widgets costumavam ser
   carregados por página (base global primeiro, depois cada widget).
   ========================================================================== */


/* ═══════════════════════════════════════════════════════════════════════
   1. BASE GLOBAL — reset, fontes, cabeçalho, menu, breadcrumb, título de
      página, carrossel Destaques/Relacionados, notícias (home), banner do
      mapa, footer, barra de cookies
      (antigo ficheiro: flp-style.css)
   ═══════════════════════════════════════════════════════════════════════ */

/* =========================================================
   FLP - Feira do Livro / Aviva Studios
   Prefixo de classes personalizadas: flp_
   ========================================================= */

:root {
  --flp-theme: #1C1C1C;
  --flp-white: #ffffff;
  --flp-border: var(--flp-theme);
  --flp-gray-dark: #4A4A4A;
  --flp-gray: #8F8F8F;
  --flp-gray-light: #CCCCCC;
  --flp-mono: Regular, Arial, sans-serif;
  --flp-bg-light:#eeeeee;
  --flp-bg-white:#FFFFFF;
  --flp-text-scale: 0.82;
}

#BKG {cursor:initial}
#Stands path, #Stands rect {cursor:pointer!important}

@font-face {
    font-family: Regular;
    src:
        url(../fonts/Regular/Regular-Regular.woff2) format("woff2"),
        url(../fonts/Regular/Regular-Regular.woff) format("woff"),
        url(../fonts/Regular/Regular-Regular.otf) format("opentype");
    font-style: normal;
    font-weight: normal;
    font-display: swap;
}
@font-face {
    font-family: Regular;
    src:
        url(../fonts/Regular/Regular-RegularItalic.woff2) format("woff2"),
        url(../fonts/Regular/Regular-RegularItalic.woff) format("woff"),
        url(../fonts/Regular/Regular-RegularItalic.otf) format("opentype");
    font-style: italic;
    font-weight: normal;
    font-display: swap;
}
@font-face {
    font-family: Regular;
    src:
        url(../fonts/Regular/Regular-Medium.woff2) format("woff2"),
        url(../fonts/Regular/Regular-Medium.woff) format("woff"),
        url(../fonts/Regular/Regular-Medium.otf) format("opentype");
    font-style: normal;
    font-weight: 500;
    font-display: swap;
}
@font-face {
    font-family: Regular;
    src:
        url(../fonts/Regular/Regular-MediumItalic.woff2) format("woff2"),
        url(../fonts/Regular/Regular-MediumItalic.woff) format("woff"),
        url(../fonts/Regular/Regular-MediumItalic.otf) format("opentype");
    font-style: italic;
    font-weight: 500;
    font-display: swap;
}
@font-face {
    font-family: Regular;
    src:
        url(../fonts/Regular/Regular-Bold.woff2) format("woff2"),
        url(../fonts/Regular/Regular-Bold.woff) format("woff"),
        url(../fonts/Regular/Regular-Bold.otf) format("opentype");
    font-style: bold;
    font-weight: 700;
    font-display: swap;
}
@font-face {
    font-family: Regular;
    src:
        url(../fonts/Regular/Regular-BoldItalic.woff2) format("woff2"),
        url(../fonts/Regular/Regular-BoldItalic.woff) format("woff"),
        url(../fonts/Regular/Regular-BoldItalic.otf) format("opentype");
    font-style: italic;
    font-weight: 700;
    font-display: swap;
}

* {
  box-sizing: border-box;
}

*:focus:not(:focus-visible) {
  outline: 0;
}

body {
  font-family: var(--flp-mono);
  color: var(--flp-theme);
  margin: 0;
}

a {
  text-decoration: none;
  color: inherit;
  transition: all 0.4s linear;
}

button, input, select {
  text-decoration: none;
  color: inherit;
  transition: all 0.4s linear;
}

p {
    margin-top: 0;
    margin-bottom: 1.25rem;
}

p:last-child {
    margin-bottom: 0;
}

h1, h2, h3, h4, h5, h6 {
    margin-top: 0;
    margin-bottom: 1.25rem;
    font-weight: 700;
    line-height: 1.2;
    color: var(--flp-theme);
    font-family: var(--flp-mono);
}

/* =========================================================
   ANIMAÇÕES DE ENTRADA
   Fácil de retirar: apaga só este bloco (até à linha a seguir) e o
   <script> "Animações de entrada" no fundo do index.html.
   ========================================================= */

@keyframes flpPageFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

body {
  animation: flpPageFadeIn 0.6s ease-out both;
}

/* header: só fadein (sem deslocar) */
header {
  opacity: 0;
  transition: opacity 0.7s ease-out;
}

header.is-visible {
  opacity: 1;
}

/* breadcrumb, secções e footer: fadeInUp normal */
.flp_breadcrumb,
section,
footer {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s ease-out, transform 0.7s ease-out;
}

.flp_breadcrumb.is-visible,
section.is-visible,
footer.is-visible {
  opacity: 1;
  /* "none" em vez de translateY(0): translateY(0) continua a criar novo
     containing block para descendentes position:fixed (ex.: overlays) */
  transform: none;
}

/* ===================== FIM DAS ANIMAÇÕES DE ENTRADA ===================== */

/* ===================== CABEÇALHO ===================== */

.flp_header {
  position: sticky;
  top: 0;
  z-index: 1000;
  border-bottom: 1px solid var(--flp-border);
  background: var(--flp-white);
}

.flp_header-inner {
  display: flex;
  align-items: stretch;
  justify-content: flex-start;
  min-height: 84px;
  padding-left: 50px;
  padding-right: 50px;
}

/* Logo */
.flp_logo {
  display: flex;
  align-items: center;
}

.flp_logo-img {
  height: 51px;
  width: auto;
  display: block;
}

/* Navegação */
.flp_nav {
  display: flex;
  align-items: center;
  gap: 30px;
  margin-left: auto;
  margin-right: 30px;
}

/* Com 6 itens no menu (desde que "Livros do Dia" entrou), o gap de 30px
   deixa de caber entre 992px (limite de .d-lg-flex) e ~1300px — encolhe
   o espaçamento e a letra um pouco nessa faixa estreita para não criar
   scroll horizontal. */
@media (min-width: 992px) and (max-width: 1300px) {
  .flp_nav {
    gap: 15px;
  }

  .flp_nav-link {
    font-size: 0.78rem;
  }
}

.flp_nav-link {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  background: none;
  border: none;
  color: var(--flp-theme);
  padding: 0;
  display: flex;
  align-items: baseline;
  gap: 6px;
  cursor: pointer;
}

.flp_nav-link:hover, .flp_nav-link.current {
  opacity: 0.6;
}

/* Item de nav com submenu (ex: HOMENAGEM) */
.flp_nav-item {
  position: relative;
  display: flex;
  align-items: center;
}


@media (min-width: 992px) and (max-width: 1199px) {
	.flp_nav .flp_nav-item {display:none;}
}


.flp_nav-dropdown-caret {
  font-size: 0.55rem;
  opacity: 0.6;
}

.flp_nav-dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  padding-top: 18px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
  z-index: 1010;
}

.flp_nav-item:hover .flp_nav-dropdown-menu,
.flp_nav-item:focus-within .flp_nav-dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.flp_nav-dropdown-menu-inner {
  min-width: 210px;
  background: var(--flp-white);
  border: 1px solid var(--flp-border);
  padding: 0;
}

.flp_nav-dropdown-item {
  display: block;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.8rem;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: var(--flp-theme);
  padding: 12px 20px;
  white-space: nowrap;
}

.flp_nav-dropdown-item:hover,
.flp_nav-dropdown-item:focus, 
.flp_nav-dropdown-item.current {
  background: var(--flp-theme);
  color: var(--flp-white);
}

.flp_menu-icon {
  font-size: 1.5rem;
}

/* Seletor de idioma */
.flp_lang {
  display: flex;
  align-items: center;
  gap: 10px;
  border-left: 1px solid var(--flp-border);
  padding: 0 0px 0 30px;
}

.flp_lang-sep {
  font-family: var(--flp-mono);
  font-size: 0.85rem;
  color: var(--flp-theme);
  opacity: 0.35;
}

.flp_lang-toggle {
  font-family: var(--flp-mono);
  font-weight: 500;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  background: none;
  border: none;
  color: var(--flp-theme);
  padding: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
}

.flp_lang-toggle:hover {
  opacity: 0.6;
}

.flp_lang-caret {
  font-size: 0.65rem;
}

.flp_lang-menu {
  border-radius: 0;
  border: 1px solid var(--flp-border);
  padding:  0;
  margin-top: 12px;
  min-width: 80px;
}

.flp_lang-item {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  color: var(--flp-theme);
}

/* Dentro do dropdown antigo (PAGINA-programacao.html): item ativo/hover inverte cor */
.flp_lang-menu .flp_lang-item:hover,
.flp_lang-menu .flp_lang-item:focus,
.flp_lang-menu .flp_lang-item.active {
  background: var(--flp-theme);
  color: var(--flp-white);
}

/* Novo seletor "PT | EN" direto no cabeçalho (index.html): sem fundo, só opacidade */
.flp_lang > .flp_lang-item {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  opacity: 0.4;
  transition: opacity 0.3s;
}

.flp_lang > .flp_lang-item:hover {
  opacity: 0.7;
}

.flp_lang > .flp_lang-item.active {
  opacity: 1;
}
.menu-icon {width: 20px;}
/* Botão hamburguer mobile (apenas o ícone, sem o texto "MENU") */
.flp_nav-toggle {
  display: flex;
  align-items: center;
  background: none;
  border: none;
  color: var(--flp-theme);
  padding: 0 0 0 18px;
  cursor: pointer;
  line-height: 0;
  font-weight: bold;
}

.flp_nav-toggle i {
  font-size: 1.7rem;
}

.flp_nav-toggle img {margin-left: 6px; margin-top:-3px}

/* Seletor de idioma mobile (dropdown) */
.flp_lang-mobile {
  display: flex;
  align-items: center;
  margin-left: auto;
  padding-left: 10px;
  
}

.flp_lang-mobile .flp_lang-toggle {
  font-size: 0.9rem;
  font-weight: bold;
}

.flp_lang-mobile .flp_lang-caret {
  font-size: 0.8rem;
}

.flp_lang-mobile .flp_lang-menu {
  min-width: 100px;
}

.flp_lang-mobile .dropdown-item.flp_lang-item {
  padding: 10px 18px;
}

/* ===================== MENU OVERLAY (ecrã inteiro, desktop) ===================== */

.flp_no-scroll {
  overflow: hidden;
}

.flp_menu-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  background: var(--flp-theme);
  color: var(--flp-white);
  overflow-y: auto;
  visibility: hidden;
  opacity: 0;
  transform: translateY(-8px);
  transition: opacity 0.3s ease, transform 0.3s ease, visibility 0.3s;
  display: flex;
  flex-direction: column;
  min-height: 100%;
}

.flp_menu-overlay.is-open {
  visibility: visible;
  opacity: 1;
  transform: translateY(0);
}

.flp_menu-overlay-header {
  border-bottom: 1px solid var(--flp-white);
}

.flp_menu-overlay-header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 84px;
  padding-left: 50px;
  padding-right: 50px;
}

.flp_menu-overlay-header-inner .flp_logo-img {
  height: 51px;
}

.flp_menu-close {
  background: none;
  border: none;
  color: var(--flp-white);
  font-size: 1.4rem;
  cursor: pointer;
  line-height: 1;
}

.flp_menu-close:hover {
  opacity: 0.6;
}

.flp_menu-overlay-nav {
  padding: 28px 50px 64px;
}

.flp_menu-overlay-footer {
  margin-top: auto;
  padding: 0 50px 0px;
}

.flp_menu-overlay-footer .flp_footer-bottom {
  margin-top: 0;
}

.flp_menu-item,
.flp_menu-item-toggle {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  background: none;
  border: none;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1.2rem;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--flp-white);
  text-align: left;
  padding: 8px 0;
  cursor: pointer;
}

.flp_menu-item.current,
.flp_menu-item:hover,
.flp_menu-item-toggle:hover {
  opacity: 0.7;
}

.flp_menu-item-caret {
  font-size: 0.85rem;
  color: var(--flp-white);
  transition: transform 0.2s ease;
}

.flp_menu-item-toggle.is-open .flp_menu-item-caret {
  transform: rotate(180deg);
}

.flp_menu-subnav {
  display: none;
  flex-wrap: wrap;
  column-gap: 24px;
  row-gap: 8px;
  padding: 6px 0 10px;
}

.flp_menu-item-toggle.is-open + .flp_menu-subnav {
  display: flex;
}

.flp_menu-item-toggle0 i {
  display: none;
}

.flp_menu-subnav a {
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 0.95rem;
  letter-spacing: 0.5px;
  color: rgba(255, 255, 255, 0.75);
  white-space: nowrap;
}

.flp_menu-subnav a:hover, .flp_menu-subnav a.current {
  color: var(--flp-white);
}

.flp_menu-item-search {
  margin-top: 12px;
  font-size: 1.1rem;
}

/* ===================== BREADCRUMB ===================== */

.flp_breadcrumb {
  border-bottom: 1px solid var(--flp-border);
}

.flp_breadcrumb-inner {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 48px;
  padding-left: 50px;
  font-size: 0.85rem;
}

.flp_breadcrumb-link {
  text-decoration: underline;
  font-weight: normal;
}

.flp_breadcrumb-arrow {
  font-size: 0.8rem;
}

.flp_breadcrumb-current {
  font-weight: normal;
  color: var(--flp-theme);
  opacity: 0.85;
}

/* ===================== PROGRAMAÇÃO (imagem de fundo + pesquisa) ===================== */

.flp_prog-hero {
  position: relative;
  min-height: clamp(224px, 27.2vw,140px);
  overflow: hidden;
}

.flp_prog-hero-bg {
  position: absolute;
  inset: 0;
  background-image: url('../img/banner_home.jpg');
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  z-index: -1;
}

@media (min-width: 992px) {
  .flp_prog-hero-bg {
    background-image: url('../img/banner_home_desktop.jpg');
    background-position: center center;
  }
}

.flp_prog-hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0.35) 55%, rgba(0,0,0,0.65) 100%);
}

.flp_prog-hero-inner {
  inset: 0;
  padding: 80px 50px 120px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.flp_gallery-title {
  font-size: 40px;
  margin: 0 0 40px;
}


.padd0{padding: 0 !important;}

.flp_prog-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 80px;
  line-height: 1;
  letter-spacing: 0.5px;
  color: var(--flp-white);
  text-transform: uppercase;
  text-align: left;
  margin: 0;
}

.flp_pv_hero-title {
  font-size: 40px;
  color: var(--flp-theme);
}

.flp_pv_hero .flp_prog-hero-overlay {
  display: none;
}

.flp_prog-text {
  max-width: 620px;
  font-family: var(--flp-mono);
  font-size: 1.25rem;
  line-height: 1.6;
  color: var(--flp-white);
  margin: 0px 0 20px 0px;
}

/* Ocupa o espaço restante e alinha a pesquisa à esquerda, na zona mais
   "vazia" da imagem de fundo (o lado direito tem a ilustração) */
.flp_prog-search-area {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  width: 100%;
}

.flp_prog-info-img {
  flex-shrink: 0;
  height: 80px;
  width: auto;
  display: none;
}

.flp_prog-search {
  display: flex;
  align-items: stretch;
  width: 100%;
  /* Termina no mesmo ponto que o bloco azul "Eventos em Destaque": a
     coluna 1 do grid (6fr de 6/4/3, descontando os 2 gaps de 50px).
     O bloco azul "sangra" 50px só para a esquerda (até à margem real da
     página); a pesquisa fica alinhada à esquerda com o resto do texto,
     por isso só precisa de igualar a margem direita da coluna */
  max-width: calc((100% - 100px) * 6 / 13);
  height: 56px;
  background: #ffffff;
  overflow: hidden;
}

.flp_prog-search-form {
  display: flex;
  align-items: stretch;
  width: 100%;
}

.flp_prog-search-input {
  flex: 1;
  min-width: 0;
  background: transparent;
  border: none;
  outline: none;
  padding: 0 20px;
  font-family: Arial;
  font-weight: normal;
  font-size: 0.9rem;
  color: var(--flp-theme);
}

.flp_prog-search-input::placeholder {
  color: var(--flp-theme);
  opacity: 0.7;
  text-transform: uppercase;
}

.flp_prog-search-btn {
  flex-shrink: 0;
  width: 56px;
  background: var(--flp-theme);
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--flp-white);
  font-size: 1.1rem;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
}

.flp_prog-search-btn:hover {
  background: var(--flp-white);
  color: var(--flp-theme);
}

.flp_prog-search-icon {
  width: 18px;
  height: 18px;
  display: block;
}

@media (max-width: 991.98px) {

 .flp_prog-search-input {
  /* 16px é o mínimo para o iOS Safari não fazer zoom automático ao
  focar o campo (abaixo disso, o browser assume que é difícil de ler
  e dá zoom sozinho ao tocar). O transform:scale encolhe só o
  desenho do texto de volta ao tamanho visual antigo (0.7rem/11.2px
  ≈ 16px * 0.7) — o Safari continua a "ver" 16px reais para efeitos
  de zoom, porque transform não altera o font-size computado.
  transform-origin:left garante que o texto continua encostado ao
  padding-left em vez de encolher a partir do centro. A altura da
  caixa não é afetada: .flp_prog-search tem height:56px fixo com
  align-items:stretch, por isso o transform só mexe no desenho do
  texto, não no espaço que o input ocupa. */
  font-size: 16px;
  transform: scale(0.7);
  transform-origin: left center;
}

  .flp_logo-img {
  height: 40px;
} 

.flp_menu-overlay-header-inner .flp_logo-img {
  height: 40px;
} 
  .flp_evd_hero-section .flp_gallery-info-item {padding:30px;}


  .flp_nav-toggle {font-size:0.8rem}

  .flp_prog-hero-inner {
    padding: 50px 30px 24px;
  }

  .flp_prog-title {
    font-size: 2.4rem;
  }

  .flp_pv_hero-title {
    font-size: 24px;
  }

  .flp_pv_hero {
    min-height: 150px;
  }

  .flp_prog-text {
    font-size: 0.95rem;
    line-height: 1.5;
    margin-top: 12px;
  }

  .flp_prog-search {
    max-width: 100%;
    height: 50px;
  }

  .flp_prog-search-area {
    flex-direction: column-reverse;
    align-items: flex-start;
    gap: 16px;
  }

  .flp_prog-info-img {
    height: 50px;
    margin: 0 auto 20px;
    display: block;
  }
}

/* ===================== TÍTULO DA PÁGINA ===================== */

.flp_page-hero {
  padding: 80px 0 0;
}

.flp_page-hero-inner {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 20px;
  padding-left: 50px;
  padding-right: 50px;
}

.flp_page-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 40px;
  line-height: 1;
  letter-spacing: 0.5px;
  margin: 0;
  text-transform: uppercase;
}

.flp_page-title--home {
  font-size: 40px;
}

/* Espaço em branco mínimo abaixo do título */
.flp_hero-spacer {
  min-height: 40px;
}

/* ===================== GALERIA / EVENTOS EM DESTAQUE (carrossel) ===================== */

.flp_gallery {
  padding: 80px 50px 0px;
  position:relative;
  /* Contém a margem do último filho (.flp_gallery-more, margin-bottom:80px):
     sem isto, essa margem "escapa" para fora da secção (padding-bottom:0
     aqui), o que passa despercebido quando a secção não tem fundo próprio,
     mas em páginas onde .flp_gallery ganha um fundo (ex.: cor trocada em
     PAGINA-expositores-detalhe.html) cria um corte abrupto atrás do botão
     seguido de um vazio branco antes da secção seguinte. */
  overflow: hidden;
}

/* Janela visível: esconde os cartões fora do intervalo atual */
.flp_gallery-viewport {
  overflow: hidden;
}

/* Pista: todos os cartões lado a lado, desliza via transform (JS).
   align-items: flex-start (em vez do "stretch" por omissão) — os cartões
   estão todos na mesma flex-row mesmo os que não estão visíveis, por isso
   com "stretch" o cartão visível esticava até à altura do título mais
   comprido de todos os cartões (visíveis ou não), criando um espaço em
   branco enorme por baixo do texto, sobretudo em mobile (1 cartão a
   100% da largura). */
.flp_gallery-row {
  display: flex;
  align-items: flex-start;
  gap: 50px;
  transition: transform 0.5s ease-in-out;
  cursor: grab;
  touch-action: pan-y;
}

.flp_gallery-row.is-dragging {
  cursor: grabbing;
  user-select: none;
  transition: none;
}

/* Cartão: 3 visíveis de cada vez, todos com a mesma largura */
.flp_gallery-col {
  flex: 0 0 calc((100% - 100px) / 3);
  display: flex;
  flex-direction: column;
}

.flp_gallery-col-link {
  display: flex;
  flex-direction: column;
  height: 100%;
}

/* Categoria: texto simples por baixo da imagem, mesmo estilo simples da
   localização (.flp_gallery-info-venue), sem o ícone de localização.
   Nota: estas classes (.flp_gallery-col-category/-label/-media/-img,
   .flp_gallery-info/-info-item) também são reaproveitadas fora do
   carrossel — ex.: o cartão de evento em destaque no topo de
   PAGINA-programacao-detalhe.html — por isso mantêm o "contrato" original
   (item marcado com .is-active fica visível): com um único item por
   cartão, isso equivale sempre a mostrá-lo. */
.flp_gallery-col-category {
  position: relative;
  height: calc(1rem * var(--flp-text-scale, 1));
  line-height: 1;
  margin: 25px 0 -5px;
}

.flp_gallery-col-category .flp_gallery-col-label {
  position: relative;
  inset: 0;
  background: none;
  color: var(--flp-theme);
  font-size: calc(1rem * var(--flp-text-scale, 1));
  font-weight: normal;
  letter-spacing: normal;
  line-height: 1;
  padding: 0;
  border-radius: 0;
  background:transparent!important;
}


.flp_gallery-col-category .flp_gallery-col-label .flp_ev_free-badge {position: relative; top:0; left:0;  background:transparent!important; padding:0; color:var(--flp-theme); font-size: 0.9rem;}

/* Imagem: corte (object-fit: cover) centrada vertical e horizontalmente */
.flp_gallery-col-media {
  position: relative;
  flex: 0 0 auto;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 400px;
  overflow: hidden;
  border-radius: 0;
}

.flp_gallery-col-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  opacity: 0;
  transform: translateX(0);
  -webkit-user-drag: none;
}

.flp_gallery-col-label {
  position: absolute;
  top: 0px;
  left: 0px;
  z-index: 2;
  background: var(--flp-theme);
  color: var(--flp-white);
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 0.75rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  padding: 10px 20px;
  pointer-events: none;
  opacity: 0;
  transform: translateX(0);
}

.flp_gallery-col-img.is-active {
  opacity: 1;
  transform: translateX(0);
  z-index: 1;
}

.flp_gallery-col-label.is-active {
  opacity: 1;
  transform: translateX(0);
  z-index: 3;
}

.flp_gallery-info {
  position: relative;
  display: grid;
  overflow: hidden;
  border-radius: 0 0 4px 4px;
}

.flp_gallery-info-item {
  grid-area: 1 / 1;
  color: var(--flp-theme);
  padding: 20px 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: 8px;
  opacity: 0;
  transform: translateX(0);
}

.flp_gallery-info-item.is-active {
  opacity: 1;
  transform: translateX(0);
  z-index: 1;
}

.flp_gallery-info-eyebrow {
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: calc(0.96rem * var(--flp-text-scale, 1));
  letter-spacing: 0.5px;
  opacity: 0.8;
  margin: 0;
}

.flp_gallery-info-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1.2rem;
  line-height: 1.2;
  text-transform: uppercase;
  word-spacing: 5px;
  margin: 0;
}

.flp_gallery-info-date {
  font-family: var(--flp-mono);
  font-size: 0.9rem;
  text-transform: uppercase;
  margin: 4px 0 0;
}

.flp_gallery-info-date strong {
  font-weight: 700;
}

.flp_gallery-info-date span {
  font-weight: normal;
  margin-left: 8px;
}

.flp_gallery-info-venue {
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: calc(1rem * var(--flp-text-scale, 1));
  line-height: 1;
  opacity: 1;
  text-transform: uppercase;
  margin: 0;
  display: flex;
  align-items: flex-end;
  gap: 6px;
}

.flp_gallery-info-venue::after {
  content: "";
  display: inline-block;
  flex-shrink: 0;
  width: 1.3em;
  height: 1.3em;
  background-color: var(--flp-theme);
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 24C145 24 72 105 72 206C72 332 256 488 256 488C256 488 440 332 440 206C440 105 367 24 256 24Z M256 70C339 70 394 130 394 206C394 288 299 394 256 439C213 394 118 288 118 206C118 130 173 70 256 70Z'/%3E%3Cpath d='M256 134A78 78 0 1 0 256 290A78 78 0 1 0 256 134Z M256 178A34 34 0 1 1 256 246A34 34 0 1 1 256 178Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 24C145 24 72 105 72 206C72 332 256 488 256 488C256 488 440 332 440 206C440 105 367 24 256 24Z M256 70C339 70 394 130 394 206C394 288 299 394 256 439C213 394 118 288 118 206C118 130 173 70 256 70Z'/%3E%3Cpath d='M256 134A78 78 0 1 0 256 290A78 78 0 1 0 256 134Z M256 178A34 34 0 1 1 256 246A34 34 0 1 1 256 178Z'/%3E%3C/svg%3E");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}

/* Mobile (< 767px): apenas 1 cartão visível de cada vez */
@media (max-width: 767.98px) {
  .flp_gallery-col {
    flex-basis: 100%;
  }
}

/* ============================================================
   RESULTADOS DA PESQUISA (?it=search_result) — linha divisória
   por baixo de cada cartão.
   A altura igual já acontece "de borla": .row do Bootstrap é
   flex (align-items:stretch por omissão) e .flp_gallery-col-link
   já tem height:100% — por isso todos os cartões da mesma linha
   ficam sempre com a mesma altura, só faltava a linha.
   Usa-se um seletor descendente (sem ">") e sem nth-child de
   propósito: não depende do nº de resultados nem de quantas
   colunas há por breakpoint, e continua a funcionar mesmo que
   haja algum wrapper extra à volta de cada cartão.
   ============================================================ */
.resultados-pesquisa .flp_gallery-col-link {

  border-bottom: 1px solid var(--flp-border);
}

.flp_gallery-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 40px;
}

.flp_gallery-header .flp_page-title {
  margin-bottom: 0;
}

/* Género Literário do expositor: itens concatenados sem separador no
   HTML (<span class="genero-item">) — a vírgula é posta a seguir a cada
   item que tenha um irmão antes (por isso o 1º item nunca leva vírgula). */
.genero-item + .genero-item::before {
  content: ", ";
}

.flp_gallery-nav {
  display: flex;
  flex-shrink: 0;
  justify-content: end;
}

.flp_gallery-nav-pill {
  display: flex;
  align-items: center;
  gap: 12px;
}

.flp_gallery-nav-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
}

.flp_gallery-nav-icon {
  height: 30px;
  width: auto;
  display: block;
}

.flp_gallery-nav-btn:hover {
  opacity: 0.6;
}

.flp_gallery-nav-btn:disabled {
  opacity: 0.3;
  cursor: default;
}

.flp_gallery-nav-btn:disabled:hover {
  opacity: 0.3;
}

/* Botão "Ver todos os eventos" — apenas visual, sem link real.
   Fica no fluxo normal (não position:absolute) porque a altura das
   colunas já não é fixa: assim nunca sobrepõe o texto da coluna 3,
   seja qual for o tamanho do título/localização nela. */
.flp_gallery-more {
  
  
  display: flex;
  justify-content: flex-end;
  padding-top: 40px;
  margin-bottom: 80px;
}

.flp_gallery-more-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: none;
  border: 1px solid var(--flp-border);
  color: var(--flp-theme);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  text-decoration: none;
  padding: 16px 32px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
}

.flp_gallery-more-btn:hover {
  background: var(--flp-theme);
  color: var(--flp-white);
}

.flp_gallery-more-arrow {
  width: 14px;
  height: 14px;
  margin-top:-4px;
  flex-shrink: 0;
}

@media (max-width: 991.98px) {


  /*.flp_gallery-info-item {padding:0 0 20px}*/
  
  .flp_gallery {
    padding: 40px 30px 40px;
  }

  .flp_gallery-header {
    margin-bottom: 16px;
  }

  .flp_gallery-info-title {
    font-size: 16px;
  }

  .flp_gallery-info-date {
    font-size: 14px;
  }

  .flp_gallery-more {
    margin-bottom: 0;
    padding-top: 20px;
  }

  .flp_gallery-more-btn {
    padding: 13px 42px;
    width:100%;
    text-align: center;
    justify-content: center;
  }

  .flp_news-more-btn {
    padding: 13px 42px;
    width:100%;
    text-align: center;
    justify-content: center;
  }

  
}


.listagem-expositores .flp_ev_events-area {
    background: linear-gradient(to right, var(--exl-col2-bg) 50%, var(--flp-bg-light) 50%);
}

/* ===================== NOTÍCIAS ===================== */

.flp_news {
  background: var(--flp-bg-light);
  color: var(--flp-white);
  padding: 80px 50px 80px;
}

.flp_news-inner {
  padding: 0;
}

.flp_news-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 40px;
  line-height: 1;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0 0 32px;
}

.flp_news-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  align-items: start;
}

.flp_news-link {
  display: block;
  color: var(--flp-theme);
}

.flp_news-link:hover .flp_news-headline {
  opacity: 0.75;
}

.flp_news-link:hover .flp_news-img {
  opacity: 0.75;
}

.flp_news-img-wrap {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 400px;
  overflow: hidden;
  margin-bottom: 16px;
}

.flp_news-img-label {
  
  color: var(--flp-theme);
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 0.75rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;

  padding: 0px 0px 10px;
  margin-bottom:0px;
  display:block;
  pointer-events: none;
}

.flp_news-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: opacity 0.3s;
}

.flp_news-headline {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1.2rem;
  line-height: 1.2;
  text-transform: uppercase;
  word-spacing: 5px;
  margin: 0 0 12px;
}

.flp_news-date {
  font-family: var(--flp-mono);
  font-size: 0.9rem;
  text-transform: uppercase;
  margin: 0;
}

.flp_news-more {
  display: flex;
  justify-content: end;
  padding-top: 40px;
}

.flp_news-more-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: none;
  border: 1px solid var(--flp-theme);
  color: var(--flp-theme);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  text-decoration: none;
  padding: 16px 32px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
}

.flp_news-more-btn:hover {
  background: var(--flp-theme);
  color: var(--flp-white);
}

@media (max-width: 991.98px) {
  .listagem-expositores .flp_ev_events-area {
    background: var(--exl-col3-bg);
}
  .flp_news {
    padding: 40px 30px 40px;
  }

  .flp_news-title {
    font-size: 26px;
  }

  .flp_news-headline {
    font-size: 16px;
  }

  .flp_news-grid {
    grid-template-columns: 1fr;
  }
}

/* ===================== MAPA DA FEIRA ===================== */

.flp_map-banner {
  overflow: hidden;
}

.flp_map-banner-row {
  align-items: stretch;
}

.flp_map-banner-left {
  background: var(--flp-gray-dark);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 80px 50px;
}

.flp_map-banner-footer {
  background: var(--flp-gray-dark) url('../img/banner-footer.jpg') center center / cover no-repeat;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 50px 30px;
}

.flp_map-banner-bottom {
  display: flex;
  flex-direction: column;
  gap: 15px;
}

.flp_map-banner-divider {
  border-top: 1px solid rgba(255, 255, 255, 0.4);
}

.flp_map-banner-title {
  text-align: left;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 40px;
  line-height: 1;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-white);
  margin: 0;
}

.flp_map-banner-text {
  font-family: var(--flp-mono);
  font-size: 1.25rem;
  line-height: 1.6;
  color: var(--flp-white);
  margin: 0;
}

.flp_map-banner-btn {
  display: flex;
  align-self: center;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 1px solid var(--flp-white);
  color: var(--flp-white);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  text-decoration: none;
  padding: 16px 32px;
  transition: background 0.3s, color 0.3s;
}

.flp_map-banner-btn:hover {
  background: var(--flp-white);
  color: var(--flp-gray-dark);
}

.flp_map-banner-right {
  background: var(--flp-gray-dark);
  min-height: 320px;
  padding: 80px 50px 80px 0;
}

.flp_map-banner-img {
  width: 100%;
  height: 100%;
  max-height: 500px;
  object-fit: cover;
  display: block;
}

@media (max-width: 991.98px) {
  .flp_map-banner-left {
    padding: 40px 30px;
  }

  .flp_map-banner-right {
    min-height: 260px;
	padding: 0 30px 40px 30px;
  }
}

/* ===================== FOOTER ===================== */

.flp_footer {
  position: relative;
  background: var(--flp-theme);
  color: var(--flp-white);
  padding: 80px 0 0;
  overflow: hidden;
}

.flp_footer-bg-icon {
  position: absolute;
  top: auto;
  right: 0;
  bottom: 0;
  width: auto;
  height: 60%;
  opacity: 0.2;
  pointer-events: none;
  z-index: 0;
}

.flp_footer-outer {
  position: relative;
  z-index: 1;
  padding-left: 50px;
  padding-right: 50px;
}

.flp_footer-top {
  padding-top: 20px;
}

.flp_footer-row {
  row-gap: 40px;
}

.flp_footer-col {
  padding-right: 16px;
}

.flp_footer-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--flp-white);
  line-height: 1;
  margin: 0 0 18px;
  padding: 18px 0 13px;
  border-top: 1px solid var(--flp-white);
  border-bottom: 1px solid var(--flp-white);
}

.flp_footer-links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.flp_footer-links a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  color: var(--flp-white);
}

.flp_footer-links a:hover {
  text-decoration: underline;
}

.flp_footer-links i {
  font-size: 0.8rem;
}

.flp_footer-social {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.flp_footer-social-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border: 1.5px solid var(--flp-white);
  border-radius: 100px;
  color: var(--flp-white);
  font-size: 1.1rem;
  line-height: 0;
  transition: background 0.3s, color 0.3s;
}

.flp_footer-social-icon:hover {
  background: var(--flp-white);
  color: var(--flp-theme);
}

.flp_footer-bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-end;
  gap: 24px;
  margin-top: 80px;
  padding: 0 0 20px;
}

.flp_footer-brand {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 24px;
}

.flp_footer-logo {
  height: 40px;
  width: auto;
  display: block;
}

.flp_footer-porto-icon {
  height: 22px;
  width: auto;
  display: block;
}

.flp_footer-contact {
  display: flex;
  align-items: flex-start;
}

.flp_footer-copyright {
  font-family: var(--flp-mono);
  font-size: 0.8rem;
  color: var(--flp-white);
  opacity: 0.75;
  margin: 0;
}


/* ===================== RESPONSIVO ===================== */

@media (max-width: 991.98px) {

.flp_news-more-btn  {    font-size: 0.85rem; padding:13px 42px}
  .flp_map-banner-btn {    font-size: 0.85rem; padding:13px 42px; width:100%}


  .flp_map-banner-text {font-size:16px; margin-bottom: 20px;}
  .flp_map-banner-title {font-size:24px}
  .flp_header-inner {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_menu-overlay-header-inner {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_menu-overlay-nav {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_menu-overlay-footer {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_page-hero-inner {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_page-title {
    font-size: 32px;
  }

  .flp_page-title--home {
    font-size: 24px;
  }

  .flp_breadcrumb-inner {
    padding-left: 30px;
  }

  .flp_footer {
    padding-top: 60px;
  }

  .flp_footer-outer {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_footer-bottom {
    flex-direction: column;
    align-items: flex-start;
	margin-top: 60px;
    padding: 0 0 20px;
  }

  .flp_footer-contact {
    flex-wrap: wrap;
  }
}

@media (max-width: 575.98px) {
  .flp_page-title {
    font-size: 26px;
  }

  .flp_prog-title {
    font-size: 30px;
  }

  .flp_pv_hero-title {
    font-size: 24px;
  }
}

/* Mostra o elemento só quando o <html lang="pt" (ou pt-PT, etc.)>.
   Assume que a página define o atributo lang consoante o idioma ativo. */
.only-pt {
  display: none;
}

.lang1 .only-pt {
  display: block;
}



/* cookies */
.cookie-message-wrapper {
  position: fixed;
  bottom: 20px  ;
  left: 0;
  right: 0;
  z-index: 100;
  font-size: 16px;
}

.cookie-message-wrapper span {
  font-size: 14px;
  line-height: 1.6;
}

.cookie-inner-wrapper {
	padding: 30px;
	background: white;
	color: var(--flp-theme);
	display: flex;
	justify-content: center;
	font-size: 16px;
	width: 1300px;
	max-width: 90%;
	border-radius: 0px;
	margin: 20px auto;
	align-items:center;
 box-shadow: 0px 0px 80px rgba(255,73,2,0.2);
}

.cookie-inner-wrapper a {
  color: var(--flp-theme);
  text-decoration: underline;
  font-size: 12px;
  padding-left: 10px;
  white-space: nowrap;
}
.cookie-inner-wrapper a:hover {
  color: var(--flp-theme);
}

.cookie-inner-wrapper-text {
  margin-right: 15px;
}

.cookie-inner-wrapper .button {
  margin-top: 0;
  padding: 0 20px;
  line-height: 2;
  margin-left: 20px;
  font-size: 14px;
}

.btn_cookie_accept {
  width: auto;
  margin-left: 20px;
  border-radius: 0px;
  background: transparent;
  border: solid 1px var(--flp-theme);
  font-size: 0.85rem;
padding: 10px 42px;
  text-transform: uppercase;

  font-weight:bold;
  color: var(--flp-theme);
  box-shadow: none;
  height: fit-content;
}

.btn_cookie_accept:hover {
  background: var(--flp-theme);
  color: white;
}
/* cookies */

/* ===================== BARRA DE COOKIES alternativa ===================== */

.flp_cookie-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 3000;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  background: var(--flp-bg-light);
  border-top: 1px solid var(--flp-border);
  padding: 18px 30px;
  transform: translateY(100%);
  transition: transform 0.4s ease;
}

.flp_cookie-bar.is-visible {
  transform: translateY(0);
}

.flp_cookie-text {
  flex: 1;
  min-width: 240px;
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 0.85rem;
  line-height: 1.5;
  color: var(--flp-theme);
  margin: 0;
}

.flp_cookie-text a {
  text-decoration: underline;
  font-weight: 700;
}

.flp_cookie-actions {
  display: flex;
  align-items: center;
  gap: 24px;
  flex-shrink: 0;
}

.flp_cookie-btn-settings {
  background: none;
  border: none;
  padding: 0;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  cursor: pointer;
}

.flp_cookie-btn-settings:hover {
  opacity: 0.6;
}

.flp_cookie-btn-accept {
  background: var(--flp-theme);
  border: 1px solid var(--flp-theme);
  color: var(--flp-white);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  padding: 14px 28px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
}

.flp_cookie-btn-accept:hover {
  background: var(--flp-white);
  color: var(--flp-theme);
}

.flp_cookie-close {
  flex-shrink: 0;
  background: none;
  border: none;
  padding: 0;
  font-size: 1.1rem;
  color: var(--flp-theme);
  cursor: pointer;
  line-height: 1;
}

.flp_cookie-close:hover {
  opacity: 0.6;
}

@media (max-width: 767.98px) {
  .flp_cookie-bar {
    flex-wrap: wrap;
    padding: 20px;
  }

  .flp_cookie-actions {
    width: 100%;
    justify-content: flex-start;
  }
}

/* ===================== PAINEL DE PREFERÊNCIAS DE COOKIES ===================== */

.flp_cookie-panel-overlay {
  position: fixed;
  inset: 0;
  z-index: 3100;
  background: rgba(28, 28, 28, 0.5);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s;
}

.flp_cookie-panel-overlay.is-open {
  opacity: 1;
  visibility: visible;
}

.flp_cookie-panel {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 3200;
  width: 420px;
  max-width: 100%;
  background: var(--flp-bg-light);
  overflow-y: auto;
  transform: translateX(100%);
  transition: transform 0.35s ease;
}

.flp_cookie-panel.is-open {
  transform: translateX(0);
}

.flp_cookie-panel-inner {
  position: relative;
  padding: 32px 30px 50px;
}

.flp_cookie-panel-close {
  position: absolute;
  top: 24px;
  right: 30px;
  background: none;
  border: none;
  padding: 0;
  font-size: 1.2rem;
  color: var(--flp-theme);
  cursor: pointer;
  line-height: 1;
}

.flp_cookie-panel-close:hover {
  opacity: 0.6;
}

.flp_cookie-panel-logo {
  height: 44px;
  width: auto;
  display: block;
  margin-bottom: 24px;
}

.flp_cookie-panel-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1.5rem;
  line-height: 1.25;
  color: var(--flp-theme);
  margin: 0 0 16px;
}

.flp_cookie-panel-text {
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 0.9rem;
  line-height: 1.6;
  color: var(--flp-theme);
  margin: 0 0 16px;
}

.flp_cookie-panel-text a {
  font-weight: 700;
  text-decoration: underline;
  color: var(--flp-theme);
}

.flp_cookie-panel-btn-all {
  display: block;
  width: 100%;
  background: var(--flp-theme);
  border: 1px solid var(--flp-theme);
  color: var(--flp-white);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  padding: 16px;
  margin-top: 8px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
}

.flp_cookie-panel-btn-all:hover {
  background: var(--flp-white);
  color: var(--flp-theme);
}

.flp_cookie-panel-divider {
  border: none;
  border-top: 1px solid var(--flp-border);
  opacity: 0.25;
  margin: 32px 0;
}

.flp_cookie-panel-subtitle {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1.3rem;
  color: var(--flp-theme);
  margin: 0 0 20px;
}

.flp_cookie-cat {
  padding: 20px 0;
  border-bottom: 1px solid rgba(28, 28, 28, 0.15);
}

.flp_cookie-cat-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 10px;
}

.flp_cookie-cat-head h4 {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1rem;
  color: var(--flp-theme);
  margin: 0;
}

.flp_cookie-cat-status {
  flex-shrink: 0;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.8rem;
  letter-spacing: 0.3px;
  color: var(--flp-theme);
  white-space: nowrap;
}

.flp_cookie-cat-text {
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 0.85rem;
  line-height: 1.6;
  color: var(--flp-theme);
  margin: 0 0 10px;
}

.flp_cookie-cat-link {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.8rem;
  text-decoration: underline;
  color: var(--flp-theme);
}

.flp_cookie-toggle {
  position: relative;
  flex-shrink: 0;
  display: inline-block;
  width: 44px;
  height: 24px;
}

.flp_cookie-toggle input {
  position: absolute;
  opacity: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  cursor: pointer;
}

.flp_cookie-toggle-slider {
  position: absolute;
  inset: 0;
  background: var(--flp-gray-light);
  border-radius: 24px;
  transition: background 0.3s;
}

.flp_cookie-toggle-slider::before {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 18px;
  height: 18px;
  background: var(--flp-white);
  border-radius: 50%;
  transition: transform 0.3s;
}

.flp_cookie-toggle input:checked + .flp_cookie-toggle-slider {
  background: var(--flp-theme);
}

.flp_cookie-toggle input:checked + .flp_cookie-toggle-slider::before {
  transform: translateX(20px);
}

.flp_cookie-panel-btn-confirm {
  display: block;
  width: 100%;
  background: var(--flp-theme);
  border: 1px solid var(--flp-theme);
  color: var(--flp-white);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  padding: 16px;
  margin-top: 28px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
}

.flp_cookie-panel-btn-confirm:hover {
  background: var(--flp-white);
  color: var(--flp-theme);
}

/* ===================== ÍCONE FLUTUANTE (reabrir preferências) ===================== */

.flp_cookie-fab {
  position: fixed;
  left: 20px;
  bottom: 70px;
  z-index: 2900;
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--flp-gray-dark);
  border: none;
  border-radius: 50%;
  color: var(--flp-white);
  font-size: 1.3rem;
  cursor: pointer;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.25);
  opacity: 0;
  visibility: hidden;
  transform: scale(0.8);
  transition: opacity 0.3s ease, transform 0.3s ease, visibility 0.3s;
}

.flp_cookie-fab.is-visible {
  opacity: 1;
  visibility: visible;
  transform: scale(1);
}

.flp_cookie-fab:hover {
  opacity: 0.85;
}


/* ═══════════════════════════════════════════════════════════════════════
   2. DETALHE DE EVENTO / EXPOSITOR — cartão de evento, sinopse, ficha
      técnica, apresentação do expositor, contactos
      (antigo ficheiro: evento-detalhe.css)
   ═══════════════════════════════════════════════════════════════════════ */

/* =========================================================
   DETALHES DO EVENTO
   Prefixo de classes: flp_evd_
   Depende das variáveis definidas em flp-style.css
   (--flp-mono, --flp-theme, --flp-white, --flp-border)
   ========================================================= */

.flp_evd_section {
  padding: 80px 0 0px;
}

/* Secção do cartão do evento: sem respiro, o azul do cartão bate direto
   na linha do breadcrumb (em cima) e na secção seguinte (em baixo) */
.flp_evd_hero-section {
  padding-top: 0;
}

.flp_evd_inner {
  padding-left: 50px;
  padding-right: 50px;
}

.flp_evd_row {
  align-items: stretch;
}

/* ===== Destaques de eventos ("Também poderá gostar") ===== */

.flp_exp_contacts-rows .flp_evd_info-row {padding:5px 0;}

.flp_evd_highlights {
  background: var(--flp-bg-light);
  margin-top: 0;
  overflow: hidden;
}

/* ===== Apresentação do expositor: bloco em destaque =====
   Fundo azul só na coluna direita (.flp_evd_col-right já trata disso);
   a coluna esquerda fica branca, tal como em PAGINA-programacao-detalhe.html */
.flp_exp_apres {
  padding-bottom: 80px;
  background: var(--flp-gray-dark);
}


.flp_exp_apres .flp_evd_info-label {    flex: 0 0 180px;}


.flp_exp_apres .flp_evd_info {border:0; margin:0}

/* ===== Coluna esquerda: título + informação + accordion + CTA ===== */

.flp_evd_col-left {
  display: flex;
  flex-direction: column;
  padding: 0;
}

.flp_evd_title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 50px;
  line-height: 1.15;
  letter-spacing: 0.3px;
  color: var(--flp-theme);
  margin: 0 0 32px;
  text-transform: uppercase;
}

/* ===== Cartão do evento (reaproveita o visual da galeria em destaque) ===== */

.flp_evd_card {
  width: 100%;
  flex: 1 1 auto;
}

/* O cartão "sangra" até à margem esquerda real da página (em vez de
   respeitar o padding do .flp_evd_inner), mantendo a borda direita no
   mesmo sítio — só o fundo azul avança, o botão por baixo não mexe */
.flp_evd_hero-section .flp_evd_card {

  height:100%;
  padding:60px 50px 80px ;
  /*background: var(--flp-gray-dark);*/
  background: #15a4a5;
}

.flp-bg-light {background:#eee}

.flp-191-page.flp_evd_hero-section .flp_evd_card, .flp-192-page.flp_evd_hero-section .flp_evd_card, .flp-193-page.flp_evd_hero-section .flp_evd_card, .flp-194-page.flp_evd_hero-section .flp_evd_card, .flp-196-page.flp_evd_hero-section .flp_evd_card, .flp-197-page.flp_evd_hero-section .flp_evd_card,  .flp-198-page.flp_evd_hero-section .flp_evd_card {

  background: #ff4902;
}

.flp_evd_hero-section .flp_evd_card .flp_gallery-col-img { position:relative; aspect-ratio: 1920/1080;}

/* ===== Slider de imagens do cartão do evento =====
   O CMS pode devolver mais do que uma <img class="flp_gallery-col-img">
   seguida dentro de .flp_gallery-info; o script.js agrupa-as num wrapper
   .flp_evd_gallery-slider e liga setas + bolinhas só quando há mais do
   que uma imagem. Com uma única imagem, nada disto é criado e o cartão
   mantém-se exatamente como antes. */
.flp_evd_hero-section .flp_evd_card .flp_evd_gallery-slider {
  position: relative;
  width: 100%;
  aspect-ratio: 1920 / 1080;
  overflow: hidden;
}

.flp_evd_hero-section .flp_evd_card .flp_evd_gallery-slider .flp_gallery-col-img {
  position: absolute;
  aspect-ratio: auto;
  transition: opacity 0.6s ease;
}

/* Setas: mesmo par de ícones (arrow-left/arrow-right) e o mesmo espaçamento
   do .flp_gallery-nav-pill usado no carrossel "RELACIONADOS", só que aqui
   ficam sobre a imagem — por isso o fundo branco à volta do par, para
   garantir contraste sobre qualquer fotografia */
.flp_evd_gallery-nav {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 4;
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--flp-white);
  padding: 10px 16px;
  border-radius: 0px;
}

.flp_evd_gallery-arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: #1C1C1C;
}

.flp_evd_gallery-arrow svg { height: 20px; width: auto; display: block; }
.flp_evd_gallery-arrow:hover { opacity: 0.6; }

.flp_evd_gallery-dots {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 16px;
  z-index: 4;
  display: flex;
  justify-content: center;
  gap: 8px;
}

.flp_evd_gallery-dot {
  width: 10px;
  height: 10px;
  border-radius:0;
  border: 1px solid var(--flp-white);
  background: transparent;
  padding: 0;
  cursor: pointer;
  transition: background 0.2s;
}

.flp_evd_gallery-dot.is-active { background: var(--flp-white); }

@media (max-width: 991.98px) {


.flp_evd_hero-section .flp_evd_card .flp_gallery-col-img { aspect-ratio: 3/2;}


  .flp_gallery-col-category {margin-bottom:5px}

  .flp_gallery-info-item {padding:0 0 20px}
  .flp_evd_gallery-nav { top: 12px; right: 12px; padding: 8px 12px; gap: 10px; }
  .flp_evd_gallery-arrow svg { height: 16px; }
}

.flp_evd_hero-section .flp_evd_card .flp_gallery-info-item .flp_gallery-col-label {background:transparent; padding:0; color:var(--flp-white); margin-top:-12px}

.flp_evd_hero-section .flp_gallery-info-item {position:relative;}

/* Título maior apenas no cartão desta página (não mexe no .flp_gallery-info-title
   partilhado pelas outras galerias/páginas) */
.flp_evd_card .flp_gallery-info-title {
  font-size: 40px;
}

/* Cores do cartão (coluna esquerda, fundo escuro): título/data/local a
   branco — não mexe em .flp_gallery-info-title/-date/-venue partilhados
   pelas outras galerias/páginas, que continuam com o texto escuro delas */
.flp_evd_hero-section .flp_evd_card .flp_gallery-info-title,
.flp_evd_hero-section .flp_evd_card .flp_gallery-info-date,
.flp_evd_hero-section .flp_evd_card .flp_gallery-info-venue {
  color: var(--flp-white);
}

.flp_evd_hero-section .flp_evd_card .flp_gallery-info-venue::after {
  background-color: var(--flp-white);
}

/* Badge de categoria: nas outras galerias fica sobreposto à imagem
   (position: absolute), mas aqui passou para dentro do bloco de texto,
   por cima do título — por isso volta a ser um elemento normal do fluxo */
.flp_evd_card .flp_gallery-info-item .flp_gallery-col-label {
  position: relative!important;
}

.flp_evd_card .flp_gallery-info-item .flp_gallery-col-label .flp_ev_free-badge {
  position: relative!important;
  top:0; 
  left:0;
  background:transparent!important;
  padding:0!important;
      font-size: 0.9rem;
}

/* ===== Sinopse (coluna direita, agora com fundo branco) ===== */

.flp_evd_hero-section .flp_evd_col-right {
  background: var(--flp-white);

}

.flp_evd_col-right .flp_evd_synopsis-title {
  color: var(--flp-theme);
  font-weight: normal;
}

.flp_evd_col-right .flp_evd_synopsis-text {
  color: var(--flp-theme);
  opacity: 1;
  max-width: none;
}

.flp_evd_col-right .flp_evd_synopsis-text * {font-size:1rem!important}

/* Ficha DATA/LOCAL/BILHETES e botão de inscrição, agora sobre fundo
   branco — não mexe em .flp_evd_info-label/-value/.flp_evd_book-btn-white
   partilhados com a ficha de contactos de PAGINA-expositores-detalhe.html */
.flp_evd_hero-section .flp_evd_info,
.flp_evd_hero-section .flp_evd_info-row {
  border-color: var(--flp-theme);
}

.flp_evd_hero-section .flp_evd_info-label,
.flp_evd_hero-section .flp_evd_info-value {
  color: var(--flp-theme);
}

.flp_evd_hero-section .flp_evd_book-btn-white {
  border-color: var(--flp-theme);
  color: var(--flp-theme);
}

.flp_evd_hero-section .flp_evd_book-btn-white:hover {
  background: var(--flp-theme);
  color: var(--flp-white);
}

/* ===== Tabela DATA / LOCAL / BILHETES ===== */
.flp_exp_row-field.flp_exp_row-field--icon.flp_exp_row-field--spaced {font-size:0.9rem}
.flp_evd_info {
  border-top: 1px solid var(--flp-white);
  margin-top:50px;
}

.flp_evd_info-row {
  display: flex;
  gap: 24px;
  padding: 16px 0;
  border-bottom: 1px solid var(--flp-white);
}

.flp_evd_info-label {
  flex: 0 0 130px;
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-white);
  margin: 0;
}

.flp_evd_info-value {
  flex: 1;
  min-width: 0;
  font-family: var(--flp-mono);
  font-size: 0.85rem;
  line-height: 1.55;
  color: #fff;
  margin: 0;
  word-break: break-word;
}

.flp_evd_info-value, .flp_evd_info-value p {
  margin: 0 0 4px;
  text-transform: uppercase;
  font-weight: 700;
}

.flp_evd_info-value p:last-child {
  margin-bottom: 0;
}

.flp_evd_info-value strong {
  font-weight: 700;
}

/* ===== Accordion (TIMES / COMO RESERVAR / DESCONTOS / ACESSIBILIDADE) ===== */

.flp_evd_accordion-item {
  border-bottom: 1px solid var(--flp-border);
}

.flp_evd_accordion-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  background: none;
  border: none;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  padding: 18px 0;
  cursor: pointer;
  text-align: left;
}

.flp_evd_accordion-toggle:hover {
  opacity: 0.6;
}

.flp_evd_accordion-icon {
  font-size: 0.9rem;
  flex-shrink: 0;
  transition: transform 0.3s ease;
}

.flp_evd_accordion-toggle.is-open .flp_evd_accordion-icon {
  transform: rotate(45deg);
}

.flp_evd_accordion-body {
  font-family: var(--flp-mono);
  font-size: 0.9rem;
  line-height: 1.6;
  color: var(--flp-theme);
  opacity: 0.85;
  padding: 0 0 20px;
}

.flp_evd_accordion-body p {
  margin: 0 0 10px;
}

.flp_evd_accordion-body p:last-child {
  margin-bottom: 0;
}

/* ===== Botão de reserva ===== */

.flp_evd_book-btn {
  display: inline-block;
   background: var(--flp-white);
 color: var(--flp-theme); 

  border:1px solid  var(--flp-theme);

  border-radius: 4px;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  text-align: center;
  text-decoration: none;
  padding: 16px 32px;
  margin-top: 40px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
 
}



.flp_evd_book-btn:hover {
  background: var(--flp-theme);
  color: var(--flp-white);
}


.flp_evd_book-btn-white  {
  display: inline-block;
   background: transparent;
 color: var(--flp-white); 

  border:1px solid  var(--flp-white);

  border-radius: 0px;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  text-align: center;
  text-decoration: none;
  padding: 16px 32px;
  margin-top: 40px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
 
}

.flp_evd_book-btn-white:hover  {
   background:var(--flp-white);
 color: var(--flp-theme);


}





.flp_evd_book-btn-black {
  display: inline-block;
   background:var(--flp-theme);
 color: var(--flp-white); 

  border:1px solid  var(--flp-theme);

  border-radius: 0px;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  text-align: center;
  text-decoration: none;
  padding: 16px 32px;
  margin-top: 40px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
 
}

.flp_evd_book-btn-black:hover  {
   background:var(--flp-white);
 color: var(--flp-theme);


}

/* ===== Formulário de inscrição (mostra ao clicar em "Faça a sua inscrição") ===== */
.flp_evd_inscricao {
  margin-top: 24px;
  padding: 50px;
    background: var(--flp-bg-light);
}

.flp_evd_inscricao-form {
  border: none;
  padding: 0;
}

.flp_evd_inscricao-field {
  margin-bottom: 20px;
}

.flp_evd_inscricao-label {
  display: block;
  font-family: var(--flp-mono);
  font-weight: 500;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin-bottom: 8px;
}

.flp_evd_inscricao-input {
  width: 100%;
  background: transparent;
  border: 1px solid var(--flp-theme);
  border-radius: 0;
  padding: 12px 16px;
  color: var(--flp-theme);
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 0.9rem;
}

.flp_evd_inscricao-input::placeholder {
  color: var(--flp-theme);
  opacity: 1;
}

.flp_evd_inscricao-input:focus {
  outline: none;
  border: 1px solid #ff4900!important;
}

.flp_evd_inscricao-consent {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-bottom: 35px;
}

.flp_evd_inscricao-consent input[type="checkbox"] {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  margin-top: 2px;
  accent-color: var(--flp-theme);
  margin-right: 5px;
}

.flp_evd_inscricao-consent label {
      display: flex;
    align-items: baseline;
  font-family: var(--flp-mono);
  font-size: 0.85rem;
   position: relative;
}

.flp_evd_inscricao-consent label a {
  color: inherit;
  margin-left:3px;
  text-decoration: underline;
}




.flp_evd_inscricao-consent #consent-error.error {
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    margin: 0 0 20px;
    display: block;
}

.flp_evd_inscricao-submit {
  margin-top: 0;
  background: var(--flp-theme)!important;
  border:1px solid var(--flp-theme);
  color:var(--flp-white)!important;
  padding: 12px 32px;
  width:100%;
}


.flp_evd_inscricao-submit:hover {
  background: var(--flp-white)!important;
  color:var(--flp-theme)!important;
}


.flp_evd_exp-btn {
  display: block;
   background: var(--flp-white);
 color: var(--flp-theme); 

  border:1px solid  var(--flp-theme);

  border-radius: 4px;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  text-align: center;
  text-decoration: none;
  padding: 16px 32px;
  margin-top: 40px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
 
}

.flp_evd_exp-btn:hover {
  background: var(--flp-theme);
  color: var(--flp-white);
}

.botao-website-exp {
    display: flex;
    align-self: stretch;
    align-items: center;
    justify-content: center;
    gap: 10px;
    border: 1px solid var(--flp-theme);
    border-radius: 0px;
    color: var(--flp-theme);
    font-family: var(--flp-mono);
    font-weight: 700;
    font-size: 0.85rem;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    text-decoration: none;
    padding: 16px 32px;
    transition: background 0.3s, color 0.3s;
    width:100%;
}

.botao-website-exp:hover {
  background: var(--flp-theme);
  color: var(--flp-white);
}

/* Botão "Localização na Feira" (bloco do mapa, sobre fundo escuro, na
   página do expositor): classe própria, para não mexer em
   .flp_map-banner-btn (partilhada com os blocos do mapa da feira noutras
   páginas, onde o botão fica centrado em vez de esticar de fora a fora). */
.botao-localizacao-exp {
  display: flex;
  align-self: stretch;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 1px solid var(--flp-white);
  border-radius: 0px;
  color: var(--flp-white);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  text-decoration: none;
  padding: 16px 32px;
  width: 100%;
  transition: background 0.3s, color 0.3s;
}

.botao-localizacao-exp:hover {
  background: var(--flp-white);
  color: var(--flp-gray-dark);
}

.flp_evd_exp2-btn {
  display: block;
   background: transparent;
 color: var(--flp-white); 

  border:1px solid  var(--flp-white);

  border-radius: 4px;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  text-align: center;
  text-decoration: none;
  padding: 16px 32px;
  margin-top: 40px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
  width:100%
 
}

.flp_evd_exp2-btn:hover {
  background: var(--flp-white);
  color: var(--flp-theme);
}


.flp_evd_card {padding-top:20px;}


/* ===== Nota de acessibilidade / idade ===== */

.flp_evd_note {
  font-family: var(--flp-mono);
  font-size: 0.8rem;
  line-height: 1.6;
  color: var(--flp-theme);
  opacity: 0.7;
  margin: 18px 0 0;
}

/* ===== Badges (AD / RELAXADO / CAPACIDADE REDUZIDA / acessível) ===== */

.flp_evd_badges {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-top: 18px;
}

.flp_evd_badge {
  border: 1.5px solid var(--flp-border);
  border-radius: 4px;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.72rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  padding: 6px 12px;
}

/* Texto que fica diretamente sobre o fundo azul da coluna direita (não
   os cartões brancos da ficha técnica, esses mantêm o texto escuro)
   passa a branco */
.flp_evd_col-right .flp_exp_info-presentation-title {
  color:  var(--flp-white);
}

.flp_evd_col-right .flp_exp_contact-item,
.flp_evd_col-right .flp_exp_contact-item a {
  color: var(--flp-white);
}

.flp_evd_col-right .flp_exp_contact-icon {
  background: rgba(255, 255, 255, 0.18);
  color: var(--flp-white);
}

.flp_evd_badge-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.3rem;
  color: var(--flp-theme);
}

/* ===== Coluna direita: sinopse ===== */

.flp_evd_col-right {
  display: flex;
  flex-direction: column;
  padding:80px 50px;
  background:var(--flp-theme);
}



/* ===== Bloco de informação do expositor (PAGINA-expositores-detalhe) ===== */

.flp_exp_info-name {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 40px;
  line-height: 1.2;
  letter-spacing: 0.3px;
  color: var(--flp-white);
  margin: 0 0 24px;
  padding-bottom: 24px;
  text-transform: uppercase;
}

.flp_exp_info-presentation-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 36px;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-white);
  margin: 50px 0 25px;
}

.coluna-contact-exp .flp_evd_info {margin:0;  border-color:var(--flp-theme)}

.coluna-contact-exp .flp_evd_info-label {color:var(--flp-theme); flex: 0 0 160px;}

.coluna-contact-exp .flp_evd_info-value {color:var(--flp-theme)}
.coluna-contact-exp .flp_evd_info-row {border-bottom: 1px solid var(--flp-theme);}

.coluna-contact-exp .flp_exp_info-presentation-title  {color:var(--flp-theme); font-weight: normal; font-size:1.2rem; margin:20px 0 15px}

.coluna-contact-exp .flp_exp_contacts-rows {border-top: 0; margin-top: 0;}
.coluna-contact-exp .flp_exp_contacts-rows .flp_evd_info-row {border-bottom: 0;}



.flp_exp_apres .coluna-info-exp {padding-right:50px;}

 .coluna-contact-exp {padding:80px 50px; display:flex; flex-direction:column;}

.coluna-contact-exp .flp_exp_info-contacts {display:none; flex-direction:column; flex:1;}

.flp_exp_info-presentation p {
  font-family: var(--flp-mono);
  line-height: 1.7;
  color: var(--flp-white);
  opacity: 0.85;
  margin: 0;
}

/* ===== Ficha técnica: cartões com ícone ===== */

.flp_exp_facts {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}

.flp_exp_fact {
  border: 1px solid var(--flp-white);
  border-radius: 4px;
  padding: 20px;
}

.flp_exp_fact-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--flp-bg-light);
  color: var(--flp-theme);
  font-size: 1.05rem;
  margin-bottom: 14px;
}

.flp_exp_fact-label {
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 0.7rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-white);
  opacity: 1;
  margin: 0 0 6px;
}

.flp_exp_fact-value {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.95rem;
  text-transform: uppercase;
  color: var(--flp-white);
  margin: 0;
}

/* ===== Contactos do expositor ===== */


.flp_exp_contact-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin: 0;
  padding: 0;
}

.flp_exp_contact-item {
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: var(--flp-mono);
  font-size: 0.95rem;
  color: var(--flp-theme);
}

.flp_exp_contact-item a {
  color:var(--flp-theme);
  text-decoration: none;
}

.flp_exp_contact-item a:hover {
  text-decoration: underline;
}

.flp_exp_contact-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--flp-bg-light);
  color: var(--flp-theme);
  font-size: 1.05rem;
}

.flp_exp_info-contacts-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: auto;
  padding-top: 30px;
}

/* ===== Pesquisa dos filtros de expositores (apenas visual) ===== */

.flp_exp_search-group {
  
  margin-bottom: 0px;
}

.flp_exp_search {
  display: flex;
  align-items: stretch;
  width: 100%;
  height: 48px;
  border: 1px solid var(--flp-border);
  border-radius: 4px;
  overflow: hidden;
}

.flp_exp_search-input {
  flex: 1;
  min-width: 0;
  background: transparent;
  border: none;
  outline: none;
  padding: 0 16px;
  font-family: var(--flp-mono);
  font-size: 0.9rem;
  color: var(--flp-theme);
}

.flp_exp_search-input::placeholder {
  color: var(--flp-theme);
  opacity: 0.5;
}

.flp_exp_search-btn {
  flex-shrink: 0;
  width: 48px;
  background: transparent;
  border: none;
  border-left: 1px solid var(--flp-border);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--flp-theme);
  font-size: 1rem;
  cursor: pointer;
  transition: opacity 0.3s;
}

.flp_exp_search-btn:hover {
  opacity: 0.6;
}

/* ===== Select com a listagem de expositores ===== */

.flp_exp_select-group {
  padding: 20px 0 0;
}

.flp_exp_select {
  width: 100%;
  height: 48px;
  background: var(--flp-white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23111111' d='M4 6l4 4 4-4z'/%3E%3C/svg%3E") no-repeat right 16px center;
  background-size: 12px;
  border: 1px solid var(--flp-border);
  border-radius: 4px;
  padding: 0 40px 0 16px;
  font-family: var(--flp-mono);
  font-size: 0.9rem;
  color: var(--flp-theme);
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
}

.flp_exp_select:focus {
  outline: none;
  border-color: var(--flp-theme);
}

/* ===== Filtros do expositor (dentro do flp_evd_accordion) ===== */

.flp_exp_filter-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.flp_exp_filter-item {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--flp-mono);
  font-size: 0.9rem;
  color: var(--flp-theme);
  cursor: pointer;
}

.flp_exp_filter-item input[type="checkbox"] {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  accent-color: var(--flp-theme);
  cursor: pointer;
}

/* Filtros "presos": acompanham o scroll dentro da row e libertam-se
   assim que se atinge o fundo da mesma (comportamento nativo do
   position: sticky dentro de um flex item em align-items: stretch) */
@media (min-width: 992px) {

  .flp_exp_filters-col {
    position: sticky;
    /* 85px = altura do header fixo (.flp_header-inner min-height 84px + borda 1px) + 24px de respiro */
    top: 109px;
    align-self: flex-start;
    max-height: calc(100vh - 133px);
    overflow-y: auto;
  }
}

/* ===== Grelha de expositores (PAGINA-expositores) ===== */

.flp_exp_grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px 24px;
}

.flp_exp_grid-item {
  display: block;
  text-decoration: none;
  color: var(--flp-theme);
}

.flp_exp_grid-media {
  position: relative;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: #eeeeee;
}

.flp_exp_grid-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}

.flp_exp_grid-item:hover .flp_exp_grid-media img {
  transform: scale(1.08);
}

.flp_exp_grid-name {
  display: block;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1.1rem;
  letter-spacing: 0.3px;
  line-height: 1.4;
  color: var(--flp-theme);
  margin-top: 12px;
}

.flp_exp_grid-item:hover .flp_exp_grid-name {
  text-decoration: underline;
}

.flp_exp_grid-item.is-hidden {
  display: none;
}

.flp_exp_grid-more {
  display: flex;
  justify-content: center;
  padding-top: 40px;
}

/* ===== Listagem de expositores (PAGINA-expositores) ===== */

.flp_exp_list {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--flp-border);
}

.flp_exp_list-item {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 22px 4px;
  text-decoration: none;
  color: var(--flp-theme);
  border-bottom: 1px solid var(--flp-border);
  transition: opacity 0.3s;
}

.flp_exp_list-item.is-hidden {
  display: none;
}

.flp_exp_list-item:hover {
  opacity: 0.65;
}

.flp_exp_list-name {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1.1rem;
  letter-spacing: 0.3px;
  line-height: 1.4;
  flex: 1 1 auto;
  min-width: 0;
}

.flp_exp_list-item:hover .flp_exp_list-name {
  text-decoration: underline;
}

.flp_exp_list-attrs {
  display: flex;
  gap: 32px;
  flex: 0 0 auto;
}

.flp_exp_list-attr {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.flp_exp_list-attr-label {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.68rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  opacity: 0.6;
}

.flp_exp_list-attr-value {
  font-family: var(--flp-mono);
  font-size: 0.85rem;
  color: var(--flp-theme);
}

.flp_exp_list-arrow {
  flex: 0 0 auto;
  font-size: 1.1rem;
  opacity: 0.5;
  transition: transform 0.3s, opacity 0.3s;
}

.flp_exp_list-item:hover .flp_exp_list-arrow {
  opacity: 1;
  transform: translateX(4px);
}

@media (max-width: 767.98px) {
  .flp_exp_list-item {
    flex-wrap: wrap;
    gap: 8px 20px;
  }

  .flp_exp_list-arrow {
    display: none;
  }
}

/* ===== Sinopse (título + texto, coluna direita) ===== */

.flp_evd_synopsis-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1.2rem;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  color: var(--flp-white);
  margin: 4px 0 24px;
}

.flp_evd_synopsis-text {
  font-family: var(--flp-mono);
  font-size: 1rem;
  line-height: 1.7;
  color: var(--flp-white);
  opacity: 1;
  margin: 0;
  max-width: 520px;
}

/* ===================== RESPONSIVO ===================== */

@media (max-width: 991.98px) {
    .flp_evd_card .flp_gallery-info-title {
  font-size: 26px;
}
    .coluna-contact-exp {padding:60px 30px;}
      .flp_evd_hero-section .flp_evd_card {padding:0px;}

    .botao-website-exp {font-size: 0.85rem; padding:13px 42px;}
    .botao-localizacao-exp {font-size: 0.85rem; padding:13px 42px;}
 /* .flp_evd_hero-section .flp_evd_card {padding:60px 30px 60px}*/

  .flp_evd_inner {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_evd_title {
    font-size: 32px;
  }

  .flp_evd_col-left {
    padding-bottom: 40px;
  }

  .flp_evd_col-right {
    padding: 0px 30px 60px;
    min-height: 260px;
  }

  .flp_exp_info-name {
    font-size: 2rem;
    margin:0;
  }

  .flp_exp_facts {
    grid-template-columns: 1fr;
  }

  .flp_exp_grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 24px 16px;
  }
}

@media (max-width: 575.98px) {
  .flp_evd_title {
    font-size: 26px;
  }

  .flp_exp_grid {
    grid-template-columns: 1fr;
  }
}


/* ═══════════════════════════════════════════════════════════════════════
   3. PROGRAMAÇÃO (LISTAGEM DE EVENTOS COM FILTROS)
      (antigo ficheiro: eventos.css)
   ═══════════════════════════════════════════════════════════════════════ */

/* ============================================================
   VARIABLES & RESET
   ============================================================ */
:root {
  --sidebar-bg:   var(--flp-theme);
  --sidebar-line: rgba(255,255,255,0.3);
  --content-bg:   #f0f0f0;
  --date-bg:      var(--flp-gray);
  --col2-bg:      var(--flp-gray-dark);
  --col3-bg:      var(--flp-gray);
  --white:        #ffffff;
  --white-70:     rgba(255,255,255,0.70);
  --white-50:     rgba(255,255,255,0.50);
  --free-badge-bg:    #ffffff;
  --free-badge-text:  var(--flp-theme);
  --sidebar-width: 320px;
}

*, *::before, *::after { box-sizing: border-box; }

/* ============================================================
   LAYOUT
   (font-family/background/color aqui em vez de "body" para não
   afetar o resto do site — PAGINA-programacao.html usa 2 CSS)
   ============================================================ */
.flp_ev_page-wrapper {
  display: flex;
  min-height: 100vh;
  font-family: Regular, Arial, sans-serif;
  background: var(--content-bg);
  color: var(--white);
}

/* ===== SIDEBAR (desktop filter panel / mobile Refine overlay) ===== */
.flp_ev_sidebar {
  width: 33.3333%;
  flex: 0 0 33.3333%;
  background: #4f4fff;
  padding: 0 0 40px 0;
  position: sticky;
  /* 85px = altura do header fixo (.flp_header-inner min-height 84px + borda 1px) */
  top: 85px;
  height: calc(100vh - 85px);
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.3) transparent;
}

.flp_ev_sidebar::-webkit-scrollbar { width: 4px; }
.flp_ev_sidebar::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.3); border-radius: 4px; }

/* Título da página, dentro da primeira coluna (apenas desktop) */
.flp_ev_sidebar-page-title {
  font-family: Regular, Arial, sans-serif;
  font-weight: 700;
  font-size: 40px;
  line-height: 1;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--white);
  margin: 0;
  padding: 80px 40px 30px 50px;
}

/* Mobile-only header inside the sidebar — hidden on desktop */
.flp_ev_sidebar-mobile-header { display: none; }

/* ===== EVENTS AREA ===== */
.flp_ev_events-area {
  flex: 1 1 66.6667%;
  background: linear-gradient(to right, #15a4a5 50%, #eae0de 50%);
  min-width: 0;
  padding-top: 142px;
}

@media (min-width: 1400px) {
	.flp_ev_events-area {padding-top: 150px;}
}


/* Mobile-only top bar — hidden on desktop */
.flp_ev_mobile-topbar { display: none; }

/* ============================================================
   SEARCH (apenas visual — mesmo padrão da pesquisa na index.html,
   com as cores da sidebar deste widget)
   ============================================================ */
.flp_ev_search-group {
  position: relative;
  padding: 20px 40px 20px 50px;
}

.flp_ev_search-group::before {
  content: '';
  position: absolute;
  left: 50px;
  right: 40px;
  top: 0;
  height: 1px;
  background: #ffffff;
}

.flp_ev_search-group::after {
  content: '';
  position: absolute;
  left: 50px;
  right: 40px;
  bottom: 0;
  height: 1px;
  background: #ffffff;
}

.flp_ev_search {
  display: flex;
  align-items: stretch;
  width: 100%;
  height: 48px;
  background: var(--white);
  border-radius: 0px;
  overflow: hidden;
}

.flp_ev_search-form {
  display: flex;
  align-items: stretch;
  width: 100%;
}

.flp_ev_search-input {
  flex: 1;
  min-width: 0;
  background: transparent;
  border: none;
  outline: none;
  padding: 0 16px;
  font-family: Arial, sans-serif;
  font-weight: normal;
  font-size: 0.684rem;
  color: var(--sidebar-bg);
  text-transform: uppercase;
}

.flp_ev_search-input::placeholder {
  color: var(--sidebar-bg);
  opacity: 0.6;
}

.flp_ev_search-btn {
  flex-shrink: 0;
  width: 48px;
  background: var(--white);
  border: none;
  border-left: 1px solid var(--flp-theme);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--sidebar-bg);
  font-size: 0.756rem;
  cursor: pointer;
}

.flp_ev_search-icon {
  width: 16px;
  height: 16px;
  display: block;
}

/* ============================================================
   FILTER GROUPS / ACCORDION
   ============================================================ */
.flp_ev_filter-group {
  position: relative;
}

.flp_ev_filter-group::after {
  content: '';
  position: absolute;
  left: 50px;
  right: 40px;
  bottom: 0;
  height: 1px;
  background: #ffffff;
}

.flp_ev_filter-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  background: transparent;
  border: none;
  color: var(--white);
  font-size: 1.08rem;
  font-weight: normal;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  padding: 15px 40px 15px 50px;
  cursor: pointer;
  text-align: left;
  transition: background 0.3s;
}

.flp_ev_filter-header span:first-child {
  position: relative;
  display: inline-block;
}

.flp_ev_filter-header span:first-child::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0px;
  width: 0;
  height: 1px;
  background: var(--white);
  transition: width 0.3s ease;
}

.flp_ev_filter-header:hover span:first-child::after {
  width: 100%;
}

.flp_ev_toggle-icon {
  font-size: 1.2rem;
  flex-shrink: 0;
  display: inline-block;
  transition: transform 0.3s;
}

.flp_ev_filter-header:hover .flp_ev_toggle-icon {
  transform: scale(1.25);
}

#flp_ev_filter-date-group .flp_ev_filter-header:hover .flp_ev_toggle-icon {
  transform: none;
}

/* Filter body (collapsed by default) */
.flp_ev_filter-body {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s ease;
}

.flp_ev_filter-body.flp_ev_open {
  max-height: 600px;
  overflow-y: auto;
}

/* ============================================================
   RADIO / CHECKBOX LISTS
   ============================================================ */
.flp_ev_radio-list {
  padding: 4px 40px 16px 50px;
}

/* Local: mostra ~8 itens e faz scroll interno, para o dropdown
   "Expositores" (que fica fora desta lista) estar sempre visível
   por baixo, independentemente de quantos locais existirem */
.flp_ev_radio-list--scroll {
 /* max-height: 280px;*/
  overflow-y: auto;
}

.flp_ev_radio-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 7px 0;
  cursor: pointer;
  color: var(--white);
  font-size: 0.8208rem;
  font-weight: normal;
  text-transform: uppercase;
  user-select: none;
}

.flp_ev_radio-item input[type="radio"] {
  appearance: none;
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  border: 2px solid var(--white);
  border-radius: 50%;
  flex-shrink: 0;
  cursor: pointer;
  position: relative;
  transition: border-color 0.3s;
}

.flp_ev_radio-item input[type="radio"]:checked {
  border-color: var(--white);
  background: transparent;
}

.flp_ev_radio-item input[type="radio"]:checked::after {
  content: '';
  display: block;
  width: 9px;
  height: 9px;
  background: var(--white);
  border-radius: 50%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

/* Expositores dropdown (collapsed by default, opens like a select) */
.flp_ev_dropdown {
  padding: 0px 40px 16px 50px;
}

.flp_ev_dropdown-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  background: transparent;
  border: 1px solid var(--white);
  border-radius: 0;
  color: var(--white);
  font-family: Regular, Arial, sans-serif;
  font-weight: normal;
  font-size: 0.756rem;
  text-transform: uppercase;
  padding: 10px 14px;
  cursor: pointer;
  transition: border-color 0.3s;
}

.flp_ev_dropdown-toggle:hover,
.flp_ev_dropdown-toggle:focus {
  border-color: var(--white);
  outline: none;
}

.flp_ev_dropdown-toggle i {
  font-size: 0.7rem;
  transition: transform 0.3s;
}

.flp_ev_dropdown-toggle[aria-expanded="true"] i {
  transform: rotate(180deg);
}

.flp_ev_dropdown-panel {
  display: none;
  /*max-height: 260px;*/
  overflow-y: auto;
  padding-top: 4px;
}

.flp_ev_dropdown-panel.flp_ev_open {
  display: block;
}

.flp_ev_dropdown-panel .flp_ev_checkbox-item {
  padding: 6px 0;
}

/* Free Events checkbox */
.flp_ev_free-events-group {
  padding: 15px 40px 15px 50px;
}

.flp_ev_free-events-group--no-line::after {
  display: none;
}

.flp_ev_checkbox-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 7px 0;
  cursor: pointer;
  color: var(--white);
  font-size: 0.8208rem;
  font-weight: normal;
  text-transform: uppercase;
  user-select: none;
}

.flp_ev_event-thumb.img-infantojuvenil {display:none}
.flp-191-page .flp_ev_event-thumb.img-infantojuvenil {display:block}
.flp-191-page .flp_ev_event-thumb.img-programacao {display:none}

.flp-191-page .flp_ev_events-area{background: linear-gradient(to right, #ff4902 50%, #019e3d 50%);}

.flp-191-page .flp_ev_no-results{background:#ff4902;}

.flp-191-page .flp_ev_event-date-group{background: linear-gradient(to right, #ff4902 50%, #019e3d 50%);}

.flp-191-page .flp_exl_show-more-wrap {background:#ff4902;}


/* Sub-filters (e.g. Infantojuvenil), shown only when the parent option is checked */
.flp_ev_subfilter-list {
  display: none;
  padding-left: 20px;
}

.flp_ev_subfilter-list.flp_ev_open {
  display: block;
}

.flp_ev_subfilter-list .flp_ev_checkbox-item {
  font-size: 0.7rem;
}

/* Clear filters (desktop only) */
.flp_ev_clear-filters-group {
  position: relative;
  padding: 16px 40px 16px 50px;
}

.flp_ev_clear-filters-group::before {
  content: '';
  position: absolute;
  left: 50px;
  right: 40px;
  top: 0;
  height: 1px;
  background: #ffffff;
}

.flp_ev_clear-filters-btn {
  background: transparent;
  border: none;
  color: var(--white);
  font-size: 0.612rem;
  font-weight: normal;
  text-transform: uppercase;
  text-decoration: underline;
  cursor: pointer;
  padding: 0;
}

.flp_ev_checkbox-item input[type="checkbox"],
.flp_ev_checkbox-item input[type="radio"] {
  appearance: none;
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  border: 2px solid var(--white);
  border-radius: 50%;
  flex-shrink: 0;
  cursor: pointer;
  position: relative;
  transition: border-color 0.3s;
}

.flp_ev_checkbox-item input[type="checkbox"]:checked,
.flp_ev_checkbox-item input[type="radio"]:checked {
  border-color: var(--white);
  background: transparent;
}

.flp_ev_checkbox-item input[type="checkbox"]:checked::after,
.flp_ev_checkbox-item input[type="radio"]:checked::after {
  content: '';
  display: block;
  width: 9px;
  height: 9px;
  background: var(--white);
  border-radius: 50%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

/* ============================================================
   CALENDAR WIDGET (desktop mini calendar)
   ============================================================ */
.flp_ev_calendar-widget {
  padding: 8px 40px 20px 50px;
}

.flp_ev_cal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}

.flp_ev_cal-header button {
  background: transparent;
  border: none;
  color: var(--white);
  font-size: 0.864rem;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 4px;
  transition: background 0.3s;
}

.flp_ev_cal-header button:hover { background: rgba(255,255,255,0.15); }

#flp_ev_cal-month-label {
  font-weight: 700;
  font-size: 0.98496rem;
  letter-spacing: 0.03em;
}

.flp_ev_cal-day-names {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
  margin-bottom: 4px;
}

.flp_ev_cal-day-names span {
  text-align: center;
  font-size: 0.7776rem;
  color: var(--white-70);
  font-weight: normal;
  padding: 4px 0;
}

.flp_ev_cal-days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}

/* Shared day-cell style, reused by the desktop mini calendar
   and the mobile full-screen calendar */
.flp_ev_cal-day {
  text-align: center;
  padding: 5px 2px;
  font-size: 0.84672rem;
  cursor: pointer;
  border-radius: 0px;
  color: var(--white);
  transition: background 0.3s;
  user-select: none;
}

.flp_ev_cal-day:hover { background: rgba(255,255,255,0.2); }

.flp_ev_cal-day.flp_ev_empty { cursor: default; }
.flp_ev_cal-day.flp_ev_empty:hover { background: transparent; }

.flp_ev_cal-day.flp_ev_today { font-weight: 700; border:1px solid var(--flp-white);  color:var(--flp-white)}

.flp_ev_cal-day.flp_ev_selected {
  background: var(--white);
  color: var(--sidebar-bg);
  font-weight: 700;
}

.flp_ev_cal-day.flp_ev_other-month { color: var(--white-50); }

.flp_ev_cal-day.flp_ev_has-event::after {
  content: '•';
  display: block;
  font-size: 0.5184rem;
  color: rgba(255,255,255,0.8);
  line-height: 1;
}

/* ============================================================
   CALENDAR WIDGET (client's jQuery UI datepicker, #plk_event_calendar)
   Reskin only — a mesma marcação gerada pelo sistema do cliente,
   estilizada para reproduzir o desenho do .flp_ev_calendar-widget acima.
   ============================================================ */
#plk_event_calendar {
  padding: 8px 40px 20px 50px;
}

#plk_event_calendar .ui-datepicker-inline {
  background: transparent;
  border: none;
  box-shadow: none;
  border-radius: 0;
  width: auto;
  font-family: inherit;
}

#plk_event_calendar .ui-datepicker-header {
  background: transparent;
  border: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
  padding: 0;
}

#plk_event_calendar .ui-datepicker-prev,
#plk_event_calendar .ui-datepicker-next {
  position: static;
  width: auto;
  height: auto;
  background: transparent;
  border: none;
  color: var(--white);
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 4px;
  transition: background 0.3s;
}

#plk_event_calendar .ui-datepicker-prev { order: 1; }
#plk_event_calendar .ui-datepicker-title { order: 2; }
#plk_event_calendar .ui-datepicker-next { order: 3; }

#plk_event_calendar .ui-datepicker-prev:hover,
#plk_event_calendar .ui-datepicker-next:hover {
  background: rgba(255,255,255,0.15);
}

#plk_event_calendar .ui-datepicker-prev.ui-state-disabled,
#plk_event_calendar .ui-datepicker-next.ui-state-disabled {
  opacity: 0.3;
  cursor: default;
  pointer-events: none;
}

#plk_event_calendar .ui-datepicker-prev .ui-icon,
#plk_event_calendar .ui-datepicker-next .ui-icon {
  display: inline-block;
  font-size: 0;
  background: none;
}

#plk_event_calendar .ui-datepicker-prev .ui-icon::before,
#plk_event_calendar .ui-datepicker-next .ui-icon::before {
  font-size: 0.864rem;
  font-family: "bootstrap-icons" !important;
  font-weight: 400 !important;
  font-style: normal;
}

#plk_event_calendar .ui-datepicker-prev .ui-icon::before { content: '\f284'; }
#plk_event_calendar .ui-datepicker-next .ui-icon::before { content: '\f285'; }

#plk_event_calendar .ui-datepicker-title {
  font-weight: 700;
  font-size: 0.98496rem;
  letter-spacing: 0.03em;
  color: var(--white);
}

#plk_event_calendar .ui-datepicker-calendar {
  width: 100%;
  border-collapse: separate;
  border-spacing: 2px;
  table-layout: fixed;
}

#plk_event_calendar .ui-datepicker-calendar thead th {
  border: none;
  padding: 4px 0;
  text-align: center;
  font-weight: normal;
}

#plk_event_calendar .ui-datepicker-calendar thead th span {
  font-size: 0.7776rem;
  color: var(--white-70);
}

#plk_event_calendar .ui-datepicker-calendar tbody td {
  border: none;
  padding: 5px 2px;
  text-align: center;
  font-size: 0.84672rem;
  color: var(--white);
  cursor: default;
}

#plk_event_calendar .ui-datepicker-calendar tbody td a {
  display: block;
  margin: -5px -2px;
  padding: 5px 2px;
  color: inherit;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.3s;
  user-select: none;
}

#plk_event_calendar .ui-datepicker-calendar tbody td a:hover,
#plk_event_calendar .ui-datepicker-calendar tbody td a.ui-state-hover,
#plk_event_calendar .ui-datepicker-calendar tbody td.ui-datepicker-days-cell-over {
  background: rgba(255,255,255,0.2);
}

#plk_event_calendar .ui-datepicker-calendar tbody td.ui-datepicker-other-month,
#plk_event_calendar .ui-datepicker-calendar tbody td.ui-state-disabled {
  color: var(--white-50);
}

#plk_event_calendar .ui-datepicker-calendar tbody td.ui-datepicker-today a,
#plk_event_calendar .ui-datepicker-calendar tbody td.ui-datepicker-current-day a {
  font-weight: 700;
  border: 1px solid var(--flp-white);
}

#plk_event_calendar .ui-datepicker-calendar tbody td a.ui-state-active {
  background: var(--white);
  color: var(--sidebar-bg);
  font-weight: 700;
  border-color: transparent;
}

/* ============================================================
   EVENTS LIST
   Each date-group has its background split 50/50 (olive | lavender)
   via a gradient; every event row is made of a left cell (col-left,
   date label + thumbnail) and right cell (col-right, text info) so
   the date stays aligned with the image and text of its first event.
   ============================================================ */
.flp_ev_event-date-group {
  position: relative;
  background: linear-gradient(to right, #15a4a5 50%, #eae0de 50%);
}


.listagem-expositores .flp_ev_event-date-group {
  position: relative;
  background: linear-gradient(to right, var(--exl-col2-bg) 50%, var(--exl-col3-bg) 50%);
}


.listagem-expositores .flp_exl_no-results {color:white}

.flp_ev_event-date-group::after {
  content: '';
  position: absolute;
  left: 40px;
  right: 50px;
  bottom: 0;
  height: 1px;
  background: #ffffff;
}

#flp_ev_events-list {
  position: relative;
}

/* Só o 1º bloco (carregamento inicial) leva a linha no topo: o "ver
   mais" anexa mais divs com este mesmo id dentro de #plk_event_list,
   e esses não devem repetir a linha. */
#plk_event_list > #flp_ev_events-list:first-child::before {
  display: block;
  content: '';
  position: absolute;
  left: 40px;
  right: 50px;
  top: 0;
  height: 1px;
  background: #ffffff;
  z-index: 1;
}

.flp_ev_col-left {
  flex: 0 0 50%;
  max-width: 50%;
}

.flp_ev_col-right {
  flex: 0 0 50%;
  max-width: 50%;
  min-width: 0;
}

.flp_ev_event-date-label {
  display: block;
  flex-shrink: 0;
  margin-right: auto;
  font-size: 3rem;
  font-weight: normal;
  line-height: 1.1;
  color: var(--white);
  letter-spacing: 0.2px;
  text-transform: uppercase;
  white-space: nowrap;
}

/* O sistema do cliente repete esta etiqueta (data + hora) em TODAS as
   linhas dentro de .flp_ev_col-left, e ainda manda uma separada
   ("record_day", irmã direta de .flp_ev_event-date-group, com só a
   data) antes da 1ª linha de cada dia. Para manter a nossa lógica
   original — mostrar a data só na 1ª linha do dia, sem separar o
   layout 50/50 de cada linha — escondemos a etiqueta "record_day"
   (não precisamos dela para o visual) e a etiqueta de dentro da linha
   por defeito; usamos o combinador de irmão adjacente só para voltar
   a mostrar a etiqueta da linha que vem logo a seguir a um
   "record_day", i.e. a 1ª linha do dia. */
.flp_ev_event-date-group > .flp_ev_event-date-label {
  display: none;
}

.flp_ev_event-row .flp_ev_col-left .flp_ev_event-date-label {
  display: none;
}

.flp_ev_event-date-label + .flp_ev_event-row .flp_ev_col-left .flp_ev_event-date-label {
  display: block;
}

/* A etiqueta da linha traz data+hora (<strong>+<span>); a hora já
   aparece em separado em .flp_ev_event-time, por isso escondemos aqui
   só o span da hora, mantendo o <strong> com a data. */
.flp_ev_event-date-label + .flp_ev_event-row .flp_ev_col-left .flp_ev_event-date-label > span {
  display: none;
}

/* Single event row */
.flp_ev_event-row {
  position: relative;
  display: flex;
  align-items: flex-start;
  transition: background 0.3s;
  cursor: pointer;
  text-decoration: none;
  color: inherit;
}

.flp_ev_event-row::after {
  content: '';
  position: absolute;
  left: calc(50% - 200px);
  right: 50px;
  bottom: 0;
  height: 1px;
  background: var(--flp-white);
}


.flp-191-page .flp_ev_event-row::after { background: var(--flp-white);}

.flp_ev_event-row:last-child::after { display: none; }
.flp_ev_event-row:hover .flp_ev_event-arrow { opacity: 1; transform: translateX(0); }

.flp_ev_event-row .flp_ev_col-left { padding: 30px 40px; display: flex; align-items: center; justify-content: flex-end; gap: 20px; }
.flp_ev_event-row .flp_ev_col-right { padding: 30px 50px 30px 40px; display: flex; align-items: center; min-width: 0; }

/* Thumbnail */
.flp_ev_event-thumb-wrap {
  position: relative;
  display: block;
  width: 160px;
  flex-shrink: 0;
}

.flp_ev_event-thumb {
  width: 160px;
  height: 107px;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  display: block;
  background: rgba(255,255,255,0.15);
}

.flp_ev_free-badge {
  position: absolute;
  display: inline-block;
  width: fit-content;
  max-width: calc(100% - 10px);
  top: 5px;
  left: 5px;
  background: var(--flp-theme);
  color: #ffffff;
  font-size: 10px;
  font-weight: normal;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  padding: 5px 8px;
}

/* Event info */
.flp_ev_event-info { flex: 1; min-width: 0; }

.flp_ev_event-title {
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--flp-theme);
  margin-bottom: 4px;
  line-height: 1.35;
  text-transform: uppercase;
}

.flp-191-page .flp_ev_event-title {color:var(--flp-white)}

.flp_ev_event-title span {
  background-image: linear-gradient(var(--flp-theme),var(--flp-theme));
  background-repeat: no-repeat;
  background-position: left bottom;
  background-size: 0% 1px;
  padding-bottom: 0px;
  transition: background-size 0.3s ease;
}


.flp-191-page .flp_ev_event-title span {
  background-image: linear-gradient(var(--flp-white),var(--flp-white));
}

.flp_ev_event-row:hover .flp_ev_event-title span {
  background-size: 100% 1px;
}

.flp_ev_event-time {
  font-size: 1.1rem;
  color:var(--flp-theme);
  margin-bottom: 2px;
}

.flp-191-page .flp_ev_event-time {color:var(--flp-white)}

.flp_ev_event-type {
  font-size: 0.9rem;
  line-height: 1.3;
  color:var(--flp-theme);
  margin-bottom: 4px;
  text-transform: uppercase;
}

.flp-191-page .flp_ev_event-type  {color:var(--flp-white)}

.flp_ev_event-type::after {
  content: "";
  display: inline-block;
  vertical-align: middle;
  margin-left: 6px;
  width: 1em;
  height: 1.4em;
  background-color:var(--flp-theme);
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 24C145 24 72 105 72 206C72 332 256 488 256 488C256 488 440 332 440 206C440 105 367 24 256 24Z M256 70C339 70 394 130 394 206C394 288 299 394 256 439C213 394 118 288 118 206C118 130 173 70 256 70Z'/%3E%3Cpath d='M256 134A78 78 0 1 0 256 290A78 78 0 1 0 256 134Z M256 178A34 34 0 1 1 256 246A34 34 0 1 1 256 178Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 24C145 24 72 105 72 206C72 332 256 488 256 488C256 488 440 332 440 206C440 105 367 24 256 24Z M256 70C339 70 394 130 394 206C394 288 299 394 256 439C213 394 118 288 118 206C118 130 173 70 256 70Z'/%3E%3Cpath d='M256 134A78 78 0 1 0 256 290A78 78 0 1 0 256 134Z M256 178A34 34 0 1 1 256 246A34 34 0 1 1 256 178Z'/%3E%3C/svg%3E");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}

.flp-191-page .flp_ev_event-type::after {background-color: #fff;}

.flp_ev_event-type:empty::after {display: none;}

/* Arrow shown on hover, pushed to the right edge */
.flp_ev_event-arrow {
  margin-left: auto;
  padding-left: 16px;
  font-size: 1.3rem;
  line-height: 1;
  color: #000000;
  opacity: 0;
  flex-shrink: 0;
  transform: translateX(-4px);
  transition: opacity 0.3s, transform 0.3s;
}

.flp-191-page .flp_ev_event-arrow {color:#fff}


.flp-191-page .flp_ev_event-type::after {background-color:#fff}

/* No results */
.flp_ev_no-results {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  width: 50%;
  background: #15a4a5;
  padding: 60px 40px;
  font-size: 1.8rem;
  font-weight: normal;
  color: #ffffff;
}

/* ============================================================
   SHOW MORE
   ============================================================ */
.flp_ev_show-more-wrap {
  display: flex;
  justify-content: center;
  width: 50%;
  background: var(--col2-bg);
  padding: 40px 20px;
}

.flp_ev_show-more-btn {
  background: transparent;
  border: 1.5px solid var(--white);
  color: var(--white);
  font-size: 0.95rem;
  font-weight: normal;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  padding: 13px 42px;
  border-radius: 0px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s, border-color 0.3s;
}

.flp_ev_show-more-btn:hover {
  background: var(--white);
  border-color: var(--white);
  color: var(--flp-theme);
}

/* ============================================================
   MOBILE FULL-SCREEN "PICK A DATE" OVERLAY
   ============================================================ */
.flp_ev_date-overlay {
  position: fixed;
  inset: 0;
  background: var(--flp-theme);
  z-index: 1060;
  display: flex;
  flex-direction: column;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

.flp_ev_date-overlay.flp_ev_open {
  opacity: 1;
  pointer-events: auto;
}

.flp_ev_date-overlay-header {
  display: flex;
  justify-content: flex-end;
  padding: 20px 20px 0;
}

.flp_ev_date-close-btn {
  background: transparent;
  border: none;
  color: var(--white);
  font-size: 1.4rem;
  cursor: pointer;
  padding: 6px;
}

.flp_ev_date-overlay-body {
  padding: 12px 24px 24px;
  flex: 1;
  overflow-y: auto;
}

.flp_ev_mcal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
}

.flp_ev_mcal-header button {
  background: transparent;
  border: none;
  color: var(--white-50);
  font-size: 1.3rem;
  cursor: pointer;
  padding: 8px;
}

#flp_ev_mcal-month-label {
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--white);
}

.flp_ev_mcal-day-names {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  margin-bottom: 14px;
}

.flp_ev_mcal-day-names span {
  text-align: center;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--white);
}

.flp_ev_mcal-days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  row-gap: 20px;
}

.flp_ev_mcal-days .flp_ev_cal-day {
  font-size: 1.05rem;
  padding: 10px 2px;
  border-radius: 6px;
}

/* ============================================================
   TABLET / SMALL DESKTOP ( < 1400px )
   Reduz tamanhos de fonte da área de eventos (title/time/type/date
   a 50%) e de toda a sidebar (a 70%, i.e. -30%)
   ============================================================ */
@media (max-width: 1400px) {
  .flp_ev_event-title { font-size: 1rem; }
  .flp_ev_event-time { font-size: 0.85rem; }
  .flp_ev_event-type { font-size: 0.85rem; }
  .flp_ev_event-date-label { font-size: 1.85rem; }

  .flp_ev_sidebar-page-title { font-size: 32px; }
  .flp_ev_search-input { font-size: 0.665rem; }
  .flp_ev_search-btn { font-size: 0.735rem; }
  .flp_ev_filter-header { font-size: 1.05rem; }
  .flp_ev_toggle-icon { font-size: 0.84rem; }
  .flp_ev_radio-item { font-size: 0.798rem; }
  .flp_ev_select { font-size: 0.735rem; }
  .flp_ev_checkbox-item { font-size: 0.798rem; }
  .flp_ev_clear-filters-btn { font-size: 0.595rem; }
  .flp_ev_cal-header button { font-size: 0.7rem; }
  #flp_ev_cal-month-label { font-size: 0.798rem; }
  .flp_ev_cal-day-names span { font-size: 0.63rem; }
  .flp_ev_cal-day { font-size: 0.686rem; }
  .flp_ev_cal-day.flp_ev_has-event::after { font-size: 0.42rem; }
}

/* ============================================================
   MOBILE ( < 992px )
   ============================================================ */
@media (max-width: 991.98px) {
.flp-events-list-page .flp_ev_event-title span {background-image:linear-gradient(var(--flp-white),var(--flp-white))}


.flp-events-list-page .flp_ev_event-row::after {background: var(--flp-white);}
  .flp_ev_dropdown {
  padding: 0px 30px 20px;
}

  .coluna-contact-exp .flp_evd_info-row {display: block;}

  .flp-191-page .flp_ev_events-area{background: #ff4902}

  .flp_ev_page-wrapper { display: block; }

  /* Em mobile o título fica no cabeçalho "Filtrar" do overlay, não aqui */
  .flp_ev_sidebar-page-title { display: none; }

  /* Em mobile o "Limpar filtros" já aparece no cabeçalho do overlay */
  .flp_ev_clear-filters-group { display: none; }

  /* Sidebar becomes a full-screen black "Refine" overlay */
  .flp_ev_sidebar {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--flp-theme);
    z-index: 1045;
    transform: translateX(-110%);
    transition: transform 0.3s ease;
    display: flex;
    flex-direction: column;
    padding: 0;
  }

  .flp_ev_sidebar.flp_ev_open { transform: translateX(0); }

  /* Alinhar o gutter dos filtros com os 30px usados no resto do site em mobile */
  .flp_ev_search-group,
  .flp_ev_filter-header,
  .flp_ev_radio-list,
  .flp_ev_select-wrap,
  .flp_ev_free-events-group,
  .flp_ev_calendar-widget {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_ev_search-group::before,
  .flp_ev_search-group::after,
  .flp_ev_filter-group::after {
    left: 30px;
    right: 30px;
  }

  .flp_ev_sidebar-mobile-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 24px;
    border-bottom: 1px solid rgba(255,255,255,0.25);
    flex-shrink: 0;
    position: sticky;
    top: 0;
    background: var(--flp-theme);
    z-index: 2;
  }

  .flp_ev_sidebar-title-btn {
    color: var(--white);
    font-size: 1.15rem;
    font-weight: normal;
    text-transform: uppercase;
    display: flex;
    align-items: center;
    gap: 10px;
  }

  .flp_ev_sidebar-header-actions {
    display: flex;
    align-items: center;
    gap: 18px;
  }

  .flp_ev_header-apply-btn,
  .flp_ev_header-clear-btn {
    background: transparent;
    border: none;
    color: var(--white);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    cursor: pointer;
    padding: 0;
    white-space: nowrap;
  }

  .flp_ev_header-clear-btn {
    font-weight: normal;
    text-decoration: underline;
  }

  .flp_ev_sidebar-close-btn {
    background: transparent;
    border: none;
    color: var(--white);
    font-size: 1.3rem;
    cursor: pointer;
    padding: 0;
  }

  /* Scrollable filter body area below the sticky header */
  .flp_ev_sidebar > .flp_ev_filter-group,
  .flp_ev_sidebar > .flp_ev_free-events-group {
    flex-shrink: 0;
  }

  .flp_ev_sidebar {
    overflow-y: auto;
  }

  /* Desktop-only date accordion lives elsewhere on mobile */
  #flp_ev_filter-date-group { display: none; }

  /* ...exceto quando o botão "Escolha uma data" do topbar mobile abre o
     popup de filtros diretamente nesta secção (ver script.js) */
  .flp_ev_sidebar.flp_ev_show-date #flp_ev_filter-date-group {
    display: block;
  }

  /* Mobile top bar */
  .flp_ev_mobile-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 30px;
    background: var(--flp-theme);
    border-bottom: 1px solid #ffffff;
  }

  .flp-191-page .flp_ev_mobile-topbar {background:#019e3d}
    .flp-191-page .flp_ev_sidebar-mobile-header {background:#019e3d}

.flp-191-page .flp_ev_sidebar {background:#019e3d;}

     .flp-events-list-page .flp_ev_mobile-topbar {background:#4f4fff}

    .flp-events-list-page  .flp_ev_sidebar {background:#4f4fff}
    .flp-events-list-page .flp_ev_sidebar-mobile-header {background:#4f4fff}

  .flp_ev_mobile-refine-btn,
  .flp_ev_mobile-date-btn {
    background: transparent;
    border: none;
    color: var(--white);
    font-size: 1rem;
    font-weight: normal;
    text-transform: uppercase;
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    padding: 0;
  }

  .flp_ev_events-area { background: var(--col3-bg); padding-top: 0; padding-bottom: 40px; }

  /* Event list becomes a single solid-green column */
  .flp-191-page .flp_ev_event-date-group {
    background:  #ff4902;
}
  .flp_ev_event-date-group { background: #15a4a5; }
  .flp_ev_event-date-group::after { left: 30px; right: 30px; }
  #plk_event_list > #flp_ev_events-list:first-child::before { display: none; }

  .flp_ev_event-date-label { font-size: 1.85rem; color: #ffffff; }

  .flp_ev_event-row {
    align-items: flex-start;
    flex-wrap: wrap;
    padding: 20px 30px;
    gap: 10px 14px;
  }

  .flp_ev_event-row::after { left: 30px; right: 30px; }

  /* Em mobile a data deixa de partilhar coluna com a imagem: o wrapper
     .flp_ev_col-left desaparece da caixa (display:contents) para que a
     data e a imagem passem a ser itens diretos do flex .flp_ev_event-row.
     A data fica com largura 100% (quebra sempre para a sua própria linha,
     quando existe); a imagem segue-se na linha seguinte, lado a lado com
     o título (.flp_ev_col-right). */
  .flp_ev_event-row .flp_ev_col-left {
    display: contents;
  }

  .flp_ev_event-row .flp_ev_event-date-label {
    flex: 0 0 100%;
    width: 100%;
  }

  .flp_ev_event-row .flp_ev_col-right {
    flex: 1 1 0%;
    max-width: none;
    padding: 0;
    align-items: flex-start;
  }

  .flp_ev_event-thumb-wrap { width: 120px; }
  .flp_ev_event-thumb { width: 120px; height: 80px; }

  .flp_ev_event-arrow { display: none; }

  .flp_ev_event-title { font-size: 1rem; }
  .flp_ev_event-time { font-size: 0.85rem; }
  .flp_ev_event-type { font-size: 0.85rem; }
  .flp_ev_free-badge { font-size: 0.375rem; }

  .flp_ev_show-more-wrap { width: 100%; background: var(--col3-bg); }

  .flp_ev_no-results { width: 100%; background: var(--col3-bg); padding: 40px 18px; font-size: 1.4rem; }
}


/* ═══════════════════════════════════════════════════════════════════════
   4. LISTAGEM DE EXPOSITORES (COM FILTROS)
      (antigo ficheiro: expositores-list.css)
   ═══════════════════════════════════════════════════════════════════════ */

/* ============================================================
   LISTAGEM DE EXPOSITORES
   Ficheiro autossuficiente: NÃO depende de assets/css/eventos.css
   (que é só da Programação). Classes com prefixo flp_exl_ (widget:
   sidebar, filtros, linhas) e flp_exp_row_ (conteúdo de cada linha:
   nome, badge, chancela/audiência/idioma). Nada aqui é partilhado
   com a página da Programação — podem evoluir em separado.
   ============================================================ */

:root {
  --exl-sidebar-bg:   var(--flp-theme);
  --exl-content-bg:   #f0f0f0;
  --exl-col2-bg:     var(--flp-gray-dark);
  --exl-col3-bg:      var(--flp-gray);
  --exl-white:        #ffffff;
  --exl-white-70:     rgba(255,255,255,0.70);
  --exl-white-50:     rgba(255,255,255,0.50);
}

/* ============================================================
   LAYOUT
   ============================================================ */
.flp_exl_page-wrapper {
  display: flex;
  min-height: 100vh;
  font-family: Regular, Arial, sans-serif;
  background: var(--exl-content-bg);
  color: var(--exl-white);
}

/* ===== SIDEBAR (desktop filter panel / mobile Refine overlay) ===== */
.flp_exl_sidebar {
  width: 33.3333%;
  flex: 0 0 33.3333%;
  background: var(--exl-sidebar-bg);
  padding: 0 0 40px 0;
  position: sticky;
  /* 85px = altura do header fixo (.flp_header-inner min-height 84px + borda 1px) */
  top: 85px;
  height: calc(100vh - 85px);
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.3) transparent;
}

.flp_exl_sidebar::-webkit-scrollbar { width: 4px; }
.flp_exl_sidebar::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.3); border-radius: 4px; }

.flp_exl_sidebar-page-title {
  font-family: Regular, Arial, sans-serif;
  font-weight: 700;
  font-size: 40px;
  line-height: 1;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--exl-white);
  margin: 0;
  padding: 80px 40px 30px 50px;
}

.flp_exl_sidebar-mobile-header { display: none; }

/* ===== EXHIBITORS AREA ===== */
.flp_exl_events-area {
  flex: 1 1 66.6667%;
  background: linear-gradient(to right, var(--exl-col2-bg) 50%, var(--exl-col3-bg) 50%);
  min-width: 0;
  padding-top: 0px;
}

#plk_event_list .flp_exl_events-area:nth-child(1) {padding-top:142px}

@media (min-width: 1400px) {
	.flp_exl_events-area {padding-top: 0px;}
  #plk_event_list .flp_exl_events-area:nth-child(1) {padding-top:150px}
}

#flp_exl_events-list::before {display:none}
.flp_exl_mobile-topbar { display: none; }



/* ============================================================
   SEARCH (apenas visual)
   ============================================================ */
.flp_exl_search-group {
  position: relative;
  padding: 20px 40px 20px 50px;
}

.flp_exl_search-group::before {
  content: '';
  position: absolute;
  left: 50px;
  right: 40px;
  top: 0;
  height: 1px;
  background: #ffffff;
}

.flp_exl_search-group::after {
  content: '';
  position: absolute;
  left: 50px;
  right: 40px;
  bottom: 0;
  height: 1px;
  background: #ffffff;
}

.flp_exl_search {
  display: flex;
  align-items: stretch;
  width: 100%;
  height: 48px;
  background: var(--exl-white);
  border-radius: 0px;
  overflow: hidden;
}

.flp_exl_search-form {
  display: flex;
  align-items: stretch;
  width: 100%;
}

.flp_exl_search-input {
  flex: 1;
  min-width: 0;
  background: transparent;
  border: none;
  outline: none;
  padding: 0 16px;
  font-family: Regular, Arial, sans-serif;
  font-weight: normal;
  font-size: 0.684rem;
  color: var(--exl-sidebar-bg);
  text-transform: uppercase;
}

.flp_exl_search-input::placeholder {
  color: var(--exl-sidebar-bg);
  opacity: 0.6;
}

.flp_exl_search-btn {
  flex-shrink: 0;
  width: 48px;
  background: var(--exl-white);
  border: none;
  border-left: 1px solid var(--flp-theme);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--exl-sidebar-bg);
  font-size: 0.756rem;
  cursor: pointer;
}

.flp_exl_search-icon {
  width: 16px;
  height: 16px;
  display: block;
}

/* ============================================================
   FILTER GROUPS / ACCORDION
   ============================================================ */
.flp_exl_filter-group {
  position: relative;
}

.flp_exl_filter-group::after {
  content: '';
  position: absolute;
  left: 50px;
  right: 40px;
  bottom: 0;
  height: 1px;
  background: #ffffff;
}

.flp_exl_filter-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  background: transparent;
  border: none;
  color: var(--exl-white);
  font-size: 1.08rem;
  font-weight: normal;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  padding: 15px 40px 15px 50px;
  cursor: pointer;
  text-align: left;
  transition: background 0.3s;
}

.flp_exl_filter-header span:first-child {
  position: relative;
  display: inline-block;
}

.flp_exl_filter-header span:first-child::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 0;
  height: 1px;
  background: var(--exl-white);
  transition: width 0.3s ease;
}

.flp_exl_filter-header:hover span:first-child::after {
  width: 100%;
}

.flp_exl_toggle-icon {
  font-size: 1.2rem;
  flex-shrink: 0;
  display: inline-block;
  transition: transform 0.3s;
}

.flp_exl_filter-header:hover .flp_exl_toggle-icon {
  transform: scale(1.25);
}

.flp_exl_filter-body {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s ease;
}

.flp_exl_filter-body.flp_exl_open {
  max-height: 900px;
  overflow-y: auto;
}

/* ============================================================
   RADIO LISTS
   ============================================================ */
.flp_exl_radio-list {
  padding: 4px 40px 16px 50px;
}

.flp_exl_radio-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 7px 0;
  cursor: pointer;
  color: var(--exl-white);
  font-size: 0.8208rem;
  font-weight: normal;
  text-transform: uppercase;
  user-select: none;
}

.flp_exl_radio-item input[type="radio"] {
  appearance: none;
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  border: 2px solid var(--exl-white);
  border-radius: 50%;
  flex-shrink: 0;
  cursor: pointer;
  position: relative;
  transition: border-color 0.3s;
}

.flp_exl_radio-item input[type="radio"]:checked {
  border-color: var(--exl-white);
  background: transparent;
}

.flp_exl_radio-item input[type="radio"]:checked::after {
  content: '';
  display: block;
  width: 9px;
  height: 9px;
  background: var(--exl-white);
  border-radius: 50%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.flp_exl_checkbox-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 7px 0;
  cursor: pointer;
  color: var(--exl-white);
  font-size: 0.8208rem;
  font-weight: normal;
  text-transform: uppercase;
  user-select: none;
}

.flp_exl_checkbox-item input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  border: 2px solid var(--exl-white);
  border-radius: 50%;
  flex-shrink: 0;
  cursor: pointer;
  position: relative;
  transition: border-color 0.3s;
}

.flp_exl_checkbox-item input[type="checkbox"]:checked {
  border-color: var(--exl-white);
  background: transparent;
}

.flp_exl_checkbox-item input[type="checkbox"]:checked::after {
  content: '';
  display: block;
  width: 9px;
  height: 9px;
  background: var(--exl-white);
  border-radius: 50%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

/* Select (Expositor / Chancela Editorial) */
.flp_exl_select-wrap {
  padding: 4px 40px 16px 50px;
}

.flp_exl_select {
  width: 100%;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23ffffff' stroke-width='2' fill='none' fill-rule='evenodd'/%3E%3C/svg%3E") no-repeat right 16px center;
  border: 1px solid var(--exl-white);
  border-radius: 0px;
  color: var(--exl-white);
  font-family: Regular, Arial, sans-serif;
  font-weight: normal;
  font-size: 0.756rem;
  text-transform: uppercase;
  padding: 10px 40px 10px 14px;
  cursor: pointer;
  transition: border-color 0.3s;
}

.flp_exl_select:hover,
.flp_exl_select:focus {
  border-color: var(--exl-white);
  outline: none;
}

.flp_exl_select option {
  color: var(--exl-sidebar-bg);
  background: var(--exl-white);
}

/* Clear filters (desktop only) */
.flp_exl_clear-filters-group {
  position: relative;
  padding: 16px 40px 16px 50px;
}

.flp_exl_clear-filters-group::before {
  content: '';
  position: absolute;
  left: 50px;
  right: 40px;
  top: 0;
  height: 1px;
  background: #ffffff;
}

.flp_exl_clear-filters-btn {
  background: transparent;
  border: none;
  color: var(--exl-white);
  font-size: 0.612rem;
  font-weight: normal;
  text-transform: uppercase;
  text-decoration: underline;
  cursor: pointer;
  padding: 0;
}

/* ============================================================
   EXHIBITORS LIST
   ============================================================ */
.flp_exl_event-date-group {
  position: relative;
  background: linear-gradient(to right, var(--exl-col2-bg) 50%, var(--flp-bg-light) 50%);
}

.flp_exl_event-date-group::after {
  content: '';
  position: absolute;
  left: 40px;
  right: 50px;
  bottom: 0;
  height: 1px;
  background: #fff;
}

#flp_exl_events-list {
  position: relative;
}

#plk_event_list .flp_exl_events-area:nth-child(1) #flp_exl_events-list::before {
  display: block;
  content: '';
  position: absolute;
  left: 40px;
  right: 50px;
  top: 0;
  height: 1px;
  background: #ffffff;
  z-index: 1;
}

.flp_exl_col-left {
  flex: 0 0 50%;
  max-width: 50%;
}

.flp_exl_col-right {
  flex: 0 0 50%;
  max-width: 50%;
  min-width: 0;
}

/* Single exhibitor row */
.flp_exl_event-row {
  position: relative;
  display: flex;
  align-items: flex-start;
  transition: background 0.3s;
  cursor: pointer;
  text-decoration: none;
  color: inherit;
}

.flp_exl_event-row::after {
  content: '';
  position: absolute;
  left: calc(50% - 200px);
  right: 50px;
  bottom: 0;
  height: 1px;
  background: #ffffff;
}

.flp_exl_event-row:last-child::after { display: none; }
.flp_exl_event-row:hover .flp_exl_event-arrow { opacity: 1; transform: translateX(0); }

.flp_exl_event-row .flp_exl_col-left { padding: 30px 40px; display: flex; align-items: center; justify-content: flex-start; gap: 20px; }
.flp_exl_event-row .flp_exl_col-right { padding: 30px 50px 30px 40px; display: flex; align-items: center; min-width: 0; }

.flp_exl_event-info { flex: 1; min-width: 0; }

/* Arrow shown on hover, pushed to the right edge */
.flp_exl_event-arrow {
  margin-left: auto;
  padding-left: 16px;
  font-size: 1.3rem;
  line-height: 1;
  color: #000;
  opacity: 0;
  flex-shrink: 0;
  transform: translateX(-4px);
  transition: opacity 0.3s, transform 0.3s;
}

/* No results */
.flp_exl_no-results {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  width: 50%;
  padding: 60px 40px;
  font-size: 1.8rem;
  color: var(--flp-theme);
}

/* ============================================================
   SHOW MORE
   ============================================================ */
.flp_exl_show-more-wrap {
  display: flex;
  justify-content: center;
  width: 50%;
}

.success-message {margin-top:20px; font-weight: bold; color:#019e3d!important}

.flp_exl_show-more-btn {
  margin: 40px 20px;
  background: transparent;
  border: 1.5px solid var(--flp-white);
  color: var(--white);
  font-size: 0.85rem;
  font-weight: bold;
  min-width: 285px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  padding: 13px 42px;
  border-radius: 0px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.flp_exl_show-more-btn:hover {
  background: var(--flp-white);
  border-color: var(--flp-white);
  color: var(--flp-theme);
}


.flp_livros_show-more-btn {
  margin: 40px 0px;
  background: transparent;
  border: 1.5px solid var(--flp-white);
  color: var(--white);
  font-size: 0.85rem;
  font-weight: bold;
  min-width: 285px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  padding: 13px 42px;
  border-radius: 0px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.flp_livros_show-more-btn:hover {
  background: var(--flp-white);
  border-color: var(--flp-white);
  color: var(--flp-theme);
}

/* ============================================================
   TABLET / SMALL DESKTOP ( < 1400px )
   ============================================================ */
@media (max-width: 1400px) {
  .flp_exl_sidebar-page-title { font-size: 32px; }
  .flp_exl_search-input { font-size: 0.665rem; }
  .flp_exl_search-btn { font-size: 0.735rem; }
  .flp_exl_filter-header { font-size: 1.05rem; }
  .flp_exl_toggle-icon { font-size: 0.84rem; }
  .flp_exl_radio-item { font-size: 0.798rem; }
  .flp_exl_checkbox-item { font-size: 0.798rem; }
  .flp_exl_select { font-size: 0.735rem; }
  .flp_exl_clear-filters-btn { font-size: 0.595rem; }
}

/* ============================================================
   MOBILE ( < 992px )
   ============================================================ */
@media (max-width: 991.98px) {
.btn_cookie_accept {margin:20px auto 0;}
  #plk_event_list .flp_exl_events-area:nth-child(1) {padding-top:0}
  #plk_event_list {width:100%}
  .flp_exl_page-wrapper { display: block; }

  /* Em mobile o título fica no cabeçalho "Filtrar" do overlay, não aqui */
  .flp_exl_sidebar-page-title { display: none; }

  /* Em mobile o "Limpar filtros" já aparece no cabeçalho do overlay */
  .flp_exl_clear-filters-group { display: none; }

  /* Sidebar becomes a full-screen "Refine" overlay */
  .flp_exl_sidebar {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--flp-theme);
    z-index: 1045;
    transform: translateX(-110%);
    transition: transform 0.3s ease;
    display: flex;
    flex-direction: column;
    padding: 0;
  }

  .flp_exl_sidebar.flp_exl_open { transform: translateX(0); }

  /* Alinhar o gutter dos filtros com os 30px usados no resto do site em mobile */
  .flp_exl_search-group,
  .flp_exl_filter-header,
  .flp_exl_radio-list,
  .flp_exl_select-wrap {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_exl_search-group::before,
  .flp_exl_search-group::after,
  .flp_exl_filter-group::after {
    left: 30px;
    right: 30px;
  }

  .flp_exl_sidebar-mobile-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 24px;
    border-bottom: 1px solid rgba(255,255,255,0.25);
    flex-shrink: 0;
    position: sticky;
    top: 0;
    background: var(--flp-theme);
    z-index: 2;
  }

  .flp_exl_sidebar-title-btn {
    color: var(--exl-white);
    font-size: 1.15rem;
    font-weight: normal;
    text-transform: uppercase;
    display: flex;
    align-items: center;
    gap: 10px;
  }

  .flp_exl_sidebar-header-actions {
    display: flex;
    align-items: center;
    gap: 18px;
  }

  .flp_exl_header-apply-btn,
  .flp_exl_header-clear-btn {
    background: transparent;
    border: none;
    color: var(--exl-white);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    cursor: pointer;
    padding: 0;
    white-space: nowrap;
  }

  .flp_exl_header-clear-btn {
    font-weight: normal;
    text-decoration: underline;
  }

  .flp_exl_sidebar-close-btn {
    background: transparent;
    border: none;
    color: var(--exl-white);
    font-size: 1.3rem;
    cursor: pointer;
    padding: 0;
  }

  .flp_exl_sidebar > .flp_exl_filter-group {
    flex-shrink: 0;
  }

  .flp_exl_sidebar {
    overflow-y: auto;
  }

  .flp_exl_mobile-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 30px;
    background: var(--flp-theme);
    border-bottom: 1px solid #ffffff;
  }

  .flp_exl_mobile-refine-btn {
    background: transparent;
    border: none;
    color: var(--exl-white);
    font-size: 1rem;
    font-weight: normal;
    text-transform: uppercase;
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    padding: 0;
  }

  .flp_exl_events-area { background: var(--exl-col3-bg); padding-top: 0; padding-bottom: 40px; }

  /* Lista fica numa única coluna azul sólida */
  .flp_exl_event-date-group { background: var(--exl-col3-bg); }
  .flp_exl_event-date-group::after { left: 30px; right: 30px; }
  #flp_exl_events-list::before { left: 30px; right: 30px; }

  .flp_exl_event-row {
    align-items: flex-start;
    padding: 25px 30px;
    gap: 14px;
  }

  .flp_exl_event-row::after { left: 30px; right: 30px; }

  .flp_exl_event-row .flp_exl_col-left {
    flex: 0 0 auto;
    max-width: none;
    padding: 0;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 8px;
  }

  .flp_exl_event-row .flp_exl_col-right {
    flex: 1 1 auto;
    max-width: none;
    padding: 0;
    align-items: flex-start;
  }

  .flp_exl_event-arrow { display: none; }

  .flp_exl_show-more-wrap { width: 100%;  }

  .flp_ev_events-area{ background: #15a4a5; }


  .flp_exl_no-results { width: 100%; padding: 40px 18px; font-size: 1.4rem; color: var(--exl-white); }
}



/* ============================================================
   CONTEÚDO DE CADA LINHA
   Nome do expositor (coluna esquerda); Género Literário / Chancela
   Editorial / Idioma dos Livros (coluna direita).
   ============================================================ */

.flp_exp_row-name-wrap {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
}

.flp_exp_row-name {
  display: block;
  font-size: 1.9rem;
  font-weight: normal;
  line-height: 1.2;
  letter-spacing: 0.3px;
  color: var(--flp-white);
  text-transform: uppercase;
  text-align: left;
}

/* O truque do sublinhado tem de estar num elemento INLINE (não no bloco à
   volta): assim o fundo é pintado por cada linha de texto, em vez de uma
   única linha esticada por baixo do bloco todo. */
.flp_exp_row-name-text {
  background-image: linear-gradient(var(--flp-white),var(--flp-white));
  background-repeat: no-repeat;
  background-position: right bottom;
  background-size: 0% 1px;
  padding-bottom: 0px;
  transition: background-size 0.3s ease;
}

.flp_exl_event-row:hover .flp_exp_row-name-text {
  background-size: 100% 1px;
}

/* ===== Género Literário / Chancela Editorial / Idioma dos Livros ===== */

.flp_exp_row-field {
  font-size: 14px;
  font-weight: normal;
  line-height: 1.5;
  color: var(--flp-theme);
  margin-bottom: 4px;
  text-transform: uppercase;
}
.flp_exp_row-field.flp_exp_row-field--icon.flp_exp_row-field--spaced {color: var(--flp-theme);}

.flp_exp_row-field--icon.flp_exp_row-field--spaced::after {background-color: var(--flp-theme);}

.flp_exp_row-field:last-child {
  margin-bottom: 0;
}

.flp_exp_row-field-label {
  font-weight: normal;
  opacity: 1;
}

.flp_exp_row-field-value {
  font-weight: 700;
}

.flp_exp_row-field--icon {
  display: flex;
  align-items: center;
  gap: 6px;
}

/* Espaçamento maior a separar este campo do campo anterior (Chancela Editorial) */
.flp_exp_row-field--spaced {
  margin-top: 18px;
}

.flp_exp_row-field--icon::after {
  content: "";
  display: inline-block;
  flex-shrink: 0;
  width: 1em;
  height: 1.4em;
  margin-top: -5px;
  background-color: var(--flp-theme);
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 24C145 24 72 105 72 206C72 332 256 488 256 488C256 488 440 332 440 206C440 105 367 24 256 24Z M256 70C339 70 394 130 394 206C394 288 299 394 256 439C213 394 118 288 118 206C118 130 173 70 256 70Z'/%3E%3Cpath d='M256 134A78 78 0 1 0 256 290A78 78 0 1 0 256 134Z M256 178A34 34 0 1 1 256 246A34 34 0 1 1 256 178Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 24C145 24 72 105 72 206C72 332 256 488 256 488C256 488 440 332 440 206C440 105 367 24 256 24Z M256 70C339 70 394 130 394 206C394 288 299 394 256 439C213 394 118 288 118 206C118 130 173 70 256 70Z'/%3E%3Cpath d='M256 134A78 78 0 1 0 256 290A78 78 0 1 0 256 134Z M256 178A34 34 0 1 1 256 246A34 34 0 1 1 256 178Z'/%3E%3C/svg%3E");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}

@media (max-width: 991.98px) {

  .flp_exl_show-more-btn {width:100%; margin:40px 30px;}
.flp_livros_show-more-btn {width:100%; margin:40px 0px;}
.flp_exl_event-row {flex-direction: column;}
  /* Em mobile o flp_exl_col-left encolhe ao conteúdo, o que funciona para
     texto curto mas fazia o nome do expositor estourar a largura do ecrã
     em vez de quebrar linha — por isso aqui volta a ter uma largura real. */
  .flp_exl_event-row .flp_exl_col-left {
    flex: 0 0 100%;
    max-width: 100%;
  }

  .flp_exp_row-name-wrap {
    align-items: flex-start;
    width: 100%;
  }

  .flp_exp_row-name {
    font-size: 24px;
    text-align: left;
    width: 100%;
  }

  .flp_exp_row-name-text {
    background-position: left bottom;
  }

  .flp_exp_row-field {
    font-size: 12px;
  }
}


/* ═══════════════════════════════════════════════════════════════════════
   5. LIVROS DO DIA — carrossel e listagem completa
      (antigo ficheiro: list-livros.css)
   ═══════════════════════════════════════════════════════════════════════ */

/* =========================================================
   LIVROS EM DESTAQUE — carousel de livros
   Prefixo de classes: list_lv_pt_
   Depende das variáveis definidas em flp-style.css (--flp-mono, --flp-white)
   ========================================================= */

.list_lv_pt_section {
  padding: 80px 0 80px;
}

.list_lv_pt_section.bg-white {
  background:var(--flp-bg-white);
}

.list_lv_pt_inner {
  padding-left: 50px;
  padding-right: 50px;
}

/* ===== Cabeçalho: título + setas de navegação ===== */

.list_lv_pt_header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 28px;
}

.list_lv_pt_title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 40px;
  line-height: 1;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color:var(--flp-theme);
  margin: 0;
}

.list_lv_pt_nav {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-shrink: 0;
}

.list_lv_pt_nav-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  padding: 0;
  color:var(--flp-theme);
  cursor: pointer;
  transition: opacity 0.3s;
}

.list_lv_pt_nav-btn:hover {
  opacity: 0.6;
}

.list_lv_pt_nav-btn:disabled {
  color:var(--flp-theme);
  opacity: 0.3;
  cursor: default;
}

.list_lv_pt_nav-icon {
  height: 30px;
  width: auto;
  display: block;
}

/* O botão "VER TODOS" reaproveita .flp_gallery-more (flp-style.css), cujo
   margin-bottom soma com o padding-bottom que esta secção já tem */
.list_lv_pt_section .flp_gallery-more {
  margin-bottom: 0;
}

/* ===== Corpo: texto introdutório + carousel ===== */

.list_lv_pt_body {
  display: flex;
  align-items: flex-start;
  gap: 60px;
}

.list_lv_pt_intro {
  flex: 0 0 380px;
}

.list_lv_pt_intro p {
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 1.1rem;
  line-height: 1.6;
  color: var(--flp-theme);
  margin: 0;
}

/* ===== Faixa com scroll horizontal (carousel) ===== */

.list_lv_pt_track {
  flex: 1;
  min-width: 0;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  -ms-overflow-style: none;
  cursor: grab;
  touch-action: pan-y;
}

.list_lv_pt_track::-webkit-scrollbar {
  display: none;
}

.list_lv_pt_track.is-dragging {
  cursor: grabbing;
  scroll-snap-type: none;
  user-select: none;
}

.list_lv_pt_track.is-dragging .list_lv_pt_card-img {
  pointer-events: none;
}

.list_lv_pt_row {
  display: flex;
  gap: 24px;
}

.list_lv_pt_card {
  flex: 0 0 calc((100% - 2 * 24px) / 3);
  min-width: 0;
  scroll-snap-align: start;
}

.list_lv_pt_card-link {
  display: block;
  color: inherit;
  text-decoration: none;
}

.list_lv_pt_card-cover {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 4;
  overflow: hidden;
  background: #1a1a1a;
  margin-bottom: 16px;
  border-radius: 4px;
}

.list_lv_pt_card-link:hover .list_lv_pt_card-img {
  opacity: 0.75;
}

.list_lv_pt_card-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: opacity 0.3s;
}

.list_lv_pt_card-publisher {
  display: flex;
  align-items: flex-end;
  gap: 6px;
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 0.78rem;
  line-height: 1;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0 0 10px;
}

.list_lv_pt_card-publisher::after {
  content: "";
  display: inline-block;
  flex-shrink: 0;
  width: 1.3em;
  height: 1.3em;
  background-color: var(--flp-theme);
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 24C145 24 72 105 72 206C72 332 256 488 256 488C256 488 440 332 440 206C440 105 367 24 256 24Z M256 70C339 70 394 130 394 206C394 288 299 394 256 439C213 394 118 288 118 206C118 130 173 70 256 70Z'/%3E%3Cpath d='M256 134A78 78 0 1 0 256 290A78 78 0 1 0 256 134Z M256 178A34 34 0 1 1 256 246A34 34 0 1 1 256 178Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 24C145 24 72 105 72 206C72 332 256 488 256 488C256 488 440 332 440 206C440 105 367 24 256 24Z M256 70C339 70 394 130 394 206C394 288 299 394 256 439C213 394 118 288 118 206C118 130 173 70 256 70Z'/%3E%3Cpath d='M256 134A78 78 0 1 0 256 290A78 78 0 1 0 256 134Z M256 178A34 34 0 1 1 256 246A34 34 0 1 1 256 178Z'/%3E%3C/svg%3E");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}

.list_lv_pt_card-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1.05rem;
  line-height: 1.3;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0 0 10px;
}

.list_lv_pt_card-title span {
  background-image: linear-gradient(var(--flp-theme), var(--flp-theme));
  background-repeat: no-repeat;
  background-position: left bottom;
  background-size: 0% 1px;
  padding-bottom: 2px;
  transition: background-size 0.3s ease;
}

.list_lv_pt_card-link:hover .list_lv_pt_card-title span {
  background-size: 100% 1px;
}

.list_lv_pt_card-author {
  display: block;
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 0.9rem;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0 0 8px;
}

.list_lv_pt_card-date {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0 0 10px;
}

.list_lv_pt_card-pvp {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 4px;
}

.list_lv_pt_card-pvp-row {
  font-family: var(--flp-mono);
  font-size: 0.85rem;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0;
}

.list_lv_pt_card-pvp-label {
  font-weight: 700;
}

.list_lv_pt_card-pvp-value {
  font-weight: 400;
}

/* ===================== RESPONSIVO ===================== */

@media (max-width: 991.98px) {
  .list_lv_pt_inner {
    padding-left: 30px;
    padding-right: 30px;
  }

  .list_lv_pt_title {
    font-size: 24px;
  }

  .list_lv_pt_body {
    flex-direction: column;
    align-items: stretch;
    gap: 24px;
  }

  .list_lv_pt_intro {
    flex: 0 0 auto;
  }

  .list_lv_pt_card {
    flex: 0 0 calc((100% - 24px) / 2);
  }
}

@media (max-width: 575.98px) {
  .list_lv_pt_card {
    flex: 0 0 100%;
  }
}

/* =========================================================
   LISTAGEM COMPLETA — "Livros do Dia" (grelha, 5 por linha)
   Reaproveita os cartões .list_lv_pt_card acima; aqui os cartões
   são itens de grid em vez de itens de um carousel horizontal.
   ========================================================= */

.list_lv_pt_all-section {
  padding: 60px 0 80px;
}

.list_lv_pt_all-inner {
  padding-left: 50px;
  padding-right: 50px;
}

.list_lv_pt_all-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin: 16px 0 40px;
}

.list_lv_pt_all-intro {
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: 1.1rem;
  line-height: 1.6;
  color: var(--flp-theme);
  max-width: 700px;
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
}

.list_lv_pt_day-select-wrap {
  position: relative;
  flex: 0 0 auto;
  width: calc((100% - 96px) / 5);
}

.list_lv_pt_day-select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background: transparent;
  border: 1.5px solid var(--flp-theme);
  border-radius: 0px;
  color: var(--flp-theme);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.8rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  padding: 12px 40px 12px 18px;
  width: 100%;
  box-sizing: border-box;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
}

.list_lv_pt_day-select option {
  background: var(--flp-white);
  color: var(--flp-theme);
}

.list_lv_pt_day-select:hover,
.list_lv_pt_day-select:focus {
  background: var(--flp-theme);
  color: var(--flp-white);
  outline: none;
}

.list_lv_pt_day-select-icon {
  position: absolute;
  top: 50%;
  right: 16px;
  transform: translateY(-50%);
  color: inherit;
  pointer-events: none;
  font-size: 0.75rem;
}

.list_lv_pt_day-select:hover ~ .list_lv_pt_day-select-icon,
.list_lv_pt_day-select:focus ~ .list_lv_pt_day-select-icon {
  color: var(--flp-white);
}

.list_lv_pt_all-no-results {
  font-family: var(--flp-mono);
  font-size: 1rem;
  color: var(--flp-theme);
  opacity: 0.7;
  padding: 40px 0;
}

@media (max-width: 767.98px) {
  .list_lv_pt_all-header {
    flex-direction: column;
    align-items: flex-start;
  }

  .list_lv_pt_day-select-wrap {
    margin-top: 16px;
  }

  .list_lv_pt_day-select {
    width: 100%;
  }
}

.langmob1::before {content:'PT'}
.langmob2::before{content:'EN'}

.list_lv_pt_all-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 40px 24px;
}

.list_lv_pt_all-grid .list_lv_pt_card {
  flex: none;
}

@media (max-width: 1400px) {
  .list_lv_pt_all-grid {
    grid-template-columns: repeat(4, 1fr);
  }

  .list_lv_pt_day-select-wrap {
    width: calc((100% - 72px) / 4);
  }
}

@media (max-width: 991.98px) {
  .list_lv_pt_day-select-wrap {width: calc((100% - 48px) / 3);}
  .list_lv_pt_intro p {font-size:16px}
  .list_lv_pt_all-inner {
    padding-left: 30px;
    padding-right: 30px;
  }

  .list_lv_pt_all-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 767.98px) {
  .list_lv_pt_all-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .list_lv_pt_day-select-wrap {
    width: 100%;
  }
}

@media (max-width: 575.98px) {
  .list_lv_pt_all-grid {
    grid-template-columns: 1fr;
  }
}


/* ═══════════════════════════════════════════════════════════════════════
   6. NOTÍCIAS — detalhe da notícia e listagem de notícias
      (antigo ficheiro: noticia-detalhe.css)
   ═══════════════════════════════════════════════════════════════════════ */

/* =========================================================
   ARTIGO DE NOTÍCIA (título + destaque + data + imagem + texto)
   Prefixo de classes: flp_news_
   Depende das variáveis definidas em flp-style.css
   (--flp-mono, --flp-theme, --flp-white, --flp-border)
   ========================================================= */

.flp_news_section {
  padding: 80px 0 80px;
}

.flp_news_inner {
  padding-left: 50px;
  padding-right: 50px;
}

.flp_news_title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 50px;
  line-height: 1.05;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  color: var(--flp-theme);
  max-width: 900px;
  margin: 0 0 24px;
}

.flp_news_lead {
  font-family: var(--flp-mono);
  font-size: 1.15rem;
  line-height: 1.6;
  color: var(--flp-theme);
  opacity: 0.85;
  max-width: 700px;
  margin: 0 0 20px;
}

.flp_news_date {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.8rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  opacity: 0.6;
  margin: 0 0 20px;
}

.flp_news_share {
  display: flex;
  gap: 10px;
  margin-bottom: 32px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--flp-border);
}

.flp_news_share-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border: 1.5px solid var(--flp-theme);
  border-radius: 8px;
  color: var(--flp-theme);
  font-size: 1.1rem;
  line-height: 1;
  transition: background 0.3s, color 0.3s;
}

.flp_news_share-icon:hover {
  background: var(--flp-theme);
  color: var(--flp-white);
}

.flp_news_media {
  width: 100%;
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 40px;
  background: #eeeeee;
}

.flp_news_media-img {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  display: block;
}

.flp_news_body {
  max-width: 800px;
  margin: 0 auto;
  font-family: var(--flp-mono);
  font-size: 1.1rem;
  line-height: 1.75;
  color: var(--flp-theme);
  opacity: 1;
}

.flp_news_body p {
  margin: 0 0 20px;
}

.flp_news_body p:last-child {
  margin-bottom: 0;
}

.flp_news_body a {
  color: var(--flp-theme);
  text-decoration: underline;
}

@media (max-width: 991.98px) {
  .flp_news_inner {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_news_title {
    font-size: 32px;
  }

  .flp_news_lead {
    font-size: 1rem;
  }
}

@media (max-width: 575.98px) {
  .flp_news_title {
    font-size: 26px;
  }
}

/* =========================================================
   LISTAGEM DE NOTÍCIAS (grelha 4 colunas)
   Reaproveita os cartões .flp_news-item / .flp_news-link
   definidos em flp-style.css (secção de notícias da home)
   ========================================================= */

.flp_news_list {
  padding: 80px 0 80px;
}

.flp_news_list-inner {
  padding-left: 50px;
  padding-right: 50px;
}

.flp_news_list-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px 30px;
  margin-top: 40px;
}

@media (max-width: 991.98px) {
  .flp_news_list-inner {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_news_list-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 575.98px) {
  .flp_news_list-grid {
    grid-template-columns: 1fr;
  }
}


/* ═══════════════════════════════════════════════════════════════════════
   7. FAQS
      (antigo ficheiro: faqs.css)
   ═══════════════════════════════════════════════════════════════════════ */

/* =========================================================
   FAQS
   Prefixo de classes: flp_faq_
   Depende das variáveis definidas em flp-style.css
   (--flp-mono, --flp-theme, --flp-white, --flp-border)
   ========================================================= */

.flp_faq_row {
  align-items: stretch;
}

/* ===== Coluna esquerda: fundo azul do tema ===== */

.flp_faq_side {
  background: var(--flp-theme);
  border-bottom: solid 1px var(--flp-white);
  display: flex;
}

.flp_faq_side-inner {
  padding: 60px 50px;
}

.flp_faq_side-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 2.4rem;
  letter-spacing: 0.5px;
  color: var(--flp-white);
  text-transform: uppercase;
  margin: 0;
}

.flp_faq_side-rule {
  border: none;
  border-top: 1px solid var(--flp-white);
  opacity: 1;
  margin: 24px 0;
}

.flp_faq_side-text {
  font-family: var(--flp-mono);
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--flp-white);
  margin: 0;
}

/* ===== Coluna direita: fundo branco, texto e ícones a azul ===== */

.flp_faq_main {
  background: var(--flp-white);
  padding: 130px 50px 60px;
}

.flp_faq_item {
  border-top: 1px solid var(--flp-theme);
}

.flp_faq_item:last-child {
  border-bottom: 1px solid var(--flp-theme);
}

.flp_faq_question {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  width: 100%;
  background: transparent;
  border: none;
  color: var(--flp-theme);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1.2rem;
  text-align: left;
  padding: 20px 0;
  text-transform: uppercase;
  cursor: pointer;
}

.flp_faq_icon {
  flex-shrink: 0;
  color: var(--flp-theme);
  font-size: 1rem;
  /* bi-plus-lg/bi-dash-lg têm um traço fino que, ao lado do texto bold,
     dá a sensação de opacidade — isto não é opacity, é o glifo do ícone;
     o text-stroke engrossa o traço para bater a mesma intensidade do texto. */
  -webkit-text-stroke: 0.5px currentColor;
}

.flp_faq_icon-minus {
  display: none;
}

.flp_faq_question.collapsed .flp_faq_icon-plus {
  display: inline-block;
}

.flp_faq_question.collapsed .flp_faq_icon-minus {
  display: none;
}

.flp_faq_question:not(.collapsed) .flp_faq_icon-plus {
  display: none;
}

.flp_faq_question:not(.collapsed) .flp_faq_icon-minus {
  display: inline-block;
}

.flp_faq_answer p {
  font-family: var(--flp-mono);
  font-size: 0.9rem;
  line-height: 1.6;
  color: var(--flp-theme);
  margin: 0 0 24px;
}

/* ============================================================
   MOBILE ( < 992px )
   ============================================================ */
@media (max-width: 991.98px) {
  .flp_faq_side-inner {
    padding: 40px 30px;
  }

  .flp_faq_main {
    padding: 40px 30px;
  }
}


/* ═══════════════════════════════════════════════════════════════════════
   8. MAPA DA FEIRA
      (antigo ficheiro: mapa-feira.css)
   ═══════════════════════════════════════════════════════════════════════ */

/* =========================================================
   MAPA DA FEIRA
   Prefixo de classes: flp_mapa_
   Depende das variáveis definidas em flp-style.css
   (--flp-mono, --flp-theme, --flp-white, --flp-border)
   ========================================================= */

.flp_mapa_section {
  padding: 80px 0 20px;
}

.flp_mapa_inner {
  padding-left: 50px;
  padding-right: 50px;
}

.flp_mapa_title {
  color: var(--flp-theme);
}

/* ===== Selects (Expositor / Palcos e Outros) ===== */

.flp_mapa_toggles {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  margin-bottom: 40px;
}

.flp_mapa_select-wrap {
  position: relative;
  flex: 1 1 0;
}

.flp_mapa_select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  width: 100%;
  background: transparent;
  border: 1.5px solid var(--flp-theme);
  border-radius: 0px;
  color: var(--flp-theme);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.8rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  padding: 12px 40px 12px 18px;
  cursor: pointer;
  transition: background 0.3s, color 0.3s;
}

.flp_mapa_select option {
  background: var(--flp-white);
  color: var(--flp-theme);
  text-transform: none;
}

.flp_mapa_select:hover,
.flp_mapa_select:focus {
  background: var(--flp-theme);
  color: var(--flp-white);
  outline: none;
}

.flp_mapa_select-icon {
  position: absolute;
  top: 50%;
  right: 16px;
  transform: translateY(-50%);
  color: inherit;
  pointer-events: none;
  font-size: 0.75rem;
}

.flp_mapa_select:hover ~ .flp_mapa_select-icon,
.flp_mapa_select:focus ~ .flp_mapa_select-icon {
  color: var(--flp-white);
}

/* ===== Cartão do mapa ===== */

.flp_mapa_map-card {
  background: var(--flp-white);
  border: 1px solid var(--flp-bg-light);
  border-radius: 8px;
}

/* Wrapper com o mesmo tamanho da imagem, para posicionar os hotspots em
   percentagem — assim mantêm-se alinhados ao bloco independentemente da
   largura a que a imagem é apresentada (site responsivo). */
.flp_mapa_map-wrap {
  position: relative;
}

.flp_mapa_map-img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 0px;
}

/* ===== Hotspots de exemplo: blocos 1 e 2 =====
   Posição/forma calculadas em % a partir dos pixels reais de cada bloco na
   imagem original (1536x1024), para que acompanhem a imagem ao redimensionar. */

.flp_mapa_hotspot-wrap {
  position: absolute;
  cursor: pointer;
}

.flp_mapa_hotspot--1 {
  left: 25.7%;
  top: 17.1%;
  width: 19.9%;
  height: 28.3%;
}

.flp_mapa_hotspot--2 {
  left: 44.9%;
  top: 24.9%;
  width: 16%;
  height: 23%;
}

.flp_mapa_hotspot-fill {
  position: absolute;
  inset: 0;
  clip-path: polygon(12% 18%, 75% 6%, 100% 52%, 68% 96%, 2% 78%);
  background: rgba(255, 255, 255, 0);
  mix-blend-mode: soft-light;
  transition: background 0.25s ease;
}

.flp_mapa_hotspot-fill--2 {
  clip-path: polygon(8% 8%, 80% 8%, 92% 20%, 92% 91%, 8% 91%);
}

.flp_mapa_hotspot-wrap:hover .flp_mapa_hotspot-fill,
.flp_mapa_hotspot-wrap:focus-visible .flp_mapa_hotspot-fill,
.flp_mapa_hotspot-wrap.is-active .flp_mapa_hotspot-fill {
  background: rgba(255, 255, 255, 0.65);
}

/* À direita do bloco, sobrepondo-se ligeiramente a ele (em vez de encostada
   à borda exata) — fica visualmente mais junta e sem nenhum espaço vazio
   a atravessar entre o bloco e a legenda. */
.flp_mapa_tooltip {
  position: absolute;
  top: 50%;
  left: 85%;
  transform: translateY(-50%);
  min-width: 170px;
  background: var(--flp-theme);
  color: var(--flp-white);
  border-radius: 6px;
  padding: 12px 18px;
  font-family: var(--flp-mono);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.2s ease;
  z-index: 5;
}

.flp_mapa_hotspot--2 .flp_mapa_tooltip {
  left: 78%;
}

.flp_mapa_tooltip::after {
  content: '';
  position: absolute;
  right: 100%;
  top: 50%;
  transform: translateY(-50%);
  border: 7px solid transparent;
  border-right-color: var(--flp-theme);
}

.flp_mapa_hotspot-wrap:hover .flp_mapa_tooltip,
.flp_mapa_hotspot-wrap:focus-visible .flp_mapa_tooltip,
.flp_mapa_hotspot-wrap.is-active .flp_mapa_tooltip {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.flp_mapa_tooltip-value {
  margin: 0 0 8px;
  font-size: 0.95rem;
  font-weight: 700;
}

.flp_mapa_tooltip-value:last-of-type {
  margin-bottom: 10px;
}

.flp_mapa_tooltip-link {
  display: inline-block;
  color: var(--flp-white);
  font-size: 0.8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  text-decoration: underline;
}

/* ============================================================
   MOBILE ( < 992px )
   ============================================================ */
@media (max-width: 991.98px) {
  .flp_mapa_inner {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_mapa_toggles {
    flex-direction: column;
  }

  .flp_mapa_select-wrap {
    min-width: 0;
    width: 100%;
  }
}


/* ═══════════════════════════════════════════════════════════════════════
   9. PLANEAR A VISITA
      (antigo ficheiro: planear-visita.css)
   ═══════════════════════════════════════════════════════════════════════ */

/* =========================================================
   PLANEAR VISITA
   Prefixo de classes: flp_pv_
   Depende das variáveis definidas em flp-style.css
   (--flp-mono, --flp-theme, --flp-white, --flp-border)
   ========================================================= */

/* ===== Mapa da Feira (variante sem fundo, texto na cor do tema) ===== */

.flp_pv_planear {
  overflow: hidden;
}

.flp_pv_planear-row {
  align-items: stretch;
}

.flp_pv_planear-left {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 80px 50px;
}

.flp_pv_planear-bottom {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.flp_pv_planear-divider {
  border-top: 1px solid rgba(15, 47, 127, 0.4);
}

.flp_pv_planear-title {
  text-align: left;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 40px;
  line-height: 1;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0;
}

.flp_pv_planear-text {
  font-family: var(--flp-mono);
  font-size: 1.25rem;
  line-height: 1.6;
  color: var(--flp-theme);
  margin: 0;
}

.flp_pv_planear-btn {
  display: flex;
  align-self: stretch;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 1px solid var(--flp-theme);
  border-radius: 0px;
  color: var(--flp-theme);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  text-decoration: none;
  padding: 16px 32px;
  transition: background 0.3s, color 0.3s;
}

.flp_pv_planear-btn:hover {
  background: var(--flp-theme);
  color: var(--flp-white);
}

.flp_pv_planear-arrow {
  width: 14px;
  height: 14px;
}

.flp_pv_planear-right {
  min-height: 320px;
  padding: 80px 50px 80px 0;
}

.flp_pv_planear-img {
  width: 100%;
  height: 100%;
  max-height: 500px;
  object-fit: cover;
  display: block;
}

@media (max-width: 991.98px) {
  .flp_pv_planear-left {
    padding: 40px 30px;
  }

  .flp_pv_planear-title {
    font-size: 24px;
  }

  .flp_pv_planear-right {
    min-height: 260px;
	padding: 0 30px 40px 30px;
  }
}


/* ===== Info: Como Chegar / Horários / Acessibilidades (3 colunas) ===== */

.flp_pv_info-row {
  align-items: stretch;
  border-bottom: 1px solid var(--flp-white);
}

.flp_pv_info-col {
  /* min-height: 720px; */
  padding: 80px 50px;
  /* para os links do footer (#como-chegar / #horarios / #acessibilidades)
     não ficarem escondidos atrás do cabeçalho fixo ao saltar para aqui */
  scroll-margin-top: 100px;
}

.flp_pv_info-col--dark {
  background: var(--flp-theme);
}

.flp_pv_info-col--light {
  background: var(--flp-bg-light);
}

.flp_pv_info-col--blue {
  background: var(--flp-gray-dark);
}

.flp_pv_info-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1.8rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  margin: 0;
}

.flp_pv_info-col--dark .flp_pv_info-title,
.flp_pv_info-col--blue .flp_pv_info-title {
  color: var(--flp-white);
}

.flp_pv_info-col--light .flp_pv_info-title {
  color: var(--flp-theme);
}

.flp_pv_info-group {
  margin-top: 28px;
}

.flp_pv_info-group:first-of-type {
  margin-top: 40px;
}

.flp_pv_info-subtitle {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  margin: 0;
}

.flp_pv_info-col--dark .flp_pv_info-subtitle,
.flp_pv_info-col--blue .flp_pv_info-subtitle {
  color: var(--flp-white);
}

.flp_pv_info-col--light .flp_pv_info-subtitle {
  color: var(--flp-theme);
}

.flp_pv_info-text {
  font-family: var(--flp-mono);
  font-size: 1rem;
  line-height: 1.6;
  margin: 40px 0 0;
}

.flp_pv_info-group .flp_pv_info-text {
  margin-top: 8px;
}

.flp_pv_info-col--dark .flp_pv_info-text {
  color: var(--flp-white);
}

.flp_pv_info-col--blue .flp_pv_info-text {
  color: var(--flp-white);
}

.flp_pv_info-col--light .flp_pv_info-text {
  color: var(--flp-theme);
}

@media (max-width: 991.98px) {
  .flp_pv_info-col {
    min-height: 0;
    padding: 40px 30px;
  }

  .flp_pv_info-title {
    font-size: 24px;
  }

  .flp_pv_info-group:first-of-type {
    margin-top: 40px;
  }
}


/* =========================================================
   10. Contactos
   Prefixo de classes: flp_contactos_
   Depende das variáveis definidas em flp-style.css
   (--flp-mono, --flp-theme, --flp-white, --flp-border)
   ========================================================= */


.flp_contactos {
  overflow: hidden;
}

.flp_contactos-row {
  align-items: stretch;
}

.flp_contactos-left {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  padding: 80px 50px;
}

.flp_contactos-bottom {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.flp_contactos-divider {
  border-top: 1px solid rgba(15, 47, 127, 0.4);
}

.flp_contactos-title {
  text-align: left;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 40px;
  line-height: 1;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0 0 40px 0;
}

.flp_contactos-text {
  font-family: var(--flp-mono);
  font-size: 1.25rem;
  line-height: 1.6;
  color: var(--flp-theme);
  margin: 0;
}

.flp_contactos-btn {
  display: flex;
  align-self: stretch;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 1px solid var(--flp-theme);
  border-radius: 0px;
  color: var(--flp-theme);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  text-decoration: none;
  padding: 16px 32px;
  transition: background 0.3s, color 0.3s;
}

.flp_contactos-btn:hover {
  background: var(--flp-theme);
  color: var(--flp-white);
}

.flp_contactos-arrow {
  width: 14px;
  height: 14px;
}

.flp_contactos-right {
  min-height: 320px;
  padding: 80px 50px 80px 0;
}

.flp_contactos-img {
  width: 100%;
  height: 100%;
  max-height: 500px;
  object-fit: cover;
  display: block;
}

@media (max-width: 991.98px) {
  .flp_contactos-left {
    padding: 40px 30px;
  }

  .flp_contactos-title {
    font-size: 24px;
  }

  .flp_contactos-right {
    min-height: 260px;
	padding: 0 30px 40px 30px;
  }
}


/* =========================================================
   11. Outras paginas
   Prefixo de classes: flp_outaspaginas_
   Depende das variáveis definidas em flp-style.css
   (--flp-mono, --flp-theme, --flp-white, --flp-border)
   ========================================================= */


.flp_outaspaginas {
  overflow: hidden;
}

.flp_outaspaginas-row {
  align-items: stretch;
}

.flp_outaspaginas-left {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  padding: 80px 50px;
}

.flp_outaspaginas-bottom {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.flp_outaspaginas-divider {
  border-top: 1px solid rgba(15, 47, 127, 0.4);
}

.flp_outaspaginas-title {
  text-align: left;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 40px;
  line-height: 1;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0 0 40px 0;
}

.flp_outaspaginas-text {
  font-family: var(--flp-mono);
  font-size: 1.25rem;
  line-height: 1.6;
  color: var(--flp-theme);
  margin: 0;
}

.flp_outaspaginas-btn {
  display: flex;
  align-self: stretch;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 1px solid var(--flp-theme);
  border-radius: 0px;
  color: var(--flp-theme);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  text-decoration: none;
  padding: 16px 32px;
  transition: background 0.3s, color 0.3s;
}

.flp_outaspaginas-btn:hover {
  background: var(--flp-theme);
  color: var(--flp-white);
}

.flp_outaspaginas-arrow {
  width: 14px;
  height: 14px;
}

.flp_outaspaginas-right {
  min-height: 320px;
  padding: 80px 50px 80px 0;
}

.flp_outaspaginas-img {
  width: 100%;
  height: 100%;
  max-height: 500px;
  object-fit: cover;
  display: block;
}

.flp_outaspaginas-text h3, .flp_outaspaginas-text h4, .flp_outaspaginas-text h5, .flp_outaspaginas-text h6 {
    margin-top: 40px;
    margin-bottom: 20px;
}

.flp_outaspaginas-text h3:first-child, .flp_outaspaginas-text h4:first-child, .flp_outaspaginas-text h5:first-child, .flp_outaspaginas-text h6:first-child {
    margin-top: 0;
}

@media (max-width: 991.98px) {
  .flp_outaspaginas-left {
    padding: 40px 30px;
  }

  .flp_outaspaginas-title {
    font-size: 24px;
  }

  .flp_outaspaginas-right {
    min-height: 260px;
	padding: 0 30px 40px 30px;
  }
}


/* =========================================================
   12. Mapa do Site
   Prefixo de classes: flp_sitemap_
   ========================================================= */

.flp_sitemap {
  padding: 60px 50px 20px;
}

.flp_sitemap-intro {
  max-width: 760px;
  margin: 0 0 50px;
}

.flp_sitemap-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 40px;
  line-height: 1;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0 0 20px;
}

.flp_sitemap-text {
  font-family: var(--flp-mono);
  font-size: 1.05rem;
  line-height: 1.6;
  color: var(--flp-theme);
  margin: 0;
}

.flp_sitemap-group {
  margin-bottom: 40px;
}

.flp_sitemap-group-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--flp-theme);
  line-height: 1;
  margin: 0 0 18px;
  padding: 18px 0 13px;
  border-top: 1px solid var(--flp-theme);
  border-bottom: 1px solid var(--flp-theme);
}

.flp_sitemap-links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.flp_sitemap-links a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  color: var(--flp-theme);
  text-decoration: none;
}

.flp_sitemap-links a:hover {
  text-decoration: underline;
}

.flp_sitemap-links i {
  font-size: 0.8rem;
}

@media (max-width: 991.98px) {
  .flp_sitemap {
    padding: 40px 30px 10px;
  }

  .flp_sitemap-title {
    font-size: 24px;
  }
}

/* =========================================================
   HOMENAGEM (título + imagem/texto de apresentação + poema)
   Prefixo de classes: flp_hom_
   ========================================================= */

.flp_hom_hero {
  padding: 70px 0 0;
}

.flp_hom_hero-inner {
  padding-left: 50px;
  padding-right: 50px;
}

/* Grid explícito: no desktop mantém texto/tag numa coluna e imagem noutra;
   no mobile reordena para título > meta/tag > imagem > texto (ver media query abaixo) */
.flp_hom_hero-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-areas:
    "title  image"
    "meta   image"
    "text   image";
  column-gap: 3rem;
}

.flp_hom_hero-row > .flp_hom_title {
  grid-area: title;
}

.flp_hom_hero-row > .flp_hom_meta {
  grid-area: meta;
}

.flp_hom_hero-row > .flp_hom_intro-media {
  grid-area: image;
}

.flp_hom_hero-row > .flp_hom_intro-text {
  grid-area: text;
  margin-top: 28px;
}

.flp_hom_title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 64px;
  line-height: 1.05;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  color: var(--flp-theme);
  max-width: 1100px;
  margin: 0;
}

/* Linha de info por baixo do título (data + local + tag) */
.flp_hom_meta {
  display: flex;
  flex-wrap: wrap;
  align-items: start;
  flex-direction: column;
  gap: 8px;
  margin-top: 28px;
}

.flp_hom_meta-date {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0;
}

.flp_hom_meta-venue {
  font-family: var(--flp-mono);
  font-weight: normal;
  font-size: calc(1rem * var(--flp-text-scale, 1));
  text-transform: uppercase;
  color: var(--flp-theme);
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0;
}

.flp_hom_meta-venue-icon {
  display: inline-block;
  width: 1.2em;
  height: 1.2em;
  flex-shrink: 0;
  background-color: var(--flp-theme);
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 24C145 24 72 105 72 206C72 332 256 488 256 488C256 488 440 332 440 206C440 105 367 24 256 24Z M256 70C339 70 394 130 394 206C394 288 299 394 256 439C213 394 118 288 118 206C118 130 173 70 256 70Z'/%3E%3Cpath d='M256 134A78 78 0 1 0 256 290A78 78 0 1 0 256 134Z M256 178A34 34 0 1 1 256 246A34 34 0 1 1 256 178Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 24C145 24 72 105 72 206C72 332 256 488 256 488C256 488 440 332 440 206C440 105 367 24 256 24Z M256 70C339 70 394 130 394 206C394 288 299 394 256 439C213 394 118 288 118 206C118 130 173 70 256 70Z'/%3E%3Cpath d='M256 134A78 78 0 1 0 256 290A78 78 0 1 0 256 134Z M256 178A34 34 0 1 1 256 246A34 34 0 1 1 256 178Z'/%3E%3C/svg%3E");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}

.flp_hom_meta-tag {
  display: inline-block;
  background: var(--flp-theme);
  color: var(--flp-white);
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 16px;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  padding: 16px 32px;
  margin-top:60px;
}

@media (max-width: 991px) {
  .flp_hom_meta-tag {
	  margin-top:30px;
	  display: block;
	  width: 100%;
	  box-sizing: border-box;
	}
}


.flp_hom_intro {
  padding: 50px 0 90px;
}

.flp_hom_intro-inner {
  padding-left: 50px;
  padding-right: 50px;
}


.flp_hom_intro-media {
  overflow: hidden;
  background: #eeeeee;
}


.flp_hom_intro-media.nocolor {
  overflow: hidden;
  background:transparent;
}

.flp_hom_intro-media--fill {
  height: auto;
  margin-bottom: 60px;
}

.flp_hom_intro-img {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  display: block;
}

.flp_hom_intro-img--fill {
  height: auto;
  aspect-ratio: auto;
  object-fit: contain;
}

.flp_hom_intro-text {
  font-family: var(--flp-mono);
  font-size: 1.1rem;
  line-height: 1.75;
  color: var(--flp-theme);
}

.flp_hom_intro-text p {
  margin: 0 0 20px;
}

.flp_hom_intro-text p:last-child {
  margin-bottom: 40px;
}

/* Poema em destaque */

.flp_hom_poem {
  background: var(--flp-bg-light);
  color: var(--flp-theme);
  padding: 90px 0;
}

.flp_hom_poem-inner {
  padding-left: 50px;
  padding-right: 50px;
  max-width: 820px;
  margin: 0 auto;
  text-align: center;
}

.flp_hom_poem-title {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 40px;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--flp-theme);
  margin: 0 0 34px;
}

.flp_hom_poem-text {
  font-family: var(--flp-mono);
  font-size: 1.25rem;
  line-height: 1.8;
  font-style: italic;
  color: var(--flp-theme);
  opacity: 0.92;
  white-space: pre-line;
  margin: 0 0 30px;
}

.flp_hom_poem-author {
  font-family: var(--flp-mono);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--flp-theme);
  opacity: 1;
  margin: 0;
}

.flp_hom_poem-author::before {
  content: "— ";
}

@media (max-width: 991.98px) {

  /* Empilha numa coluna e reordena: título > meta/tag > imagem > texto */
  .flp_hom_hero-row {
    grid-template-columns: 1fr;
    grid-template-areas:
      "title"
      "meta"
      "image"
      "text";
  }

  .flp_hom_hero-row > .flp_hom_intro-media {
    margin-top: 30px;
  }

  .flp_hom_intro {
  padding: 20px 0 60px;
}

  .flp_hom_intro-text p:last-child {
  margin-bottom: 20px;
}
  .flp_hom_hero-inner,
  .flp_hom_intro-inner {
    padding-left: 30px;
    padding-right: 30px;
  }

  .flp_hom_title {
    font-size: 38px;
  }

  .flp_hom_intro-media {
    margin-bottom: 10px;
  }

  .flp_hom_intro-media--fill {
    margin-bottom: 70px;
  }

  .flp_hom_intro-media--fill.nocolor {
    margin-bottom: 0px;
  }

  .flp_hom_hero .flp_hom_intro-text {margin-bottom:60px;}

  .flp_hom_poem {
    padding: 60px 0;
  }

  .flp_hom_poem-title {
    font-size: 22px;
  }

  .flp_hom_poem-text {
    font-size: 1.05rem;
  }
}

@media (max-width: 575.98px) {
  .flp_hom_title {
    font-size: 30px;
  }
}



/*sctions*/

.mb-30 {margin-bottom:30px;}
.mb-40 {margin-bottom:40px;}
.mb-50 {margin-bottom:50px;}
.mb-60 {margin-bottom:60px;}

.section-normal {
    padding: 80px 50px;

}

@media (max-width: 991.98px) {

  .flp_ev_event-title span, .flp_ev_event-time, .flp_ev_event-type {color:white}
  .flp_ev_event-type::after {background-color:white}
  

  .flp_evd_info .flp_evd_info-row {display:block}
   .flp_ev_no-results {background: #15a4a5;}
    .section-normal {
        padding: 40px 30px;
    }
}



.flp_mapa_desktop { display: block; }
.flp_mapa_mobile { display: none; }

@media (max-width: 768px) {
  .flp_mapa_desktop { display: none; }
  .flp_mapa_mobile { display: block; }
}




  .sugg-events, .sugg-exhibitors ,.sugg-bookdays {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    align-items: stretch;
    gap: 20px;
  }

  /* Sem isto, um texto/link comprido sem espaços (ex: URLs) força a
  coluna do grid a crescer para não o cortar, e as 2 colunas deixam
  de ficar com a mesma largura ("estoura"). min-width:0 permite ao
  item encolher abaixo do tamanho mínimo do conteúdo, e o
  overflow-wrap trata de quebrar a palavra em si quando preciso. */
  .search_sugg_record {
    min-width: 0;
  }
  .search_sugg_record * {
    overflow-wrap: anywhere;
    word-break: break-word;
    min-width: 0;
  }

  .suggestion-popup .flp_gallery-col-category {
    margin: 0 0 -17px;
  font-size:12px;
}
  
  
   .suggestion-popup .flp_gallery-col-category .flp_gallery-col-label  { font-size:12px;}
  .suggestion-popup .genero-item { font-size:12px;}
  
  .suggestion-popup .flp_gallery-info-item {gap:0; font-size:12px;}
  
  .suggestion-popup  .flp_gallery-col-category .flp_gallery-col-label .flp_ev_free-badge { font-size:12px;}
  
    .suggestion-popup .flp_gallery-info-title {font-size:14px}
  
  
 .suggestion-popup  .list_lv_pt_card-pvp {gap:0; margin-top:10px; font-size:11px;}
   .suggestion-popup  .list_lv_pt_card-pvp * {font-size:11px;}
  
   .suggestion-popup .flp_gallery-info-date,  .suggestion-popup  .flp_gallery-info-venue {font-size:12px}
  
  .flp_prog-hero , .flp_prog-search {overflow: unset !important;}
  .input-area{position:relative}
  .suggestion-popup {
	position: absolute;
    z-index: 9999999;
    width: -webkit-fill-available;
    border: 1px solid black;
    height: 400px;
    background: white;
    top: 50px;
    flex-direction: column;
    justify-content: flex-start;
    padding: 20px;
    gap: 30px;
    overflow-y: scroll;
    display: none;
  }

  .suggestion-popup::-webkit-scrollbar {
    width: 8px;
  }
  .suggestion-popup::-webkit-scrollbar-track {
    background: #f0f0f0;
    border-radius: 10px;
  }
  .suggestion-popup::-webkit-scrollbar-thumb {
    background: #ff4900;
    border-radius: 10px;
  }
  .suggestion-popup::-webkit-scrollbar-thumb:hover {
    background: #cc3a00;
  }

  /* Fica fixo no fundo da área visível (não do conteúdo) enquanto se
  faz scroll, para ficar sempre claro que há mais resultados abaixo.
  position:absolute (não sticky): .suggestion-popup já é a própria
  scrollport (position:absolute + overflow-y:scroll), por isso um
  filho absolute com bottom:0 fica sempre colado ao fundo visível,
  sem interagir mal com flex-direction:column como o sticky fazia. */
  .suggestion-popup::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 40px;
    background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,1));
    pointer-events: none;
  }

  /* A borda fica no .flp_gallery-col-link (mesma técnica usada em
  .resultados-pesquisa mais acima): esse elemento já tem height:100%
  e display:flex, por isso a linha alinha-se sempre ao fundo da
  linha do grid, mesmo quando um resultado tem menos texto que o
  vizinho (ex: expositor sem categoria/local preenchidos). */
  .search_sugg_record{min-height:110px}
  .suggestion-popup .flp_gallery-col-link {
    border-bottom: 1px solid black;
  }

  /* Os resultados vêm separados por <hr/> soltos no HTML (sem estarem
  dentro de linhas); como agora ficam em grelha de 2 colunas, o <hr>
  quebraria o pareamento, por isso escondemos e usamos o gap da grelha
  como separador visual. */
  .sugg-events hr, .sugg-exhibitors hr, .sugg-bookdays hr {
    display: none;
  }

  /* O título de cada secção (gerado via ::before) ocupa a grelha toda,
  para que os resultados a seguir comecem sempre numa linha nova. */
  .sugg-events::before, .sugg-exhibitors::before, .sugg-bookdays::before {
    grid-column: 1 / -1;
  }

  .event_img img{max-width:200px; width:100%;height:auto;}
  .bookday_img img{max-width:200px; width:100%;height:auto;}

  .sugg-exhibitors:before {
    content: 'Expositores';
    position: relative;
    border-image-slice: 2;
    display: inline-block;
    font-size: 17px;
    font-style: normal;
    font-weight: 700;
    line-height: 20px;
    text-transform: none;
    width: 100%;
  text-transform:uppercase;
  }

  .sugg-events:before {
    content: 'Eventos';
    position: relative;
    border-image-slice: 2;
    display: inline-block;
    font-size: 17px;
    font-style: normal;
    font-weight: 700;
    line-height: 20px;
    text-transform: none;
    width: 100%;
  text-transform:uppercase;
  }

  .sugg-bookdays:before {
    content: 'Livros';
    position: relative;
    border-image-slice: 2;
    display: inline-block;
    font-size: 17px;
    font-style: normal;
    font-weight: 700;
    line-height: 20px;
    text-transform: none;
    width: 100%;
  text-transform:uppercase;
  }


  label.error {
    color: red;
    margin-top: 5px;
    font-weight: initial;
    font-size: 75%;
    display: block;
    position: absolute;
    left: 20px;
    bottom: 2px;
}

@media (max-width: 968px) {

  .suggestion-popup .flp_gallery-col-category {
    margin: 0 0px 5px;
}
}