/* Additive styles only: the existing child stylesheet remains untouched. */
.gaf-project-filter {
	cursor: pointer;
}

.gaf-projects-status {
	/* TheSide's .fl-wrap grid floats. Clear it so this element and the
	 * sentinel are placed after the actual masonry height, not beside it. */
	clear: both;
	min-height: 1.5rem;
	padding: 1rem;
	text-align: center;
}

.gaf-projects-status.is-loading {
	min-height: 64px;
	/* Keep the native spinner above the fixed project-filter panel without
	 * moving the sentinel used by the infinite-scroll calculation. */
	transform: translateY(-50px);
}

/* Reuse TheSide's native loader animation, but contain its full-page
 * positioning inside the bottom-of-grid loading status. */
.gaf-projects-status .loader {
	left: auto;
	margin: 0 auto;
	position: relative;
	top: auto;
}

.gaf-projects-sentinel {
	clear: both;
	height: 1px;
	width: 100%;
}

/* Reserve every project's native 5:6 card area, even if an image is lazy or
 * the media file is missing. This keeps TheSide's Isotope layout stable. */
.gaf-projects-grid .grid-item-holder {
	aspect-ratio: 5 / 6;
	background: #111;
	overflow: hidden;
}

.gaf-projects-grid .grid-item-holder img {
	aspect-ratio: 5 / 6;
	display: block;
	height: 100%;
	object-fit: cover;
	width: 100%;
}
