/* The blog and the About page, on top of landing.css: its header, footer, tokens, buttons
   and FAQ, plus what long-form reading needs and the landing page never drew. Every value
   comes from the landing page's palette (--ink, --green, --mint, --lime, --soft, --line,
   --text) so a post reads as part of the same site. No script: everything here works with
   the page's own markup. */

.site-blog main,
.site-about main {
	overflow: visible;
}

.blog-wrap {
	max-width: 1180px;
	margin: 0 auto;
	padding: 0 30px;
}

.site-blog a:focus-visible,
.site-about a:focus-visible,
.site-blog summary:focus-visible,
.site-blog .post-table:focus-visible {
	outline: 3px solid var(--green);
	outline-offset: 3px;
	border-radius: 4px;
}

/* Breadcrumbs, above a post's title and the About page's. */
.crumbs ol {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
	color: #627069;
	font-size: 14px;
}
.crumbs li + li::before {
	content: "/";
	margin-right: 6px;
	color: #9aa8a2;
}
.crumbs a {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	color: var(--green);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* ─── The index ─────────────────────────────────────────────────────────────────────── */

.blog-hero {
	padding: 84px 0 48px;
}
.blog-hero h1,
.about-hero h1 {
	max-width: 900px;
	margin: 20px 0 22px;
	font-size: clamp(40px, 5.6vw, 72px);
	line-height: 1;
	letter-spacing: -0.055em;
}
.blog-hero .crumbs + .section-label {
	margin-top: 22px;
}
.blog-hero p,
.about-hero p {
	max-width: 700px;
	margin: 0;
	color: var(--text);
	font-size: 20px;
	line-height: 1.6;
}
.post-list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
	margin: 0 0 110px;
	padding: 0;
	list-style: none;
}
.post-card {
	display: flex;
	flex-direction: column;
	gap: 14px;
	height: 100%;
	padding: 30px;
	background: #fff;
	border: 1px solid #e1e9e4;
	border-radius: 22px;
	transition: border-color 0.2s;
}
.post-card:hover {
	border-color: var(--lime);
}
.post-card h2 {
	margin: 0;
	font-size: 26px;
	line-height: 1.2;
	letter-spacing: -0.03em;
}
.post-card h2 a:hover {
	color: var(--green);
}
.post-card p {
	margin: 0;
	color: var(--text);
	font-size: 17px;
	line-height: 1.6;
}
.post-card .post-meta {
	margin-top: auto;
}
.post-meta {
	color: #627069;
	font-size: 14px;
}

/* ─── A post ────────────────────────────────────────────────────────────────────────── */

.post-head {
	max-width: 880px;
	padding: 56px 0 36px;
}
.post-head .section-label {
	margin-top: 26px;
}
.post-head h1 {
	margin: 16px 0 20px;
	font-size: clamp(36px, 5vw, 60px);
	line-height: 1.04;
	letter-spacing: -0.045em;
}
.post-dek {
	margin: 0 0 24px;
	color: var(--text);
	font-size: 20px;
	line-height: 1.6;
}
.post-byline {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 10px;
	color: #627069;
	font-size: 14px;
}
.post-byline > span + span::before {
	content: "·";
	margin-right: 10px;
	color: #9aa8a2;
}
.post-byline a {
	color: var(--ink);
	font-weight: 700;
	text-decoration: underline;
	text-decoration-color: var(--lime);
	text-underline-offset: 3px;
}
.post-draft {
	margin: 0 0 8px;
	padding: 12px 16px;
	border-radius: 12px;
	background: #fbf0d9;
	color: #6b4700;
	font-size: 15px;
}
.post-cover {
	margin: 0 0 48px;
}
.post-cover img {
	display: block;
	width: 100%;
	height: auto;
	border: 1px solid var(--line);
	border-radius: 22px;
}

.post-layout {
	display: grid;
	grid-template-columns: 220px minmax(0, 720px);
	justify-content: space-between;
	gap: 48px;
	padding-bottom: 80px;
}
.post-layout.single {
	grid-template-columns: minmax(0, 760px);
	justify-content: start;
}
.post-toc {
	align-self: start;
	position: sticky;
	top: 24px;
	padding-top: 6px;
}
.post-toc h2 {
	margin: 0 0 12px;
	color: #627069;
	font-size: 12px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.post-toc ol {
	display: grid;
	gap: 4px;
	margin: 0;
	padding: 0;
	list-style: none;
	border-left: 2px solid var(--line);
}
.post-toc a {
	display: block;
	padding: 4px 0 4px 14px;
	color: var(--text);
	font-size: 14px;
	line-height: 1.4;
}
.post-toc a:hover {
	color: var(--green);
}

/* The body: Markdown's elements, sized for reading. */
.prose {
	color: #263430;
	font-size: 18px;
	line-height: 1.75;
}
.prose > * + * {
	margin-top: 1.1em;
}
.prose h2 {
	margin-top: 2.2em;
	font-size: 30px;
	line-height: 1.2;
	letter-spacing: -0.035em;
	scroll-margin-top: 24px;
}
/* The site's headings are regular weight, set large and tight (the landing page's are). In
   running text the smaller levels need weight to stand apart from the paragraphs. */
.prose h3 {
	margin-top: 1.8em;
	font-size: 22px;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: -0.02em;
	scroll-margin-top: 24px;
}
.prose h4 {
	margin-top: 1.6em;
	font-size: 18px;
	font-weight: 700;
}
.prose h2 + *,
.prose h3 + *,
.prose h4 + * {
	margin-top: 0.6em;
}
.prose a {
	color: var(--green);
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.prose strong {
	color: var(--ink);
}
.prose ul,
.prose ol {
	padding-left: 1.3em;
}
.prose ul {
	list-style: disc;
}
.prose ol {
	list-style: decimal;
}
.prose li + li {
	margin-top: 0.4em;
}
.prose li::marker {
	color: var(--green);
}
/* A quotation, set as one: indented behind a hairline, a little larger and darker than the
   text around it. Not a tinted card with a coloured bar. */
.prose blockquote {
	padding: 2px 0 2px 22px;
	border-left: 1px solid #c9d8d3;
	color: var(--ink);
	font-size: 1.06em;
}
.prose code {
	padding: 0.1em 0.35em;
	border-radius: 6px;
	background: var(--soft);
	font-family: ui-monospace, Menlo, monospace;
	font-size: 0.88em;
}
.prose pre {
	overflow-x: auto;
	padding: 18px 20px;
	border: 1px solid var(--line);
	border-radius: 14px;
	background: var(--soft);
	line-height: 1.6;
}
.prose pre code {
	padding: 0;
	background: none;
	font-size: 15px;
}
.prose hr {
	margin: 2.4em 0;
	border-top: 1px solid var(--line);
}
.prose img {
	max-width: 100%;
	height: auto;
}
.post-figure img {
	display: block;
	border: 1px solid var(--line);
	border-radius: 14px;
}
.post-figure figcaption {
	margin-top: 10px;
	color: #627069;
	font-size: 15px;
	line-height: 1.5;
}
.post-table {
	overflow-x: auto;
	border: 1px solid var(--line);
	border-radius: 14px;
}
.post-table table {
	width: 100%;
	border-collapse: collapse;
	font-size: 16px;
	line-height: 1.5;
}
.post-table th,
.post-table td {
	padding: 12px 16px;
	border-bottom: 1px solid var(--line);
	text-align: left;
	vertical-align: top;
}
.post-table th {
	background: var(--soft);
	color: var(--ink);
	font-size: 14px;
}
.post-table tr:last-child td {
	border-bottom: 0;
}
.post-table .align-center {
	text-align: center;
}
.post-table .align-right {
	text-align: right;
}

/* After the body: questions, the demo, and who wrote it. */
/* The landing page's FAQ band, its text lined up with the post's column (`.blog-wrap`:
   1180px wide with 30px inside it) rather than the landing page's wider sections. A
   percentage, not `vw`, which counts the scrollbar and puts the text 7px off. */
.site-blog .faq {
	padding: 80px max(30px, 50% - 560px);
}
.post-cta {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: 24px 48px;
	margin: 80px 0 0;
	padding: 40px;
	border-radius: 22px;
	background: var(--mint);
}
.post-cta h2 {
	margin: 0 0 8px;
	font-size: 28px;
	line-height: 1.2;
	letter-spacing: -0.03em;
}
.post-cta p {
	margin: 0;
	color: var(--text);
	font-size: 17px;
	line-height: 1.6;
}
.post-cta .actions,
.about-contact .actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}
.button.light {
	border: 1px solid #cfdcd8;
	background: #fff;
	color: var(--ink);
}
.button.light:hover {
	border-color: var(--green);
}
.post-author {
	display: grid;
	gap: 6px;
	max-width: 760px;
	margin: 48px 0 110px;
	padding-top: 28px;
	border-top: 1px solid var(--line);
}
.post-author .eyebrow {
	color: #627069;
	font-size: 12px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.post-author .post-author-name {
	color: var(--ink);
	font-size: 22px;
	font-weight: 750;
	letter-spacing: -0.02em;
}
.post-author-name a:hover {
	color: var(--green);
}
.post-author p {
	margin: 0;
	color: var(--text);
	font-size: 16px;
	line-height: 1.6;
}

/* ─── About ─────────────────────────────────────────────────────────────────────────── */

.about-hero {
	padding: 56px 0 64px;
}
.about-hero .section-label {
	margin-top: 26px;
}
.about-section {
	padding: 0 0 96px;
}
.about-section > h2 {
	margin: 0 0 28px;
	font-size: clamp(32px, 4vw, 48px);
	line-height: 1.05;
	letter-spacing: -0.045em;
}
.about-principles {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
}
.about-principles article,
.team-card {
	padding: 30px;
	background: #fff;
	border: 1px solid #e1e9e4;
	border-radius: 22px;
}
.about-principles h3,
.team-card h3 {
	margin: 0 0 10px;
	font-size: 22px;
	line-height: 1.25;
	letter-spacing: -0.02em;
}
.about-principles p,
.team-card p {
	margin: 0;
	color: var(--text);
	font-size: 17px;
	line-height: 1.6;
}
.team {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.team-card {
	scroll-margin-top: 24px;
}
.team-card .role {
	margin-bottom: 12px;
	color: var(--green);
	font-size: 14px;
	font-weight: 700;
}
.team-card a {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	margin-top: 12px;
	color: var(--green);
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.about-contact {
	display: grid;
	gap: 18px;
	padding: 40px;
	border-radius: 22px;
	background: var(--mint);
}
.about-contact h2 {
	margin: 0;
	font-size: clamp(30px, 3.4vw, 42px);
	line-height: 1.05;
	letter-spacing: -0.04em;
}
.about-contact p {
	margin: 0;
	max-width: 640px;
	color: var(--text);
	font-size: 18px;
	line-height: 1.6;
}

/* ─── The rest of the written site: topics, downloads, related posts, the glossary, the
   tools, and the landing page's newest posts ──────────────────────────────────────────── */

.topic-list ul,
.letter-list ul {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: -16px 0 36px;
	padding: 0;
	list-style: none;
}
.topic-list a,
.letter-list a {
	display: inline-flex;
	align-items: center;
	min-height: 36px;
	padding: 6px 14px;
	border: 1px solid var(--line);
	border-radius: 999px;
	background: #fff;
	color: var(--ink);
	font-size: 14px;
	font-weight: 700;
}
.topic-list a:hover,
.letter-list a:hover {
	border-color: var(--green);
	color: var(--green);
}
.letter-list a {
	min-width: 36px;
	justify-content: center;
	padding: 6px 10px;
}
.list-heading {
	margin: 0 0 18px;
	font-size: 28px;
	letter-spacing: -0.03em;
}
.author-link,
.inline-link {
	color: var(--green);
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.download {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: 18px 36px;
	margin: 0 0 44px;
	padding: 26px 30px;
	border: 1px solid var(--lime);
	border-radius: 22px;
	background: var(--mint);
}
.download .eyebrow,
.post-author .eyebrow {
	color: var(--green);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.download h2 {
	margin: 4px 0 6px;
	font-size: 22px;
	font-weight: 700;
	letter-spacing: -0.02em;
}
.download p {
	margin: 0;
	color: var(--text);
	font-size: 16px;
	line-height: 1.55;
}
.download .actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.related {
	margin: 0 0 100px;
}
.related h2 {
	margin: 0 0 18px;
	font-size: 28px;
	letter-spacing: -0.03em;
}
.related .post-list {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 0;
}
.related .post-card h3,
.from-blog .post-card h3 {
	margin: 0;
	font-size: 20px;
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.02em;
}
.related .post-card h3 a:hover,
.from-blog .post-card h3 a:hover {
	color: var(--green);
}

.use-case-head .actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 4px;
}

.glossary {
	display: grid;
	gap: 40px;
	margin-bottom: 72px;
}
.glossary-letter h2 {
	margin: 0 0 14px;
	color: var(--green);
	font-size: 30px;
	scroll-margin-top: 24px;
}
.glossary dl {
	display: grid;
	gap: 0;
	margin: 0;
	border-top: 1px solid var(--line);
}
.glossary .term {
	display: grid;
	grid-template-columns: minmax(180px, 260px) minmax(0, 1fr);
	gap: 8px 36px;
	padding: 20px 0;
	border-bottom: 1px solid var(--line);
	scroll-margin-top: 24px;
}
.glossary .term:target {
	background: var(--mint);
}
.glossary dt {
	color: var(--ink);
	font-size: 18px;
	font-weight: 700;
}
.glossary dd {
	margin: 0;
	color: #263430;
	font-size: 17px;
	line-height: 1.65;
}
.glossary dd p {
	margin: 0;
}
.glossary dd p + p {
	margin-top: 8px;
}
.glossary dd a {
	color: var(--green);
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.tool-card {
	display: grid;
	gap: 18px;
	margin: 0 0 28px;
	padding: 30px;
	border: 1px solid #e1e9e4;
	border-radius: 22px;
	background: #fff;
}
.tool-card h2 {
	margin: 0;
	font-size: 26px;
	letter-spacing: -0.03em;
}
.tool-card fieldset {
	margin: 0;
	padding: 0;
	border: 0;
}
.tool-card legend {
	margin-bottom: 12px;
	color: var(--ink);
	font-size: 16px;
	font-weight: 700;
}
.qg-choices {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	gap: 8px;
}
.qg-choice {
	display: flex;
	align-items: center;
	gap: 10px;
	min-height: 44px;
	padding: 8px 12px;
	border: 1px solid var(--line);
	border-radius: 12px;
	font-size: 15px;
	cursor: pointer;
}
.qg-choice:has(input:checked) {
	border-color: var(--green);
	background: var(--mint);
}
.qg-choice input,
.tool-card input,
.tool-card select {
	accent-color: var(--green);
}
.tool-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 16px;
}
.tool-row label,
.tool-field label {
	color: var(--ink);
	font-size: 15px;
	font-weight: 700;
}
.tool-card select,
.tool-card input[type="number"] {
	min-height: 44px;
	padding: 8px 12px;
	border: 1px solid #c9d8d3;
	border-radius: 10px;
	background: #fff;
	color: var(--ink);
	font: inherit;
	font-size: 16px;
}
.tool-card select:focus-visible,
.tool-card input:focus-visible,
.tool-card button:focus-visible {
	outline: 3px solid var(--green);
	outline-offset: 2px;
}
.tool-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
	gap: 18px 24px;
}
.tool-field {
	display: grid;
	gap: 6px;
	align-content: start;
}
.tool-hint {
	margin: 0;
	color: #627069;
	font-size: 14px;
	line-height: 1.5;
}
.tool-status {
	margin: 0;
	min-height: 1.4em;
	color: var(--green);
	font-size: 15px;
	font-weight: 700;
}
.tool-card .post-table tr.total td {
	color: var(--ink);
	font-weight: 700;
	background: var(--mint);
}
.qg-output ol,
.qg-bank ol {
	display: grid;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.qg-item,
.qg-bank li {
	display: grid;
	gap: 4px;
	padding: 14px 16px;
	border: 1px solid var(--line);
	border-radius: 14px;
	background: #fff;
}
.qg-competency {
	color: var(--green);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}
.qg-question {
	margin: 0;
	color: var(--ink);
	font-size: 17px;
	font-weight: 700;
	line-height: 1.45;
}
.qg-follow,
.qg-strong {
	margin: 0;
	color: var(--text);
	font-size: 15px;
	line-height: 1.55;
}
.qg-bank {
	display: grid;
	gap: 36px;
	margin: 44px 0 80px;
}
.qg-bank > h2 {
	margin: 0;
	font-size: 30px;
	letter-spacing: -0.03em;
}
.qg-bank section {
	display: grid;
	gap: 10px;
	scroll-margin-top: 24px;
}
.qg-bank h3 {
	margin: 0;
	font-size: 22px;
	font-weight: 700;
}
.qg-bank section > p {
	margin: 0;
	color: var(--text);
	font-size: 16px;
}

.from-blog {
	background: #fff;
}
.from-blog .section-heading {
	margin-bottom: 36px;
}
.from-blog .post-list {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 0;
}

@media (max-width: 1000px) {
	.post-layout {
		grid-template-columns: minmax(0, 1fr);
		gap: 28px;
	}
	.post-toc {
		position: static;
		padding: 20px 22px;
		border: 1px solid var(--line);
		border-radius: 16px;
		background: var(--soft);
	}
	.post-toc ol {
		border-left: 0;
	}
	.post-toc a {
		padding-left: 0;
	}
	.post-list,
	.about-principles,
	.related .post-list,
	.from-blog .post-list {
		grid-template-columns: minmax(0, 1fr);
	}
	.download {
		grid-template-columns: minmax(0, 1fr);
	}
	.glossary .term {
		grid-template-columns: minmax(0, 1fr);
	}
	.post-cta {
		grid-template-columns: minmax(0, 1fr);
	}
}
@media (max-width: 700px) {
	.blog-wrap {
		padding: 0 20px;
	}
	.blog-hero {
		padding: 56px 0 36px;
	}
	.site-blog .faq {
		padding: 64px 20px;
	}
	.blog-hero p,
	.about-hero p,
	.post-dek {
		font-size: 17px;
	}
	.post-card,
	.about-principles article,
	.team-card {
		padding: 24px;
	}
	.post-card h2 {
		font-size: 22px;
	}
	/* A wrapped byline would start its second line with a separator. */
	.post-byline {
		gap: 4px 16px;
	}
	.post-byline > span + span::before {
		content: none;
	}
	.prose {
		font-size: 17px;
	}
	.prose h2 {
		font-size: 25px;
	}
	.prose h3 {
		font-size: 20px;
	}
	.post-cta,
	.about-contact,
	.tool-card,
	.download {
		padding: 24px 20px;
	}
}
