/* Blog listing (home.php, static Posts page) + category/tag/date/author
   archives (archive.php) — same wide-width, single-column, full-width-image
   visual system as search.php. Title/excerpt/"more" button/category+tags
   meta come from GeneratePress's own content.php loop, untouched here. */

.post-list-wrap
{
	max-width: var(--wideWidth);
	margin-left: auto;
	margin-right: auto;
}

/* Beats the legacy #SD.archive .posts { max-width:var(--maxWidth); }
   rule in assets/css/global/components/hero.css (still relied on for
   .entry-header margin resets) — one extra class in the selector chain
   out-specificities it without touching that file. */
#SD.archive .post-list-wrap .posts,
#SD.blog .post-list-wrap
{
	max-width: var(--wideWidth);
}

.post-list-wrap article
{
	margin-bottom: calc(var(--defaultInterval) * 2);
}

/* Featured image renders at the 'full' registered size with no width cap
   (GeneratePress's generate_post_image(), .post-image > a > img) — this is
   what was blowing the layout out edge-to-edge. */
.post-list-wrap .post-image img
{
	width: 100%;
	height: auto;
	display: block;
}

.post-list-wrap .entry-header
{
	margin-top: 0;
}

/* Blog listing (/posts/) + category/tag/date/author archive page titles —
   both now render identical markup (<header class="page-header"><h1
   class="page-title">, same as search.php) so they share this rule and
   inherit the exact same font/size from the sitewide bare "#SD H1" rule
   (var(--h1Size)) — no per-template font-size override needed. Before this,
   archive.php emitted H2.title sized off the unrelated --titleSizeSmall
   variable, which is why the two titles didn't match.
   GeneratePress's own .page-header wrapper has no top margin by default,
   so without this the title sits flush under the logo (mobile: risks
   overlapping it) — same margin-top formula as search.css's
   .search-results-header. */
#SD.blog .page-header,
#SD.archive .page-header
{
	margin-top: clamp(calc(var(--defaultInterval) * 1), 12vw, 100px);
	margin-bottom: var(--defaultInterval);
}

@media only screen and (max-width: 999px)
{
	#SD.blog .page-header,
	#SD.archive .page-header
	{
		margin-top: max(clamp(calc(var(--defaultInterval) * 1), 12vw, 100px), var(--breadcrumb-mobile-clearance));
	}
}

/* Individual post titles within the listing (H2.entry-title, one per
   article — e.g. "telling your color story") — a different element from
   the page title above. Reads from Design Tokens → Post List → "Post
   Title — Type Role" (inc/post-list-tokens.php), which defaults to
   Portfolio Cards → Default → Title Type Role so these match search
   result card titles (.wpg-card-name) without any extra setup. Fallback
   values on the right of each var() reproduce today's plain "#SD H2"
   sitewide look exactly, so nothing shifts until a role is actually
   configured. #SD prefix needed — a bare ".post-list-wrap .entry-title"
   (2 classes) loses to the sitewide "#SD H2" id-scoped rule. */
#SD .post-list-wrap .entry-title,
#SD .post-list-wrap .entry-title a
{
	font-family: var(--post-list-title-family, inherit);
	font-weight: var(--post-list-title-weight, bold);
	font-size: var(--post-list-title-size, var(--h2Size));
	line-height: var(--post-list-title-line-height, 1);
	letter-spacing: var(--post-list-title-letter-spacing, normal);
	text-transform: var(--post-list-title-text-transform, none);
	color: var(--post-list-title-color, inherit);
	text-decoration: none;
}
