/*
  ======================
  Styles du modèle album
  ======================

  Il y a plusieurs dispositions possibles qui modifient substantiellement l'affichage :
  simple liste de documents, mosaïque d'images, etc.

  Markup :

  figure.album.album_model.album_<disposition>.album_<images|mixed>[.album_caption_<top|bottom>]
    ul.album__items
      li.album__item.album__item_<media>.album__item_<media>_<extension>
        div.album__doc.album__doc_<doc|emb>.album__doc_<captioned|captionless>.spip_document
    nav.album__pagination.pagination
    figcaption.album__caption
      strong.album__heading
      div.album__text
      div.album__credits
*/

/*
  ===========
  Généralités
  ===========
  Les choses communes à toutes les dispositions
  Nb : ne jamais cibler .album tout court car cela casserait des choses dans le privé
*/
:root {
	--spip-albums-gutter: 0.5rem; /* Marges internes */
	--spip-albums-margin: calc(var(--spip-spacing-y, 1.385em) * 2); /* Marge externes */
	--spip-albums-border-radius: 0.15em;
	--spip-albums-thumbnail-size: 10em; /* Taille max des miniatures */
	--spip-albums-text-gray: var(--spip-color-gray-dark, #666);
}

/* Conteneur général <figure> */
.album_model {
	display: flex;
	flex-flow: column;
	margin: 0 0 var(--spip-albums-margin);
}

/* Conteneur des items <ul> */
.album__items {
	column-gap: var(--spip-albums-gutter);
	row-gap: var(--spip-albums-gutter);
	list-style: none;
	padding: 0;
	margin: 0;
}

/* Item <li> */
.album__item,
li.album__item {
	margin: 0;
	float: none;
}

/* Documents */
.album_model .album__doc,
.album_model .spip_doc_inner {
	margin: 0;
}
.album_model .spip_document {
	min-width: initial;
}
.album_model .spip_doc_legende {
	word-break: break-word;
}
.album_model:not(.album_simple) .spip_doc_legende > * {
	min-width: initial;
}

/* Légende <figcaption>
   optionnellement en haut, par défaut pour la disposition simple */
.album__caption {
	margin-top: calc(var(--spip-albums-gutter) * 2);
	text-align: center;
	font-size: 1.15em;
}
.album_caption-top .album__items,
.album_simple:not(.album_caption-bottom) .album__items {
	order: 2;
}
.album_caption-top .album__pagination,
.album_simple:not(.album_caption-bottom) .album__pagination {
	order: 3;
}
.album_caption-top .album__caption,
.album_simple:not(.album_caption-bottom) .album__caption {
	order: 0;
	margin-bottom: calc(var(--spip-albums-gutter) * 2);
	margin-top: 0;
}

/* Tablettes et plus */
@media (min-width: 768px) {
	/* Légende */
	.album__caption {
		max-width: 66%;
		align-self: center;
	}
		/* Alignement */
	.album_model.left,
	.album_model.right {
		display: inline-flex;
		width: 50%;
	}
	.album_model.left {
		float: inline-start;
		margin-inline-end: var(--spip-albums-gutter);
	}
	.album_model.right {
		float: inline-end;
		margin-inline-start: var(--spip-albums-gutter);
	}
}

/* Éléments divers, reset */
.album_model .spip_logo {
	margin: 0;
}
.album__item pre {
	white-space: break-spaces;
}

/*
  ============================================
  Toutes les dispositions destinées aux images
  ============================================
  La légende est masquée et s'affiche au survol/focus, en overlay
*/
.album_images .album__item,
.album_images .album__doc {
	display: flex;
	justify-content: center;
	align-items: center;
}
.album_images .album__item_image .spip_doc_inner,
.album_images .album__item_image .spip_doc_lien {
	display: flex;
}
/* Légende en overlay et masquée par défaut */
.album_images .album__doc_image.album__doc_captioned .spip_doc_inner {
	position: relative;
	overflow: hidden;
}
.album_images .album__doc_image.album__doc_captioned .spip_doc_legende {
	display: inline-block;
	position: absolute;
	left: 50%; top: 50%;
	transform: translateX(-50%) translateY(-50%);
	padding: var(--spip-albums-gutter);
	width: 100%;
	max-width: 100%;
	max-height: 100%;
	overflow-y: scroll;
	pointer-events: none; /* afin de pouvoir cliquer sur le lien en arrière plan */
	background-color: transparent;
	color: white;
	/* font-size: 0.9em; */
	opacity: 0;
	transition: opacity 0.2s;
}
/* Légende affichée au survol */
.album_images .album__doc_image.album__doc_captioned:focus-within .spip_doc_legende,
.album_images .album__doc_image.album__doc_captioned:hover        .spip_doc_legende {
	opacity: 1;
}
/* Image assombrie et floutée au survol. On sait pas s'il y a un lien, ou direct un img ou svg. On cible donc le 1er élément. */
.album_images .album__doc_image.album__doc_captioned .spip_doc_inner > *:first-child {
	transition: filter 0.2s; /* in */
}
.album_images .album__doc_image.album__doc_captioned:focus-within .spip_doc_inner > *:first-child,
.album_images .album__doc_image.album__doc_captioned:hover        .spip_doc_inner > *:first-child {
	filter: brightness(20%) contrast(0.75) blur(1px);
	transition-duration: 0.1s; /* out */
}
/* Items non images */
.album_images .album__item:not(.album__item_image) {
	padding: var(--spip-albums-gutter) var(--spip-albums-gutter);
	max-width: 100%;
}

/*
   ==================
   Disposition Simple
   ==================
   Idem qu'une succession de modèles <doc> ou <emb>
*/
.album_simple .album__items {
	display: block;
}
.album_simple .album__item {
	margin-bottom: calc(var(--spip-albums-gutter) * 2);
}

/*
   ==================
   Disposition inline
   ==================
   Images sur un axe horizontal, limitées en hauteur
*/
.album_inline .album__items {
	display: flex;
	flex-flow: column wrap;
	align-items: center;
}
@media (min-width: 480px) {
	.album_inline .album__items {
		flex-flow: row wrap;
	}
	.album_inline .spip_document img,
	.album_inline .spip_document svg {
		width: auto;
		max-height: var(--spip-albums-thumbnail-size);
	}
}

/*
   =================
   Disposition Ligne
   =================
   Images sur un axe horizontal mais sans retour ligne, limitées en hauteur
*/
.album_model.album_line {
	--spip-albums-thumbnail-size: 20em;
}
.album_line .album__items {
	display: flex;
	flex-flow: row nowrap;
	align-items: center;
	overflow-x: auto;
	mask-image: linear-gradient(to right, black 0%, black calc(100% - 2em), transparent 100%);
	mask-size: cover;
	padding-inline-end: 2em;
}
.album_line .album__item {
	flex: 0 0 auto;
}
.album_line .spip_document img,
.album_line .spip_document svg {
	width: auto;
	max-height: var(--spip-albums-thumbnail-size);
}

/*
   ===================
   Disposition Masonry
   ===================
   Images sur un axe vertical, limitées en largeur
   Passer à `grid-template-rows: masonry;` quand le support sera correct
*/
.album_masonry .album__items {
	column-width: var(--spip-albums-thumbnail-size);
	column-fill: balance;
}
.album_masonry .album__item {
	margin-bottom: var(--spip-albums-gutter);
	break-inside: avoid-column;
}

/*
   ==================
   Disposition Moasic
   ==================
   Images en mosaïque, recadrage visuel.
*/
.album_mosaic .album__items {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(var(--spip-albums-thumbnail-size), 1fr));
	grid-auto-rows: var(--spip-albums-thumbnail-size);
	grid-auto-flow: dense;
}
.album_mosaic .album__item_image .album__doc,
.album_mosaic .album__item_image .spip_doc_inner,
.album_mosaic .album__item_image .spip_doc_lien,
.album_mosaic .album__item_image .spip_document img,
.album_mosaic .album__item_image .spip_document svg {
	width: 100%;
	height: 100%;
}
.album_mosaic .album__item_image .spip_document img,
.album_mosaic .album__item_image .spip_document svg {
	object-fit: cover;
	max-height: initial;
}
.album_mosaic .format-landscape_2 {
	grid-column: span 2;
}
.album_mosaic .format-landscape_3 {
	grid-column: span 3;
}
.album_mosaic .format-landscape_4 {
	grid-column: span 4;
}
.album_mosaic .format-portrait_2 {
	grid-row: span 2;
}
.album_mosaic .format-portrait_3 {
	grid-row: span 3;
}
.album_mosaic .format-portrait_4 {
	grid-row: span 4;
}

/*
  ===========================
  Dispositions Liste + browse
  ===========================
*/
.album_list .spip_doc_lien:not(:hover):not(:focus),
.album_browse .spip_doc_lien:not(:hover):not(:focus),
#wysiwyg .album_list .spip_doc_lien:not(:hover):not(:focus),
#wysiwyg .album_browse .spip_doc_lien:not(:hover):not(:focus) {
	color: inherit;
	text-decoration: none;
}
/* Layout image / légende */
.album_list .spip_doc_inner,
.album_browse .spip_doc_inner {
	display: grid;
	align-items: center;
}
/* Images centrées */
.album_list .spip_doc_img,
.album_browse .spip_doc_img {
	display: flex;
	width: 100%;
	height: 100%;
	align-items: center;
	justify-content: center;
}
/* icônes .spip_document svg */
.album_list .spip_document_icone,
.album_browse .spip_document_icone {
	width: auto;
	height: 100%;
}
/* arrondis */
.album_list .album__item_image .spip_document img,
.album_browse .album__item_image .spip_document img {
	border-radius: var(--spip-albums-border-radius);
}
/* typo légende */
/* .album_list .album__doc .spip_doc_legende,
.album_browse .album__doc .spip_doc_legende {
	font-size: 0.9em;
} */
.album_list .album__item .spip_doc_titre,
.album_list .album__item .spip_doc_titre strong,
.album_browse .album__item .spip_doc_titre,
.album_browse .album__item .spip_doc_titre strong {
	font-weight: inherit;
}

/*
  =================
  Disposition Liste
  =================
  Idem explorateur de fichiers en mode liste, 2 colonnes sur conteneurs larges
*/
.album_list .album__items {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(25em, 1fr));
	column-gap: calc(var(--spip-albums-gutter) * 4);
	row-gap: var(--spip-albums-gutter);
}
.album_list .album__doc {
	justify-content: start;
	text-align: start;
}
.album_list .spip_doc_inner {
	grid-template-columns: 50px 1fr;
	grid-template-rows: minmax(50px, 1fr);
	column-gap: var(--spip-albums-gutter);
	text-align: inherit;
}
.album_list .album__doc .spip_doc_legende {
	margin-inline-end: 0;
}
.album_list .album__doc .spip_doc_legende * {
	text-align: inherit;
}
.album_list .album__doc .spip_document img,
.album_list .album__doc .spip_document svg {
	max-height: 50px;
	width: auto;
}

/*
  ==================
  Disposition Browse
  ==================
  Idem explorateur de fichiers en mode vignettes
*/
.album_browse .album__items {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
	column-gap: calc(var(--spip-albums-gutter) * 4);
	row-gap: calc(var(--spip-albums-gutter) * 2);
}
.album_browse .spip_doc_inner {
	grid-template-columns: 100px;
	grid-template-rows: 100px 1fr;
	row-gap: calc(var(--spip-albums-gutter) / 2);
}
.album_browse .spip_doc_img {
	align-items: center;
}
