/**
 * News & insights — index, category archives, and the shared post card.
 *
 * Clean editorial rebuild: calm header + search, one featured lead story,
 * category filter pills, a uniform white card grid, numbered pagination and a
 * single newsletter moment. Enqueued on is_home() / is_category() /
 * is_singular('post') (the card + newsletter are shared with single posts).
 *
 * Tokens come from theme.json — palette presets (--wp--preset--color--*),
 * custom colours/layout/radii (--wp--custom--*), spacing
 * (--wp--preset--spacing--*), font sizes (--wp--preset--font-size--*).
 * Hex fallbacks mirror DESIGN.md so the module degrades gracefully.
 */

.blog-hero,
.blog-featured,
.blog-newsletter,
.blog-pagination,
.cats-wrap,
.posts-wrap,
.blog-card,
.single-post {
	--blog-ink: var(--wp--preset--color--charcoal, #1c211d);
	--blog-line: var(--wp--custom--color--line, #e7e5ee);
	--blog-muted: color-mix(in srgb, var(--wp--preset--color--charcoal, #1c211d) 58%, #ffffff);
	--blog-accent: var(--wp--preset--color--primary, #00b020);
	--blog-editorial: var(--wp--preset--color--tertiary, #9c3ba9);
}

/* -------------------------------------------------------------------------- */
/*  Shared bits                                                               */
/* -------------------------------------------------------------------------- */

.blog-tag {
	font-family: var(--wp--preset--font-family--mono, monospace);
	font-size: var(--wp--preset--font-size--min, 0.8rem);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--blog-editorial);
	text-decoration: none;
}

a.blog-tag:hover {
	text-decoration: underline;
	text-underline-offset: 2px;
}

.blog-readtime,
.blog-card-date,
.blog-byline {
	font-size: var(--wp--preset--font-size--tiny, 0.9rem);
	color: var(--blog-muted);
}

.blog-card-meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
}

.blog-card-meta .blog-readtime::before {
	content: "";
	display: inline-block;
	width: 3px;
	height: 3px;
	background: currentColor;
	vertical-align: middle;
	margin-right: 10px;
	opacity: 0.6;
}

/* -------------------------------------------------------------------------- */
/*  Hero                                                                      */
/* -------------------------------------------------------------------------- */

.blog-hero {
	background: var(--wp--preset--color--white, #fff);
	padding-block: var(--wp--preset--spacing--x-large) var(--wp--preset--spacing--large);
}

.blog-hero-inner {
	max-width: var(--wp--style--global--content-size);
}

.blog-hero-title {
	font-size: var(--wp--preset--font-size--gigantic, 3rem);
	font-weight: 700;
	line-height: var(--wp--custom--line-height--tiny, 1.1);
	letter-spacing: -0.02em;
	color: var(--blog-ink);
	margin: 0 0 var(--wp--preset--spacing--small);
	max-width: 20ch;
}

.blog-hero-title mark {
	background: none;
	color: var(--blog-accent);
}

.blog-hero-lede {
	font-size: var(--wp--preset--font-size--medium, 1.25rem);
	line-height: var(--wp--custom--line-height--normal, 1.6);
	color: var(--blog-muted);
	margin: 0 0 var(--wp--preset--spacing--medium);
	max-width: 60ch;
}

/* Searchability field — the plugin ships its own neutral/navy chrome, so the
   hero instance is re-skinned onto blog tokens. Overrides live here rather
   than in the plugin so updates don't clobber them. */

.blog-hero-search {
	margin-top: var(--wp--preset--spacing--medium);
}

.blog-hero-search .searchability-input-wrapper {
	border: 1px solid var(--blog-line);
	padding: 5px 5px 5px 6px;
	box-shadow: none;
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.blog-hero-search .searchability-input-wrapper:hover {
	border-color: color-mix(in srgb, var(--blog-ink) 22%, transparent);
}

.blog-hero-search .searchability-input-wrapper:focus-within {
	border-color: var(--blog-accent);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--blog-accent) 18%, transparent);
}

.blog-hero-search .searchability-input[type="text"] {
	font-family: inherit;
	font-size: var(--wp--preset--font-size--normal, 1rem);
	color: var(--blog-ink);
	padding: 11px 8px 11px 18px;
}

.blog-hero-search .searchability-input::placeholder {
	color: var(--blog-muted);
}

.blog-hero-search .searchability-clear {
	color: var(--blog-muted);
}

.blog-hero-search .searchability-clear:hover {
	background: color-mix(in srgb, var(--blog-ink) 6%, transparent);
	color: var(--blog-ink);
}

.blog-hero-search .searchability-submit {
	background: var(--blog-accent);
	transition: background-color 0.2s ease, transform 0.1s ease;
}

.blog-hero-search .searchability-submit:hover {
	background: var(--wp--preset--color--secondary, #f22477);
}

/* Suggestions dropdown — card radius + hairlines to match the post cards. */

.blog-hero-search .searchability-suggestions {
	border: 1px solid var(--blog-line);
	box-shadow: 0 12px 32px color-mix(in srgb, var(--blog-ink) 12%, transparent);
}

.blog-hero-search .searchability-suggestion-item + .searchability-suggestion-item {
	border-top: 1px solid color-mix(in srgb, var(--blog-line) 60%, transparent);
}

.blog-hero-search .searchability-suggestion-item a {
	color: var(--blog-ink);
}

.blog-hero-search .searchability-suggestion-item a:hover,
.blog-hero-search .searchability-suggestion-item.is-selected a {
	background: color-mix(in srgb, var(--blog-accent) 8%, transparent);
}

.blog-hero-search .searchability-suggestion-text strong {
	color: var(--blog-accent);
}

.blog-hero-search :is(.searchability-submit, .searchability-clear, .searchability-toggle):focus-visible {
	outline: 2px solid var(--blog-accent);
	outline-offset: 2px;
}

/* -------------------------------------------------------------------------- */
/*  Featured lead story                                                       */
/* -------------------------------------------------------------------------- */

.blog-featured {
	background: var(--wp--preset--color--white, #fff);
	padding-block: var(--wp--preset--spacing--small) var(--wp--preset--spacing--large);
}

.blog-featured-card {
	display: grid;
	grid-template-columns: 1.15fr 1fr;
	overflow: hidden;
	background: var(--wp--preset--color--white, #fff);
	box-shadow: 0 0 0 1px var(--blog-line);
}

/* An aspect ratio rather than a min-height: a short image letterboxes against
   a fixed height, and the grid row would stretch to whichever side is taller. */
.blog-featured-media {
	display: block;
	overflow: hidden;
	background: var(--wp--preset--color--grey, #e2e8f0);
	aspect-ratio: 3 / 2;
	height: 100%;
}

.blog-featured-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.4s ease;
}

.blog-featured-card:hover .blog-featured-img {
	transform: scale(1.03);
}

.blog-featured-body {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: var(--wp--preset--spacing--small);
	padding: var(--wp--preset--spacing--large);
}

.blog-featured-flag {
	font-family: var(--wp--preset--font-family--mono, monospace);
	font-size: var(--wp--preset--font-size--min, 0.8rem);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--blog-accent);
	margin: 0;
}

.blog-featured-title {
	font-size: var(--wp--preset--font-size--jumbo, 2.25rem);
	font-weight: 700;
	line-height: var(--wp--custom--line-height--small, 1.2);
	letter-spacing: -0.015em;
	margin: 0;
}

.blog-featured-title a {
	color: var(--blog-ink);
	text-decoration: none;
}

.blog-featured-card:hover .blog-featured-title a {
	color: var(--blog-accent);
}

.blog-featured-excerpt {
	font-size: var(--wp--preset--font-size--normal, 1rem);
	line-height: var(--wp--custom--line-height--normal, 1.6);
	color: var(--blog-muted);
	margin: 0;
	max-width: 56ch;
}

.blog-featured-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 10px;
	margin: var(--wp--preset--spacing--tiny) 0 0;
}

.blog-readmore {
	font-weight: 600;
	font-size: var(--wp--preset--font-size--tiny, 0.9rem);
	color: var(--blog-accent);
}

.blog-featured-foot .blog-readmore span {
	display: inline-block;
	transition: transform 0.2s ease;
}

.blog-featured-card:hover .blog-featured-foot .blog-readmore span {
	transform: translateX(4px);
}

/* -------------------------------------------------------------------------- */
/*  Filter bar — category pills + sort                                        */
/* -------------------------------------------------------------------------- */

.cats-wrap {
	border-block: 1px solid var(--blog-line);
}

.cats.wrap {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--medium);
	padding-block: 12px;
}

.cats-scroller {
	position: relative;
	display: flex;
	align-items: center;
	min-width: 0;
	flex: 1 1 auto;
}

.cats-scroll {
	display: flex;
	align-items: center;
	gap: 8px;
	overflow-x: auto;
	scrollbar-width: none;
	scroll-behavior: smooth;
	padding: 2px;
}

.cats-scroll::-webkit-scrollbar {
	display: none;
}

.cat {
	flex: none;
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 8px 15px;
	border: 1px solid var(--blog-line);
	background: var(--wp--preset--color--white, #fff);
	font-size: var(--wp--preset--font-size--tiny, 0.9rem);
	font-weight: 500;
	color: var(--blog-ink);
	text-decoration: none;
	white-space: nowrap;
	transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}

.cat:hover {
	border-color: var(--blog-accent);
	color: var(--blog-accent);
}

.cat.on {
	background: var(--blog-accent);
	border-color: var(--blog-accent);
	color: var(--wp--preset--color--white, #fff);
}

.cat .n {
	font-family: var(--wp--preset--font-family--mono, monospace);
	font-size: var(--wp--preset--font-size--min, 0.8rem);
	color: var(--blog-muted);
}

.cat.on .n {
	color: color-mix(in srgb, var(--wp--preset--color--white, #fff) 82%, transparent);
}

.cats-nav {
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border: 1px solid var(--blog-line);
	background: var(--wp--preset--color--white, #fff);
	color: var(--blog-ink);
	cursor: pointer;
	margin-inline: 2px;
}

.cats-nav.is-hidden {
	display: none;
}

.sort {
	flex: none;
	display: inline-flex;
	align-items: center;
	gap: 8px;
}

.sort label {
	font-size: var(--wp--preset--font-size--tiny, 0.9rem);
	color: var(--blog-muted);
}

.sort select {
	font: inherit;
	font-size: var(--wp--preset--font-size--tiny, 0.9rem);
	color: var(--blog-ink);
	padding: 8px 12px;
	border: 1px solid var(--blog-line);
	background: var(--wp--preset--color--white, #fff);
	cursor: pointer;
}

/* -------------------------------------------------------------------------- */
/*  Card grid                                                                 */
/* -------------------------------------------------------------------------- */

.posts-wrap {
	background: var(--wp--preset--color--white, #fff);
	padding-block: var(--wp--preset--spacing--large) var(--wp--preset--spacing--xx-large);
}

.posts-wrap .posts {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--wp--preset--spacing--large);
}

/* -------------------------------------------------------------------------- */
/*  Post card (shared: grid + single-post related)                            */
/* -------------------------------------------------------------------------- */

.blog-card {
	display: flex;
	flex-direction: column;
	background: var(--wp--preset--color--white, #fff);
	box-shadow: 0 0 0 1px var(--blog-line);
	overflow: hidden;
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.blog-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 10px 24px rgba(0, 0, 0, 0.1);
}

.blog-card-link {
	display: flex;
	flex-direction: column;
	height: 100%;
	text-decoration: none;
	color: inherit;
}

.blog-card-media {
	position: relative;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--wp--preset--color--grey, #e2e8f0);
}

.blog-card-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.4s ease;
}

.blog-card:hover .blog-card-img {
	transform: scale(1.04);
}

/* Missing-image fallback: one calm brand tint by category, not a rainbow. */
.blog-card--no-image .blog-card-media {
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--wp--preset--color--tertiary-50, #ECD2EF);
}

.blog-card--no-image.cat-news .blog-card-media {
	background: var(--wp--preset--color--primary-50, #ADFFBC);
}

.blog-card--no-image.cat-fundraising .blog-card-media {
	background: var(--wp--preset--color--secondary-50, #FFDDEA);
}

.blog-card-placeholder {
	font-family: var(--wp--preset--font-family--mono, monospace);
	font-size: var(--wp--preset--font-size--tiny, 0.9rem);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: color-mix(in srgb, var(--blog-ink) 45%, #fff);
}

.blog-card-body {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: var(--wp--preset--spacing--medium);
	flex: 1 1 auto;
}

.blog-card-title {
	font-size: var(--wp--preset--font-size--large, 1.5rem);
	font-weight: 600;
	line-height: var(--wp--custom--line-height--small, 1.2);
	letter-spacing: -0.01em;
	color: var(--blog-ink);
	margin: 0;
	transition: color 0.2s ease;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.blog-card:hover .blog-card-title {
	color: var(--blog-accent);
}

.blog-card-excerpt {
	font-size: var(--wp--preset--font-size--tiny, 0.9rem);
	line-height: var(--wp--custom--line-height--normal, 1.6);
	color: var(--blog-muted);
	margin: 0;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.blog-card-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin: auto 0 0;
	padding-top: 6px;
}

.blog-card-foot .blog-readmore {
	color: var(--blog-muted);
	font-size: var(--wp--preset--font-size--medium, 1.25rem);
	line-height: 1;
	transition: transform 0.2s ease, color 0.2s ease;
}

.blog-card:hover .blog-card-foot .blog-readmore {
	color: var(--blog-accent);
	transform: translateX(4px);
}

/* -------------------------------------------------------------------------- */
/*  Pagination                                                                */
/* -------------------------------------------------------------------------- */

.blog-pagination {
	background: var(--wp--preset--color--white, #fff);
	padding-block: 0 var(--wp--preset--spacing--xx-large);
}

.blog-pagination-inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 8px;
}

.blog-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	height: 44px;
	padding: 0 14px;
	border: 1px solid var(--blog-line);
	font-size: var(--wp--preset--font-size--tiny, 0.9rem);
	font-weight: 500;
	color: var(--blog-ink);
	text-decoration: none;
	transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}

.blog-pagination a.page-numbers:hover {
	border-color: var(--blog-accent);
	color: var(--blog-accent);
}

.blog-pagination .page-numbers.current {
	background: var(--blog-accent);
	border-color: var(--blog-accent);
	color: var(--wp--preset--color--white, #fff);
}

.blog-pagination .page-numbers.dots {
	border-color: transparent;
}

/* -------------------------------------------------------------------------- */
/*  Newsletter band (index + optional single post)                           */
/* -------------------------------------------------------------------------- */

.blog-newsletter {
	background: var(--wp--preset--color--white, #fff);
	padding-block: var(--wp--preset--spacing--large) var(--wp--preset--spacing--xx-large);
}

.blog-newsletter-inner {
	display: grid;
	grid-template-columns: 1.2fr 1fr;
	align-items: center;
	gap: var(--wp--preset--spacing--large);
	padding: var(--wp--preset--spacing--x-large);
	background: var(--wp--preset--color--charcoal, #1c211d);
	color: var(--wp--preset--color--white, #fff);
}

.blog-newsletter-title {
	font-size: var(--wp--preset--font-size--huge, 2.25rem);
	font-weight: 700;
	line-height: var(--wp--custom--line-height--snug, 1.15);
	letter-spacing: -0.015em;
	margin: 0 0 var(--wp--preset--spacing--small);
	color: var(--wp--preset--color--white, #fff);
}

.blog-newsletter-title mark {
	background: none;
	color: color-mix(in srgb, var(--wp--preset--color--primary, #00b020) 75%, #fff);
}

.blog-newsletter-lede {
	font-size: var(--wp--preset--font-size--normal, 1rem);
	line-height: var(--wp--custom--line-height--normal, 1.6);
	color: color-mix(in srgb, var(--wp--preset--color--white, #fff) 82%, transparent);
	margin: 0 0 var(--wp--preset--spacing--small);
	max-width: 52ch;
}

.blog-newsletter-rss a {
	font-size: var(--wp--preset--font-size--tiny, 0.9rem);
	font-weight: 500;
	color: color-mix(in srgb, var(--wp--preset--color--primary, #00b020) 70%, #fff);
	text-decoration: none;
}

.blog-newsletter-rss a:hover {
	text-decoration: underline;
	text-underline-offset: 2px;
}

.blog-newsletter-form {
	display: flex;
	gap: 8px;
	padding: 6px;
	background: var(--wp--preset--color--white, #fff);
}

.blog-newsletter-form input {
	flex: 1 1 auto;
	min-width: 0;
	border: none;
	background: none;
	font: inherit;
	font-size: var(--wp--preset--font-size--normal, 1rem);
	color: var(--blog-ink);
	padding: 12px 18px;
}

.blog-newsletter-form input:focus {
	outline: none;
}

.blog-newsletter-form button {
	flex: none;
	border: none;
	cursor: pointer;
	font: inherit;
	font-weight: 600;
	color: var(--wp--preset--color--white, #fff);
	background: var(--blog-accent);
	padding: 12px 26px;
	transition: background-color 0.2s ease;
}

.blog-newsletter-form button:hover {
	background: var(--wp--preset--color--secondary, #f22477);
}

.blog-newsletter-thanks {
	margin: 0;
	padding: 14px 18px;
	font-weight: 500;
	color: var(--blog-ink);
}

/* -------------------------------------------------------------------------- */
/*  Empty state                                                               */
/* -------------------------------------------------------------------------- */

.posts-wrap .no-content,
.posts-wrap .no-results {
	grid-column: 1 / -1;
	padding: var(--wp--preset--spacing--large);
	text-align: center;
	color: var(--blog-muted);
}

/* -------------------------------------------------------------------------- */
/*  Focus states                                                              */
/* -------------------------------------------------------------------------- */
/*  Cards, pills and pagination all suppress the default outline via custom
    borders and backgrounds, so keyboard focus needs saying explicitly.        */

.blog-card-link:focus-visible,
.blog-featured-media:focus-visible,
.blog-featured-title a:focus-visible,
.cat:focus-visible,
.cats-nav:focus-visible,
.sort select:focus-visible,
.blog-pagination a.page-numbers:focus-visible,
.blog-newsletter-rss a:focus-visible,
.blog-newsletter-form button:focus-visible {
	outline: 2px solid var(--blog-accent);
	outline-offset: 3px;
}

.blog-card:has(.blog-card-link:focus-visible) {
	transform: translateY(-4px);
	box-shadow: 0 10px 24px rgba(0, 0, 0, 0.1);
}

.blog-card:has(.blog-card-link:focus-visible) .blog-card-title {
	color: var(--blog-accent);
}

.blog-newsletter-form:focus-within {
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--blog-accent) 45%, transparent);
}

.blog-newsletter-form input:focus-visible {
	outline: none;
}

/* -------------------------------------------------------------------------- */
/*  Responsive                                                                */
/* -------------------------------------------------------------------------- */

@media (max-width: 1024px) {
	.posts-wrap .posts {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.blog-featured-card {
		grid-template-columns: 1fr;
	}

	.blog-featured-media {
		aspect-ratio: 16 / 9;
	}
}

@media (max-width: 860px) {
	.cats.wrap {
		flex-wrap: wrap;
	}

	.sort {
		order: -1;
		margin-left: auto;
	}

	.blog-newsletter-inner {
		grid-template-columns: 1fr;
		padding: var(--wp--preset--spacing--large);
	}
}

@media (max-width: 640px) {
	.posts-wrap .posts {
		grid-template-columns: minmax(0, 1fr);
	}

	.blog-hero-title {
		font-size: var(--wp--preset--font-size--jumbo, 2.25rem);
	}

	.blog-newsletter-form {
		flex-direction: column;
	}

	.blog-newsletter-form button {
		width: 100%;
	}
}
