body {
  overflow-x: hidden;
  padding-top: 39px;
}

/* Reset de los márgenes de `figure`: sin él las tablas desbordan en móvil. */
:where(figure) {
  margin: 0 0 1em;
}

/* Aviso de lista vacía de las rejillas filtrables. */
.jet-smart-filters-elementor-loop-no-result {
  padding: 1.875rem 0;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.4em;
  color: #24346C;
  text-align: center;
}

/* El otro aviso de lista vacía llega sin texto y se repite a cada filtrado. */
.e-loop-nothing-found-message:not(:has(*)) {
  display: none;
}

/* Ficha de programa sin claustro: se esconde la sección entera. */
body.programa-sin-claustro .e-con.e-parent:has(.elementor-element-1d9ce5c),
body.programa-sin-claustro .elementor-element-2357340 {
  display: none;
}

/* Utilidad: esconde un elemento sin tocar la maquetación. */
.d-none {
  display: none !important;
}

/* Disparadores de submenú de la cabecera: no son enlaces, pero se pulsan. */
.premium-menu-link-parent:not([href]) {
  cursor: pointer;
}

/* Ficha de evento: grupos de asistentes sin datos. */
body.agenda-sin-profesores .elementor-element-agev024,
body.agenda-sin-profesores .elementor-element-agev025,
body.agenda-sin-ponentes .elementor-element-bc21333,
body.agenda-sin-ponentes .elementor-element-d4026a5 {
  display: none;
}

/* Foto de profesor en la ficha de evento: 3:4 y anclada arriba. */
.elementor-widget-shortcode .elementor-shortcode .agenda-ponentes .agenda-ponente .agenda-ponente__foto {
  height: auto;
  min-height: 0;
  aspect-ratio: 3 / 4;
}

.agenda-ponente__foto img {
  object-position: center top;
}

/* Ficha de evento sin próximos: se esconde el bloque de la columna. */
body.agenda-sin-proximos .elementor-element-agev031 {
  display: none;
}

/* Aviso que sustituye al botón en los eventos ya celebrados. */
.agenda-celebrado {
  margin: 0;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.2em;
  color: #24346C;
}

/* Carrusel de logos de la home: tira continua, 7 a la vista y 3 en móvil. */
.st-logos {
  container-type: inline-size;
  overflow: hidden;
  width: 100%;
}

/* El widget no estira solo dentro del contenedor. */
.elementor-widget:has(> .elementor-widget-container .st-logos),
.elementor-widget:has(> .elementor-shortcode .st-logos) {
  width: 100%;
  align-self: stretch;
}

.st-logos__pista {
  display: flex;
  width: max-content;
}

.st-logos--js .st-logos__pista {
  animation: st-logos-desplaza var(--st-logos-duracion, 300s) linear infinite;
}

@keyframes st-logos-desplaza {
  to { transform: translateX(-50%); }
}

.st-logos__logo {
  flex: 0 0 calc(100cqi / 7);
  padding: 0 10px;
  box-sizing: border-box;
  transition: opacity 0.3s;
}

.st-logos__logo img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1;
  object-fit: contain;
  /* Monocromo claro sobre el azul de la home. */
  filter: grayscale(100%) brightness(0.65) invert(1);
  opacity: 0.9;
}

/* Los logos con recuadro aparecen cuando el JS les vacía las letras. */
.st-logos--js .st-logos__logo:not(.st-logos__logo--listo) {
  opacity: 0;
}

@media (max-width: 767px) {
  .st-logos__logo {
    flex-basis: calc(100cqi / 3);
  }
}

@media (prefers-reduced-motion: reduce) {
  .st-logos {
    overflow-x: auto;
  }

  .st-logos--js .st-logos__pista {
    animation: none;
  }
}
