/**
 * Single hub posts: Back button + Related Content row.
 *
 * Cards come from hub-filters.css (.gd-hub-card), so a related card is the
 * same card a reader clicked on the hub page. Colours are the hub's own
 * variables, with the brand navy as the fallback.
 */

/*
 * One centred column for everything on the page: Back, the post itself and the
 * Related row share the same width and the same left edge.
 */
.gd-hub-single-post {
	--gd-hub-single-max: 1200px;
	--gd-hub-single-gutter: var(--gd-hub-spacing-md, 1.5rem);
}

.gd-hub-single,
.gd-hub-single-post #primary > .site-main > article {
	box-sizing: border-box;
	width: 100%;
	max-width: var(--gd-hub-single-max, 1200px);
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--gd-hub-single-gutter, 1.5rem);
	padding-right: var(--gd-hub-single-gutter, 1.5rem);
}

.gd-hub-single {
	font-family: var(--gd-hub-font-family, inherit);
}

/* Astra indents the title and pads the content differently; line them up. */
.gd-hub-single-post #primary > .site-main > article .entry-header,
.gd-hub-single-post #primary > .site-main > article .entry-content {
	margin-left: 0;
	margin-right: 0;
	padding-left: 0;
	padding-right: 0;
}

/* Back already opens the page; Astra's own top spacing would double it. */
.gd-hub-single-post #primary > .site-main > article,
.gd-hub-single-post #primary > .site-main > article .entry-header {
	margin-top: 0;
	padding-top: 0;
}

.gd-hub-single-post #primary > .site-main > article .entry-title {
	color: var(--gd-hub-hub-title-text, var(--gd-hub-secondary, #203d48));
}

/* ---- Back ----------------------------------------------------------------- */

.gd-hub-single--top {
	padding-top: var(--gd-hub-spacing-md, 1.5rem);
	padding-bottom: var(--gd-hub-spacing-sm, 1rem);
}

/* Every state pinned: Astra repaints links on hover and focus. */
.gd-hub-back,
.gd-hub-back:link,
.gd-hub-back:visited,
.gd-hub-back:hover,
.gd-hub-back:focus,
.gd-hub-back:active {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.75rem 1.4rem;
	border-radius: 30px;
	background: var(--gd-hub-secondary, #203d48);
	color: var(--gd-hub-text-light, #ffffff);
	font-size: 1rem;
	font-weight: 700;
	line-height: 1;
	text-decoration: none;
	box-shadow: none;
	transition: transform var(--gd-hub-transition, 200ms ease-in-out), box-shadow var(--gd-hub-transition, 200ms ease-in-out);
}

.gd-hub-back:hover {
	transform: translateY(-2px);
	box-shadow: var(--gd-hub-shadow-md, 0 4px 12px rgba(0, 0, 0, 0.08));
}

.gd-hub-back:focus-visible {
	outline: 3px solid var(--gd-hub-primary, #3e7993);
	outline-offset: 3px;
}

.gd-hub-back__icon {
	flex: none;
}

/* ---- Related Content ------------------------------------------------------ */

.gd-hub-related {
	padding-top: var(--gd-hub-spacing-xl, 3rem);
	padding-bottom: var(--gd-hub-spacing-xl, 3rem);
	--gd-hub-related-per-view: 5;
	--gd-hub-related-gap: 1.25rem;
}

.gd-hub-related__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gd-hub-spacing-sm, 1rem);
	margin-bottom: var(--gd-hub-spacing-sm, 1rem);
}

.gd-hub-related .gd-hub-related__title {
	margin: 0;
	color: var(--gd-hub-hub-title-text, var(--gd-hub-secondary, #203d48));
	font-size: clamp(1.75rem, 2.6vw, 2.5rem);
	font-weight: 700;
	line-height: 1.15;
}

.gd-hub-related__nav {
	display: flex;
	gap: 0.5rem;
	flex: none;
}

.gd-hub-related__nav[hidden] {
	display: none;
}

.gd-hub-related .gd-hub-related__arrow,
.gd-hub-related .gd-hub-related__arrow:hover,
.gd-hub-related .gd-hub-related__arrow:focus,
.gd-hub-related .gd-hub-related__arrow:active {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 0;
	border-radius: 30px;
	background: var(--gd-hub-secondary, #203d48);
	color: var(--gd-hub-text-light, #ffffff);
	cursor: pointer;
	box-shadow: none;
	transition: transform var(--gd-hub-transition, 200ms ease-in-out), opacity var(--gd-hub-transition, 200ms ease-in-out);
}

.gd-hub-related .gd-hub-related__arrow:hover {
	transform: translateY(-2px);
}

.gd-hub-related .gd-hub-related__arrow:focus-visible {
	outline: 3px solid var(--gd-hub-primary, #3e7993);
	outline-offset: 3px;
}

.gd-hub-related .gd-hub-related__arrow:disabled {
	opacity: 0.35;
	cursor: default;
	transform: none;
}

.gd-hub-related__track {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: calc((100% - (var(--gd-hub-related-per-view) - 1) * var(--gd-hub-related-gap)) / var(--gd-hub-related-per-view));
	gap: var(--gd-hub-related-gap);
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	/* Room for the card's hover lift and shadow, which overflow would clip. */
	padding: 8px 4px 20px;
	margin: -8px -4px 0;
	scrollbar-width: thin;
}

.gd-hub-related__track:focus-visible {
	outline: 3px solid var(--gd-hub-primary, #3e7993);
	outline-offset: 2px;
	border-radius: 30px;
}

.gd-hub-related__track > .gd-hub-card {
	scroll-snap-align: start;
	min-width: 0;
}

.gd-hub-related .gd-hub-card__title {
	font-size: 1rem;
}

@media (max-width: 1100px) {
	.gd-hub-related { --gd-hub-related-per-view: 4; }
}

@media (max-width: 860px) {
	.gd-hub-related { --gd-hub-related-per-view: 3; }
}

/* Phones: part of the next card shows, so it reads as a row to swipe. */
@media (max-width: 600px) {
	.gd-hub-single-post {
		--gd-hub-single-gutter: 1rem;
	}
	.gd-hub-related {
		--gd-hub-related-per-view: 1.6;
		--gd-hub-related-gap: 0.875rem;
		padding-top: var(--gd-hub-spacing-lg, 2rem);
	}
	.gd-hub-related__nav {
		display: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.gd-hub-back,
	.gd-hub-related .gd-hub-related__arrow {
		transition: none;
	}
	.gd-hub-back:hover,
	.gd-hub-related .gd-hub-related__arrow:hover {
		transform: none;
	}
}
