/*
 * The written part of the site.
 *
 * The tokens repeat the ones the editor declares. They are not shared from one
 * file because the editor's page deliberately loads nothing from the theme, so
 * each has to be able to stand alone. The two lists are meant to stay equal:
 * a colour changed here is changed there too.
 */

:root {
	--kt-ink: #1a1a1a;
	--kt-text: #3c3c3c;
	--kt-muted: #54595f;
	--kt-accent: #f86d71;
	--kt-action: #c0353b;
	--kt-action-hover: #a32930;
	--kt-surface: #ffffff;
	--kt-bg: #fafafa;
	--kt-line: #e6e6e6;
	--kt-line-strong: #c9c9c9;
	--kt-focus: #1a73e8;

	--kt-font-ui: "Heebo", "Assistant", system-ui, sans-serif;
	--kt-font-head: "Assistant", "Heebo", system-ui, sans-serif;

	--kt-radius: 6px;
	--kt-bar-height: 52px;
	--kt-measure: 68ch;

	color-scheme: light;
}

*,
*::before,
*::after {
	box-sizing: border-box;
}

body.kt-body {
	margin: 0;
	background: var(--kt-bg);
	color: var(--kt-text);
	font-family: var(--kt-font-ui);
	font-size: 16px;
	line-height: 1.7;
	-webkit-text-size-adjust: 100%;
}

/* Keyboard first --------------------------------------------------------- */

.kt-skip {
	position: absolute;
	inset-inline-start: -9999px;
	top: 0;
	z-index: 10;
	padding: 10px 16px;
	background: var(--kt-surface);
	color: var(--kt-ink);
}

.kt-skip:focus {
	inset-inline-start: 0;
}

:where(a, button, input, select, textarea, [tabindex]):focus-visible {
	outline: 2px solid var(--kt-focus);
	outline-offset: 2px;
}

/* The bar, which is the editor's bar ------------------------------------- */

.kt-bar {
	display: flex;
	align-items: center;
	gap: 22px;
	min-height: var(--kt-bar-height);
	padding: 0 16px;
	background: var(--kt-surface);
	border-bottom: 1px solid var(--kt-line);
}

.kt-bar__brand {
	display: flex;
	align-items: center;
	text-decoration: none;
	color: inherit;
}

.custom-logo-link {
	display: flex;
	align-items: center;
	flex: 0 0 auto;
}

.custom-logo {
	display: block;
	height: 30px;
	width: auto;
}

.kt-bar__name {
	font-family: var(--kt-font-head);
	font-size: 17px;
	font-weight: 700;
	color: var(--kt-ink);
}

.kt-nav__list,
.kt-foot__list {
	display: flex;
	align-items: center;
	gap: 18px;
	margin: 0;
	padding: 0;
	list-style: none;
	flex-wrap: wrap;
}

.kt-nav__list a {
	color: var(--kt-text);
	text-decoration: none;
}

.kt-nav__list a:hover,
.kt-nav__list .current-menu-item > a {
	color: var(--kt-ink);
	text-decoration: underline;
	text-underline-offset: 4px;
}

/* Content ---------------------------------------------------------------- */

.kt-main {
	min-height: 60vh;
}

.kt-article {
	max-width: 860px;
	margin: 0 auto;
	padding: 40px 20px 64px;
}

.kt-title {
	margin: 0 0 24px;
	font-family: var(--kt-font-head);
	font-size: clamp(26px, 4vw, 34px);
	font-weight: 700;
	line-height: 1.25;
	color: var(--kt-ink);
}

.kt-meta {
	margin: -16px 0 24px;
	font-size: 13px;
	color: var(--kt-muted);
}

.kt-figure {
	margin: 0 0 24px;
}

.kt-figure img {
	max-width: 100%;
	height: auto;
	border-radius: var(--kt-radius);
}

/* A column of text, kept to a width a person can read without losing the line. */
.kt-prose {
	max-width: var(--kt-measure);
}

.kt-prose > * {
	margin-block: 0 16px;
}

.kt-prose h2 {
	margin-block: 36px 10px;
	font-family: var(--kt-font-head);
	font-size: 22px;
	font-weight: 700;
	color: var(--kt-ink);
}

.kt-prose h3 {
	margin-block: 24px 6px;
	font-family: var(--kt-font-head);
	font-size: 17px;
	font-weight: 600;
	color: var(--kt-ink);
}

.kt-prose a {
	color: var(--kt-action);
}

.kt-prose a:hover {
	color: var(--kt-action-hover);
}

.kt-prose ul,
.kt-prose ol {
	padding-inline-start: 22px;
}

.kt-prose li {
	margin-block: 4px;
}

.kt-prose img {
	max-width: 100%;
	height: auto;
	border-radius: var(--kt-radius);
}

.kt-prose code {
	padding: 1px 5px;
	border-radius: 4px;
	background: #f1f1f2;
	font-size: 0.92em;
	unicode-bidi: isolate;
}

.kt-prose blockquote {
	margin-inline: 0;
	padding-inline-start: 14px;
	border-inline-start: 3px solid var(--kt-line-strong);
	color: var(--kt-muted);
}

/* Anything wide scrolls inside itself rather than widening the page. */
.kt-prose table,
.kt-prose pre {
	display: block;
	max-width: 100%;
	overflow-x: auto;
}

/* Lists of posts --------------------------------------------------------- */

.kt-list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 14px;
}

.kt-list__item {
	padding: 18px 20px;
	background: var(--kt-surface);
	border: 1px solid var(--kt-line);
	border-radius: var(--kt-radius);
}

.kt-list__title {
	margin: 0 0 4px;
	font-family: var(--kt-font-head);
	font-size: 19px;
	font-weight: 600;
}

.kt-list__title a {
	color: var(--kt-ink);
	text-decoration: none;
}

.kt-list__title a:hover {
	text-decoration: underline;
	text-underline-offset: 4px;
}

.kt-list__excerpt {
	margin: 0;
	color: var(--kt-muted);
	font-size: 15px;
}

.kt-pagination {
	margin-top: 28px;
}

.kt-pagination .page-numbers {
	display: inline-block;
	padding: 4px 10px;
	margin-inline-end: 4px;
	border: 1px solid var(--kt-line-strong);
	border-radius: var(--kt-radius);
	color: var(--kt-text);
	text-decoration: none;
}

.kt-pagination .current {
	background: var(--kt-ink);
	border-color: var(--kt-ink);
	color: #fff;
}

/* Foot ------------------------------------------------------------------- */

.kt-foot {
	display: flex;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
	padding: 6px 16px;
	background: var(--kt-surface);
	border-top: 1px solid var(--kt-line);
	font-size: 13px;
	color: var(--kt-muted);
}

.kt-foot__list a {
	color: var(--kt-muted);
	text-decoration: none;
}

.kt-foot__list a:hover {
	color: var(--kt-ink);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.kt-foot__name {
	margin-inline-start: auto;
}

@media (prefers-reduced-motion: reduce) {
	* {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
	}
}

/* A hand drawn mark, sized by hand: it is a signature, not an illustration. */
.kt-sign {
	margin-top: 32px;
	text-align: center;
}

.kt-sign img {
	width: 180px;
	max-width: 60%;
	height: auto;
	opacity: 0.85;
}
