.mosaic-person {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	text-align: start;
}

.mosaic-person__photo {
	flex: none;
	overflow: hidden;
}

.mosaic-person__img {
	display: block;
	inline-size: 100%;
	block-size: auto;
	aspect-ratio: 1 / 1;
	object-fit: cover;
}

.mosaic-person--photo-rounded .mosaic-person__photo { border-radius: 0.75rem; }
.mosaic-person--photo-circle .mosaic-person__photo { border-radius: 50%; }

.mosaic-person__body {
	flex: 1;
	min-inline-size: 0;
}

.mosaic-person__name {
	margin: 0;
	color: var(--mosaic-color-headings, inherit);
	font-size: 1.25rem;
	line-height: 1.3;
}

.mosaic-person__role {
	margin: 0.15rem 0 0;
	font-size: 0.9375rem;
	opacity: 0.75;
}

.mosaic-person__bio {
	margin: 0.75rem 0 0;
}

.mosaic-person__links {
	margin-block-start: 0.9rem;
}

/* Beside the text: the photo takes a third of the width. */
.mosaic-person--side {
	flex-direction: row;
	align-items: flex-start;
}

.mosaic-person--side .mosaic-person__photo {
	inline-size: 33%;
	max-inline-size: 12rem;
}

@media (max-width: 479px) {
	.mosaic-person--side {
		flex-direction: column;
	}

	.mosaic-person--side .mosaic-person__photo {
		inline-size: 60%;
	}
}

/* Details over the photo: they slide up on hover or keyboard focus, and are always visible on touch screens. */
.mosaic-person--overlay {
	position: relative;
	overflow: hidden;
	gap: 0;
}

.mosaic-person--overlay.mosaic-person--photo-rounded { border-radius: 0.75rem; }
.mosaic-person--overlay.mosaic-person--photo-circle { border-radius: 1.5rem; }

.mosaic-person--overlay .mosaic-person__photo {
	border-radius: 0;
}

.mosaic-person--overlay .mosaic-person__body {
	position: absolute;
	inset-inline: 0;
	inset-block-end: 0;
	padding: 3rem 1.25rem 1.25rem;
	color: #fff;
	background: linear-gradient(to top, rgba(0, 0, 0, 0.78), rgba(0, 0, 0, 0));
	transition: padding-block-end 0.25s ease;
}

.mosaic-person--overlay .mosaic-person__name {
	color: #fff;
}

.mosaic-person--overlay .mosaic-person__bio,
.mosaic-person--overlay .mosaic-person__links {
	max-block-size: 0;
	margin-block: 0;
	overflow: hidden;
	opacity: 0;
	transition: max-block-size 0.3s ease, opacity 0.25s ease, margin 0.3s ease;
}

.mosaic-person--overlay:hover .mosaic-person__bio,
.mosaic-person--overlay:focus-within .mosaic-person__bio,
.mosaic-person--overlay:hover .mosaic-person__links,
.mosaic-person--overlay:focus-within .mosaic-person__links {
	max-block-size: 14rem;
	margin-block-start: 0.6rem;
	opacity: 1;
}

@media (hover: none) {
	.mosaic-person--overlay .mosaic-person__bio,
	.mosaic-person--overlay .mosaic-person__links {
		max-block-size: none;
		margin-block-start: 0.6rem;
		opacity: 1;
	}
}

.mosaic-person--overlay .mosaic-social__link {
	color: #fff;
}

@media (prefers-reduced-motion: reduce) {
	.mosaic-person--overlay .mosaic-person__body,
	.mosaic-person--overlay .mosaic-person__bio,
	.mosaic-person--overlay .mosaic-person__links {
		transition: none;
	}
}
