.gsrg-related-posts {
	margin: 2em 0;
}

.gsrg-related-posts .gsrg-heading {
	margin: 0 0 0.75em;
}

.gsrg-related-posts .gsrg-list {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	gap: 1.25em;
	margin: 0;
	padding: 0;
	list-style: none;
}

.gsrg-related-posts .gsrg-item {
	margin: 0;
}

.gsrg-related-posts .gsrg-link {
	display: block;
	text-decoration: none;
	color: inherit;
}

.gsrg-related-posts .gsrg-title {
	display: block;
	font-weight: 600;
}

.gsrg-related-posts .gsrg-excerpt {
	margin: 0.4em 0 0;
	font-size: 0.9em;
	opacity: 0.85;
}

/* ---- Game Ratings / Review Breakdown badges (shown only when the
   relevant companion plugin is active and the game has a rating/review
   -- see Settings > Related Games > "Show rating badge" / "Show review
   score badge"). Both wrapped in .gsrg-badges so they sit on their own
   row together, in whichever combination is actually available. ----- */

.gsrg-related-posts .gsrg-badges {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.6em;
	margin-top: 0.3em;
}

.gsrg-related-posts .gsrg-rating-badge,
.gsrg-related-posts .gsrg-review-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.3em;
	font-size: 0.85em;
	font-weight: 600;
	opacity: 0.85;
}

/* ---- [gamesync_top_games] leaderboard rank numbers -----------------
   The grid list layout above (.gsrg-list is display:grid) means a plain
   browser-native <ol> counter would land in the wrong spot, so instead
   this uses a CSS counter to stamp a "#1", "#2", ... badge over each
   card's thumbnail -- reusing the existing thumbnail-overlay corner
   rather than adding new markup. Harmless (and simply never shown) on
   .gsrg-list when it isn't a .gsrg-top-games-list. --------------------- */

.gsrg-top-games-list {
	counter-reset: gsrg-rank;
	list-style: none;
}

.gsrg-top-games-list .gsrg-item {
	counter-increment: gsrg-rank;
	position: relative;
}

.gsrg-top-games-list .gsrg-item::before {
	content: "#" counter(gsrg-rank);
	position: absolute;
	top: 0.4em;
	left: 0.4em;
	z-index: 1;
	padding: 0.15em 0.55em;
	border-radius: 999px;
	background: rgba(0, 0, 0, 0.7);
	color: #fff;
	font-size: 0.75em;
	font-weight: 700;
	letter-spacing: 0.02em;
	pointer-events: none;
}

/* No thumbnail on this card (show_thumbnail="0", or the game has none) --
   the rank badge has nothing to sit "over", so float it inline before the
   title instead of absolutely-positioned at a corner that doesn't exist. */
.gsrg-top-games-list .gsrg-item:not(:has(.gsrg-thumb))::before {
	position: static;
	display: inline-flex;
	margin: 0 0.5em 0.3em 0;
}

/* ---- Thumbnail box ------------------------------------------------- */

.gsrg-related-posts .gsrg-thumb {
	position: relative;
	display: block;
	overflow: hidden;
	margin-bottom: 0.5em;
	border-radius: 4px;
	background: rgba(0, 0, 0, 0.04);
}

.gsrg-related-posts .gsrg-thumb img {
	display: block;
	width: 100%;
	height: auto;
	transition: transform 0.35s ease, filter 0.35s ease, opacity 0.35s ease;
}

/* When a fixed width/height is set on the Settings page, crop to fill it. */
.gsrg-related-posts .gsrg-thumb.gsrg-thumb-fixed img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Overlay used by the "fade" hover effect; harmless markup otherwise. */
.gsrg-related-posts .gsrg-thumb-overlay {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(0, 0, 0, 0.45);
	opacity: 0;
	transition: opacity 0.3s ease;
}

.gsrg-related-posts .gsrg-thumb-overlay-text {
	color: #fff;
	font-size: 0.8em;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	transform: translateY(6px);
	transition: transform 0.3s ease;
}

/* ---- Hover effects (pick one on Settings > Related Games) - */

/* Zoom in */
.gsrg-hover-zoom .gsrg-item:hover .gsrg-thumb img {
	transform: scale(1.08);
}

/* Dark overlay with "View Game" */
.gsrg-hover-fade .gsrg-item:hover .gsrg-thumb-overlay {
	opacity: 1;
}

.gsrg-hover-fade .gsrg-item:hover .gsrg-thumb-overlay-text {
	transform: translateY(0);
}

/* Grayscale to color */
.gsrg-hover-grayscale .gsrg-thumb img {
	filter: grayscale(100%);
}

.gsrg-hover-grayscale .gsrg-item:hover .gsrg-thumb img {
	filter: grayscale(0%);
}

/* Lift with shadow */
.gsrg-hover-lift .gsrg-item {
	transition: transform 0.25s ease, box-shadow 0.25s ease;
	border-radius: 4px;
}

.gsrg-hover-lift .gsrg-item:hover {
	transform: translateY(-4px);
	box-shadow: 0 10px 24px rgba(0, 0, 0, 0.14);
}

@media (prefers-reduced-motion: reduce) {
	.gsrg-related-posts .gsrg-thumb img,
	.gsrg-related-posts .gsrg-thumb-overlay,
	.gsrg-related-posts .gsrg-thumb-overlay-text,
	.gsrg-related-posts .gsrg-item {
		transition: none !important;
	}
}
