/*
Theme Name: Aubrey Byron
Theme URI: https://aubreybyron.com
Author: Aubrey Byron
Description: Custom block theme for aubreybyron.com — content strategy, SEO/AEO and journalism portfolio. Every page is built from standard WordPress blocks and can be edited in the block editor and Site Editor.
Version: 1.0.0
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.0
License: GNU General Public License v2 or later
Text Domain: aubrey-byron
*/

/* ------------------------------------------------------------------
   Tokens
------------------------------------------------------------------- */
:root {
	--ab-ink: var(--wp--preset--color--ink, #1f1a17);
	--ab-cream: var(--wp--preset--color--cream, #f5ede8);
	--ab-sand: var(--wp--preset--color--sand, #e9dfd8);
	--ab-coral: var(--wp--preset--color--coral, #d96140);
	--ab-mustard: var(--wp--preset--color--mustard, #f0b047);
	--ab-sky: var(--wp--preset--color--sky, #b8d4e8);
	--ab-sage: var(--wp--preset--color--sage, #87997d);
	--ab-ink-soft: #3a322d;
	--ab-muted: #4d443e;
	--ab-muted-light: #6b6058;
	--ab-stone: #b5aaa2;
	--ab-stone-light: #d9cfc9;
	--ab-line: 1.5px solid var(--ab-ink);
	--ab-shadow: 8px 8px 0 var(--ab-ink);
	--ab-gutter: clamp(16px, 4vw, 48px);
	--ab-section: clamp(64px, 8vw, 104px);
	--ab-mono: 'Azeret Mono', monospace;
	--ab-display: Unbounded, sans-serif;
}

html { scroll-behavior: smooth; }
body { margin: 0; -webkit-font-smoothing: antialiased; }
*, *::before, *::after { box-sizing: border-box; }
input, textarea, select, button { font: inherit; }
input:focus, textarea:focus, select:focus { outline: 2px solid var(--ab-ink); outline-offset: 2px; }
img { max-width: 100%; height: auto; }
:where(.wp-site-blocks) > * { margin-block: 0; }
.wp-site-blocks { padding: 0; }
.wp-block-post-content > *,
.entry-content > * { margin-block: 0; }

/* Highlight (Format toolbar → “Highlight”) */
mark.ab-hl,
.ab-hl {
	background: var(--ab-coral);
	color: inherit;
	padding: 0 0.12em;
	-webkit-box-decoration-break: clone;
	box-decoration-break: clone;
}
mark.ab-hl-mustard {
	background: var(--ab-mustard);
	color: inherit;
	font-weight: 600;
	padding: 0 4px;
	border-radius: 2px;
}

/* ------------------------------------------------------------------
   Layout primitives
------------------------------------------------------------------- */
.ab-container {
	width: 100%;
	max-width: 1240px;
	margin-inline: auto !important;
	padding-inline: var(--ab-gutter);
}
.ab-py { padding-block: var(--ab-section); }
.ab-py-hero { padding-top: clamp(40px, 6vw, 80px); padding-bottom: clamp(56px, 7vw, 96px); }
.ab-py-md { padding-block: clamp(56px, 7vw, 88px); }
.ab-pt-md { padding-top: clamp(56px, 7vw, 88px); }
.ab-py-sm { padding-block: 24px; }
.ab-bt { border-top: var(--ab-line); }
.ab-bb { border-bottom: var(--ab-line); }
.ab-by { border-top: var(--ab-line); border-bottom: var(--ab-line); }
.ab-section { position: relative; }

/* flexible “sidebar” columns used inside flex rows */
.ab-col-main { flex: 999 1 560px !important; min-width: 0; }
.ab-col-main-520 { flex: 999 1 520px !important; min-width: 0; }
.ab-col-main-600 { flex: 999 1 600px !important; min-width: 0; }
.ab-col-side { flex: 1 1 360px !important; min-width: 0; }
.ab-col-side-380 { flex: 1 1 380px !important; min-width: 0; }
.ab-col-side-340 { flex: 1 1 340px !important; min-width: 0; }
.ab-col-side-320 { flex: 1 1 320px !important; min-width: 0; }
.ab-col-side-300 { flex: 1 1 300px !important; min-width: 0; }
.ab-col-half { flex: 1 1 440px !important; min-width: 0; }
.ab-w-620 { max-width: 620px; }
.ab-w-680 { max-width: 680px; }
.ab-w-760 { max-width: 760px; }
.ab-w-840 { max-width: 840px; }
.ab-w-880 { max-width: 880px; }
.ab-w-960 { max-width: 960px; }
.ab-w-400 { max-width: 400px; }

/* ------------------------------------------------------------------
   Typography helpers
------------------------------------------------------------------- */
.is-style-eyebrow,
.ab-eyebrow {
	font-family: var(--ab-mono);
	font-size: 13px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	font-weight: 600;
	line-height: 1.6;
}
.is-style-eyebrow-rule {
	font-family: var(--ab-mono);
	font-size: 13px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	font-weight: 600;
	display: flex;
	align-items: center;
	gap: 12px;
}
.is-style-eyebrow-rule::before {
	content: "";
	width: 32px;
	height: 1.5px;
	background: currentColor;
	flex: none;
}
.ab-mono { font-family: var(--ab-mono); }
.ab-mono-note {
	font-family: var(--ab-mono);
	font-size: 13px;
	letter-spacing: 0.02em;
	color: var(--ab-ink-soft);
}
.ab-lead {
	font-size: clamp(18px, 1.6vw, 21px);
	line-height: 1.55;
	color: var(--ab-ink-soft);
}
.ab-body-lg { font-size: 18px; line-height: 1.6; }
.ab-soft { color: var(--ab-ink-soft); }
.ab-on-dark .ab-soft,
.ab-on-dark-soft { color: var(--ab-stone-light); }
.ab-muted { color: var(--ab-muted); }
.ab-display { font-family: var(--ab-display); font-weight: 600; letter-spacing: -0.015em; }
.ab-h-hero { font-size: var(--wp--preset--font-size--hero) !important; line-height: 1.02 !important; letter-spacing: -0.025em !important; }
.ab-h-page { font-size: clamp(38px, 5.1vw, 68px) !important; line-height: 1.04 !important; letter-spacing: -0.025em !important; }
.ab-h-xl { font-size: clamp(32px, 3.9vw, 52px) !important; line-height: 1.06 !important; letter-spacing: -0.02em !important; }
.ab-h-l { font-size: clamp(30px, 3.4vw, 46px) !important; line-height: 1.08 !important; letter-spacing: -0.02em !important; }
.ab-h-card { font-size: clamp(20px, 1.8vw, 24px) !important; line-height: 1.12 !important; letter-spacing: -0.01em !important; }
.ab-h-sm { font-size: 20px !important; line-height: 1.6 !important; letter-spacing: -0.005em !important; }
.ab-h-xs { font-size: 18px !important; line-height: 1.6 !important; letter-spacing: 0 !important; }
.ab-h-inter { font-family: Inter, system-ui, sans-serif !important; font-weight: 600 !important; letter-spacing: 0 !important; }
.ab-stat { font-family: var(--ab-display); font-weight: 600; line-height: 1; letter-spacing: -0.01em; }
.ab-stat-36 { font-size: 36px; }
.ab-stat-48 { font-size: clamp(36px, 3.6vw, 52px); }
.ab-jumbo { font-family: var(--ab-display); font-weight: 600; line-height: 1; letter-spacing: -0.03em; font-size: clamp(64px, 6.9vw, 100px); }

/* ------------------------------------------------------------------
   Pills, badges, tags
------------------------------------------------------------------- */
.is-style-pill,
.ab-pill {
	display: flex;
	align-items: center;
	width: fit-content;
	font-family: var(--ab-mono);
	font-size: 12px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-weight: 500;
	border: var(--ab-line);
	border-radius: 999px;
	padding: 8px 14px;
	line-height: 1.4;
}
.ab-pill-lg { font-size: 13px; font-weight: 600; letter-spacing: 0.1em; padding: 8px 16px; line-height: 1.6; }
.ab-pills { gap: 10px !important; }
.ab-tag {
	display: inline-block;
	width: fit-content;
	font-family: var(--ab-mono);
	font-size: 14px;
	font-weight: 600;
	padding: 3px 10px;
	border-radius: 4px;
	line-height: 1.5;
}
.ab-num-tag {
	display: inline-block;
	width: fit-content;
	font-family: var(--ab-mono);
	font-size: 13px;
	font-weight: 700;
	padding: 3px 10px;
	border-radius: 5px;
	line-height: 1.5;
}
.ab-badge {
	display: inline-block;
	font-family: var(--ab-mono);
	font-size: 11px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	font-weight: 600;
	border-radius: 999px;
	padding: 4px 10px;
	line-height: 1.4;
	white-space: nowrap;
}
.ab-skill {
	display: inline-flex;
	width: fit-content;
	font-size: 16px;
	font-weight: 500;
	background: var(--ab-cream);
	border: var(--ab-line);
	border-radius: 999px;
	padding: 10px 18px;
	line-height: 1.5;
}
.ab-status { display: inline-flex; align-items: center; gap: 8px; }
.ab-status::before {
	content: "";
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--ab-sage);
	display: inline-block;
	flex: none;
}
.ab-status--coral::before { background: var(--ab-coral); }
.ab-dot-label { display: flex; align-items: center; gap: 10px; }
.ab-dot-label::before {
	content: "";
	width: 12px;
	height: 12px;
	border-radius: 50%;
	border: var(--ab-line);
	background: var(--ab-sky);
	flex: none;
}
.ab-dot-label--mustard::before { background: var(--ab-mustard); }

/* ------------------------------------------------------------------
   Cards & surfaces
------------------------------------------------------------------- */
.is-style-card,
.ab-card {
	border: var(--ab-line);
	border-radius: 20px;
	overflow: hidden;
}
.is-style-card-shadow {
	border: var(--ab-line);
	border-radius: 20px;
	box-shadow: var(--ab-shadow);
}
.is-style-card-dashed {
	border: 1.5px dashed var(--ab-ink);
	border-radius: 20px;
}
.ab-r10 { border-radius: 10px !important; }
.ab-r14 { border-radius: 14px !important; }
.ab-r16 { border-radius: 16px !important; }
.ab-r28 { border-radius: 28px !important; }
.ab-border { border: var(--ab-line); }
.ab-border-light { border: 1.5px solid var(--ab-cream); }
.ab-shadow { box-shadow: var(--ab-shadow); }
.ab-pad-24 { padding: 24px; }
.ab-pad-28 { padding: 28px; }
.ab-pad-32 { padding: 32px; }
.ab-pad-card { padding: 28px 24px; }
.ab-pad-40 { padding: clamp(24px, 3vw, 40px); }
.ab-pad-56 { padding: clamp(28px, 4vw, 56px); }
.ab-fill { flex: 1 1 auto; }
.ab-push { margin-top: auto !important; }
.ab-relative { position: relative; }
.ab-dashed-top { border-top: 1px dashed var(--ab-stone); padding-top: 20px; }
.ab-on-dark .ab-dashed-top { border-top-color: #6b6058; }
.ab-rule-top {
	border-top: 1.5px solid currentColor;
	padding-top: 20px;
}
.ab-rule-top-ink { border-top: var(--ab-line); padding-top: 20px; }
.ab-card-head {
	border-bottom: var(--ab-line);
	padding: 14px 24px;
	font-family: var(--ab-mono);
	font-size: 12px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	font-weight: 600;
	line-height: 1.6;
}
.ab-card-body { padding: 28px 24px; }
/* Equal-height cards in grids */
.ab-cards > * { height: 100%; }
.ab-cards > .wp-block-group,
.ab-col-card { display: flex; flex-direction: column; }
.ab-col-card > .ab-card-body,
.ab-col-card > .ab-fill { flex: 1 1 auto; display: flex; flex-direction: column; }

/* Icon circle at the top of service cards */
.ab-icon-circle {
	width: 72px;
	height: 72px;
	border-radius: 50%;
	display: flex !important;
	align-items: center;
	justify-content: center;
	margin: 0 !important;
}
.ab-icon-circle img { width: 44px !important; height: 44px !important; display: block; }
.ab-color-dot { width: 40px; height: 40px; border-radius: 50%; }
.ab-ribbon {
	position: absolute;
	top: 24px;
	right: 24px;
	margin: 0 !important;
}
.ab-stamp {
	position: absolute !important;
	z-index: 2;
	margin: 0 !important;
	pointer-events: none;
}
.ab-stamp img { width: 100%; height: auto; display: block; }

/* ------------------------------------------------------------------
   Lists
------------------------------------------------------------------- */
.is-style-plus,
.is-style-check,
.is-style-cross,
.is-style-plain {
	list-style: none;
	margin-inline: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.is-style-plus li,
.is-style-check li,
.is-style-cross li {
	position: relative;
	padding-left: 20px;
	margin: 0;
}
.is-style-plus li::before {
	content: "+";
	position: absolute;
	left: 0;
	top: 0;
	font-weight: 500;
}
.is-style-check li,
.is-style-cross li { padding-left: 26px; }
.is-style-check li::before,
.is-style-cross li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.38em;
	width: 14px;
	height: 14px;
	background: currentColor;
	-webkit-mask: var(--ab-icon) center / contain no-repeat;
	mask: var(--ab-icon) center / contain no-repeat;
}
.is-style-check li::before {
	--ab-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M1.5 7.5l3.5 3.5 7.5-8.5' fill='none' stroke='%23000' stroke-width='2.4'/%3E%3C/svg%3E");
}
.is-style-cross li::before {
	--ab-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M2.5 2.5l9 9M11.5 2.5l-9 9' fill='none' stroke='%23000' stroke-width='1.6'/%3E%3C/svg%3E");
}
.ab-list-15 { font-size: 15px; line-height: 1.6; }
.ab-list-16 { font-size: 16px; line-height: 1.5; gap: 14px; }

/* ------------------------------------------------------------------
   Buttons
------------------------------------------------------------------- */
.wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 52px;
	text-decoration: none;
	border: 1.5px solid transparent;
	transition: background-color .15s ease, color .15s ease, transform .15s ease;
}
.wp-block-button__link:hover { transform: translateY(-1px); }
.wp-block-button.is-style-outline > .wp-block-button__link,
.wp-block-button .wp-block-button__link.is-style-outline {
	background: transparent;
	color: currentColor;
	border: 1.5px solid currentColor;
	padding: 16px 28px;
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover { background: rgba(31, 26, 23, 0.06); color: currentColor; }
.ab-on-dark .wp-block-button.is-style-outline > .wp-block-button__link:hover { background: rgba(245, 237, 232, 0.1); }
.wp-block-button.is-style-coral > .wp-block-button__link {
	background: var(--ab-coral);
	color: var(--ab-ink);
	border-color: var(--ab-ink);
}
.ab-on-dark .wp-block-button.is-style-coral > .wp-block-button__link { border-color: var(--ab-cream); }
.wp-block-button.is-style-coral > .wp-block-button__link:hover { background: #e2714f; color: var(--ab-ink); }
.wp-block-button.is-style-light > .wp-block-button__link {
	background: var(--ab-cream);
	color: var(--ab-ink);
}
.wp-block-button.is-style-light > .wp-block-button__link:hover { background: #fff; color: var(--ab-ink); }
.wp-block-button.is-style-small > .wp-block-button__link,
.ab-btn-sm .wp-block-button__link {
	background: transparent;
	color: currentColor;
	border-color: currentColor;
	min-height: 0;
	padding: 12px 18px;
	font-size: 15px;
}
.wp-block-button.is-style-nav > .wp-block-button__link {
	min-height: 0;
	padding: 12px 20px;
	font-family: var(--ab-mono);
	font-size: 13px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	font-weight: 600;
}
.ab-btn-row { gap: 12px !important; }

/* Text link with arrow (“More about me →”) */
.ab-textlink a,
a.ab-textlink { font-weight: 600; text-underline-offset: 3px; }
.ab-monolink a {
	font-family: var(--ab-mono);
	font-size: 13px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	font-weight: 600;
	text-underline-offset: 3px;
}

/* ------------------------------------------------------------------
   Header
------------------------------------------------------------------- */
.ab-topstrip { border-bottom: var(--ab-line); }
.ab-topstrip__inner {
	padding-block: 12px;
	font-family: var(--ab-mono);
	font-size: 12px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-weight: 500;
	line-height: 1.6;
}
.ab-topstrip__inner a { text-underline-offset: 3px; }
.ab-header { padding-block: 20px; }
.ab-logo { margin: 0 !important; }
.ab-logo img { height: 30px !important; width: auto !important; display: block; }
.ab-logo a { display: flex; align-items: center; }
.ab-nav {
	font-family: var(--ab-mono);
	font-size: 13px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	font-weight: 500;
}
.ab-nav .wp-block-navigation-item__content { padding: 10px 0 !important; text-decoration: none; }
.ab-nav .current-menu-item > .wp-block-navigation-item__content,
.ab-nav .wp-block-navigation-item__content[aria-current="page"] {
	text-decoration: underline;
	text-underline-offset: 6px;
}
.ab-nav-wrap { gap: 8px 28px !important; }
.ab-nav .wp-block-navigation__container { gap: 8px 28px !important; }

/* ------------------------------------------------------------------
   Footer
------------------------------------------------------------------- */
.ab-footer { border-top: 1px solid #3a322d; }
.ab-footer__inner { padding-block: 48px; row-gap: 32px !important; column-gap: 32px !important; }
.ab-footer .ab-logo img { height: 56px !important; }
.ab-footer .ab-nav { font-weight: 500; }
.ab-footer .ab-nav a { color: var(--ab-cream); }
.ab-footer__legal {
	width: 100%;
	flex-basis: 100% !important;
	border-top: 1px solid #4d443e;
	padding-top: 20px;
	font-family: var(--ab-mono);
	font-size: 12px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ab-stone);
	gap: 8px !important;
}

/* ------------------------------------------------------------------
   Section-specific components
------------------------------------------------------------------- */

/* Stats band (home) */
.ab-stats { gap: 0 !important; }
.ab-stats > * { padding: 32px 24px 34px; border-left: var(--ab-line); margin: 0 !important; }
.ab-stats > *:first-child { border-left: 0; padding-left: 0; }
@media (max-width: 781px) {
	.ab-stats > * { border-left: 0; border-top: var(--ab-line); padding-left: 0; }
	.ab-stats > *:first-child { border-top: 0; }
}
.ab-stats .ab-stat { font-size: clamp(40px, 3.6vw, 52px); letter-spacing: -0.02em; }

/* Clients / publications strip */
.ab-logos { column-gap: 36px !important; row-gap: 12px !important; }
.ab-logos p { font-family: var(--ab-mono); font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 600; }
.ab-logos p.ab-logos__label { color: var(--ab-muted-light); font-weight: 500; }
.ab-pubs { column-gap: 40px !important; row-gap: 12px !important; }
.ab-pubs p { font-family: var(--ab-display); font-weight: 600; font-size: 20px; letter-spacing: 0; }
.ab-pubs p.ab-pubs__label { font-family: var(--ab-mono); font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ab-muted-light); font-weight: 400; }

/* Answer engine mock card (home hero) */
.ab-answer { background: #fff; border: var(--ab-line); border-radius: 20px; box-shadow: var(--ab-shadow); position: relative; }
.ab-answer__head {
	background: var(--ab-sky);
	border-bottom: var(--ab-line);
	border-radius: 18px 18px 0 0;
	padding: 14px 22px;
	font-family: var(--ab-mono);
	font-size: 12px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-weight: 600;
	display: flex;
	align-items: center;
	gap: 10px;
}
.ab-answer__head::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--ab-ink); }
.ab-answer__body { padding: 22px; }
.ab-answer__q {
	background: var(--ab-cream);
	border-radius: 14px 14px 4px 14px;
	padding: 10px 14px;
	font-size: 15px;
	line-height: 1.6;
	margin-left: 34px !important;
}
.ab-answer__a { font-size: 15px; line-height: 1.6; }
.ab-cite {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 20px;
	height: 17px;
	padding: 0 5px;
	border-radius: 3px;
	background: var(--ab-ink);
	color: var(--ab-cream);
	font-family: var(--ab-mono);
	font-size: 11px;
	font-weight: 700;
	vertical-align: 1px;
}
.ab-answer__sources { border-top: 1px dashed var(--ab-stone); padding-top: 14px; }
.ab-answer__label { font-family: var(--ab-mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ab-muted); }
.ab-source {
	display: flex;
	align-items: center;
	gap: 10px;
	border: 1px solid var(--ab-stone-light);
	border-radius: 10px;
	padding: 10px 12px;
	font-size: 14px;
	line-height: 1.55;
	color: var(--ab-muted);
}
.ab-source--cited { border: var(--ab-line); background: var(--ab-cream); color: var(--ab-ink); font-weight: 600; }
.ab-source__n {
	flex: none;
	width: 21px;
	height: 21px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1.5px solid var(--ab-ink);
	border-radius: 3px;
	font-family: var(--ab-mono);
	font-size: 12px;
	font-weight: 600;
	color: var(--ab-ink);
}
.ab-source--cited .ab-source__n { background: var(--ab-ink); color: var(--ab-cream); }
.ab-source__url { flex: 1 1 auto; }
.ab-source .ab-badge { background: var(--ab-coral); color: var(--ab-ink); font-weight: 600; }

/* Scorecard mock (audit hero) */
.ab-score { background: #fff; border: var(--ab-line); border-radius: 20px; box-shadow: var(--ab-shadow); overflow: hidden; }
.ab-score__head {
	background: var(--ab-mustard);
	border-bottom: var(--ab-line);
	padding: 16px 22px;
	font-family: var(--ab-mono);
	font-size: 12px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-weight: 600;
	display: flex;
	justify-content: space-between;
	gap: 12px;
}
.ab-score__body { padding: 12px 22px 22px; }
.ab-score__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 14px 0;
	border-bottom: 1px dashed var(--ab-stone);
	font-size: 15px;
	font-weight: 500;
	line-height: 1.6;
}
.ab-score__row .ab-badge { font-size: 11px; }
.ab-score__priority {
	margin-top: 22px !important;
	background: var(--ab-ink);
	color: var(--ab-cream);
	border-radius: 12px;
	padding: 14px 16px;
	font-size: 14px;
	line-height: 1.55;
}
.ab-score__priority strong {
	display: block;
	font-family: var(--ab-mono);
	font-size: 12px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ab-mustard);
	font-weight: 600;
}

/* Reporter’s notebook (journalism hero) */
.ab-notebook {
	background-color: #fff;
	background-image: repeating-linear-gradient(to bottom, transparent 0, transparent 31px, #cfdfea 31px, #cfdfea 32px);
	border: var(--ab-line);
	border-radius: 6px 20px 20px 6px;
	box-shadow: var(--ab-shadow);
	padding: 40px 28px 28px 56px;
	position: relative;
	line-height: 32px;
	font-size: 16px;
}
.ab-notebook::before { content: ""; position: absolute; top: 0; bottom: 0; left: 40px; width: 1.5px; background: var(--ab-coral); }
.ab-notebook > * { margin: 0 !important; line-height: 32px; }
.ab-notebook .ab-notebook__title { font-family: var(--ab-mono); font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 600; }
.ab-notebook .ab-notebook__sign { font-family: var(--ab-mono); font-size: 12px; letter-spacing: 0.08em; color: var(--ab-muted); }

/* Portrait with badge */
.ab-portrait { position: relative; margin: 0 !important; }
.ab-portrait img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	border: var(--ab-line);
	border-radius: 20px;
}
.ab-portrait--shadow img { box-shadow: var(--ab-shadow); }

/* FAQ list */
.ab-faq > * { border-top: var(--ab-line); padding: 34px 0 32px; margin: 0 !important; }
.ab-faq > *:last-child { border-bottom: var(--ab-line); }
.ab-faq h3 { font-size: 20px; line-height: 1.3; letter-spacing: -0.005em; }
.ab-faq p { font-size: 16px; color: var(--ab-ink-soft); }

/* Timeline (about) */
.ab-timeline > * { border-top: var(--ab-line); padding: 30px 0 22px; margin: 0 !important; }
.ab-timeline > *:last-child { border-bottom: var(--ab-line); }
.ab-timeline__date { font-family: var(--ab-mono); font-size: 14px; letter-spacing: 0.04em; flex: 0 0 182px !important; padding-top: 2px; }
.ab-timeline__body { flex: 1 1 360px !important; min-width: 0; }
.ab-timeline h3 { font-size: 20px; line-height: 1.5; letter-spacing: -0.005em; }
.ab-timeline p { font-size: 15px; color: var(--ab-ink-soft); }

/* Process rows (audit “how it works”) */
.ab-process > * { border-top: var(--ab-line); padding: 22px 0 20px; margin: 0 !important; }
.ab-process > *:last-child { border-bottom: var(--ab-line); }
.ab-process__when { font-family: var(--ab-mono); font-size: 13px; font-weight: 600; flex: 0 0 108px !important; padding-top: 3px; }
.ab-process__body { flex: 1 1 280px !important; min-width: 0; }
.ab-process h3 { font-family: Inter, system-ui, sans-serif; font-size: 18px; font-weight: 600; letter-spacing: 0; line-height: 1.5; }
.ab-process p { font-size: 15px; color: var(--ab-ink); }

/* Deliverable checklist boxes (audit) */
.ab-checkboxes > * {
	background: var(--ab-cream);
	border: var(--ab-line);
	border-radius: 10px;
	padding: 14px 18px 14px 44px !important;
	position: relative;
	font-size: 16px;
	line-height: 1.6;
	margin: 0 !important;
}
.ab-checkboxes > *::before {
	content: "";
	position: absolute;
	left: 18px;
	top: 50%;
	width: 14px;
	height: 14px;
	transform: translateY(-50%);
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M1.5 7.5l3.5 3.5 7.5-8.5' fill='none' stroke='%23000' stroke-width='2.4'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M1.5 7.5l3.5 3.5 7.5-8.5' fill='none' stroke='%23000' stroke-width='2.4'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Roadmap table (audit) */
.ab-table { margin-inline: 0 !important; margin-bottom: 0 !important; overflow-x: auto; }
.ab-table table { width: 100%; border-collapse: collapse; min-width: 640px; }
.ab-table th {
	text-align: left;
	font-family: var(--ab-mono);
	font-size: 11px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-weight: 600;
	color: var(--ab-stone-light);
	padding: 0 12px 10px 0;
	border-bottom: 1px solid #4d443e;
}
.ab-table td { padding: 13px 12px 13px 0; border-bottom: 1px solid #3d3531; font-size: 16px; }
.ab-table tr:last-child td { border-bottom: 0; padding-bottom: 0; }
.ab-table th:first-child, .ab-table td:first-child { width: 43%; }
.ab-table.ab-table thead { border: 0; }
.ab-table.ab-table td, .ab-table.ab-table th { border-left: 0; border-right: 0; border-top: 0; }

/* Stat tiles */
.ab-tile { border: var(--ab-line); border-radius: 14px; padding: 18px 20px; }
.ab-tile .ab-stat { font-size: clamp(28px, 2.4vw, 34px); }
.ab-tile p:not(.ab-stat) { font-size: 14px; line-height: 1.6; }
.ab-tiles-2x2 { gap: 14px !important; }
.ab-tiles-2x2 .ab-tile { border: 0; padding: 20px 22px; }
.ab-tiles-2x2 .ab-stat { font-size: clamp(26px, 2.2vw, 34px); }

/* Quote card */
.ab-quote-icon { width: 56px; height: 56px; color: var(--ab-mustard); margin: 0 !important; }
.ab-quote-icon img { width: 56px; height: 56px; display: block; }
.ab-quote-text { font-family: var(--ab-display); font-weight: 600; letter-spacing: -0.01em; }
.ab-cite-line { font-family: var(--ab-mono); font-size: 13px; letter-spacing: 0.04em; line-height: 1.6; }

/* Experience pills (about) */
.ab-skills { gap: 12px 12px !important; }

/* Form */
.ab-form-card { background: var(--ab-cream); color: var(--ab-ink); border-radius: 20px; padding: clamp(24px, 3vw, 40px); }
.ab-form-card--white { background: #fff; border: var(--ab-line); box-shadow: var(--ab-shadow); }
.ab-form .wpcf7-form,
.ab-form form { margin: 0; }
.ab-form-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 20px 20px;
}
.ab-form-grid .ab-full { grid-column: 1 / -1; }
.ab-form label {
	display: flex;
	flex-direction: column;
	gap: 8px;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.6;
}
.ab-form .wpcf7-form-control-wrap { display: block; }
.ab-form input[type="text"],
.ab-form input[type="email"],
.ab-form input[type="url"],
.ab-form select,
.ab-form textarea {
	width: 100%;
	border: var(--ab-line);
	border-radius: 10px;
	padding: 12px 14px;
	min-height: 48px;
	background: #fff;
	color: var(--ab-ink);
	font-weight: 400;
	font-size: 15px;
	line-height: 1.5;
}
.ab-form select {
	appearance: none;
	-webkit-appearance: none;
	padding-right: 36px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%231f1a17' stroke-width='1.6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	background-size: 11px;
}
.ab-form textarea { resize: vertical; min-height: 116px; }
.ab-form ::placeholder { color: #6b6058; opacity: 1; }
.ab-form-actions {
	grid-column: 1 / -1;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}
.ab-form-actions--stack { flex-direction: column; align-items: flex-start; justify-content: flex-start; }
.ab-form input[type="submit"],
.ab-form button[type="submit"] {
	cursor: pointer;
	background: var(--ab-coral);
	color: var(--ab-ink);
	padding: 14px 28px;
	border-radius: 999px;
	font-weight: 700;
	font-size: 16px;
	min-height: 52px;
	border: var(--ab-line);
	transition: transform .15s ease, background-color .15s ease;
}
.ab-form input[type="submit"]:hover { background: #e2714f; transform: translateY(-1px); }
.ab-form-note { font-family: var(--ab-mono); font-size: 12px; color: var(--ab-muted); }
.ab-form .wpcf7-spinner { margin: 0 0 0 8px; }
.ab-form .wpcf7-not-valid-tip { font-size: 13px; font-weight: 500; color: #a8432a; margin-top: 4px; }
.ab-form .wpcf7 form .wpcf7-response-output {
	margin: 20px 0 0;
	padding: 12px 16px;
	border-radius: 10px;
	border: var(--ab-line);
	font-size: 15px;
}
.ab-form .wpcf7 form.sent .wpcf7-response-output { background: #e4ecdf; border-color: var(--ab-sage); }
.ab-form .wpcf7 form.invalid .wpcf7-response-output,
.ab-form .wpcf7 form.failed .wpcf7-response-output { background: #f7e1d9; border-color: var(--ab-coral); }
.ab-form .screen-reader-response { position: absolute; clip: rect(1px, 1px, 1px, 1px); width: 1px; height: 1px; overflow: hidden; }

/* Numbered steps (contact) */
.ab-steps { counter-reset: none; }
.ab-steps p { display: flex; gap: 14px; font-size: 16px; line-height: 1.6; color: var(--ab-stone-light); }
.ab-steps p strong { font-family: var(--ab-mono); font-weight: 600; color: var(--ab-cream); flex: none; }

/* Work filter */
.ab-filter { display: flex; flex-wrap: wrap; gap: 10px; }
.ab-filter button {
	cursor: pointer;
	font-family: var(--ab-mono);
	font-size: 12px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-weight: 600;
	border: var(--ab-line);
	border-radius: 999px;
	padding: 10px 15px;
	background: transparent;
	color: var(--ab-ink);
	line-height: 1.4;
	transition: background-color .15s ease, color .15s ease;
}
.ab-filter button:hover { background: rgba(31, 26, 23, 0.06); }
.ab-filter button[aria-pressed="true"] { background: var(--ab-ink); color: var(--ab-cream); }
.ab-filter-hidden { display: none !important; }

/* Featured case study */
.ab-feature-pills { gap: 8px !important; }
.ab-feature-pills .ab-badge { border: 1.5px solid var(--ab-cream); padding: 6px 10px; }
.ab-feature-pills .ab-badge.has-mustard-background-color { border-color: var(--ab-mustard); color: var(--ab-ink); }
.ab-strong-cream strong { color: var(--ab-cream); }

/* Wide case study card (small business) */
.ab-wide-card { border: var(--ab-line); border-radius: 20px; overflow: hidden; background: #fff; gap: 0 !important; }
.ab-wide-card__side { flex: 0 0 282px !important; border-right: var(--ab-line); padding: 32px 28px 28px; display: flex; flex-direction: column; justify-content: space-between; }
.ab-wide-card__body { flex: 1 1 400px !important; padding: 28px; min-width: 0; }
@media (max-width: 781px) {
	.ab-wide-card__side { flex-basis: 100% !important; border-right: 0; border-bottom: var(--ab-line); }
}
.ab-light-pills .ab-badge { background: var(--ab-cream); color: var(--ab-ink); border: var(--ab-line); padding: 5px 10px; }

/* Media & brands stat cards */
.ab-stat-card p.ab-label { font-family: var(--ab-mono); font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ab-muted); line-height: 1.6; }
.ab-stat-card .ab-stat { font-size: clamp(34px, 3vw, 42px); }

/* Testimonial with icon (work) */
.ab-quote-row { gap: 32px !important; flex-wrap: nowrap !important; }
.ab-quote-row .ab-quote-icon { width: 72px; height: 72px; flex: none; color: var(--ab-ink); }
.ab-quote-row .ab-quote-icon img { width: 72px; height: 72px; }
@media (max-width: 600px) { .ab-quote-row { flex-wrap: wrap !important; } }

/* Journalism clip cards (Query Loop) */
.ab-clip-grid { gap: 24px !important; }
.ab-clip-grid > li { margin: 0; }
.ab-clip { background: #fff; border: var(--ab-line); border-radius: 20px; overflow: hidden; display: flex; flex-direction: column; height: 100%; }
.ab-clip__head { background: var(--ab-mustard); border-bottom: var(--ab-line); padding: 14px 24px; font-family: var(--ab-mono); font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 600; line-height: 1.6; }
.ab-clip-color-sky .ab-clip__head { background: var(--ab-sky); }
.ab-clip-color-sage .ab-clip__head { background: var(--ab-sage); }
.ab-clip-color-coral .ab-clip__head { background: var(--ab-coral); }
.ab-clip-color-mustard .ab-clip__head { background: var(--ab-mustard); }
.ab-clip__body { padding: 28px 24px; display: flex; flex-direction: column; gap: 14px; flex: 1; }
.ab-clip__body > * { margin: 0 !important; }
.ab-clip .wp-block-post-title { font-family: var(--ab-display); font-weight: 600; font-size: 21px; line-height: 1.25; letter-spacing: 0; }
.ab-clip .wp-block-post-title a { text-decoration: none; }
.ab-clip .wp-block-post-excerpt { color: var(--ab-ink-soft); font-size: 16px; }
.ab-clip .wp-block-post-excerpt__excerpt { margin: 0; }
.ab-clip .wp-block-post-excerpt__more-text { display: none; }
.ab-clip__link { margin-top: auto !important; font-weight: 600; font-size: 15px; padding: 8px 0; }
.ab-clip__link a { color: var(--ab-ink); }

/* Beats (journalism) */
.ab-beats li { color: var(--ab-stone-light); font-size: 15px; }
.ab-beats li em,
.ab-src { font-style: normal; font-family: var(--ab-mono); font-size: 11px; color: var(--ab-stone); }

/* Generic content pages, posts & archives */
.ab-prose > * + * { margin-block-start: 1.1em !important; }
.ab-prose h2 { font-size: clamp(26px, 3vw, 36px); margin-block-start: 1.6em !important; }
.ab-prose h3 { font-size: 22px; margin-block-start: 1.4em !important; }
.ab-prose a { text-underline-offset: 3px; }
.ab-prose img { border-radius: 14px; }
.ab-prose blockquote { border-left: 4px solid var(--ab-coral); margin-left: 0; padding-left: 20px; font-family: var(--ab-display); font-weight: 500; font-size: 22px; line-height: 1.4; }
.ab-post-meta { font-family: var(--ab-mono); font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ab-muted); }
.ab-post-card { background: #fff; border: var(--ab-line); border-radius: 20px; padding: 28px 24px; height: 100%; display: flex; flex-direction: column; gap: 14px; }
.ab-post-card > * { margin: 0 !important; }
.ab-post-card .wp-block-post-title { font-size: 21px; line-height: 1.25; letter-spacing: 0; }
.ab-post-card .wp-block-post-title a { text-decoration: none; }
.ab-post-card .wp-block-post-excerpt { color: var(--ab-ink-soft); font-size: 16px; }
.ab-post-card .wp-block-post-featured-image { margin: -28px -24px 6px !important; border-bottom: var(--ab-line); }
.ab-post-card .wp-block-post-featured-image img { border-radius: 0; aspect-ratio: 16 / 9; object-fit: cover; }
.wp-block-query-pagination { font-family: var(--ab-mono); font-size: 13px; text-transform: uppercase; letter-spacing: 0.08em; gap: 16px; }

/* Utility */
.ab-hide-mobile { }
@media (max-width: 781px) {
	.ab-hide-mobile { display: none !important; }
	.ab-stamp { transform: scale(0.8) rotate(10deg) !important; }
}
.screen-reader-text { position: absolute !important; clip: rect(1px, 1px, 1px, 1px); width: 1px; height: 1px; overflow: hidden; }
.skip-link:focus { position: fixed; top: 8px; left: 8px; z-index: 100000; background: var(--ab-ink); color: var(--ab-cream); padding: 10px 16px; border-radius: 999px; clip: auto; width: auto; height: auto; }

/* ------------------------------------------------------------------
   Additional components
------------------------------------------------------------------- */
.ab-h-m { font-size: clamp(28px, 3.6vw, 44px) !important; line-height: 1.12 !important; }
.ab-icon-44 { margin: 0 !important; }
.ab-icon-44 img { width: 44px; height: 44px; display: block; }
.ab-stamp--notebook { top: -40px; right: -32px; width: 120px; transform: rotate(10deg); }
.ab-stamp--hero { top: -34px; right: -10px; width: 104px; transform: rotate(10deg); }
.ab-stamp--photo { top: -24px; right: -14px; width: 100px; transform: rotate(10deg); }
.ab-stamp--badge { bottom: -27px; right: -27px; width: 112px; }

.ab-email-block { font-family: var(--ab-mono); font-size: 14px; }
.ab-email-block .ab-email-block__label { color: var(--ab-muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.12em; }
.ab-on-dark .ab-email-block .ab-email-block__label { color: var(--ab-stone); }
.ab-on-dark .ab-email-block a { color: var(--ab-cream); }

/* Testimonials (core/quote) */
.wp-block-quote.ab-testimonial { margin: 0; padding: 0; border: 0; display: flex; flex-direction: column; gap: 18px; }
.wp-block-quote.ab-testimonial > p { margin: 0; font-family: var(--ab-display); font-weight: 500; line-height: 1.35; font-size: clamp(20px, 2.4vw, 30px); letter-spacing: 0; }
.wp-block-quote.ab-testimonial cite { font-style: normal; font-family: var(--ab-mono); font-size: 13px; letter-spacing: 0.06em; color: var(--ab-muted); }
.wp-block-quote.ab-testimonial--card { background: #fff; border: var(--ab-line); border-radius: 20px; padding: clamp(24px, 4vw, 48px); }
.wp-block-quote.ab-testimonial--dark { background: var(--ab-ink); color: var(--ab-cream); border-radius: 20px; padding: 36px; gap: 40px; }
.wp-block-quote.ab-testimonial--dark::before { content: ""; width: 56px; height: 56px; background: url("assets/images/icon-quote-mustard.svg") center / contain no-repeat; }
.wp-block-quote.ab-testimonial--dark > p { font-weight: 600; font-size: 22px; line-height: 1.32; letter-spacing: -0.01em; }
.wp-block-quote.ab-testimonial--dark cite { color: var(--ab-stone-light); line-height: 1.6; }
.wp-block-quote.ab-testimonial--small { background: var(--ab-cream); border: var(--ab-line); border-radius: 20px; padding: 32px; gap: 28px; justify-content: space-between; height: 100%; }
.wp-block-quote.ab-testimonial--small > p { font-weight: 600; font-size: 22px; line-height: 1.36; letter-spacing: -0.01em; }
.wp-block-quote.ab-testimonial--small cite { color: var(--ab-ink-soft); }
.wp-block-quote.ab-testimonial--icon { padding-left: 104px; position: relative; gap: 22px; }
.wp-block-quote.ab-testimonial--icon::before { content: ""; position: absolute; left: 0; top: 2px; width: 72px; height: 72px; background: url("assets/images/icon-quote-ink.svg") center / contain no-repeat; }
.wp-block-quote.ab-testimonial--icon > p { font-weight: 600; font-size: clamp(22px, 2.4vw, 33px); line-height: 1.32; letter-spacing: -0.01em; }
.wp-block-quote.ab-testimonial--icon cite { color: var(--ab-ink-soft); }
@media (max-width: 600px) {
	.wp-block-quote.ab-testimonial--icon { padding-left: 0; padding-top: 88px; }
}

/* Button variants */
.wp-block-button.is-style-compact > .wp-block-button__link { padding: 14px 24px; font-size: 15px; min-height: 48px; }
.wp-block-button.is-style-textlink > .wp-block-button__link {
	background: none;
	color: var(--ab-ink);
	padding: 8px 0;
	min-height: 0;
	border: 0;
	border-radius: 0;
	font-weight: 600;
	font-size: 15px;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.wp-block-button.is-style-textlink > .wp-block-button__link:hover { color: #a8432a; transform: none; }
.ab-clip > * { margin: 0 !important; }
.wp-block-buttons.ab-clip__link { padding: 0; }
.ab-rowgap-32 { row-gap: 32px !important; }

/* ------------------------------------------------------------------
   Home
------------------------------------------------------------------- */
.ab-col-fixed-320 { flex: 0 0 320px !important; max-width: 100%; }
.ab-w-640 { max-width: 640px; }
.ab-text-16 { font-size: 16px; line-height: 1.6; }
.ab-py-logos { padding-block: 28px 30px; }
.ab-lead-dark { font-size: clamp(18px, 1.5vw, 20px); line-height: 1.55; color: var(--ab-stone-light); }
.ab-num { font-weight: 600; letter-spacing: 0.04em; }
.ab-h-card { font-size: clamp(20px, 1.75vw, 23px) !important; line-height: 1.2 !important; letter-spacing: -0.01em !important; }
.ab-meta { font-family: var(--ab-mono); font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; line-height: 1.6; }
.ab-service { padding: 32px; }
.ab-service .ab-icon-circle { margin-bottom: 14px !important; }
.ab-service .ab-meta { margin-top: 18px !important; }
.ab-service .ab-h-card { margin-top: 6px !important; }
.ab-service .is-style-plus { margin-top: 18px !important; }
.ab-service .ab-price { margin-top: 24px !important; }
.ab-price__label { font-family: var(--ab-mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; }
.ab-price__value { font-family: var(--ab-display); font-weight: 600; font-size: 22px; line-height: 1.25; letter-spacing: -0.01em; }
.ab-on-dark .ab-dashed-top,
.ab-service.ab-on-dark .ab-dashed-top { border-top-color: #6b6058; }
.ab-also { font-size: 14px; }
.ab-step { padding: 28px; min-height: 204px; }
.ab-tile .ab-stat { font-size: clamp(28px, 2.4vw, 34px); }
.ab-answer__a code {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 20px; height: 17px; padding: 0 5px; border-radius: 3px;
	background: var(--ab-ink); color: var(--ab-cream);
	font-family: var(--ab-mono); font-size: 11px; font-weight: 700; vertical-align: 1px;
}
.ab-answer > * { margin: 0 !important; }
.ab-source > * { margin: 0 !important; }
.ab-stack-0 > * { margin: 0 !important; }
.ab-stats > * { margin: 0 !important; }
.ab-on-dark .ab-email-block a { font-size: 15px; text-underline-offset: 3px; }
.ab-icon-circle { padding: 0 !important; }
.ab-icon-circle figure, .ab-icon-circle .wp-block-image { width: 44px; flex: none; margin: 0 !important; }
.ab-icon-circle img { max-width: none !important; }
.ab-icon-44 { width: 44px; }
.ab-icon-44 img { max-width: none; }
/* measured against reference */
.ab-h-hero { font-size: clamp(42px, 5.1vw, 73px) !important; line-height: 1.1 !important; letter-spacing: -0.025em !important; }
.ab-h-xl { font-size: clamp(32px, 3.6vw, 51.5px) !important; line-height: 1.08 !important; letter-spacing: -0.02em !important; }
.ab-w-600 { max-width: 600px; }
.ab-stats > * { padding: 34px 0 34px 24px !important; }
.ab-stats > *:first-child { padding-left: 0 !important; }
.ab-stats .ab-stat { font-size: clamp(36px, 3.15vw, 45px); }
.ab-lead-dark { font-size: 19px; line-height: 1.6; }
.ab-shift-item h3 { font-size: 21px !important; line-height: 1.25 !important; }
.ab-shift-item p:not(.ab-num) { font-size: 15px; line-height: 1.7; }
.ab-service .ab-icon-circle { margin-bottom: 0 !important; }
.ab-service .ab-meta { margin-top: 16px !important; }
.ab-service .ab-h-card { margin-top: 0 !important; }
.ab-stamp--hero { top: -16px; }
/* WordPress pads every Group that has a background colour; sections handle their own spacing. */
.ab-section.has-background, .ab-footer.has-background, .ab-icon-circle.has-background, .ab-phase.has-background, .ab-score.has-background, .ab-answer.has-background { padding: 0; }
.ab-price__value { font-size: 20.5px; }
.ab-service .ab-h-card { margin-top: 8px !important; }
.ab-py-lg { padding-block: clamp(64px, 7.8vw, 112px); }
.ab-h-l { font-size: clamp(30px, 3.25vw, 46.3px) !important; }
.wp-block-quote.ab-testimonial--dark { gap: 28px; }
.wp-block-quote.ab-testimonial--dark > p { font-size: 20px; line-height: 1.45; }
.ab-tiles .ab-tile { padding: 24px 20px 22px; }
.ab-tiles .ab-tile .ab-stat { font-size: clamp(26px, 2.15vw, 30.6px); }
.ab-faq > * { padding: 28px 0 26px !important; }
.ab-faq h3 { font-size: 18.9px; }
.ab-faq > * > * + * { margin-top: 8px !important; }
.ab-form-actions { position: relative; }
.ab-form-actions .wpcf7-spinner { position: absolute; left: 100%; margin: 0 0 0 8px; }
.ab-form-actions--stack { gap: 14px; }
.ab-form-actions--stack .wpcf7-spinner { left: auto; top: 14px; }
.ab-w-820 { max-width: 820px; }
.ab-about-teaser .ab-textlink { margin-top: 26px !important; }

/* ------------------------------------------------------------------
   About
------------------------------------------------------------------- */
.ab-pills-lg .is-style-pill { padding: 9px 14px; }
.ab-value { border: 1.5px solid var(--ab-stone-light); border-radius: 18px; padding: 26px; }
.ab-value .ab-color-dot { margin-bottom: 4px !important; }
.ab-value p { line-height: 1.6; }
.ab-h-m2 { font-size: clamp(30px, 3.1vw, 44px) !important; line-height: 1.05 !important; letter-spacing: -0.02em !important; }
.ab-py-cta { padding-block: clamp(56px, 6.6vw, 96px); }
.ab-cta-heading { max-width: 620px; }
.ab-resume { margin-top: 10px !important; }
.ab-timeline__row { flex-wrap: wrap !important; }
@media (max-width: 600px) { .ab-timeline__date { flex-basis: 100% !important; padding-bottom: 6px; } }
.ab-color-dot { padding: 0 !important; flex: none; }
.ab-h-l2 { font-size: clamp(30px, 3.4vw, 48px) !important; line-height: 1.08 !important; letter-spacing: -0.02em !important; }
.ab-h-m3 { font-size: clamp(28px, 2.85vw, 40.5px) !important; line-height: 1.13 !important; letter-spacing: -0.02em !important; }
.ab-timeline > * { padding: 22px 0 22px !important; }
.ab-timeline h3 { font-size: 19px; }
.ab-skill { padding: 11px 18px; }
.wp-block-quote.ab-testimonial--small { gap: 18px; }

/* ------------------------------------------------------------------
   SEO Audit
------------------------------------------------------------------- */
.ab-score__head > *, .ab-score__row > *, .ab-score__priority > * { margin: 0 !important; }
.ab-score__body > * { margin: 0 !important; }
.ab-score__priority { margin-top: 22px !important; }
.ab-score__priority p.ab-score__priority-label { font-family: var(--ab-mono); font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ab-mustard); font-weight: 600; }
.ab-price__value--lg { font-size: 24px; }
.ab-h-19 { font-size: 19.5px !important; line-height: 1.23 !important; letter-spacing: -0.005em !important; }
.ab-lh-15 { line-height: 1.5 !important; }
.ab-h-22 { font-size: 22px !important; line-height: 1.3 !important; letter-spacing: -0.01em !important; }
.ab-strong { font-weight: 600; }
.ab-w-780 { max-width: 780px; }
.ab-review-card { padding: 26px; }
.ab-review-card .ab-num-tag { margin-bottom: 4px; }
.ab-scope .ab-dot-label { margin-top: 12px !important; }
.ab-badge--outline { border: var(--ab-line); padding: 5px 10px; }
.ab-phase { display: flex; flex-direction: column; }
.ab-phase > * { margin: 0 !important; }
.ab-phase__head { border-bottom: var(--ab-line); padding: 24px !important; }
.ab-phase__body { padding: 24px; flex: 1 1 auto; display: flex; flex-direction: column; }
.ab-phase__track { font-family: var(--ab-mono); font-size: 12px; color: var(--ab-muted); border-top: 1px dashed var(--ab-stone); padding-top: 16px; line-height: 1.7; }
.ab-roadmap-table { border-radius: 20px; padding: 32px !important; }
.ab-roadmap-table .ab-table td { color: var(--ab-cream); }
.ab-checkboxes { gap: 12px; }
.ab-py-proof { padding-block: 72px; }
.ab-proof-text { font-size: 20px; font-weight: 500; line-height: 1.5; }
.ab-col-side-360 { flex: 1 1 360px !important; min-width: 0; }
.ab-price-box { border: 1.5px solid var(--ab-cream); border-radius: 14px; padding: 20px 24px; width: fit-content; }
.ab-price-box .ab-price__label { font-weight: 600; }
.ab-process__body h3 { margin: 0; }
.ab-score > *, .ab-phase > *, .ab-wide-card > * { margin: 0 !important; }
.ab-py-lg { padding-block: clamp(64px, 7.5vw, 108px); }
.ab-scope .ab-dot-label { margin-top: 36px !important; }
.ab-scope .ab-dot-label + * { margin-top: 18px !important; }
.ab-review-card h3 { font-size: 18.5px !important; line-height: 1.6 !important; }
.ab-roadmap-intro { margin-top: 24px !important; }
.ab-phase__head { padding: 22px 24px 18px !important; }
.ab-table td { padding: 11px 12px 11px 0; }
.ab-col-568 { flex: 1 1 568px !important; min-width: 0; }
.ab-col-528 { flex: 1 1 528px !important; min-width: 0; }
.ab-jumbo { font-size: clamp(56px, 5.8vw, 83px); }
.ab-py-proof { padding-block: 87px; }

/* ------------------------------------------------------------------
   Work
------------------------------------------------------------------- */
.ab-feature-wrap { margin-top: 64px !important; }
.ab-feature { border-radius: 28px; padding: clamp(28px, 3.9vw, 56px) !important; }
.ab-feature > * { margin: 0 !important; }
.ab-feature .ab-badge { border: 1.5px solid var(--ab-cream); padding: 5px 10px; }
.ab-feature .ab-badge.has-mustard-background-color { border-color: var(--ab-mustard); color: var(--ab-ink); }
.ab-feature-meta { font-size: 13px; letter-spacing: 0.12em; margin-top: 14px !important; }
.ab-h-feature { font-size: clamp(28px, 2.8vw, 40px) !important; line-height: 1.15 !important; letter-spacing: -0.02em !important; margin-bottom: 8px !important; }
.ab-col-tiles { flex: 0 0 300px !important; max-width: 100%; }
.ab-col-tiles .ab-tile { border: 0; min-height: 125px; color: var(--ab-ink); }
.ab-h-21 { font-size: 21px !important; line-height: 1.2 !important; letter-spacing: -0.01em !important; }
.ab-result { font-size: 14px; line-height: 1.6; }
.ab-pt-0 { padding-top: 0; }
.ab-pb-md { padding-bottom: 74px; }
.ab-pb-lg { padding-bottom: 90px; }
.ab-pad-26 { padding: 26px; }
.ab-wide-card__side .ab-light-pills { margin-top: 40px !important; }
.ab-wide-card__side .ab-badge { background: var(--ab-cream); }
.ab-col-tiles { min-width: 0; }
.ab-p0.ab-p0 { padding: 0; }
.ab-cta-heading { max-width: 650px; }
.ab-footer .ab-nav { font-weight: 600; }
.wp-block-quote.ab-testimonial--icon { gap: 14px; }
.wp-block-quote.ab-testimonial--icon > p { font-size: clamp(22px, 2.3vw, 32px); }
@media (max-width: 781px) {
	.ab-stamp--notebook, .ab-stamp--hero, .ab-stamp--photo { right: -4px; }
	.ab-col-fixed-320 { flex-basis: 100% !important; max-width: 320px; }
}
.ab-source { flex-wrap: nowrap !important; }
.ab-source__url { min-width: 0; overflow-wrap: break-word; }

/* ------------------------------------------------------------------
   Media & Photography pages
------------------------------------------------------------------- */
.ab-media-grid .wp-block-embed { margin: 0; }
.ab-media-grid .wp-block-embed__wrapper { border: var(--ab-line); border-radius: 16px; overflow: hidden; background: var(--ab-ink); }
.ab-media-grid .wp-block-embed figcaption,
.ab-gallery .wp-element-caption {
	font-family: var(--ab-mono);
	font-size: 12px;
	letter-spacing: 0.04em;
	color: var(--ab-muted);
	text-align: left;
	margin: 12px 0 0;
	line-height: 1.6;
}
.wp-block-gallery.ab-gallery { gap: 20px !important; margin-inline: 0; margin-bottom: 0; }
.wp-block-gallery.ab-gallery .wp-block-image img { border: var(--ab-line); border-radius: 14px; }
.wp-block-gallery.ab-gallery.is-cropped .wp-block-image img { aspect-ratio: 4 / 3; object-fit: cover; }
.wp-block-gallery.ab-gallery--print .wp-block-image img { background: #fff; }
.wp-block-gallery.ab-gallery.columns-3 > .wp-block-image { flex-grow: 0; }
/* Clips without a link (e.g. archived pieces) */
.ab-clip__link .wp-block-button__link:empty,
.ab-clip__link .wp-block-button__link:not([href]) { display: none; }
