.project-card {
	position: relative;
	cursor: pointer;
	opacity: 0;
	transition: opacity 0.6s cubic-bezier(0.215, 0.61, 0.355, 1);
}

.project-card.visible {
	opacity: 1;
}

.card-image-wrap {
	display: block;
	position: relative;
	overflow: hidden;
	background: var(--color-light-gray);
	width: 100%;
}

.card-image-wrap img,
.card-image-wrap video {
	width: 100%;
	height: auto;
	display: block;
	transition: transform 0.8s ease-out;
	pointer-events: none;
}

.downloads-grid .card-image-wrap {
	cursor: default;
}

.card-download-btn {
	position: absolute;
	right: 8px;
	bottom: 8px;
	width: 28px;
	height: 28px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--primary);
	color: #fff;
	border-radius: 50%;
	opacity: 0;
	transform: translateY(100%);
	transition:
		transform 0.25s ease,
		opacity 0.25s ease;
}

.downloads-grid .card-image-wrap:hover .card-download-btn {
	opacity: 1;
	transform: translateY(0);
}

.card-video-toggle {
	position: absolute;
	right: 8px;
	bottom: 8px;
	width: 28px;
	height: 28px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--primary);
	color: #fff;
	border: none;
	border-radius: 50%;
	cursor: pointer;
	opacity: 0;
	transform: translateY(100%);
	pointer-events: none;
	transition:
		transform 0.25s ease,
		opacity 0.25s ease;
}

.card-image-wrap:hover .card-video-toggle {
	opacity: 1;
	transform: translateY(0);
	pointer-events: all;
}

.card-video-toggle .icon-pause {
	display: none;
}

.card-image-wrap.is-playing .icon-play {
	display: none;
}

.card-image-wrap.is-playing .icon-pause {
	display: block;
}

.card-media-count {
	position: absolute;
	bottom: 4px;
	right: 4px;
	width: 18px;
	height: 18px;
	background: var(--color-dark);
	border-radius: 999px;
	display: flex;
	align-items: center;
	justify-content: center;
}

.card-media-count img {
	width: 14px;
	height: 14px;
	display: block;
}
