/* =============================================================================
   Black Star News — article
   =============================================================================
   Loaded only on singular templates (inc/enqueue.php), so the homepage never
   downloads long-form typography it has no use for.

   Measurements are the approved Article design's: 820px header, 1080px figure,
   1180px body grid with a 700px measure and a 300px sidebar, 19px/1.65 body.
   ========================================================================== */

/* =============================================================================
   CONTAINERS
   ========================================================================== */
.container--article-header { max-width: 820px; }
.container--article { max-width: 1180px; }

/* =============================================================================
   DISCLOSURE — sponsored and partner
   Text, not colour. It survives CSS being unavailable, reaches a screen reader
   as ordinary content, and prints. Colour is reinforcement, never the message.
   ========================================================================== */
.disclosure {
	border: 2px solid var(--bsn-ink);
	background: var(--bsn-sponsored-bg);
	padding: var(--bsn-space-sm) var(--bsn-space-md);
	margin-bottom: var(--bsn-space-md);
	text-align: start;
}

.disclosure--partner {
	background: var(--bsn-band);
	border-color: var(--bsn-rule-strong);
}

.disclosure__label {
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-2xs);
	font-weight: var(--bsn-weight-black);
	letter-spacing: var(--bsn-section-label-tracking);
	text-transform: uppercase;
	color: var(--bsn-ink);
	margin: 0 0 var(--bsn-space-3xs);
}

.disclosure__body {
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-sm);
	line-height: 1.5;
	color: var(--bsn-ink-soft);
	margin: 0;
}

/* =============================================================================
   ARTICLE HEADER
   ========================================================================== */
.entry-header {
	padding-block: var(--bsn-space-lg) var(--bsn-space-2xs);
	text-align: center;
}

.entry-header--page { text-align: start; }

.entry-header__eyebrow {
	letter-spacing: 0.24em;
	margin-bottom: var(--bsn-space-sm);
	justify-content: center;
}

.entry-title {
	/* 52px at desktop, fluid down so a long headline never overflows a phone. */
	font-size: clamp(1.875rem, 4.4vw, 3.25rem);
	font-weight: var(--bsn-weight-bold);
	line-height: 1.04;
	letter-spacing: -0.015em;
	margin: 0 0 var(--bsn-space-md);
	/* Never truncated, and never given an artificial character limit. */
	text-wrap: balance;
	overflow-wrap: break-word;
}

.entry-dek {
	max-inline-size: 40ch;
	margin: 0 auto var(--bsn-space-md);
	font-size: clamp(1.0625rem, 1.4vw, 1.25rem);
	line-height: 1.45;
	font-style: italic;
	color: var(--bsn-ink-soft);
}

.entry-header--page .entry-dek { margin-inline: 0; }

/* Byline: portrait beside a left-aligned name/role stack, centred as a unit. */
.byline--article {
	justify-content: center;
	gap: var(--bsn-space-xs);
	font-family: var(--bsn-font-sans);
}

.byline--article .byline__text {
	flex-direction: column;
	align-items: flex-start;
	gap: 0.15rem;
	text-align: start;
}

/*
 * With no portrait there is nothing for the left-aligned stack to sit beside, so
 * it centres under the headline instead of hanging off the middle of the page.
 * 734 of 740 production authors reportedly have no photograph, so this is the
 * common case rather than the exception.
 */
.entry-header .byline--article:not(:has(.byline__avatar)) .byline__text {
	align-items: center;
	text-align: center;
}

.byline--article .byline__author {
	font-size: 0.78125rem;
	font-weight: var(--bsn-weight-bold);
	color: var(--bsn-ink);
}

.byline--article .byline__name {
	border-bottom: 1px solid var(--bsn-brass);
	color: var(--bsn-ink);
}

.byline--article .byline__name:hover { color: var(--bsn-brass-text); }

.byline--article .byline__role {
	font-size: var(--bsn-text-2xs);
	letter-spacing: 0;
	text-transform: none;
	color: var(--bsn-ink-muted);
}

.byline--article .byline__dates,
.byline--article .byline__reading {
	font-size: var(--bsn-text-2xs);
	color: var(--bsn-ink-muted);
}

.byline--article .byline__avatar-img {
	inline-size: 2.75rem;
	block-size: 2.75rem;
}

/* The dates and reading time sit on their own line beneath the byline block. */
.entry-header .byline--article {
	flex-wrap: wrap;
	row-gap: var(--bsn-space-2xs);
}

/* =============================================================================
   LEAD FIGURE
   ========================================================================== */
.entry-figure {
	margin: var(--bsn-space-md) 0 0;
}

.entry-figure img {
	inline-size: 100%;
	block-size: auto;
	/* The design's lead proportion. Reserves space before the image decodes. */
	aspect-ratio: 21 / 10;
	object-fit: cover;
}

.entry-figure__caption {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: var(--bsn-space-3xs) var(--bsn-space-md);
	margin-top: 0.625rem;
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-2xs);
	line-height: 1.5;
	color: var(--bsn-ink-fainter);
}

.entry-figure__text { flex: 1 1 24rem; min-inline-size: 0; }

.entry-figure__credit { flex: 0 0 auto; }

@media (max-width: 47.999rem) {
	.entry-figure img { aspect-ratio: 3 / 2; }
}

/* =============================================================================
   BODY + SIDEBAR GRID
   Source order is body → sidebar, so mobile finishes the article before meeting
   a newsletter prompt or an advertisement.
   ========================================================================== */
.article-grid {
	display: grid;
	gap: var(--bsn-space-xl);
	padding-block: var(--bsn-space-lg) var(--bsn-space-md);
}

/*
 * min-inline-size: 0 is load-bearing, not tidying.
 *
 * A grid item defaults to `min-width: auto`, which means its track refuses to
 * shrink below the widest unbreakable thing inside it. The development specimen
 * contains a deliberately long unbroken URL, and it dragged the body column to
 * 873px inside a 390px viewport — the whole page scrolled sideways. Measured, not
 * theorised.
 *
 * Every grid and flex item holding article prose needs this.
 */
.article-body,
.article-sidebar {
	min-inline-size: 0;
}

@media (min-width: 64rem) {
	.article-grid {
		grid-template-columns: minmax(0, 1fr) 300px;
		gap: 4.5rem;
	}

	.article-body {
		max-inline-size: 700px;
		justify-self: end;
		inline-size: 100%;
	}
}

/* =============================================================================
   LONG-FORM TYPOGRAPHY
   The measure is the point. 19px/1.65 inside 700px is ~68 characters, which is
   comfortable for 2,000 words rather than merely acceptable for 200.
   ========================================================================== */
.entry-content {
	font-size: clamp(1.0625rem, 0.5vw + 1rem, 1.1875rem);
	line-height: 1.65;
	color: var(--bsn-ink);
}

.entry-content > p {
	margin: 0 0 1.625rem;
}

/* A subheading binds to the text it introduces: more space above than below. */
.entry-content h2 {
	font-size: clamp(1.375rem, 1.6vw + 1rem, 1.75rem);
	font-weight: var(--bsn-weight-bold);
	line-height: 1.16;
	letter-spacing: -0.01em;
	margin: 2.375rem 0 1rem;
}

.entry-content h3 {
	font-size: clamp(1.1875rem, 1vw + 1rem, 1.375rem);
	font-weight: var(--bsn-weight-bold);
	line-height: 1.2;
	margin: 2rem 0 0.75rem;
}

.entry-content h4 {
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-base);
	font-weight: var(--bsn-weight-bold);
	letter-spacing: var(--bsn-tracking-wide);
	text-transform: uppercase;
	margin: 1.75rem 0 0.5rem;
}

/* Keep a heading with the text that follows it. */
.entry-content h2,
.entry-content h3,
.entry-content h4 {
	text-wrap: balance;
	break-after: avoid;
}

.entry-content strong { font-weight: var(--bsn-weight-bold); }
.entry-content em { font-style: italic; }

/*
 * Body links carry an underline, not colour alone — WCAG 1.4.1. The brass rule
 * sits below the baseline so descenders stay legible.
 */
.entry-content a {
	color: var(--bsn-ink);
	text-decoration: underline;
	text-decoration-color: var(--bsn-brass);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
}

.entry-content a:hover {
	color: var(--bsn-brass-text);
	text-decoration-thickness: 2px;
}

.entry-content a:visited { color: var(--bsn-ink-soft); }

/*
 * A long unbroken URL is the classic cause of sideways scroll on a phone.
 * `anywhere` rather than `break-word`: break-word will not break a single token
 * that is longer than the line on its own, which is exactly the case that causes
 * the problem. Applied to the content generally, since a bare URL in prose is as
 * common in this archive as a linked one.
 */
.entry-content,
.entry-content p,
.entry-content li,
.entry-content a,
.entry-content td {
	overflow-wrap: anywhere;
}

/*
 * ...but not to headlines, where `anywhere` would break a word mid-syllable
 * rather than wrapping it. Headlines get the gentler rule.
 */
.entry-content h2,
.entry-content h3,
.entry-content h4 {
	overflow-wrap: break-word;
}

/* --- Lists -----------------------------------------------------------------
 * The global reset strips markers from lists that carry a class. Article prose
 * must keep them, so they are restored explicitly here.
 */
.entry-content ul,
.entry-content ol {
	margin: 0 0 1.625rem;
	padding-inline-start: 1.5rem;
	font-size: 0.97em;
	line-height: 1.7;
}

.entry-content ul { list-style: disc; }
.entry-content ol { list-style: decimal; }

.entry-content li { margin-bottom: 0.625rem; }

.entry-content li::marker { color: var(--bsn-brass-text); }

.entry-content ul ul,
.entry-content ol ol,
.entry-content ul ol,
.entry-content ol ul {
	margin: 0.625rem 0 0;
}

.entry-content ul ul { list-style: circle; }

/* --- Blockquote ------------------------------------------------------------
 * Noticeable, but not so large that returning to the body feels like starting
 * again. 28px at desktop rather than a display size.
 */
.entry-content blockquote {
	margin: 2.375rem 0;
	padding: 0.375rem 0 0.375rem 1.75rem;
	border-inline-start: 3px solid var(--bsn-brass);
}

.entry-content blockquote p {
	font-size: clamp(1.1875rem, 1.6vw + 1rem, 1.75rem);
	line-height: 1.25;
	font-weight: var(--bsn-weight-semibold);
	font-style: italic;
	margin: 0 0 0.625rem;
}

.entry-content blockquote p:last-child { margin-bottom: 0; }

.entry-content blockquote cite {
	display: block;
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-2xs);
	font-weight: var(--bsn-weight-bold);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	font-style: normal;
	color: var(--bsn-ink-muted);
}

.entry-content .wp-block-pullquote { border: 0; padding: 0; }

/* --- Figures and images ----------------------------------------------------- */
.entry-content figure,
.entry-content .wp-block-image {
	margin: 2.25rem 0;
}

.entry-content img {
	max-inline-size: 100%;
	block-size: auto;
}

.entry-content figcaption,
.entry-content .wp-caption-text {
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-2xs);
	line-height: 1.5;
	color: var(--bsn-ink-fainter);
	margin-top: 0.5rem;
}

/* WordPress alignment classes, inside a constrained measure. */
.entry-content .aligncenter { margin-inline: auto; text-align: center; }

@media (min-width: 48rem) {
	.entry-content .alignleft {
		float: left;
		margin: 0.4rem 1.75rem 1.25rem 0;
		max-inline-size: 45%;
	}

	.entry-content .alignright {
		float: right;
		margin: 0.4rem 0 1.25rem 1.75rem;
		max-inline-size: 45%;
	}
}

/*
 * Breakout. alignwide and alignfull escape the reading measure without
 * escaping the page — the negative margin is capped by the viewport so nothing
 * can produce horizontal overflow.
 */
@media (min-width: 64rem) {
	.entry-content .alignwide,
	.entry-content .wp-block-image.alignwide {
		inline-size: min(1080px, calc(100vw - 4rem));
		margin-inline: calc(50% - min(540px, calc(50vw - 2rem)));
		max-inline-size: none;
	}

	.entry-content .alignfull {
		inline-size: min(1180px, calc(100vw - 4rem));
		margin-inline: calc(50% - min(590px, calc(50vw - 2rem)));
		max-inline-size: none;
	}
}

.entry-content .alignwide img,
.entry-content .alignfull img { inline-size: 100%; }

/* --- Tables ----------------------------------------------------------------
 * A table scrolls inside its own container rather than widening the page, and
 * the type is not shrunk until unreadable. Semantics are preserved exactly as
 * WordPress supplied them.
 */
.entry-content table {
	inline-size: 100%;
	border-collapse: collapse;
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-sm);
	line-height: 1.45;
	margin: 0 0 1.625rem;
}

.entry-content figure.wp-block-table,
.entry-content .wp-block-table {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.entry-content caption {
	caption-side: top;
	text-align: start;
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-2xs);
	letter-spacing: var(--bsn-tracking-wide);
	text-transform: uppercase;
	color: var(--bsn-ink-muted);
	padding-bottom: 0.5rem;
}

.entry-content th,
.entry-content td {
	text-align: start;
	padding: 0.5rem 0.75rem;
	border-bottom: var(--bsn-hairline);
	vertical-align: top;
}

.entry-content thead th {
	font-size: var(--bsn-text-2xs);
	font-weight: var(--bsn-weight-bold);
	letter-spacing: var(--bsn-tracking-wide);
	text-transform: uppercase;
	color: var(--bsn-ink-muted);
	background: var(--bsn-band);
	border-bottom: 1px solid var(--bsn-rule-strong);
	white-space: nowrap;
}

.entry-content tbody tr:last-child td { border-bottom: 0; }

/*
 * A bare table with no block wrapper still must not widen the page. Wrapping it
 * in a scroll container is not possible without touching the content, so the
 * table is allowed to scroll itself.
 */
.entry-content > table { display: block; overflow-x: auto; max-inline-size: 100%; }

/* --- Embeds ----------------------------------------------------------------
 * Aspect ratio reserved so an embed cannot shift the article as it loads. No
 * social SDK is ever enqueued; WordPress's own oEmbed handling is what runs, and
 * only when the content actually contains an embed.
 */
.entry-content .wp-block-embed,
.entry-content .wp-embedded-content {
	margin: 2.25rem 0;
	max-inline-size: 100%;
}

.entry-content iframe,
.entry-content video,
.entry-content embed,
.entry-content object {
	max-inline-size: 100%;
}

.entry-content .wp-block-embed__wrapper {
	position: relative;
}

.entry-content .wp-embed-aspect-16-9 .wp-block-embed__wrapper { aspect-ratio: 16 / 9; }
.entry-content .wp-embed-aspect-4-3 .wp-block-embed__wrapper { aspect-ratio: 4 / 3; }

.entry-content .wp-block-embed__wrapper > iframe {
	inline-size: 100%;
	block-size: 100%;
}

.entry-content pre,
.entry-content code {
	font-size: 0.9em;
	overflow-x: auto;
	max-inline-size: 100%;
}

.entry-content hr {
	border: 0;
	border-top: 1px solid var(--bsn-rule);
	margin-block: 2.25rem;
}

/* --- In-content advertisement ----------------------------------------------- */
.entry-content .ad-slot--in-article {
	margin-block: 2.25rem;
	padding-block: 1.375rem;
	border-block: var(--bsn-hairline);
}

/* =============================================================================
   TOPICS
   ========================================================================== */
.entry-tags {
	margin-top: var(--bsn-space-lg);
	padding-top: var(--bsn-space-sm);
	border-top: var(--bsn-hairline);
}

.entry-tags__heading {
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-2xs);
	font-weight: var(--bsn-weight-black);
	letter-spacing: var(--bsn-section-label-tracking);
	text-transform: uppercase;
	color: var(--bsn-ink-muted);
	margin: 0 0 var(--bsn-space-2xs);
}

.entry-tags__list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--bsn-space-2xs);
	list-style: none;
	margin: 0;
	padding: 0;
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-xs);
}

.entry-tags__list a {
	display: inline-block;
	padding: 0.3rem 0.7rem;
	border: var(--bsn-hairline);
	text-decoration: none;
	color: var(--bsn-ink-muted);
}

.entry-tags__list a:hover {
	border-color: var(--bsn-brass);
	color: var(--bsn-brass-text);
}

/* =============================================================================
   SHARE
   ========================================================================== */
.share {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--bsn-space-2xs) var(--bsn-space-sm);
	font-family: var(--bsn-font-sans);
}

.share--header {
	justify-content: center;
	margin-top: var(--bsn-space-md);
	padding-top: var(--bsn-space-sm);
	border-top: var(--bsn-hairline);
}

.share--footer {
	margin-top: var(--bsn-space-md);
	padding-block: var(--bsn-space-sm);
	border-block: var(--bsn-hairline);
}

.share__label {
	font-size: var(--bsn-text-2xs);
	font-weight: var(--bsn-weight-bold);
	letter-spacing: var(--bsn-section-label-tracking);
	text-transform: uppercase;
	color: var(--bsn-ink-muted);
}

.share__list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--bsn-space-2xs);
	list-style: none;
	margin: 0;
	padding: 0;
}

.share__link {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	/* 44px target, WCAG 2.5.8. */
	min-block-size: 2.75rem;
	padding-inline: 0.7rem;
	border: var(--bsn-hairline);
	font-size: var(--bsn-text-2xs);
	font-weight: var(--bsn-weight-semibold);
	letter-spacing: var(--bsn-tracking-wide);
	text-transform: uppercase;
	color: var(--bsn-ink-muted);
	text-decoration: none;
}

.share__link:hover {
	border-color: var(--bsn-brass);
	color: var(--bsn-brass-text);
}

.share__link[data-copied="true"] {
	border-color: var(--bsn-brass);
	color: var(--bsn-brass-text);
}

@media (max-width: 29.999rem) {
	.share__text { display: none; }
	.share__link { padding-inline: 0; inline-size: 2.75rem; justify-content: center; }
}

/* =============================================================================
   AUTHOR BOX
   ========================================================================== */
.author-box {
	display: flex;
	gap: var(--bsn-space-md);
	align-items: flex-start;
	margin-top: var(--bsn-space-lg);
	padding: var(--bsn-space-md);
	border: var(--bsn-hairline);
	background: var(--bsn-surface);
}

.author-box__portrait { flex: 0 0 auto; }

.author-box__img {
	inline-size: 4.5rem;
	block-size: 4.5rem;
	border-radius: 50%;
	object-fit: cover;
}

.author-box__body { min-inline-size: 0; }

.author-box__name {
	font-family: var(--bsn-font-sans);
	font-size: 0.78125rem;
	font-weight: var(--bsn-weight-black);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	margin: 0;
}

.author-box__name a { text-decoration: none; }
.author-box__name a:hover { color: var(--bsn-brass-text); }

.author-box__role {
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-2xs);
	letter-spacing: var(--bsn-tracking-wide);
	text-transform: uppercase;
	color: var(--bsn-brass-text);
	margin: 0.25rem 0 0;
}

.author-box__bio {
	font-size: 0.90625rem;
	line-height: 1.5;
	color: var(--bsn-ink-soft);
	margin: 0.5rem 0 0.5rem;
}

.author-box__more {
	margin: 0;
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-2xs);
	font-weight: var(--bsn-weight-bold);
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.author-box__more a {
	display: inline-flex;
	align-items: center;
	gap: 0.35em;
	color: var(--bsn-brass-text);
	text-decoration: none;
}

.author-box__links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--bsn-space-2xs);
	list-style: none;
	margin: 0.625rem 0 0;
	padding: 0;
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-2xs);
	letter-spacing: var(--bsn-tracking-wide);
	text-transform: uppercase;
}

.author-box__links a { color: var(--bsn-ink-muted); text-decoration: none; }
.author-box__links a:hover { color: var(--bsn-brass-text); }

/* =============================================================================
   SIDEBAR
   ========================================================================== */
.article-sidebar {
	font-family: var(--bsn-font-sans);
	display: flex;
	flex-direction: column;
	gap: var(--bsn-space-md);
}

.sidebar-module {
	border-top: 3px solid var(--bsn-ink);
	padding-top: 0.75rem;
}

.sidebar-module__title {
	display: flex;
	align-items: baseline;
	gap: 0.4em;
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-2xs);
	font-weight: var(--bsn-weight-black);
	letter-spacing: var(--bsn-section-label-tracking);
	text-transform: uppercase;
	color: var(--bsn-ink);
	margin: 0 0 var(--bsn-space-sm);
}

.sidebar-trending {
	list-style: none;
	margin: 0;
	padding: 0;
}

.sidebar-trending__item {
	display: flex;
	gap: 0.75rem;
	padding-block: 0.625rem;
	border-bottom: var(--bsn-hairline);
	margin: 0;
}

.sidebar-trending__item:last-child { border-bottom: 0; }

.sidebar-trending__rank {
	flex: 0 0 auto;
	font-family: var(--bsn-font-serif);
	font-style: italic;
	color: var(--bsn-brass-text);
}

.sidebar-trending__link {
	font-family: var(--bsn-font-serif);
	font-size: 0.96875rem;
	font-weight: var(--bsn-weight-semibold);
	line-height: 1.25;
	text-decoration: none;
	min-inline-size: 0;
}

a.sidebar-trending__link:hover { color: var(--bsn-brass-text); }

.sidebar-series__note {
	font-size: var(--bsn-text-xs);
	line-height: 1.5;
	color: var(--bsn-ink-muted);
	margin: 0;
}

/* Sidebar newsletter card — the dark block from the design. */
.newsletter--sidebar {
	background: var(--bsn-ink);
	color: var(--bsn-on-dark);
	padding: var(--bsn-space-md);
	text-align: start;
}

.newsletter--sidebar .newsletter__star {
	font-size: 0.875rem;
	letter-spacing: 0.3em;
	margin-bottom: 0.625rem;
	color: var(--bsn-brass-light);
}

.newsletter--sidebar .newsletter__heading {
	font-family: var(--bsn-font-serif);
	font-size: 1.3125rem;
	font-weight: var(--bsn-weight-bold);
	line-height: 1.2;
	letter-spacing: 0;
	text-transform: none;
	color: var(--bsn-on-dark);
	margin: 0 0 0.5rem;
}

.newsletter--sidebar .newsletter__body {
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-xs);
	line-height: 1.5;
	color: var(--bsn-on-dark-muted);
	margin: 0 0 var(--bsn-space-xs);
}

.newsletter--sidebar .newsletter__form {
	flex-direction: column;
	gap: 0.5rem;
	max-inline-size: none;
	margin: 0;
}

.newsletter--sidebar .newsletter__field,
.newsletter--sidebar .newsletter__submit {
	inline-size: 100%;
	padding: 0.625rem 0.75rem;
	font-size: var(--bsn-text-xs);
}

.newsletter--sidebar .newsletter__note { color: var(--bsn-ink-faint); margin-top: 0.5rem; }

.article-sidebar .ad-slot { margin-block: 0; }

/* =============================================================================
   RELATED COVERAGE
   ========================================================================== */
.related {
	padding-block: var(--bsn-space-lg);
	border-top: var(--bsn-hairline);
}

.related__grid {
	display: grid;
	gap: var(--bsn-space-md);
}

.card--related {
	border-inline-start: 1px solid var(--bsn-rule);
	padding-inline-start: var(--bsn-space-sm);
}

.card--related .card__title {
	font-size: var(--bsn-text-md);
	font-weight: var(--bsn-weight-bold);
}

@media (min-width: 48rem) {
	.related__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* =============================================================================
   PAGE TEMPLATE
   ========================================================================== */
.entry--page .entry-title { font-size: clamp(1.75rem, 3.4vw, 2.75rem); }

.entry--page .entry-dates {
	font-family: var(--bsn-font-sans);
	font-size: var(--bsn-text-xs);
	color: var(--bsn-ink-muted);
	margin: var(--bsn-space-2xs) 0 0;
}
