/**
 * BookTeaser : vignette livre, partout (rayons, grilles, carrousels).
 *
 * Même balisage pour le composant (@components/BookTeaser) et le gabarit
 * node--book--teaser : on ne retouche que la mise en forme.
 * - une zone au format 2:3, sans fond, aligne toutes les vignettes ; la
 *   couverture y est posée en bas, quelle que soit sa forme ;
 * - « À paraître » devient une étiquette sur la couverture ;
 * - extrait et vidéo passent en boutons ronds dans le coin.
 */
.BookTeaser {
  display: flex;
  flex-direction: column;
  text-align: left;
}

.BookTeaser .BookTeaser-header {
  position: relative;
  display: block;
  margin: 0 0 14px;
}
.BookTeaser .BookTeaser-header > .BookTeaser-link {
  display: block;
}

/* Zone de couverture : même hauteur pour toutes, couverture posée en bas,
   sans fond ni marge : les couvertures carrées ne laissent qu'un blanc
   invisible au-dessus, les titres restent alignés. */
.BookTeaser .BookTeaser-cover {
  position: relative;
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 2 / 3;
  margin: 0;
  padding: 0;
}
/* La zone pose la couverture en bas ; l'enveloppe en prend exactement la
   taille. */
.BookTeaser .BookTeaser-cover {
  display: flex;
  align-items: flex-end;
}
.BookTeaser .BookTeaser-cover-container {
  position: relative;
  display: block;
  width: 100%;
  height: auto;
}
/* Enveloppes du champ et du média (node--book--teaser) : l'image devient
   l'enfant direct de la zone, pour en prendre la largeur. */
.BookTeaser .BookTeaser-cover-container :is(div, article, picture):not(.BookTeaser-tobereleased) {
  display: contents;
}
.BookTeaser .BookTeaser-cover img {
  display: block;
  /* Ni object-fit ni hauteur maximale : la boîte de l'image est exactement
     la couverture. Une couverture plus haute que 2:3 dépasse un peu en
     haut, sans être déformée. */
  width: 100%;
  height: auto;
  border-radius: var(--u-cover-radius);
  box-shadow: var(--u-cover-shadow);
}

/* « À paraître » : étiquette posée sur le bas de la couverture */
.BookTeaser .BookTeaser-tobereleased {
  position: absolute;
  top: auto;
  bottom: 10px;
  left: 10px;
  z-index: 1;
  width: auto;
  padding: 4px 8px;
  border-radius: var(--am-radius);
  background: var(--u-accent);
  color: var(--u-on-accent);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
}

/* Extrait / vidéo : boutons ronds dans le coin de la zone de couverture */
.BookTeaser .BookTeaser-header--actions {
  position: absolute;
  right: 0;
  bottom: 8px;
  z-index: 2;
  display: flex;
  gap: 6px;
  margin: 0;
}
.BookTeaser .BookTeaser-header--actions > a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  margin: 0;
  border: 1px solid var(--u-rule);
  border-radius: var(--am-radius);
  background: var(--u-surface);
}
.BookTeaser .BookTeaser-header--actions > a:hover {
  border-color: var(--u-ink);
}
.BookTeaser .BookTeaser-header--actions button {
  display: flex;
  padding: 0;
  border: 0;
  background: none;
}
.BookTeaser .BookTeaser-header--actions svg {
  width: 16px;
  height: 16px;
  fill: var(--u-ink);
}

/* Texte */
.BookTeaser .BookTeaser-data {
  height: auto;
  margin: 0;
}
.BookTeaser .BookTeaser-title {
  display: -webkit-box;
  overflow: hidden;
  font-size: 17px;
  line-height: 1.25;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}
.BookTeaser .BookTeaser-title a {
  text-decoration: none;
}
.BookTeaser .BookTeaser-author,
.BookTeaser .BookTeaser-authors {
  margin-top: 6px;
  font-family: var(--u-font-base);
  font-size: 14px;
  line-height: 1.35;
}
/* Les contributeurs arrivent en blocs séparés : on les remet sur une ligne */
.BookTeaser .BookTeaser-authors .BookContributor,
.BookTeaser .BookTeaser-authors .BookContributor-contributor {
  display: inline;
}
.BookTeaser .BookTeaser-intro {
  display: -webkit-box;
  overflow: hidden;
  margin-top: 10px;
  color: var(--u-ink-muted);
  font-size: 14px;
  line-height: 1.45;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}
/* Rayons et carrousels : vignette seule, sans résumé */
.UniversRail .BookTeaser .BookTeaser-intro,
.swiper-wrapper .BookTeaser .BookTeaser-intro {
  display: none;
}

/* Grilles et carrousels hérités : sans leurs marges hautes d'origine */
.Categories-books--grid .BookTeaser,
.Categories-books--carousel .BookTeaser,
.Bibliography-book .BookTeaser,
.BooksList-carousel .BookTeaser {
  padding-top: 0;
}
.Categories-books--grid {
  grid-gap: 48px clamp(16px, 2.2vw, 36px);
  padding-top: 32px;
}
/* Grilles des rubriques : mêmes vignettes, alignées à gauche */
.Categories-books--grid .BookTeaser,
.Categories-books--grid .BookTeaser .BookTeaser-header {
  text-align: left;
}
.Categories-books--grid .BookTeaser .BookTeaser-cover,
.Categories-books--carousel .BookTeaser .BookTeaser-cover {
  width: 100%;
  height: auto;
}


/* Grilles des rubriques : autant de colonnes que la largeur le permet */
@media (min-width: 700px) {
  .Categories-books--grid {
    grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  }
}
