/* =========================================================================
   Alok Bento — components
   theme.json owns presets; this file owns clamp() formulas, grid spans,
   adjacent-element rhythm (18 / 14 / 26), states and breakpoints.
   Breakpoints: >900 desktop · 651–900 tablet · ≤650 mobile · ≤800 nav.
   ========================================================================= */

/* ---------- Base ---------- */
html {
	font-size: 100%;
	background: var(--alok-canvas);
	scroll-behavior: smooth;
}

body {
	margin: 0;
	background: var(--alok-canvas);
	color: var(--alok-ink);
	font-family: var(--alok-font);
	font-size: 1rem;
	line-height: 1.6;
	-webkit-text-size-adjust: 100%;
}

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

img {
	max-width: 100%;
	height: auto;
}

h1, h2, h3, h4, h5, h6 {
	color: var(--alok-ink);
	font-weight: 700;
	overflow-wrap: anywhere;
}

p, li, a {
	overflow-wrap: anywhere;
}

a {
	color: inherit;
}

a:focus-visible,
button:focus-visible,
pre:focus-visible,
[tabindex]:focus-visible {
	outline: 3px solid var(--alok-focus);
	outline-offset: 4px;
	border-radius: 3px;
}

main:focus,
main:focus-visible {
	outline: none;
}

.skip-link.screen-reader-text:focus {
	background: var(--alok-surface);
	color: var(--alok-ink);
	z-index: 100;
}

.wp-site-blocks {
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}

.wp-site-blocks > main,
.wp-site-blocks > .ab-main {
	flex: 1 0 auto;
}

.screen-reader-text:not(:focus) {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ---------- Wrapper ---------- */
.ab-wrap {
	width: 100%;
	max-width: 1330px;
	margin-inline: auto !important;
	padding-inline: var(--alok-gutter);
}

/* ---------- Header ---------- */
.ab-site-header {
	background: var(--alok-canvas);
	border-bottom: 1px solid var(--alok-divider);
}

.ab-head {
	min-height: 86px;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0 24px;
}

.ab-brand {
	display: flex !important;
	align-items: center;
	gap: 13px;
	margin: 0 auto 0 0 !important;
	min-width: 0;
}

.ab-brand > * {
	margin: 0 !important;
}

.ab-brand .wp-block-site-logo,
.ab-brand .wp-block-site-logo a {
	display: block;
	line-height: 0;
	flex: none;
}

.ab-site-title,
.ab-brand .wp-block-site-title {
	font-size: 1.3rem;
	font-weight: 800;
	letter-spacing: -0.04em;
	line-height: 1.2;
	margin: 0;
}

.ab-brand a {
	text-decoration: none;
	color: var(--alok-ink);
}

.ab-brand img,
.ab-header-photo {
	display: block;
	width: 42px !important;
	height: 42px !important;
	flex: none;
	object-fit: cover;
	object-position: center top;
	border-radius: 50% !important;
	border: 2px solid var(--alok-surface);
	box-shadow: 0 0 0 1px #d7dbd2;
	background: var(--alok-accent);
}

[data-theme="dark"] .ab-brand img {
	border-color: #29362c;
	box-shadow: 0 0 0 1px #56624f;
}

.ab-nav-panel {
	margin: 0;
}

.ab-nav.wp-block-navigation,
.ab-nav .wp-block-navigation__container {
	gap: clamp(15px, 2.7vw, 39px);
	align-items: center;
	font-size: 0.9rem;
	font-weight: 650;
	line-height: 1.4;
}

.ab-nav .wp-block-navigation-item__content {
	color: var(--alok-ink);
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
}

.ab-nav .wp-block-navigation-item__content:hover {
	color: var(--alok-link-hover);
}

.ab-nav .ab-nav-cta .wp-block-navigation-item__content {
	background: var(--alok-accent);
	color: var(--alok-accent-ink);
	border: 1px solid var(--alok-accent-border);
	border-radius: 6px;
	padding: 10px 17px;
}

.ab-nav .ab-nav-cta .wp-block-navigation-item__content:hover {
	background: #ecca30;
	color: var(--alok-accent-ink);
}

.ab-nav .current-menu-item > .wp-block-navigation-item__content:not(.ab-nav-cta *) {
	text-decoration: underline;
	text-underline-offset: 6px;
	text-decoration-thickness: 2px;
}

.ab-header-controls {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0;
}

.ab-theme-toggle,
.ab-menu-toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-width: 44px;
	min-height: 44px;
	padding: 10px;
	border: 1px solid var(--alok-control-border);
	border-radius: 6px;
	background: transparent;
	color: var(--alok-ink);
	font: inherit;
	font-size: 0.9rem;
	font-weight: 600;
	line-height: 1.4;
	cursor: pointer;
	flex: none;
}

.ab-menu-toggle {
	padding: 8px 12px;
}

.ab-theme-toggle[hidden],
.ab-menu-toggle[hidden],
.ab-nav-panel[hidden] {
	display: none !important;
}

.ab-theme-toggle:hover,
.ab-menu-toggle:hover {
	background: var(--alok-hover-soft);
}

.ab-theme-toggle svg,
.ab-menu-toggle svg {
	width: 22px;
	height: 22px;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.ab-sun,
.ab-close,
.ab-menu-toggle.is-open .ab-bars {
	display: none;
}

[data-theme="dark"] .ab-moon {
	display: none;
}

[data-theme="dark"] .ab-sun,
.ab-menu-toggle.is-open .ab-close {
	display: block;
}

/* Desktop: brand → nav → toggle at the far right. */
@media (min-width: 801px) {
	.ab-head {
		flex-wrap: nowrap;
	}
}

/* Mobile disclosure, in page flow (no overlay). */
@media (max-width: 800px) {
	.ab-head {
		min-height: 78px;
		padding-block: 16px;
		gap: 0 10px;
	}

	.ab-brand {
		gap: 10px;
	}

	.ab-brand .wp-block-site-title {
		font-size: 1.2rem;
	}

	.ab-brand img {
		width: 38px !important;
		height: 38px !important;
	}

	.ab-nav-panel {
		width: 100%;
		flex-basis: 100%;
		margin-top: 16px;
		padding-top: 18px;
		border-top: 1px solid var(--alok-divider);
	}

	.ab-nav.wp-block-navigation,
	.ab-nav .wp-block-navigation__container {
		flex-direction: column;
		align-items: stretch;
		gap: 4px;
		font-size: 1rem;
		width: 100%;
	}

	.ab-nav .wp-block-navigation-item {
		width: 100%;
	}

	.ab-nav .wp-block-navigation-item__content {
		display: flex;
		width: 100%;
		min-height: 48px;
		padding: 12px;
		border-radius: 6px;
	}

	.ab-nav .wp-block-navigation-item__content:hover {
		background: var(--alok-hover-soft);
		color: var(--alok-ink);
	}

	.ab-nav .ab-nav-cta {
		margin-top: 6px;
	}

	.ab-nav .ab-nav-cta .wp-block-navigation-item__content {
		justify-content: center;
		padding: 12px 17px;
	}
}

@media (max-width: 360px) {
	.ab-menu-toggle {
		padding: 8px;
	}

	.ab-menu-toggle span {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		white-space: nowrap;
	}
}

/* ---------- Footer ---------- */
.ab-site-footer {
	border-top: 1px solid var(--alok-divider);
	color: var(--alok-footer-ink);
	font-size: 0.875rem;
	line-height: 1.4;
}

.ab-foot {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px 24px;
	padding-top: 27px;
	padding-bottom: 40px;
}

.ab-foot p {
	margin: 0;
}

.ab-foot-links {
	display: flex;
	flex-wrap: wrap;
	gap: 0 22px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.ab-foot-links a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	text-decoration: none;
}

.ab-foot-links a:hover {
	color: var(--alok-link-hover);
	text-decoration: underline;
	text-underline-offset: 4px;
}

/* Buy me a coffee (footer) */
.ab-coffee {
	margin: 0;
}

.ab-coffee a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 8px 16px;
	border: 1px solid var(--alok-accent-border);
	border-radius: 6px;
	background: var(--alok-accent);
	color: var(--alok-accent-ink);
	font-size: 0.875rem;
	font-weight: 700;
	line-height: 1.4;
	text-decoration: none;
	white-space: nowrap;
}

.ab-coffee a:hover {
	background: #ecca30;
	color: var(--alok-accent-ink);
}

[data-theme="dark"] .ab-coffee a:focus-visible {
	outline-color: var(--alok-accent);
}

/* ---------- Social icons ---------- */
.ab-socials {
	display: flex;
	flex-wrap: wrap;
	gap: 9px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.ab-socials a {
	width: 44px;
	height: 44px;
	display: grid;
	place-items: center;
	border: 1px solid currentColor;
	border-radius: 7px;
	color: inherit;
	text-decoration: none;
}

.ab-socials a:hover {
	background: var(--alok-accent);
	border-color: var(--alok-accent);
	color: var(--alok-accent-ink);
}

.ab-socials svg {
	display: block;
	width: 20px;
	height: 20px;
	flex-shrink: 0;
	fill: currentColor;
}


@media (max-width: 650px) {
	.ab-foot .ab-socials {
		width: 100%;
	}
}

/* ---------- Main wrappers ---------- */
.ab-main {
	padding-top: clamp(52px, 6vw, 86px);
	padding-bottom: clamp(115px, 10vw, 160px);
}

.ab-main.ab-inner {
	padding-top: clamp(42px, 6vw, 90px);
	padding-bottom: 100px;
}

@media (max-width: 650px) {
	.ab-main {
		padding-top: 38px;
		padding-bottom: 90px;
	}
}

.ab-main > .wp-block-post-content > *,
.ab-main > * {
	margin-block: 0;
}

/* ---------- Labels, links, buttons ---------- */
.is-style-eyebrow,
.ab-eyebrow {
	font-size: 0.875rem;
	line-height: 1.4;
	font-weight: 800;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--alok-muted);
	margin: 0;
}

.ab-email.is-ready .ab-email__text {
	overflow-wrap: anywhere;
}

.is-style-textlink {
	margin: 0;
	font-size: 0.88rem;
	line-height: 1.4;
	font-weight: 800;
}

.is-style-textlink a,
.wp-block-read-more.ab-textlink {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	text-decoration: none;
	color: inherit;
	font-size: 0.88rem;
	font-weight: 800;
}

.is-style-textlink a:hover,
.wp-block-read-more.ab-textlink:hover {
	color: var(--alok-link-hover);
	text-decoration: underline;
	text-underline-offset: 4px;
}

.wp-block-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.wp-block-buttons > .wp-block-button {
	margin: 0;
}

.wp-block-button .wp-block-button__link,
.wp-block-button .wp-element-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 46px;
	padding: 10px 18px;
	border-radius: 6px;
	border: 1px solid var(--alok-button-bg);
	background: var(--alok-button-bg);
	color: var(--alok-button-ink);
	font-family: inherit;
	font-size: 0.9rem;
	font-weight: 700;
	line-height: 1.4;
	text-decoration: none;
	white-space: normal;
}

.wp-block-button .wp-block-button__link:hover {
	background: var(--alok-button-hover);
	border-color: var(--alok-button-hover);
	color: var(--alok-button-ink);
}

.wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent;
	color: var(--alok-ink);
	border: 1px solid currentColor;
	padding: 10px 18px;
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--alok-surface-soft);
	color: var(--alok-ink);
	border-color: currentColor;
}

/* ---------- Bento grid ---------- */
.ab-grid {
	display: grid !important;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	grid-auto-flow: row;
	gap: var(--alok-gap);
	align-items: stretch;
}

.ab-grid > * {
	grid-column: span 12;
	margin: 0 !important;
	min-width: 0;
}

.ab-grid > .ab-span-4 { grid-column: span 4; }
.ab-grid > .ab-span-5 { grid-column: span 5; }
.ab-grid > .ab-span-6 { grid-column: span 6; }
.ab-grid > .ab-span-7 { grid-column: span 7; }
.ab-grid > .ab-span-8 { grid-column: span 8; }
.ab-grid > .ab-span-12 { grid-column: span 12; }

@media (max-width: 900px) {
	.ab-grid > .ab-span-4,
	.ab-grid > .ab-span-5,
	.ab-grid > .ab-span-7,
	.ab-grid > .ab-span-8,
	.ab-grid > .ab-span-6 {
		grid-column: span 6;
	}
}

@media (max-width: 650px) {
	:root {
		--alok-gap: 13px;
	}

	.ab-grid > [class*="ab-span-"] {
		grid-column: span 12;
	}
}

/* ---------- Cards ---------- */
.is-style-card,
.is-style-card-yellow,
.is-style-card-inverse,
.is-style-card-soft,
.is-style-card-warm,
.is-style-card-partner {
	position: relative;
	display: flex !important;
	flex-direction: column;
	min-width: 0;
	min-height: 240px;
	padding: var(--alok-card-pad);
	border: 1px solid var(--alok-border);
	border-radius: var(--alok-card-radius);
	background: var(--alok-surface);
	color: var(--alok-ink);
}

.is-style-card-soft { background: var(--alok-surface-soft); }
.is-style-card-partner { background: var(--alok-surface-partner); }
.is-style-card-warm { background: var(--alok-surface-warm); }

.is-style-card-yellow {
	background: var(--alok-accent);
	border-color: var(--alok-accent-border);
	color: var(--alok-accent-ink);
}

.is-style-card-inverse,
.ab-contact-band {
	background: var(--alok-surface-inverse);
	border-color: var(--alok-surface-inverse);
	color: var(--alok-inverse-ink);
}

[data-theme="dark"] .is-style-card-inverse,
[data-theme="dark"] .ab-contact-band {
	border-color: var(--alok-divider);
}

/* Reset core margins inside cards, then apply the rhythm explicitly. */
[class*="is-style-card"] > *,
[class*="is-style-card"] > .wp-block-group > * {
	margin-top: 0;
	margin-bottom: 0;
}

[class*="is-style-card"] p {
	font-size: 1rem;
	line-height: 1.6;
	color: var(--alok-body);
	max-width: 65ch;
}

[class*="is-style-card"] .is-style-eyebrow,
[class*="is-style-card"] .ab-eyebrow {
	max-width: none;
	color: var(--alok-muted);
}

[class*="is-style-card"] :is(h1, h2, h3) {
	color: inherit;
}

.is-style-eyebrow + :is(h1, h2, h3),
.ab-eyebrow + :is(h1, h2, h3),
.ab-newsletter-top + :is(h2, h3) {
	margin-top: var(--alok-label-title) !important;
}

[class*="is-style-card"] :is(h1, h2, h3),
.ab-inner-hero h1,
.ab-contact-band h2 {
	margin-bottom: var(--alok-title-body) !important;
}

[class*="is-style-card"] p + p {
	margin-top: 16px !important;
}

/* Action pinned to the bottom of equal-height cards. */
[class*="is-style-card"] > .is-style-textlink,
[class*="is-style-card"] > .wp-block-buttons,
[class*="is-style-card"] > .wp-block-query,
[class*="is-style-card"] > .ab-project-tag {
	margin-top: auto !important;
	padding-top: var(--alok-body-action);
}

[class*="is-style-card"] .is-style-textlink {
	color: var(--alok-ink);
}

/* Yellow surface. */
.is-style-card-yellow p { color: var(--alok-accent-body); }
.is-style-card-yellow .is-style-eyebrow { color: var(--alok-accent-muted) !important; }
.is-style-card-yellow :is(h1, h2, h3),
.is-style-card-yellow .is-style-textlink { color: var(--alok-accent-ink); }
.is-style-card-yellow a:hover { color: #645000 !important; }

.is-style-card-yellow .wp-block-button .wp-block-button__link {
	background: #20231f;
	border-color: #20231f;
	color: #ffffff;
}

.is-style-card-yellow .wp-block-button .wp-block-button__link:hover {
	background: #454a40;
	border-color: #454a40;
	color: #ffffff !important;
}

.is-style-card-yellow .wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent;
	color: #20231f;
	border-color: #20231f;
}

.is-style-card-yellow .wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: #fff8cc;
	color: #20231f !important;
}

[data-theme="dark"] .is-style-card-yellow a:focus-visible {
	outline-color: #20231f;
}

/* Inverse surface. */
.is-style-card-inverse p,
.ab-contact-band p { color: var(--alok-inverse-body); }
.is-style-card-inverse .is-style-eyebrow,
.ab-contact-band .is-style-eyebrow { color: var(--alok-accent) !important; }
.is-style-card-inverse :is(h1, h2, h3),
.ab-contact-band :is(h2, h3) { color: var(--alok-inverse-ink); }
.is-style-card-inverse .is-style-textlink,
.is-style-card-inverse .is-style-textlink a { color: var(--alok-accent); }
.is-style-card-inverse .is-style-textlink a:hover { color: #ffffff; }

.is-style-card-inverse .wp-block-button .wp-block-button__link,
.ab-contact-band .wp-block-button .wp-block-button__link {
	background: var(--alok-accent);
	border-color: var(--alok-accent);
	color: #20231f;
}

.is-style-card-inverse .wp-block-button .wp-block-button__link:hover,
.ab-contact-band .wp-block-button .wp-block-button__link:hover {
	background: #ecca30;
	border-color: #ecca30;
	color: #20231f;
}

.is-style-card-inverse a:focus-visible,
.ab-contact-band a:focus-visible {
	outline-color: var(--alok-accent);
}

/* ---------- Homepage cards ---------- */
.ab-hero,
.ab-consult {
	min-height: 505px;
}

.ab-hero h1 {
	font-size: clamp(2.35rem, 3.65vw, 3.7rem);
	line-height: 1.11;
	letter-spacing: -0.052em;
	max-width: 730px;
}

.ab-hero p {
	max-width: 610px;
}

.ab-hero .ab-affiliation {
	margin-top: 20px !important;
}

.ab-hero .ab-affiliation a {
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 4px;
}

.ab-hero > .wp-block-buttons {
	padding-top: 24px;
}

.ab-consult h2 {
	font-size: clamp(1.75rem, 2.4vw, 2.35rem);
	line-height: 1.15;
	letter-spacing: -0.05em;
}

.ab-consult ul {
	list-style: none;
	padding: 0;
	margin: 14px 0 0 !important;
}

.ab-consult li {
	border-top: 1px solid var(--alok-inverse-line);
	padding: 14px 0;
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.4;
	font-weight: 600;
	color: #f3f5ee;
}

.ab-section-title {
	font-size: clamp(1.8rem, 3vw, 2.65rem);
	line-height: 1.2;
	letter-spacing: -0.055em;
	margin: 78px 0 27px !important;
}

.ab-feature h3,
.ab-feature h2 {
	font-size: clamp(1.6rem, 2.5vw, 2.25rem);
	line-height: 1.12;
	letter-spacing: -0.05em;
}

.ab-expertise {
	min-height: 316px;
}

.ab-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 9px;
	list-style: none;
	padding: 0 !important;
	margin: 30px 0 0 !important;
}

.ab-tags li {
	border: 1px solid var(--alok-tag-border);
	border-radius: 30px;
	padding: 7px 11px;
	margin: 0;
	color: var(--alok-tag-ink);
	font-size: 0.875rem;
	line-height: 1.4;
	font-weight: 700;
}

.ab-book {
	min-height: 316px;
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) 170px;
	align-items: center;
	gap: 16px;
}

.ab-book > .wp-block-group {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.ab-book > .wp-block-group > .is-style-textlink {
	padding-top: var(--alok-body-action);
}

.ab-cover {
	margin: 0 !important;
	justify-self: center;
}

.ab-cover img {
	display: block;
	width: 155px;
	aspect-ratio: 212 / 300;
	height: auto;
	object-fit: cover;
	box-shadow: 10px 13px 0 var(--alok-cover-shadow);
	transform: rotate(3deg);
}

.ab-inner .ab-cover img {
	width: 145px;
}

.ab-bottom {
	min-height: 345px;
}

.ab-bottom h3,
.ab-bottom .wp-block-post-title {
	font-size: clamp(1.48rem, 2.1vw, 1.92rem);
	line-height: 1.17;
	letter-spacing: -0.045em;
}

.ab-newsletter-top {
	display: flex !important;
	align-items: flex-start;
	justify-content: space-between;
	gap: 20px;
	min-height: 90px;
}

.ab-newsletter-top figure,
.ab-snippet-logo {
	margin: -13px -9px 0 0 !important;
	flex: none;
}

.ab-newsletter-top img,
.ab-snippet-logo img {
	width: 105px;
	height: 105px;
	object-fit: contain;
	display: block;
}

.ab-newsletter-card .wp-block-buttons {
	align-items: center;
	gap: 14px 20px;
	padding-top: 28px !important;
}

.ab-newsletter-card .wp-block-button__link {
	min-height: 44px !important;
	padding: 9px 13px !important;
	font-size: 0.875rem !important;
}

.ab-newsletter-card .ab-archive-link .wp-block-button__link,
.ab-newsletter-card .ab-archive-link .wp-block-button__link:hover {
	background: transparent !important;
	border-color: transparent !important;
	color: var(--alok-ink) !important;
	padding-inline: 0 !important;
	text-decoration: underline;
	text-underline-offset: 3px;
	font-weight: 750;
}

.ab-newsletter-card .ab-archive-link .wp-block-button__link:hover {
	color: var(--alok-link-hover) !important;
}

.ab-stat {
	font-size: clamp(3rem, 5vw, 4.5rem) !important;
	font-weight: 820;
	letter-spacing: -0.09em;
	line-height: 1 !important;
	color: var(--alok-ink) !important;
	margin: 18px 0 8px !important;
}

.ab-stat + h3 {
	margin-top: 0 !important;
}

.ab-latest .wp-block-post-template {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ab-latest .wp-block-post-title {
	margin: var(--alok-label-title) 0 var(--alok-title-body);
}

.ab-latest .wp-block-post-title a {
	text-decoration: none;
}

.ab-latest .wp-block-post-excerpt__excerpt {
	margin: 0;
	color: var(--alok-body);
}

.ab-latest .wp-block-post-excerpt__more-text {
	display: none;
}

.ab-latest .wp-block-read-more {
	margin-top: var(--alok-body-action);
}

.ab-latest {
	display: flex !important;
	flex-direction: column;
}

.ab-latest > .wp-block-query,
.ab-latest > .wp-block-query > .wp-block-post-template,
.ab-latest > .wp-block-query > .wp-block-post-template > li {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding-top: 0 !important;
	margin-top: 0 !important;
}

.ab-latest .wp-block-post-template > li > .wp-block-read-more {
	margin-top: auto;
	padding-top: var(--alok-body-action);
}

/* Contact band */
.ab-contact-band {
	margin-top: 78px !important;
	padding: clamp(30px, 5vw, 64px);
	border-radius: var(--alok-card-radius);
	display: flex !important;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
}

.ab-contact-band > .wp-block-group > * {
	margin: 0;
}

.ab-contact-band h2 {
	font-size: clamp(2rem, 4vw, 3.5rem);
	line-height: 1.08;
	letter-spacing: -0.06em;
	max-width: 700px;
}

.ab-contact-band p {
	margin: 0;
	max-width: 62ch;
}

.ab-contact-band .wp-block-buttons {
	flex: none;
}

/* ---------- Inner pages ---------- */
.ab-inner-hero {
	max-width: 950px;
	margin-bottom: 54px !important;
}

.ab-inner-hero > * {
	margin: 0;
}

.ab-inner-hero h1,
.ab-not-found h1 {
	font-size: clamp(2.8rem, 6vw, 5.2rem);
	line-height: 1.05;
	letter-spacing: -0.065em;
}

.ab-lede,
.ab-inner-hero p:not(.is-style-eyebrow) {
	font-size: clamp(1.1rem, 1.7vw, 1.32rem);
	line-height: 1.65;
	color: var(--alok-body);
	max-width: 760px;
}

.ab-inner [class*="is-style-card"] {
	min-height: 245px;
}

.ab-inner [class*="is-style-card"] :is(h2, h3) {
	font-size: clamp(1.55rem, 2.5vw, 2.25rem);
	line-height: 1.15;
	letter-spacing: -0.045em;
}

.ab-inner .ab-section-title {
	margin-top: 78px !important;
}

.ab-project {
	min-height: 300px;
}

.ab-project-tag {
	font-size: 0.875rem !important;
	line-height: 1.4;
	font-weight: 750;
	color: var(--alok-muted) !important;
}

.is-style-card-inverse .ab-project-tag {
	color: #dce4db !important;
}

.ab-contact-detail {
	font-size: 1.2rem !important;
	font-weight: 700;
	color: var(--alok-accent-ink) !important;
	margin-top: 18px !important;
}

.ab-contact-detail a {
	text-decoration: underline;
	text-underline-offset: 4px;
}

[class*="is-style-card"] .ab-socials {
	margin-top: auto;
	padding-top: var(--alok-body-action);
}

/* About portrait */
.ab-portrait-card {
	padding: 0 !important;
	overflow: hidden;
	min-height: 440px;
}

.ab-portrait-card > .ab-portrait {
	flex: 1;
	min-height: 338px;
	display: flex;
	align-items: flex-end;
	justify-content: center;
	padding-top: 18px;
	margin: 0 !important;
}

.ab-portrait-card > .ab-portrait img {
	display: block;
	width: auto;
	height: 325px;
	max-width: 75%;
	object-fit: contain;
}

.ab-portrait-caption {
	background: var(--alok-surface-inverse);
	color: #ffffff;
	padding: 22px 28px;
	margin: 0 !important;
}

.ab-portrait-caption p {
	margin: 0;
	color: #ffffff !important;
	font-size: 1.35rem !important;
	letter-spacing: -0.035em;
	font-weight: 800;
	line-height: 1.3;
}

.ab-portrait-caption p + p {
	margin-top: 5px !important;
	color: #d3d9d0 !important;
	font-size: 0.875rem !important;
	letter-spacing: 0;
	font-weight: 500;
}

/* Newsletter page */
.ab-newsletter-layout {
	display: grid !important;
	grid-template-columns: minmax(0, 1.7fr) minmax(270px, 0.8fr);
	gap: var(--alok-gap);
	align-items: start;
}

.ab-newsletter-layout > * {
	margin: 0 !important;
}

.ab-newsletter-promo {
	position: sticky;
	top: 20px;
	min-height: 420px;
}

.ab-newsletter-promo .ab-snippet-logo {
	align-self: flex-end;
	margin: -10px 0 10px !important;
}

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

.ab-issue-list > li {
	margin: 0;
	padding: 32px !important;
	min-height: 220px;
}

.ab-issue-list .ab-issue-meta {
	margin: 0;
}

.ab-issue-list h2 {
	font-size: clamp(1.55rem, 2.5vw, 2.25rem);
	line-height: 1.15;
	letter-spacing: -0.045em;
	margin: var(--alok-label-title) 0 var(--alok-title-body);
}

.ab-issue-list .ab-issue-empty {
	min-height: 0;
}

/* ---------- Blog list ---------- */
.ab-post-list {
	display: grid;
	gap: 14px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.ab-post-list > li {
	margin: 0;
}

.ab-blog-card {
	min-height: 0 !important;
	padding: 20px !important;
}

.ab-blog-card:has(> .wp-block-post-featured-image) {
	display: grid !important;
	grid-template-columns: minmax(210px, 32%) minmax(0, 1fr);
	gap: 32px;
	align-items: center;
}

.ab-blog-card > .wp-block-post-featured-image {
	margin: 0;
	height: 100%;
}

.ab-blog-card > .wp-block-post-featured-image a,
.ab-blog-card > .wp-block-post-featured-image img {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 195px;
	object-fit: cover;
	border-radius: 7px;
}

.ab-blog-card > .wp-block-group {
	padding: 14px 18px 14px 0;
	min-width: 0;
}

.ab-blog-card:not(:has(> .wp-block-post-featured-image)) > .wp-block-group {
	padding: 14px 18px;
}

.ab-blog-card .wp-block-post-title {
	font-size: clamp(1.55rem, 2.5vw, 2.25rem);
	line-height: 1.15;
	letter-spacing: -0.045em;
	margin: var(--alok-label-title) 0 var(--alok-title-body);
	max-width: 760px;
}

.ab-blog-card .wp-block-post-title a {
	text-decoration: none;
}

.ab-blog-card .wp-block-post-title a:hover {
	color: var(--alok-link-hover);
}

.ab-blog-card .wp-block-post-excerpt {
	margin: 0;
}

.ab-blog-card .wp-block-post-excerpt__excerpt {
	margin: 0;
	color: var(--alok-body);
}

.ab-blog-card .wp-block-read-more {
	margin-top: 16px;
}

.ab-meta {
	display: flex !important;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px 10px;
	font-size: 0.875rem;
	line-height: 1.4;
	font-weight: 800;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--alok-muted);
}

.ab-meta > * {
	margin: 0 !important;
}

.ab-meta a {
	text-decoration: none;
}

.ab-meta a:hover {
	color: var(--alok-link-hover);
}

.ab-meta .wp-block-post-terms + .wp-block-post-date::before,
.ab-meta .ab-issue-topic + .wp-block-post-date::before {
	content: "·";
	margin-right: 10px;
}

.wp-block-query-pagination {
	margin-top: 40px !important;
	gap: 12px;
	font-weight: 700;
}

.wp-block-query-pagination a,
.wp-block-query-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0 12px;
	border: 1px solid var(--alok-control-border);
	border-radius: 6px;
	text-decoration: none;
}

.wp-block-query-pagination .page-numbers.current {
	background: var(--alok-ink);
	color: var(--alok-canvas);
	border-color: var(--alok-ink);
}

.wp-block-query-pagination a:hover {
	background: var(--alok-hover-soft);
}

.ab-empty {
	padding: var(--alok-card-pad);
	border: 1px dashed var(--alok-control-border);
	border-radius: var(--alok-card-radius);
}

.ab-empty p {
	margin: 0;
	color: var(--alok-body);
}

/* ---------- Article ---------- */
.ab-article {
	max-width: 900px;
	margin-inline: auto !important;
}

.ab-article-heading {
	padding-top: 35px;
}

.ab-article-heading .wp-block-post-title {
	font-size: clamp(2.5rem, 5vw, 4.5rem);
	line-height: 1.1;
	letter-spacing: -0.055em;
	margin: var(--alok-label-title) 0 34px;
}

.ab-article-cover {
	margin: 0 0 48px !important;
}

.ab-article-cover img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 1731 / 909;
	object-fit: cover;
	border-radius: 12px;
}

.ab-entry {
	font-size: 1.08rem;
	line-height: 1.8;
	color: var(--alok-article-ink);
}

.ab-entry > * {
	margin-top: 0;
	margin-bottom: 1.4em;
}

.ab-entry > :last-child {
	margin-bottom: 0;
}

.ab-entry h2 {
	font-size: clamp(1.55rem, 2.4vw, 2.15rem);
	line-height: 1.25;
	letter-spacing: -0.035em;
	margin: 2.3em 0 0.75em;
}

.ab-entry h3 {
	font-size: 1.35rem;
	line-height: 1.3;
	margin: 1.8em 0 0.6em;
}

.ab-entry h4 {
	font-size: 1.1rem;
	margin: 1.6em 0 0.5em;
}

.ab-entry :is(h2, h3, h4) {
	color: var(--alok-ink);
}

.ab-entry ul,
.ab-entry ol {
	padding-left: 1.55em;
	margin-bottom: 1.5em;
}

.ab-entry li {
	margin: 0.42em 0;
}

.ab-entry a {
	color: var(--alok-article-link);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ab-entry a:hover {
	text-decoration-thickness: 2px;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) blockquote,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-quote {
	margin: 1.8em 0;
	padding: 18px 24px;
	border-left: 4px solid #efcf38;
	background: var(--alok-surface);
	max-width: 100%;
	font-size: 1em;
	font-style: normal;
	line-height: inherit;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) blockquote p:last-child {
	margin-bottom: 0;
}

.ab-entry img {
	border-radius: 8px;
}

.ab-entry figure {
	margin-inline: 0;
}

.ab-entry figcaption {
	font-size: 0.875rem;
	color: var(--alok-muted);
}

/* ---------- Article code ----------
   Shared by blog posts and newsletter issues (.ab-entry) and book chapters
   (Chapterwright's .hsrtech-chapter__content), so code, quotes, notes and
   tables look the same everywhere. The :is() list carries the specificity
   of its strongest selector (two classes), which outranks the plugin's own
   one-class chapter rules regardless of stylesheet order. */
.ab-entry {
	--hsrtech-accent: var(--alok-accent);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) {
	--hsrtech-code: var(--alok-code-bg);
	--hsrtech-code-ink: var(--alok-code-ink);
	--hsrtech-muted: var(--alok-muted);
	/* Syntax colours tuned to the theme palette (readable on both code backgrounds). */
	--hsrtech-tok-comment: #8f9a8b;
	--hsrtech-tok-string: #b5dc8f;
	--hsrtech-tok-attr-value: #b5dc8f;
	--hsrtech-tok-number: #ffb27a;
	--hsrtech-tok-keyword: #f8d94a;
	--hsrtech-tok-function: #8ecbff;
	--hsrtech-tok-variable: #f2c98a;
	--hsrtech-tok-tag: #ff9d8f;
	--hsrtech-tok-attr-name: #f2c98a;
	--hsrtech-tok-property: #86d7cb;
	--hsrtech-tok-punctuation: rgba(237, 241, 235, 0.6);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) pre,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-code,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-preformatted,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__frame {
	position: relative;
	max-width: 100%;
	margin: 0;
	background: var(--alok-code-bg);
	color: var(--alok-code-ink);
	border: 1px solid var(--alok-code-border);
	border-radius: 12px;
	box-shadow: inset 4px 0 0 var(--alok-accent);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) pre,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-code,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-preformatted {
	margin-block: 1.8em;
	padding: 22px 24px 22px 28px;
	overflow-x: auto;
	font-family: var(--alok-mono);
	font-size: 0.9rem;
	line-height: 1.65;
	tab-size: 4;
	white-space: pre;
	overflow-wrap: normal;
	scrollbar-color: rgba(237, 241, 235, 0.3) transparent;
	scrollbar-width: thin;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-preformatted,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code--wrap .hsrtech-code__frame pre {
	white-space: pre-wrap;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code {
	margin: 1.8em 0;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code .hsrtech-code__frame pre,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code .hsrtech-code__lines {
	/* Static, so the code never paints over the copy/wrap buttons. */
	position: static;
	margin: 0;
	padding: 22px 24px 22px 28px !important;
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	font-family: var(--alok-mono);
	font-size: 0.9rem;
	line-height: 1.65;
	scrollbar-color: rgba(237, 241, 235, 0.3) transparent;
	scrollbar-width: thin;
}

/* Language label / copy buttons sit in a slim header strip. */
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code:not(.hsrtech-code--no-lang) .hsrtech-code__frame pre,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code:not(.hsrtech-code--no-actions) .hsrtech-code__frame pre,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code:not(.hsrtech-code--no-lang) .hsrtech-code__lines,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code:not(.hsrtech-code--no-actions) .hsrtech-code__lines {
	padding-top: 60px !important;
}

/* Line numbers and highlighted lines. */
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__line-number {
	border-right-color: rgba(237, 241, 235, 0.12);
	color: var(--alok-code-ink);
	opacity: 0.42;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__line--highlighted {
	background: rgba(248, 217, 74, 0.09);
	box-shadow: inset 3px 0 0 var(--alok-accent);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__lang {
	top: 16px;
	left: 28px;
	color: var(--alok-accent);
	opacity: 1;
	font-family: var(--alok-font);
	font-size: 0.75rem;
	font-weight: 800;
	letter-spacing: 0.09em;
	text-transform: uppercase;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code:not(.hsrtech-code--no-lang) .hsrtech-code__frame::before,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code:not(.hsrtech-code--no-actions) .hsrtech-code__frame::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 46px;
	border-top: 1px solid rgba(237, 241, 235, 0.1);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__lang,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__actions {
	z-index: 2;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__actions {
	top: 8px;
	right: 10px;
	gap: 6px;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__copy,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__wrap-toggle {
	width: 32px;
	height: 32px;
	border-radius: 6px;
	background: transparent;
	border: 1px solid rgba(237, 241, 235, 0.22);
	color: var(--alok-code-ink);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__copy:hover,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__copy:focus-visible,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__wrap-toggle:hover,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__wrap-toggle:focus-visible,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code--wrap .hsrtech-code__wrap-toggle {
	background: rgba(248, 217, 74, 0.14);
	border-color: var(--alok-accent);
	color: var(--alok-accent);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__copy.is-copied {
	background: var(--alok-accent);
	border-color: var(--alok-accent);
	color: var(--alok-accent-ink);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__copy:focus-visible,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__wrap-toggle:focus-visible {
	outline: 3px solid var(--alok-accent);
	outline-offset: 2px;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__caption,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-code + figcaption {
	margin: 0 0 10px;
	color: var(--alok-muted);
	font-size: 0.875rem;
	font-weight: 700;
	line-height: 1.4;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) pre code,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code code {
	display: block;
	padding: 0;
	background: none;
	border: 0;
	color: inherit;
	font-family: var(--alok-mono);
	font-size: inherit;
	line-height: inherit;
	overflow-wrap: normal;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) pre::-webkit-scrollbar,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__frame pre::-webkit-scrollbar {
	height: 8px;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) pre::-webkit-scrollbar-thumb,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__frame pre::-webkit-scrollbar-thumb {
	background: rgba(237, 241, 235, 0.28);
	border-radius: 8px;
}

/* Inline code and keyboard keys */
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) code,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) kbd {
	font-family: var(--alok-mono);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) :not(pre) > code {
	padding: 0.12em 0.42em;
	border: 1px solid var(--alok-border);
	border-radius: 5px;
	background: var(--alok-surface-soft);
	color: var(--alok-ink);
	font-size: 0.86em;
	overflow-wrap: anywhere;
	-webkit-box-decoration-break: clone;
	box-decoration-break: clone;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) a > code {
	color: inherit;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) kbd {
	padding: 0.1em 0.45em;
	border: 1px solid var(--alok-control-border);
	border-bottom-width: 2px;
	border-radius: 5px;
	background: var(--alok-surface);
	color: var(--alok-ink);
	font-size: 0.82em;
}

/* ---------- Article tables ---------- */
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table {
	margin-block: 1.8em;
	overflow-x: auto;
	border: 1px solid var(--alok-border);
	border-radius: 12px;
	background: var(--alok-surface);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) table {
	display: table;
	width: 100%;
	max-width: 100%;
	margin: 0;
	border-collapse: collapse;
	border-spacing: 0;
	font-size: 0.95rem;
	line-height: 1.55;
	color: var(--alok-article-ink);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) > table {
	margin-block: 1.8em;
	border: 1px solid var(--alok-border);
	background: var(--alok-surface);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table table.has-fixed-layout {
	table-layout: fixed;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) th,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) td,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table th,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table td {
	padding: 13px 16px;
	border: 0;
	border-bottom: 1px solid var(--alok-border);
	text-align: left;
	vertical-align: top;
	overflow-wrap: anywhere;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) th + th,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) td + td {
	border-left: 1px solid var(--alok-border);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) thead th,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) thead td,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table thead {
	border-bottom: 0;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) thead th,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) thead td {
	background: var(--alok-surface-soft);
	color: var(--alok-ink);
	font-size: 0.8rem;
	font-weight: 800;
	letter-spacing: 0.07em;
	text-transform: uppercase;
	border-bottom: 1px solid var(--alok-border);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) tbody th {
	color: var(--alok-ink);
	font-weight: 700;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) tbody tr:last-child > *,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) tfoot tr:last-child > * {
	border-bottom: 0;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) tfoot td,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) tfoot th {
	background: var(--alok-surface-soft);
	font-weight: 700;
	border-top: 1px solid var(--alok-border);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table.is-style-stripes {
	border-bottom: 1px solid var(--alok-border);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table.is-style-stripes tbody tr:nth-child(odd) {
	background: transparent;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table.is-style-stripes tbody tr:nth-child(even) {
	background: var(--alok-canvas);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) td code,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) th code {
	white-space: nowrap;
	overflow-wrap: normal;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table figcaption,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table .wp-element-caption {
	margin: 0;
	padding: 10px 16px;
	border-top: 1px solid var(--alok-border);
	color: var(--alok-muted);
	font-size: 0.875rem;
	text-align: left;
}

/* ---------- Notes and callouts ----------
   Chapterwright's Note and Callout blocks get the same box as a blog quote:
   surface background, yellow rule, upright text, a muted eyebrow label. */
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-note,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-callout {
	margin: 1.8em 0;
	padding: 18px 24px;
	border: 0;
	border-left: 4px solid #efcf38;
	border-radius: 0;
	background: var(--alok-surface);
	box-shadow: none;
	color: var(--alok-article-ink, var(--alok-ink));
	font-family: inherit;
	font-size: 1em;
	line-height: inherit;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-callout--warning {
	border-left-color: #d97706;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-note__label-row {
	gap: 10px;
	margin-bottom: 10px;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-note__label-row::after {
	background: var(--alok-border);
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-note__label {
	color: var(--alok-muted);
	font-size: 0.75rem;
	font-weight: 800;
	letter-spacing: 0.09em;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-note__label::before {
	width: 7px;
	height: 7px;
	background: #efcf38;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-note__content > * {
	font-style: normal;
	line-height: inherit;
	margin: 0 0 0.8em;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-note__content > :last-child,
:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-callout > :last-child {
	margin-bottom: 0;
}

:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-callout > :first-child {
	margin-top: 0;
}

@media (max-width: 650px) {
	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) pre,
	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-code {
		padding: 18px 18px 18px 22px;
		font-size: 0.85rem;
	}

	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code .hsrtech-code__frame pre,
	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code .hsrtech-code__lines {
		padding: 18px 18px 18px 22px !important;
		font-size: 0.85rem;
	}

	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code:not(.hsrtech-code--no-lang) .hsrtech-code__frame pre,
	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code:not(.hsrtech-code--no-actions) .hsrtech-code__frame pre,
	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code:not(.hsrtech-code--no-lang) .hsrtech-code__lines,
	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code:not(.hsrtech-code--no-actions) .hsrtech-code__lines {
		padding-top: 58px !important;
	}

	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .hsrtech-code__lang {
		left: 22px;
	}

	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) table {
		font-size: 0.9rem;
	}

	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) th,
	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) td,
	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table th,
	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table td {
		padding: 10px 12px;
	}

	/* Let wide tables scroll inside their frame instead of squashing columns. */
	:is(.ab-entry, .hsrtech-page .hsrtech-chapter__content) .wp-block-table table:not(.has-fixed-layout) {
		min-width: 520px;
	}
}

.ab-article-end {
	border-top: 1px solid var(--alok-divider);
	margin-top: 65px !important;
	padding-top: 25px;
	display: flex !important;
	justify-content: space-between;
	gap: 20px;
	font-weight: 700;
}

.ab-article-end a {
	text-decoration: none;
}

.ab-article-end a:hover {
	color: var(--alok-link-hover);
	text-decoration: underline;
	text-underline-offset: 4px;
}

.ab-article-end .post-navigation-link-next {
	margin-left: auto;
	text-align: right;
}

/* ---------- Newsletter issue ---------- */
.ab-issue-number {
	color: var(--alok-ink);
	font-variant-numeric: tabular-nums;
}

.ab-issue-topic a {
	text-decoration: none;
}

.ab-issue-topic a:hover {
	color: var(--alok-link-hover);
}

.ab-issue-linkedin {
	margin: 40px 0 0 !important;
	padding: 16px 20px;
	border: 1px solid var(--alok-border);
	border-radius: 8px;
	background: var(--alok-surface);
	color: var(--alok-body);
	font-size: 0.95rem;
}

.ab-issue-linkedin a {
	color: var(--alok-ink);
	font-weight: 800;
	text-decoration: underline;
	text-underline-offset: 4px;
}

.ab-issue-linkedin a:hover {
	color: var(--alok-link-hover);
}

.ab-issue .ab-contact-band {
	margin-top: 58px !important;
	display: block !important;
}

.ab-issue .ab-contact-band h2 {
	font-size: clamp(1.8rem, 3vw, 2.65rem);
}

.ab-issue .ab-contact-band .wp-block-buttons {
	margin-top: 26px;
}

.ab-issue .ab-contact-band .wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent;
	border-color: currentColor;
	color: var(--alok-inverse-ink);
}

.ab-issue .ab-contact-band .wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: rgba(255, 255, 255, 0.08);
	color: var(--alok-inverse-ink);
}

.ab-issue-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0 22px;
}

.ab-issue-list h2 a {
	text-decoration: none;
	color: inherit;
}

.ab-issue-list h2 a:hover {
	color: var(--alok-link-hover);
}

.ab-issue-external {
	font-weight: 700 !important;
	color: var(--alok-body) !important;
}

/* ---------- 404 ---------- */
.ab-not-found {
	max-width: 780px;
	min-height: 58vh;
	display: flex !important;
	flex-direction: column;
	justify-content: center;
}

.ab-not-found > * {
	margin: 0;
}

.ab-not-found h1 {
	font-size: clamp(3rem, 6vw, 5.3rem);
	line-height: 1.08;
	letter-spacing: -0.06em;
	margin: 18px 0 16px;
}

.ab-not-found p:not(.is-style-eyebrow) {
	font-size: 1.18rem;
	line-height: 1.65;
	color: var(--alok-body);
	max-width: 640px;
}

.ab-not-found .wp-block-buttons {
	margin-top: 30px;
}

/* ---------- Search form ---------- */
.wp-block-search__input {
	min-height: 46px;
	border: 1px solid var(--alok-control-border);
	border-radius: 6px;
	background: var(--alok-surface);
	color: var(--alok-ink);
	padding: 8px 12px;
	font: inherit;
}

/* ---------- Tablet ---------- */
@media (max-width: 900px) {
	.ab-hero,
	.ab-consult {
		min-height: 490px;
	}

	.ab-hero h1 {
		font-size: clamp(2.3rem, 4.3vw, 3.2rem);
	}

	.ab-book {
		grid-template-columns: minmax(0, 1fr) 115px;
	}

	.ab-cover img,
	.ab-inner .ab-cover img {
		width: 110px;
	}

	.ab-newsletter-layout {
		grid-template-columns: minmax(0, 1fr);
	}

	.ab-newsletter-promo {
		position: static;
		min-height: 300px;
	}
}

/* ---------- Mobile ---------- */
@media (max-width: 650px) {
	:root {
		--alok-card-pad: 26px;
	}

	.ab-hero,
	.ab-consult,
	.ab-expertise,
	.ab-book {
		min-height: 0;
	}

	.ab-hero h1 {
		font-size: clamp(2.25rem, 9vw, 3.1rem);
	}

	.ab-bottom {
		min-height: 300px;
	}

	.ab-book {
		grid-template-columns: minmax(0, 1fr);
	}

	.ab-cover {
		justify-self: start;
	}

	.ab-cover img,
	.ab-inner .ab-cover img {
		width: 110px;
		margin: 14px 0;
	}

	.ab-newsletter-top {
		min-height: 80px;
	}

	.ab-newsletter-top img {
		width: 94px;
		height: 94px;
	}

	.ab-newsletter-top figure {
		margin: -9px -4px 0 0 !important;
	}

	.ab-section-title {
		margin: 58px 0 20px !important;
	}

	.ab-contact-band {
		display: block !important;
		margin-top: 58px !important;
	}

	.ab-contact-band .wp-block-buttons {
		margin-top: 25px;
	}

	.ab-inner-hero {
		margin-bottom: 35px !important;
	}

	.ab-inner-hero h1 {
		font-size: clamp(2.25rem, 10vw, 3.5rem);
		letter-spacing: -0.045em;
	}

	.ab-portrait-card {
		min-height: 380px;
	}

	.ab-portrait-card > .ab-portrait {
		min-height: 300px;
	}

	.ab-portrait-card > .ab-portrait img {
		height: 295px;
	}

	.ab-blog-card {
		padding: 16px !important;
	}

	.ab-blog-card:has(> .wp-block-post-featured-image) {
		grid-template-columns: minmax(0, 1fr);
		gap: 10px;
	}

	.ab-blog-card > .wp-block-post-featured-image img,
	.ab-blog-card > .wp-block-post-featured-image a {
		min-height: 0;
		aspect-ratio: 1.9;
	}

	.ab-blog-card > .wp-block-group,
	.ab-blog-card:not(:has(> .wp-block-post-featured-image)) > .wp-block-group {
		padding: 14px 10px 18px;
	}

	.ab-article-cover {
		margin-bottom: 32px !important;
	}

	.ab-article-end {
		display: block !important;
	}

	.ab-article-end > * {
		display: block;
		margin-bottom: 15px;
		text-align: left !important;
	}
}

/* ---------- Preferences ---------- */
@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		transition: none !important;
		animation: none !important;
	}
}

@media (forced-colors: active) {
	.wp-block-button__link,
	.ab-menu-toggle,
	.ab-theme-toggle,
	.ab-socials a {
		border: 1px solid ButtonText;
	}

	[class*="is-style-card"] {
		border: 1px solid CanvasText;
	}

	.ab-theme-toggle svg,
	.ab-menu-toggle svg {
		stroke: ButtonText;
	}
}

@media print {
	.ab-site-header,
	.ab-site-footer,
	.ab-header-controls {
		display: none;
	}
}
