/*
 * One article — hero, body typography at a comfortable reading width, the
 * "More articles" cards and the closing call to action.
 *
 * Tokens only (see DESIGN.md); mobile-first, single column up to 640px, no
 * fixed pixel widths, so nothing scrolls sideways at 320px. The article card
 * styles themselves live in blog.css, which is enqueued here too.
 */

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

.site-main--article {
	background: var(--color-bg);
	color: var(--color-text);
}

.article__hero {
	background:
		radial-gradient(75% 120% at 15% 0%, rgba(13, 148, 136, 0.32) 0%, rgba(13, 148, 136, 0) 62%),
		linear-gradient(155deg, var(--color-primary-800) 0%, var(--color-primary-900) 100%);
	color: var(--color-neutral-50);
}

.article__hero-inner {
	padding-block: clamp(var(--space-12), 9vw, var(--space-20));
}

.article__hero .breadcrumbs,
.article__hero .breadcrumbs a {
	color: var(--color-neutral-200);
}

.article__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-2) var(--space-4);
	margin: 0 0 var(--space-4);
	max-width: none;
	font-family: var(--font-heading);
	font-size: var(--text-sm);
	font-weight: 600;
	color: var(--color-neutral-200);
}

.article__category {
	display: inline-block;
	padding: var(--space-1) var(--space-3);
	border-radius: var(--radius-full);
	background: rgba(248, 249, 250, 0.12);
	color: var(--color-accent-200);
	letter-spacing: var(--letter-wide);
	text-transform: uppercase;
	font-size: var(--text-xs);
	text-decoration: none;
	transition: background var(--duration-fast) var(--ease-default),
		color var(--duration-fast) var(--ease-default);
}

a.article__category:hover,
a.article__category:focus {
	background: var(--color-accent-700);
	color: var(--color-neutral-50);
}

.article__byline {
	color: var(--color-neutral-100);
	font-weight: 500;
}

.article__title {
	margin: 0 0 var(--space-5);
	max-width: 24ch;
	font-size: clamp(var(--text-2xl), 6vw, var(--text-4xl));
	color: var(--color-neutral-50);
}

.article__lead {
	max-width: 58ch;
	margin: 0;
	font-size: clamp(var(--text-base), 2.2vw, var(--text-lg));
	color: var(--color-neutral-100);
}

/* --- Cover image --------------------------------------------------------- */

.article__figure {
	margin: 0;
	padding-block: 0;
	background: linear-gradient(
		180deg,
		var(--color-primary-900) 0%,
		var(--color-primary-900) 50%,
		var(--color-bg) 50%,
		var(--color-bg) 100%
	);
}

.article__image {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	object-position: center;
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-lg);
}

/* --- Body ---------------------------------------------------------------- */

.article__body {
	padding-block: clamp(var(--space-10), 7vw, var(--space-16));
}

.article__content {
	max-width: 68ch;
	margin-inline: auto;
	font-size: clamp(var(--text-base), 1.6vw, var(--text-lg));
	line-height: var(--leading-normal);
	color: var(--color-text);
}

.article__content > * {
	max-width: none;
}

.article__content > * + * {
	margin-top: var(--space-5);
}

.article__content h2 {
	margin: var(--space-12) 0 var(--space-4);
	font-size: clamp(var(--text-xl), 3.4vw, var(--text-2xl));
	color: var(--color-primary-900);
}

.article__content h3 {
	margin: var(--space-10) 0 var(--space-3);
	font-size: clamp(var(--text-lg), 2.6vw, var(--text-xl));
	color: var(--color-primary-800);
}

.article__content h4 {
	margin: var(--space-8) 0 var(--space-3);
	font-size: var(--text-lg);
	color: var(--color-primary-800);
}

.article__content p {
	margin: 0 0 var(--space-5);
	max-width: none;
}

.article__content a {
	color: var(--color-link);
	text-decoration: underline;
}

.article__content a:hover,
.article__content a:focus {
	color: var(--color-link-hover);
}

.article__content ul,
.article__content ol {
	margin: 0 0 var(--space-5);
	padding-left: var(--space-6);
}

.article__content li {
	margin-bottom: var(--space-2);
}

.article__content li::marker {
	color: var(--color-accent-700);
}

.article__content blockquote {
	margin: var(--space-8) 0;
	padding: var(--space-5) var(--space-6);
	border-left: 4px solid var(--color-accent-600);
	border-radius: var(--radius-md);
	background: var(--color-surface);
	box-shadow: var(--shadow-sm);
	font-family: var(--font-heading);
	font-size: clamp(var(--text-lg), 2.4vw, var(--text-xl));
	font-weight: 600;
	letter-spacing: var(--letter-tight);
	line-height: var(--leading-tight);
	color: var(--color-primary-900);
}

.article__content blockquote p {
	margin: 0;
}

.article__content blockquote cite {
	display: block;
	margin-top: var(--space-3);
	font-family: var(--font-body);
	font-size: var(--text-sm);
	font-weight: 400;
	font-style: normal;
	color: var(--color-text-muted);
}

.article__content img,
.article__content figure img,
.article__content iframe,
.article__content video {
	max-width: 100%;
	height: auto;
	border-radius: var(--radius-md);
}

.article__content figure {
	margin: var(--space-8) 0;
}

.article__content figcaption {
	margin-top: var(--space-2);
	font-size: var(--text-sm);
	color: var(--color-text-muted);
}

.article__content pre {
	overflow-x: auto;
	padding: var(--space-4);
	border-radius: var(--radius-md);
	background: var(--color-primary-900);
	color: var(--color-neutral-100);
	font-size: var(--text-sm);
}

.article__content code {
	font-size: 0.95em;
	overflow-wrap: break-word;
}

.article__content table {
	display: block;
	overflow-x: auto;
	width: 100%;
	border-collapse: collapse;
	font-size: var(--text-sm);
}

.article__content th,
.article__content td {
	padding: var(--space-2) var(--space-3);
	border: 1px solid var(--color-border);
	text-align: left;
}

.article__pages {
	margin-top: var(--space-8);
	font-size: var(--text-sm);
}

/* --- More articles ------------------------------------------------------- */

.article-related {
	padding-block: clamp(var(--space-10), 7vw, var(--space-16));
	background: var(--color-neutral-100);
	color: var(--color-text);
	border-top: 1px solid var(--color-border);
}

.article-related__title {
	margin: 0 0 var(--space-8);
	font-size: clamp(var(--text-xl), 3.4vw, var(--text-2xl));
	color: var(--color-primary-900);
}

@media (min-width: 640px) {
	.article-grid--related {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.article-grid--related {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* --- Closing call to action ---------------------------------------------- */

.article-cta {
	background:
		radial-gradient(60% 120% at 90% 0%, rgba(13, 148, 136, 0.3) 0%, rgba(13, 148, 136, 0) 60%),
		linear-gradient(140deg, var(--color-primary-800) 0%, var(--color-primary-900) 100%);
	color: var(--color-neutral-50);
}

.article-cta__inner {
	padding-block: clamp(var(--space-12), 8vw, var(--space-20));
}

.article-cta__eyebrow {
	margin: 0 0 var(--space-3);
	max-width: none;
	font-family: var(--font-heading);
	font-size: var(--text-sm);
	font-weight: 600;
	letter-spacing: var(--letter-wide);
	text-transform: uppercase;
	color: var(--color-accent-300);
}

.article-cta__title {
	margin: 0 0 var(--space-4);
	max-width: 22ch;
	font-size: clamp(var(--text-xl), 4.5vw, var(--text-3xl));
	color: var(--color-neutral-50);
}

.article-cta__text {
	max-width: 56ch;
	margin: 0 0 var(--space-8);
	color: var(--color-neutral-100);
}

.article-cta__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-4) var(--space-6);
	margin: 0;
	max-width: none;
}

.article-cta__back {
	font-family: var(--font-heading);
	font-size: var(--text-sm);
	font-weight: 600;
	color: var(--color-neutral-100);
	text-decoration: none;
	border-bottom: 2px solid transparent;
	transition: color var(--duration-fast) var(--ease-default),
		border-color var(--duration-fast) var(--ease-default);
}

.article-cta__back:hover,
.article-cta__back:focus {
	color: var(--color-neutral-50);
	border-bottom-color: var(--color-accent-400);
}

.article-cta__back::before {
	content: "\2190";
	margin-right: var(--space-2);
}
