/*
 * Jo Davison theme: component styles.
 *
 * Tokens come from theme.json (palette, fonts, sizes, spacing, custom). Colour values are
 * the brief's corrected set (website-brief.md 2.5.1 and 2.5.2): gold-text #7F6220 and muted
 * #666562; gold #BFA95F never carries text on a light ground. No hex value appears in any
 * pattern: patterns use these classes and the ground custom properties below.
 *
 * Contents
 *  1  Base and reset          9  Heroes
 *  2  Grounds (2.5.3)        10  Sections, by pattern
 *  3  Typography (2.5.4)     11  Forms (2.3)
 *  4  Layout (2.5.5)         12  Small screens (floors below 480px)
 *  5  Links and focus        13  Motion
 *  6  Buttons (2.5.2)
 *  7  Header and drawer (2.1)
 *  8  Footer (2.2)
 */

/* 1  Base and reset ------------------------------------------------------ */

:root {
	--jd-paper: var(--wp--preset--color--paper);
	--jd-paper-2: var(--wp--preset--color--paper-2);
	--jd-white: var(--wp--preset--color--white);
	--jd-ink: var(--wp--preset--color--ink);
	--jd-ink-2: var(--wp--preset--color--ink-2);
	--jd-ink-3: var(--wp--preset--color--ink-3);
	--jd-muted: var(--wp--preset--color--muted);
	--jd-line: var(--wp--preset--color--line);
	--jd-line-2: var(--wp--preset--color--line-2);
	--jd-line-dark: var(--wp--preset--color--line-dark);
	--jd-line-dark-2: var(--wp--preset--color--line-dark-2);
	--jd-field-line: var(--wp--preset--color--field-line);
	--jd-field-line-on-blue: var(--wp--preset--color--field-line-on-blue);
	--jd-blue: var(--wp--preset--color--blue);
	--jd-gold: var(--wp--preset--color--gold);
	--jd-gold-text: var(--wp--preset--color--gold-text);
	--jd-gold-light: var(--wp--preset--color--gold-light);
	--jd-on-blue: var(--wp--preset--color--on-blue);
	--jd-on-blue-muted: var(--wp--preset--color--on-blue-muted);
	--jd-on-ink: var(--wp--preset--color--on-ink);
	--jd-on-ink-muted: var(--wp--preset--color--on-ink-muted);
	--jd-ink-label: var(--wp--preset--color--ink-label);
	--jd-error-light: var(--wp--preset--color--error);
	--jd-error-dark: var(--wp--preset--color--error-on-dark);
	--jd-sans: var(--wp--preset--font-family--jost);
	--jd-serif: var(--wp--preset--font-family--newsreader);
	--jd-gutter: var(--wp--custom--gutter, clamp(20px, 4vw, 32px));
	--jd-container: var(--wp--custom--container, 1280px);
	--jd-header-h: var(--wp--custom--header-height, 81px);
	--jd-t: var(--wp--custom--transition, 150ms ease);
}

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

/* Corner radius 0 everywhere, including buttons, inputs, chips, cards, images and focus
   outlines (brief 2.5.5). Set at the token layer and enforced here. */
*,
*::before,
*::after {
	border-radius: 0 !important;
}

html {
	scroll-padding-top: calc(var(--jd-header-h) + 16px);
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
}

body {
	margin: 0;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd, ul, ol, fieldset {
	margin: 0;
}

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

/* Inline emphasis: Newsreader italic, 2px above the surrounding size (2.5.4). */
em,
i {
	font-family: var(--jd-serif);
	font-style: italic;
	font-size: calc(1em + 2px);
}

.screen-reader-text {
	border: 0;
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	white-space: nowrap;
	word-wrap: normal !important;
}

/* Skip link: the first focusable element, visible on focus, styled as a primary button. */
.jd-skip-link {
	position: absolute;
	left: 12px;
	top: -200px;
	z-index: 1000;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 12px 22px;
	background: var(--jd-blue);
	color: var(--jd-white);
	font-family: var(--jd-sans);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
}
.jd-skip-link:focus,
.jd-skip-link:focus-visible {
	top: 12px;
	outline: 2px solid var(--jd-ink);
	outline-offset: 2px;
	color: var(--jd-white);
}

/* The Home announcement bar part renders nothing when empty. */
.site-announcement:empty,
.site-announcement:not(:has(*)) {
	display: none;
}

/* 2  Grounds (brief 2.5.3) ------------------------------------------------
   Each section pattern declares exactly one ground. A ground sets custom properties only;
   no ground rule sets colour on a bare link, so link colours can never reach a button
   (brief 2.5.2, implementation rule 1). Properties inherit, so the innermost ground wins. */

body,
.jd-ground-paper,
.jd-ground-paper-2,
.jd-ground-white {
	--jd-bg: var(--jd-paper);
	--jd-heading: var(--jd-ink);
	--jd-body: var(--jd-ink-2);
	--jd-meta: var(--jd-muted);
	--jd-eyebrow: var(--jd-gold-text);
	--jd-accent: var(--jd-blue);
	--jd-link: var(--jd-blue);
	--jd-link-hover: var(--jd-gold-text);
	--jd-link-line: currentColor;
	--jd-rule: var(--jd-line);
	--jd-focus: var(--jd-blue);
	--jd-error: var(--jd-error-light);
	--jd-field: var(--jd-field-line);
}
.jd-ground-paper-2 {
	--jd-bg: var(--jd-paper-2);
	--jd-rule: var(--jd-line-2);
}
.jd-ground-white {
	--jd-bg: var(--jd-white);
	--jd-rule: var(--jd-line);
}
.jd-ground-ink,
.site-footer {
	--jd-bg: var(--jd-ink);
	--jd-heading: var(--jd-paper);
	--jd-body: var(--jd-on-ink);
	--jd-meta: var(--jd-on-ink-muted);
	--jd-eyebrow: var(--jd-gold-light);
	--jd-accent: var(--jd-gold-light);
	--jd-link: var(--jd-paper);
	--jd-link-hover: var(--jd-gold-light);
	--jd-link-line: currentColor;
	--jd-rule: var(--jd-line-dark);
	--jd-focus: var(--jd-gold-light);
	--jd-error: var(--jd-error-dark);
}
.jd-ground-blue {
	--jd-bg: var(--jd-blue);
	--jd-heading: var(--jd-paper);
	--jd-body: var(--jd-on-blue);
	--jd-meta: var(--jd-on-blue-muted);
	--jd-eyebrow: var(--jd-gold-light);
	--jd-accent: var(--jd-gold-light);
	--jd-link: var(--jd-white);
	--jd-link-hover: var(--jd-gold-light);
	--jd-link-line: var(--jd-gold);
	--jd-rule: rgba(255, 255, 255, 0.2);
	--jd-focus: var(--jd-gold-light);
	--jd-error: var(--jd-error-dark);
	--jd-field: var(--jd-field-line-on-blue);
}
.jd-ground-paper,
.jd-ground-paper-2,
.jd-ground-white,
.jd-ground-ink,
.jd-ground-blue {
	background-color: var(--jd-bg);
	color: var(--jd-heading);
}

/* Body text takes the ground's body colour; zero specificity so components override. */
:where(.wp-site-blocks, .editor-styles-wrapper) :where(p) {
	color: var(--jd-body);
}

/* 3  Typography (brief 2.5.4) --------------------------------------------- */

:where(h1, h2, h3, h4, h5, h6) {
	text-wrap: balance;
	overflow-wrap: break-word;
	hyphens: auto;
}
:where(p) {
	text-wrap: pretty;
}

.jd-eyebrow {
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.28em;
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--jd-eyebrow);
}

.jd-h1,
.jd-h2 {
	font-weight: 400;
	text-transform: uppercase;
	color: var(--jd-heading);
	letter-spacing: 0;
}
/* H1: Books, Work with me, Press. */
.jd-h1 {
	font-size: clamp(44px, 6vw, 92px);
	line-height: 1;
}
/* H1: About, Speaking, Contact, Women in chiropractic, legal, 404. */
.jd-h1--lg {
	font-size: clamp(44px, 5.6vw, 84px);
}
/* H1 display: Home. */
.jd-h1--display {
	font-size: clamp(48px, 6.4vw, 92px);
	line-height: 0.98;
	letter-spacing: -0.01em;
}
.jd-h2 {
	font-size: clamp(36px, 4.4vw, 60px);
	line-height: 1.05;
}
.jd-h2--56 {
	font-size: clamp(36px, 4.4vw, 56px);
}
.jd-h2--sm {
	font-size: clamp(32px, 3.6vw, 48px);
	line-height: 1.08;
}
.jd-h2--band {
	font-size: clamp(40px, 5vw, 72px);
	line-height: 1;
}
.jd-h2--book {
	font-size: clamp(34px, 4vw, 56px);
	line-height: 1.04;
}
.jd-accent {
	color: var(--jd-accent);
}
.jd-lead {
	font-size: 20px;
	line-height: 1.6;
	color: var(--jd-body);
	max-width: 36em;
}
.jd-lead--21 {
	font-size: 21px;
	line-height: 1.55;
	max-width: 34em;
}
.jd-body-18 {
	font-size: 18px;
	line-height: 1.65;
	color: var(--jd-body);
}
.jd-pullquote {
	font-family: var(--jd-serif);
	font-weight: 400;
	color: var(--jd-heading);
}
.jd-list-label,
.jd-meta {
	font-size: 12px;
	letter-spacing: 0.24em;
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--jd-meta);
}

/* 4  Layout (brief 2.5.5) ------------------------------------------------- */

.jd-container {
	width: 100%;
	max-width: var(--jd-container);
	margin-inline: auto;
	padding-inline: var(--jd-gutter);
}
.jd-container--960 {
	max-width: 960px;
}
.jd-container--880 {
	max-width: 880px;
}
.jd-container--760 {
	max-width: 760px;
}

/* Two-column sections collapse to one; stacked row gap 40px. */
.jd-cols {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
	column-gap: 64px;
	row-gap: 40px;
}
.jd-cols--72 {
	column-gap: 72px;
}
.jd-cols--56 {
	column-gap: 56px;
}

/* Hairline grids: the cells' 1px outlines meet in the 1px gap and form the outer border,
   so gaps read as rules and an incomplete last row leaves no block of rule colour. */
.jd-hairline {
	display: grid;
	gap: 1px;
	padding: 1px;
}
.jd-hairline > * {
	outline: 1px solid var(--jd-rule);
	background-color: var(--jd-bg);
}

.jd-media-1x1 img {
	aspect-ratio: 1 / 1;
	width: 100%;
	object-fit: cover;
	object-position: 30% 30%;
}
.jd-media-4x5 img {
	aspect-ratio: 4 / 5;
	width: 100%;
	object-fit: cover;
	object-position: 30% 30%;
}
.jd-shadow-book img,
img.jd-shadow-book {
	box-shadow: 0 30px 60px rgba(0, 0, 0, 0.25);
}
.jd-shadow-cover img,
img.jd-shadow-cover {
	box-shadow: 0 20px 40px rgba(0, 0, 0, 0.18);
}

/* List resets for pattern lists. */
.jd-rule-list,
.jd-tags,
.jd-timeline-list,
.jd-steps,
.jd-media-list,
.jd-stats__grid,
.jd-featured__list,
.jd-press-list,
.jd-link-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

/* 5  Links and focus ------------------------------------------------------
   Colour and hover come from theme.json (var(--jd-link) and var(--jd-link-hover)), whose
   selector excludes .wp-element-button. Links in running text are underlined 1px at a 3px
   offset (2.5.3); navigation, lists, buttons, cards, press rows and arrow calls to action
   set text-decoration: none in their own rules. */

:where(a:not(.wp-element-button)) {
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	text-decoration-color: var(--jd-link-line, currentColor);
	transition: color var(--jd-t), background-color var(--jd-t), border-color var(--jd-t);
}

:focus-visible {
	outline: 2px solid var(--jd-focus, var(--jd-blue));
	outline-offset: 2px;
}

/* 6  Buttons (brief 2.5.2 and 2.5.6) --------------------------------------
   Square, uppercase, 13 to 14px, 500, 0.14em. Minimum height 44px. Each variant declares
   face, label and border on the button element for rest, visited, hover, focus-visible and
   active, at specificity (0,2,0) or higher (0,3,0 for core button blocks). */

.jd-btn,
.wp-block-button .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 17px 26px;
	border: 1px solid transparent;
	font-family: var(--jd-sans);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.14em;
	line-height: 1.2;
	text-align: center;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	box-shadow: none;
	transition: color var(--jd-t), background-color var(--jd-t), border-color var(--jd-t);
}
.jd-btn-row--lg .wp-block-button .wp-block-button__link,
.jd-btn.jd-btn--lg {
	padding: 18px 30px;
	font-size: 14px;
}
.jd-btn.jd-btn--header {
	padding: 12px 22px;
	font-size: 13px;
}
.jd-btn.jd-btn--block {
	display: flex;
	width: 100%;
	padding: 19px;
	font-size: 14px;
	letter-spacing: 0.16em;
}

/* Primary: blue face, white label (light grounds). Hover: ink face. */
.jd-btn.jd-btn--primary,
.jd-btn.jd-btn--primary:visited,
.wp-block-button.is-style-jd-primary .wp-block-button__link,
.wp-block-button.is-style-jd-primary .wp-block-button__link:visited,
.jd-btn.jd-btn--primary:focus-visible,
.wp-block-button.is-style-jd-primary .wp-block-button__link:focus-visible {
	background-color: var(--jd-blue);
	color: var(--jd-white);
	border-color: var(--jd-blue);
}
.jd-btn.jd-btn--primary:hover,
.jd-btn.jd-btn--primary:active,
.wp-block-button.is-style-jd-primary .wp-block-button__link:hover,
.wp-block-button.is-style-jd-primary .wp-block-button__link:active {
	background-color: var(--jd-ink);
	color: var(--jd-white);
	border-color: var(--jd-ink);
}

/* Secondary outline: ink border and label (light grounds). Hover: ink face, white label. */
.jd-btn.jd-btn--outline,
.jd-btn.jd-btn--outline:visited,
.jd-btn.jd-btn--outline:focus-visible,
.wp-block-button.is-style-jd-outline .wp-block-button__link,
.wp-block-button.is-style-jd-outline .wp-block-button__link:visited,
.wp-block-button.is-style-jd-outline .wp-block-button__link:focus-visible {
	background-color: transparent;
	color: var(--jd-ink);
	border-color: var(--jd-ink);
}
.jd-btn.jd-btn--outline:hover,
.jd-btn.jd-btn--outline:active,
.wp-block-button.is-style-jd-outline .wp-block-button__link:hover,
.wp-block-button.is-style-jd-outline .wp-block-button__link:active {
	background-color: var(--jd-ink);
	color: var(--jd-white);
	border-color: var(--jd-ink);
}

/* Card button: ink face, white label (white cards). Hover: blue face. */
.jd-btn.jd-btn--card,
.jd-btn.jd-btn--card:visited,
.jd-btn.jd-btn--card:focus-visible,
.wp-block-button.is-style-jd-card .wp-block-button__link,
.wp-block-button.is-style-jd-card .wp-block-button__link:visited,
.wp-block-button.is-style-jd-card .wp-block-button__link:focus-visible {
	background-color: var(--jd-ink);
	color: var(--jd-white);
	border-color: var(--jd-ink);
	padding: 15px 20px;
}
.jd-btn.jd-btn--card:hover,
.jd-btn.jd-btn--card:active,
.wp-block-button.is-style-jd-card .wp-block-button__link:hover,
.wp-block-button.is-style-jd-card .wp-block-button__link:active {
	background-color: var(--jd-blue);
	color: var(--jd-white);
	border-color: var(--jd-blue);
}

/* Gold: gold face, ink label (ink and blue grounds only). Hover: white face, ink label. */
.jd-btn.jd-btn--gold,
.jd-btn.jd-btn--gold:visited,
.jd-btn.jd-btn--gold:focus-visible,
.wp-block-button.is-style-jd-gold .wp-block-button__link,
.wp-block-button.is-style-jd-gold .wp-block-button__link:visited,
.wp-block-button.is-style-jd-gold .wp-block-button__link:focus-visible {
	background-color: var(--jd-gold);
	color: var(--jd-ink);
	border-color: var(--jd-gold);
}
.jd-btn.jd-btn--gold:hover,
.jd-btn.jd-btn--gold:active,
.wp-block-button.is-style-jd-gold .wp-block-button__link:hover,
.wp-block-button.is-style-jd-gold .wp-block-button__link:active {
	background-color: var(--jd-white);
	color: var(--jd-ink);
	border-color: var(--jd-white);
}

/* Outline on blue: field-line-on-blue border, white label. Hover: white face, ink label. */
.jd-btn.jd-btn--outline-blue,
.jd-btn.jd-btn--outline-blue:visited,
.jd-btn.jd-btn--outline-blue:focus-visible,
.wp-block-button.is-style-jd-outline-blue .wp-block-button__link,
.wp-block-button.is-style-jd-outline-blue .wp-block-button__link:visited,
.wp-block-button.is-style-jd-outline-blue .wp-block-button__link:focus-visible {
	background-color: transparent;
	color: var(--jd-white);
	border-color: var(--jd-field-line-on-blue);
}
.jd-btn.jd-btn--outline-blue:hover,
.jd-btn.jd-btn--outline-blue:active,
.wp-block-button.is-style-jd-outline-blue .wp-block-button__link:hover,
.wp-block-button.is-style-jd-outline-blue .wp-block-button__link:active {
	background-color: var(--jd-white);
	color: var(--jd-ink);
	border-color: var(--jd-white);
}

/* Outline on ink: paper border and label. Hover: paper face, ink label. */
.jd-btn.jd-btn--outline-paper,
.jd-btn.jd-btn--outline-paper:visited,
.jd-btn.jd-btn--outline-paper:focus-visible,
.wp-block-button.is-style-jd-outline-paper .wp-block-button__link,
.wp-block-button.is-style-jd-outline-paper .wp-block-button__link:visited,
.wp-block-button.is-style-jd-outline-paper .wp-block-button__link:focus-visible {
	background-color: transparent;
	color: var(--jd-paper);
	border-color: var(--jd-paper);
}
.jd-btn.jd-btn--outline-paper:hover,
.jd-btn.jd-btn--outline-paper:active,
.wp-block-button.is-style-jd-outline-paper .wp-block-button__link:hover,
.wp-block-button.is-style-jd-outline-paper .wp-block-button__link:active {
	background-color: var(--jd-paper);
	color: var(--jd-ink);
	border-color: var(--jd-paper);
}

/* Text call to action: no face, ink label; hover gold-text (light grounds only). */
.wp-block-button.is-style-jd-text .wp-block-button__link,
.wp-block-button.is-style-jd-text .wp-block-button__link:visited,
.wp-block-button.is-style-jd-text .wp-block-button__link:focus-visible {
	background-color: transparent;
	color: var(--jd-ink);
	border-color: transparent;
	padding: 10px;
	min-height: 44px;
}
.wp-block-button.is-style-jd-text .wp-block-button__link:hover,
.wp-block-button.is-style-jd-text .wp-block-button__link:active {
	background-color: transparent;
	color: var(--jd-gold-text);
	border-color: transparent;
}

/* Chip on ink (Work with me hero): line-dark border, paper text. Hover: gold border,
   gold-light text. */
.wp-block-button.is-style-jd-chip-dark .wp-block-button__link,
.wp-block-button.is-style-jd-chip-dark .wp-block-button__link:visited,
.wp-block-button.is-style-jd-chip-dark .wp-block-button__link:focus-visible {
	background-color: transparent;
	color: var(--jd-paper);
	border-color: var(--jd-line-dark);
	padding: 12px 18px;
	font-size: 14px;
	font-weight: 400;
	letter-spacing: 0.08em;
	text-transform: none;
}
.wp-block-button.is-style-jd-chip-dark .wp-block-button__link:hover,
.wp-block-button.is-style-jd-chip-dark .wp-block-button__link:active {
	background-color: transparent;
	color: var(--jd-gold-light);
	border-color: var(--jd-gold);
}

/* Button rows. */
.wp-block-buttons.jd-btn-row {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
}
.wp-block-buttons.jd-btn-row--stack {
	flex-direction: column;
	gap: 10px;
}
.wp-block-buttons.jd-btn-row--stack .wp-block-button,
.wp-block-buttons.jd-btn-row--stack .wp-block-button__link {
	width: 100%;
}
.wp-block-buttons.jd-chip-row {
	gap: 10px;
	padding-top: 8px;
}

/* 7  Header and drawer (brief 2.1, 2.1.1) --------------------------------- */

.site-header {
	position: sticky;
	top: 0;
	z-index: 50;
}
.jd-header__bar {
	position: relative;
	background: rgba(246, 244, 239, 0.94);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	border-bottom: 1px solid var(--jd-line);
}
.jd-header__inner {
	max-width: var(--jd-container);
	margin-inline: auto;
	padding: 18px var(--jd-gutter);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}

.jd-wordmark,
.jd-wordmark:visited,
.jd-wordmark:hover {
	display: flex;
	flex-direction: column;
	gap: 2px;
	flex-shrink: 0;
	color: var(--jd-ink);
	text-decoration: none;
}
.jd-wordmark__name {
	font-size: 22px;
	font-weight: 500;
	letter-spacing: 0.18em;
	line-height: 1.2;
	text-transform: uppercase;
}
.jd-wordmark__creds {
	font-size: 11px;
	font-weight: 400;
	letter-spacing: 0.24em;
	line-height: 1.2;
	text-transform: uppercase;
	color: var(--jd-muted);
}

.jd-nav {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	justify-content: center;
}
.jd-nav__toggle {
	display: none;
}
.jd-nav__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	align-items: center;
	gap: clamp(14px, 2vw, 28px);
}
.jd-nav__list[hidden] {
	display: none !important;
}
.jd-nav__item--cta {
	display: none;
}
.jd-nav .jd-nav__link,
.jd-nav .jd-nav__link:visited {
	display: block;
	padding: 10px 0;
	border-bottom: 2px solid transparent;
	font-size: clamp(12px, 1.2vw, 14px);
	font-weight: 400;
	letter-spacing: 0.1em;
	line-height: 1.2;
	text-transform: uppercase;
	white-space: nowrap;
	color: var(--jd-ink);
	text-decoration: none;
}
.jd-nav .jd-nav__link:hover {
	color: var(--jd-gold-text);
}
.jd-nav .jd-nav__link[aria-current="page"] {
	color: var(--jd-blue);
	border-bottom-color: var(--jd-gold-text);
}
.jd-nav .jd-nav__link:focus-visible {
	outline: 2px solid var(--jd-blue);
	outline-offset: 4px;
}
.jd-header__cta {
	flex-shrink: 0;
	white-space: nowrap;
}

/* Below the navigation breakpoint (JD_NAV_BREAKPOINT, 928px, measured): the disclosure
   drawer. Until site.js has enhanced the navigation the list is not displayed and the toggle's
   44px height is held, so the header paints at its closed height and nothing moves when the
   script runs (Lighthouse mobile CLS was 0.22 on Home with the list in the flow, 24/09/2026).
   Without JavaScript the toggle stays hidden and the noscript style printed by
   jd_nav_noscript_style() (inc/assets.php) restores the plain stacked list under the bar, in
   the flow, so every link stays reachable. */
@media (max-width: 927.98px) {
	.jd-header__inner {
		flex-wrap: wrap;
	}
	.jd-wordmark {
		order: 1;
	}
	.jd-header__cta {
		order: 2;
		margin-left: auto;
	}
	.jd-nav {
		order: 3;
		flex: 0 0 auto;
	}
	.jd-nav:not(.is-enhanced) {
		min-height: 44px;
	}
	.jd-nav:not(.is-enhanced) .jd-nav__list {
		display: none;
	}
	.jd-nav.is-enhanced .jd-nav__toggle {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		min-width: 44px;
		min-height: 44px;
		padding: 0 16px;
		background: transparent;
		border: 1px solid var(--jd-ink);
		color: var(--jd-ink);
		font-family: var(--jd-sans);
		font-size: 13px;
		font-weight: 500;
		letter-spacing: 0.14em;
		line-height: 1.2;
		text-transform: uppercase;
		cursor: pointer;
		transition: color var(--jd-t), background-color var(--jd-t);
	}
	.jd-nav.is-enhanced .jd-nav__toggle:hover {
		background: var(--jd-ink);
		color: var(--jd-white);
	}
	.jd-nav.is-enhanced .jd-nav__toggle:focus-visible {
		outline: 2px solid var(--jd-blue);
		outline-offset: 2px;
	}
	.jd-nav.is-enhanced .jd-nav__list {
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding: 0 var(--jd-gutter);
		background: var(--jd-paper);
		border-top: 1px solid var(--jd-line);
		border-bottom: 1px solid var(--jd-line);
		max-height: calc(100vh - var(--jd-header-h));
		max-height: calc(100dvh - var(--jd-header-h));
		overflow-y: auto;
	}
	.jd-nav .jd-nav__item + .jd-nav__item {
		border-top: 1px solid var(--jd-line);
	}
	.jd-nav .jd-nav__item--cta + .jd-nav__item {
		border-top: 0;
	}
	.jd-nav .jd-nav__link,
	.jd-nav .jd-nav__link:visited {
		display: flex;
		align-items: center;
		min-height: 56px;
		padding: 0;
		border-bottom: 0;
		font-size: 16px;
	}
	.jd-nav .jd-nav__link[aria-current="page"] {
		color: var(--jd-blue);
		text-decoration: underline;
		text-decoration-color: var(--jd-gold-text);
		text-decoration-thickness: 2px;
		text-underline-offset: 8px;
	}
}

/* Below JD_BAR_CTA_BREAKPOINT (544px, measured) "Shop the books" leaves the bar and becomes
   the first item of the open panel. Exactly one of the two instances is displayed at any width. */
@media (max-width: 543.98px) {
	.jd-header__cta {
		display: none;
	}
	.jd-nav {
		margin-left: auto;
	}
	.jd-nav .jd-nav__item--cta {
		display: block;
		padding: 16px 0;
	}
	.jd-nav .jd-nav__item--cta .jd-btn {
		display: flex;
		width: 100%;
	}
	.jd-nav .jd-nav__item--cta + .jd-nav__item {
		border-top: 1px solid var(--jd-line);
	}
}

/* 8  Footer (brief 2.2) --------------------------------------------------- */

.site-footer {
	background-color: var(--jd-ink);
	color: var(--jd-on-ink-muted);
}
.jd-footer__inner {
	max-width: var(--jd-container);
	margin-inline: auto;
	padding: 72px var(--jd-gutter) 40px;
	display: flex;
	flex-direction: column;
	gap: 56px;
}
.jd-footer__cols {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 40px;
}
.jd-footer__col {
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-size: 15px;
	line-height: 1.55;
}
.jd-footer__brand {
	gap: 16px;
}
.site-footer .jd-footer__wordmark {
	font-size: 20px;
	font-weight: 500;
	letter-spacing: 0.18em;
	line-height: 1.2;
	text-transform: uppercase;
	color: var(--jd-paper);
}
.site-footer .jd-footer__company {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 14px;
	line-height: 1.4;
	color: var(--jd-on-ink-muted);
}
.jd-footer__logo {
	width: 48px;
	height: 48px;
	flex-shrink: 0;
}
.jd-footer__heading {
	margin: 0 0 6px;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.24em;
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--jd-ink-label);
}
.jd-footer__list,
.jd-footer__legal-links {
	list-style: none;
	margin: 0;
	padding: 0;
}
.jd-footer__list {
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.site-footer a,
.site-footer a:visited {
	display: inline-block;
	padding: 3px 0;
	color: var(--jd-on-ink);
	text-decoration: none;
}
.site-footer a:hover {
	color: var(--jd-gold-light);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}
.site-footer a:focus-visible {
	outline: 2px solid var(--jd-gold-light);
	outline-offset: 2px;
}
.site-footer .jd-footer__address {
	margin: 0;
	color: var(--jd-on-ink-muted);
}
.jd-footer__label {
	display: block;
	font-size: 12px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--jd-ink-label);
}
.jd-footer__legal {
	border-top: 1px solid var(--jd-line-dark-2);
	padding-top: 24px;
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 16px;
	font-size: 13px;
	line-height: 1.5;
	color: var(--jd-on-ink-muted);
}
.jd-footer__legal-links {
	display: flex;
	flex-wrap: wrap;
	gap: 0 20px;
}
.site-footer .jd-footer__legal p {
	color: var(--jd-on-ink-muted);
	padding: 3px 0;
}

/* The GCC line's link to the register (08-qa item 8) is a link in running text, so it stays
   inline and underlined (2.5.3) rather than taking the column links' block and hover-only
   underline: it is never told apart by colour alone. */
.site-footer .jd-footer__gcc a {
	display: inline;
	padding: 0;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}

/* 9  Heroes ---------------------------------------------------------------- */

.jd-section {
	width: 100%;
}

/* Hero, split with photo (Home). */
.jd-hero-split-photo {
	padding-block: clamp(48px, 7vw, 72px) clamp(48px, 7vw, 88px);
}
.jd-hero-split-photo__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 460px), 1fr));
	gap: 40px 64px;
	align-items: center;
}
.jd-hero-split-photo__text {
	display: flex;
	flex-direction: column;
	gap: 32px;
}
.jd-hero-split-photo__media {
	position: relative;
}
.jd-hero-split-photo__image img {
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	object-position: 30% 30%;
}
.jd-badge {
	position: absolute;
	left: -1px;
	bottom: -1px;
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px 22px 0 0;
	background: var(--jd-paper);
}
.jd-badge__logo {
	width: 64px;
	height: 64px;
}
.jd-badge__text {
	font-size: 13px;
	line-height: 1.45;
	letter-spacing: 0.06em;
	color: var(--jd-ink-2);
}
.jd-badge__text strong {
	font-weight: 600;
	color: var(--jd-ink);
}

/* Hero, split light (About; Speaking once a stage photograph exists). */
.jd-hero-split-light {
	padding-block: clamp(48px, 7vw, 80px) clamp(48px, 7vw, 96px);
}
.jd-hero-split-light__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 460px), 1fr));
	gap: 40px 64px;
	align-items: end;
}
.jd-hero-split-light--center .jd-hero-split-light__grid {
	align-items: center;
}
.jd-hero-split-light__text {
	display: flex;
	flex-direction: column;
	gap: 28px;
}
.jd-hero-split-light__text .jd-lead {
	max-width: 34em;
}

/* Hero, ink (Work with me). */
.jd-hero-ink {
	padding-block: clamp(48px, 7vw, 104px);
}
.jd-hero-ink__inner {
	display: flex;
	flex-direction: column;
	gap: 28px;
}
.jd-hero-ink__title {
	max-width: 12em;
}
.jd-hero-ink__lead {
	max-width: 36em;
}

/* Hero, blue with image (Books). */
.jd-hero-blue-image {
	padding-block: clamp(48px, 7vw, 96px);
}
.jd-hero-blue-image__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr));
	gap: 40px 56px;
	align-items: center;
}
.jd-hero-blue-image__text {
	display: flex;
	flex-direction: column;
	gap: 24px;
}
.jd-hero-blue-image__text .jd-lead {
	max-width: 30em;
}
.jd-hero-blue-image__image img {
	width: 100%;
}

/* Hero, text (Press; Women in chiropractic; Speaking interim; legal; 404). */
.jd-hero-text {
	padding-block: clamp(48px, 7vw, 88px) clamp(40px, 6vw, 64px);
}
.jd-hero-text__inner {
	display: flex;
	flex-direction: column;
	gap: 28px;
}
.jd-hero-text__title {
	max-width: 11em;
}
.jd-last-updated {
	font-size: 13px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--jd-muted);
}

/* Hero, contact. */
.jd-hero-contact {
	padding-block: clamp(48px, 7vw, 88px) clamp(48px, 7vw, 104px);
}
.jd-hero-contact__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr));
	gap: 48px 72px;
}
.jd-hero-contact__text {
	display: flex;
	flex-direction: column;
	gap: 28px;
}
.jd-hero-contact__lead {
	max-width: 30em;
}
.jd-hero-contact__routing {
	font-size: 17px;
	line-height: 1.6;
}
.jd-contact-list {
	margin-top: 12px;
	border-top: 1px solid var(--jd-ink);
}
.jd-contact-list__row {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 20px 0;
	border-bottom: 1px solid var(--jd-line);
}
.jd-contact-list dt {
	font-size: 12px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--jd-muted);
}
.jd-contact-list dd {
	margin: 0;
}
.jd-contact-list__email a {
	font-size: 20px;
	text-decoration: none;
}
.jd-contact-list__office {
	font-size: 18px;
	line-height: 1.5;
}
.jd-contact-list__social {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0 20px;
	font-size: 17px;
}
.jd-contact-list__social a {
	display: inline-block;
	padding: 2px 0;
	text-decoration: none;
}
.jd-form-card {
	align-self: start;
	border: 1px solid var(--jd-line);
	padding: clamp(24px, 4vw, 40px);
}

/* 10  Sections, by pattern ------------------------------------------------- */

/* Announcement bar. */
.jd-announcement {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: baseline;
	gap: 4px 16px;
	padding: 10px 24px;
	font-size: 14px;
	letter-spacing: 0.04em;
	line-height: 1.5;
	text-align: center;
}
.jd-announcement .jd-announcement__text {
	color: var(--jd-paper);
}
.jd-announcement__link a,
.jd-announcement__link a:visited {
	display: inline-block;
	padding: 3px 0;
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--jd-gold-light);
	text-decoration: none;
}
.jd-announcement__link a:hover {
	color: var(--jd-gold-light);
	text-decoration: underline;
}

/* Stats strip: dividers only between cells, which stay right when cells wrap. */
.jd-stats {
	border-top: 1px solid var(--jd-line);
	border-bottom: 1px solid var(--jd-line);
}
.jd-stats__inner {
	overflow: hidden;
}
.jd-stats__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	margin-right: -1px;
	margin-bottom: -1px;
}
.jd-stats__grid > li {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 36px 32px;
	border-right: 1px solid var(--jd-line);
	border-bottom: 1px solid var(--jd-line);
}
.jd-stats__num {
	font-size: 44px;
	font-weight: 300;
	line-height: 1;
	color: var(--jd-blue);
}
.jd-stats__label {
	font-size: 14px;
	letter-spacing: 0.08em;
	line-height: 1.5;
	color: var(--jd-ink-2);
}

/* Featured in. */
.jd-featured__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 24px 40px;
	padding-block: 44px;
}
.jd-featured .jd-featured__label {
	font-size: 12px;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--jd-muted);
}
.jd-featured__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 20px 44px;
}
.jd-featured .jd-pub,
.jd-featured .jd-pub:visited {
	display: inline-block;
	padding: 4px 0;
	color: var(--jd-ink-3);
	text-decoration: none;
	line-height: 1.2;
}
.jd-featured .jd-pub:hover {
	color: var(--jd-gold-text);
}
.jd-pub--success {
	font-size: 22px;
	font-weight: 600;
	letter-spacing: 0.16em;
}
.jd-pub--global-woman {
	font-family: var(--jd-serif);
	font-size: 24px;
	font-style: italic;
}
.jd-pub--absolutely-essex {
	font-family: var(--jd-serif);
	font-size: 22px;
}
.jd-pub--uca {
	font-size: 17px;
	letter-spacing: 0.06em;
}
.jd-featured__more a {
	font-size: 13px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-decoration: none;
}
.jd-featured--press {
	border-top: 1px solid var(--jd-line);
	border-bottom: 1px solid var(--jd-line);
}
.jd-featured--press .jd-featured__inner {
	padding-block: 40px;
	justify-content: flex-start;
	gap: 24px 48px;
}

/* Statement, ink. */
.jd-statement {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-statement__head {
	display: flex;
	flex-direction: column;
	gap: 28px;
}
.jd-statement__body {
	display: flex;
	flex-direction: column;
	gap: 24px;
}
.jd-statement__text {
	font-size: 19px;
	line-height: 1.65;
}
.jd-statement__quote {
	font-size: 26px;
	line-height: 1.4;
	border-top: 1px solid var(--jd-line-dark);
	padding-top: 24px;
}

/* Story, ink. */
.jd-story {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-story__inner {
	display: flex;
	flex-direction: column;
	gap: 28px;
}
.jd-story__quote {
	font-size: clamp(28px, 3vw, 38px);
	line-height: 1.3;
}
.jd-story__text {
	font-size: 20px;
	line-height: 1.7;
}

/* Pathway cards. */
.jd-pathway-cards {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-pathway-cards__inner {
	display: flex;
	flex-direction: column;
	gap: 56px;
}
.jd-pathway-cards__head {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: flex-end;
	gap: 24px 32px;
}
.jd-pathway-cards__titles {
	display: flex;
	flex-direction: column;
	gap: 20px;
	max-width: 720px;
}
.jd-pathway-cards__intro {
	font-size: 18px;
	line-height: 1.6;
	max-width: 28em;
}
.jd-pathway-cards__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
	gap: 24px;
}
.jd-pathway-card {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--jd-line);
	padding: 0 32px 36px;
	gap: 20px;
}
.jd-pathway-card::before {
	content: "";
	display: block;
	height: 8px;
	margin: 0 -32px 16px;
	background: var(--jd-bar, var(--jd-gold));
}
.jd-pathway-card--gold {
	--jd-bar: var(--jd-gold);
}
.jd-pathway-card--blue {
	--jd-bar: var(--jd-blue);
}
.jd-pathway-card--ink {
	--jd-bar: var(--jd-ink);
}
.jd-pathway-card__top {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 12px;
}
.jd-pathway-card .jd-pathway-card__step {
	font-size: 13px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--jd-muted);
}
.jd-pathway-card .jd-pathway-card__persona {
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--jd-gold-text);
	text-align: right;
}
.jd-pathway-card__title {
	font-size: 32px;
	font-weight: 400;
	line-height: 1.1;
	text-transform: uppercase;
}
.jd-pathway-card__title a,
.jd-pathway-card__title a:visited {
	color: var(--jd-ink);
	text-decoration: none;
}
.jd-pathway-card__title a:hover {
	color: var(--jd-gold-text);
}
.jd-pathway-card__before {
	font-size: 17px;
	line-height: 1.6;
}
.jd-pathway-card__aim-block {
	display: flex;
	flex-direction: column;
	gap: 8px;
	border-top: 1px solid var(--jd-line);
	padding-top: 18px;
}
.jd-pathway-card .jd-pathway-card__aim-label {
	font-size: 12px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--jd-muted);
}
.jd-pathway-card .jd-pathway-card__aim {
	font-family: var(--jd-serif);
	font-size: 19px;
	line-height: 1.45;
	color: var(--jd-ink);
}
.jd-pathway-card__foot {
	margin-top: auto;
	padding-top: 12px;
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.jd-textcta-ruled .wp-block-button .wp-block-button__link {
	border-bottom: 1px solid var(--jd-line);
	font-size: 13px;
	letter-spacing: 0.14em;
}

/* Books band. */
.jd-books-band {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-books-band__inner {
	display: flex;
	flex-direction: column;
	gap: 64px;
}
.jd-books-band__top {
	align-items: center;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr));
}
.jd-books-band__text {
	display: flex;
	flex-direction: column;
	gap: 24px;
}
.jd-books-band__lead {
	font-size: 19px;
	line-height: 1.6;
	max-width: 30em;
}
.jd-books-band__image img {
	width: 100%;
}
.jd-books-band__grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
}
.jd-books-band__cell {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding: 36px 32px;
}
.jd-books-band .jd-books-band__meta {
	font-size: 12px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--jd-gold-light);
}
.jd-books-band__title {
	font-size: 28px;
	font-weight: 400;
	line-height: 1.1;
	text-transform: uppercase;
}
.jd-books-band__title a,
.jd-books-band__title a:visited {
	color: var(--jd-paper);
	text-decoration: none;
}
.jd-books-band__title a:hover {
	color: var(--jd-gold-light);
}
.jd-books-band__desc {
	font-size: 16px;
	line-height: 1.6;
}
.jd-books-band .jd-books-band__isbn {
	font-size: 13px;
	letter-spacing: 0.06em;
	color: var(--jd-on-blue-muted);
}
.jd-books-band__buy {
	margin-top: auto;
	padding-top: 8px;
}
.wp-block-buttons.jd-books-band__buy {
	gap: 10px;
}
.jd-books-band__buy .wp-block-button .wp-block-button__link {
	padding: 14px 20px;
}
.jd-books-band__next {
	font-size: 15px;
}
.jd-books-band .jd-books-band__closing {
	font-size: 15px;
	color: var(--jd-on-blue-muted);
}

/* 5VT columns. */
.jd-five-v {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-five-v__inner {
	display: flex;
	flex-direction: column;
	gap: 56px;
}
.jd-five-v__head {
	display: flex;
	flex-direction: column;
	gap: 20px;
	max-width: 760px;
}
.jd-five-v__intro {
	font-size: 18px;
	line-height: 1.6;
}
.jd-five-v__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr));
	border-top: 2px solid var(--jd-ink);
}
.jd-five-v__col {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 28px 24px 28px 0;
	border-bottom: 1px solid var(--jd-rule);
}
.jd-five-v .jd-five-v__num {
	font-size: 14px;
	font-weight: 500;
	letter-spacing: 0.1em;
	color: var(--jd-gold-text);
}
.jd-five-v__name {
	font-size: 28px;
	font-weight: 500;
	letter-spacing: 0.12em;
	line-height: 1.1;
	text-transform: uppercase;
	color: var(--jd-blue);
}
.jd-five-v__desc {
	font-size: 16px;
	line-height: 1.55;
}
.jd-five-v--plain {
	padding-block: clamp(64px, 9vw, 104px);
}
.jd-five-v--plain .jd-five-v__inner {
	gap: 48px;
}
.jd-five-v--plain .jd-five-v__grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr));
}
.jd-five-v--plain .jd-five-v__col {
	gap: 10px;
	padding: 24px 24px 24px 0;
}
.jd-five-v--plain .jd-five-v__name {
	font-size: 24px;
}

/* Timelines (story-timeline and timeline). */
.jd-story-timeline,
.jd-timeline {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-story-timeline__text,
.jd-timeline__text {
	display: flex;
	flex-direction: column;
	gap: 24px;
}
.jd-timeline-list {
	display: flex;
	flex-direction: column;
}
.jd-timeline-list--ruled {
	border-top: 1px solid var(--jd-ink);
}
.jd-timeline-list > li {
	display: grid;
	grid-template-columns: 88px minmax(0, 1fr);
	gap: 20px;
	padding: 18px 0;
	border-bottom: 1px solid var(--jd-line-2);
}
.jd-timeline-list--96 > li {
	grid-template-columns: 96px minmax(0, 1fr);
}
.jd-timeline-list__year {
	font-size: 18px;
	font-weight: 500;
	line-height: 1.4;
	color: var(--jd-blue);
}
.jd-timeline-list__event {
	font-size: 17px;
	line-height: 1.5;
	color: var(--jd-ink);
}

/* Chapters grid. */
.jd-chapters {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-chapters__inner {
	display: flex;
	flex-direction: column;
	gap: 48px;
}
.jd-chapters__head {
	display: flex;
	flex-direction: column;
	gap: 20px;
	max-width: 760px;
}
.jd-chapters__grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
}
.jd-chapters__cell {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 32px;
}
.jd-chapters__title {
	font-size: 22px;
	font-weight: 500;
	letter-spacing: 0.06em;
	line-height: 1.2;
	text-transform: uppercase;
	color: var(--jd-blue);
}
.jd-chapters__text {
	font-size: 17px;
	line-height: 1.6;
}

/* Credentials (definition list). */
.jd-credentials {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-credentials__text {
	display: flex;
	flex-direction: column;
	gap: 24px;
}
.jd-dl {
	border-top: 1px solid var(--jd-ink);
}
.jd-dl__row {
	display: grid;
	grid-template-columns: minmax(0, 180px) minmax(0, 1fr);
	gap: 24px;
	padding: 18px 0;
	border-bottom: 1px solid var(--jd-rule);
}
.jd-dl dt {
	padding-top: 3px;
	font-size: 13px;
	letter-spacing: 0.16em;
	line-height: 1.4;
	text-transform: uppercase;
	color: var(--jd-meta);
}
.jd-dl dd {
	font-size: 17px;
	line-height: 1.55;
	color: var(--jd-heading);
}

/* Co-founder band. */
.jd-cofounder {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-cofounder__head {
	display: flex;
	flex-direction: column;
	gap: 24px;
}

/* Speaking teaser. */
.jd-speaking-teaser {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-speaking-teaser__grid {
	align-items: start;
}
.jd-speaking-teaser__text {
	display: flex;
	flex-direction: column;
	gap: 24px;
}
.jd-speaking-teaser__text .jd-btn-row {
	padding-top: 8px;
}
.jd-speaking-teaser__stages {
	display: flex;
	flex-direction: column;
	gap: 18px;
}
.jd-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.jd-tags > li {
	border: 1px solid var(--jd-line-2);
	padding: 8px 14px;
	font-size: 14px;
	line-height: 1.4;
	color: var(--jd-ink);
}
.jd-rule-list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	column-gap: 24px;
	border-top: 1px solid var(--jd-ink);
}
.jd-rule-list > li {
	padding: 14px 0;
	border-bottom: 1px solid var(--jd-rule);
	font-size: 17px;
	line-height: 1.4;
	color: var(--jd-heading);
}

/* Talks grid, ink. */
.jd-talks {
	padding-block: clamp(64px, 9vw, 104px);
}
.jd-talks__inner {
	display: flex;
	flex-direction: column;
	gap: 48px;
}
.jd-talks__head {
	display: flex;
	flex-direction: column;
	gap: 20px;
	max-width: 760px;
}
.jd-talks__grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
}
.jd-talks__cell {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 36px 32px;
}
.jd-talks .jd-talks__num {
	font-size: 13px;
	letter-spacing: 0.14em;
	color: var(--jd-gold-light);
}
.jd-talks__title {
	font-size: 26px;
	font-weight: 400;
	line-height: 1.15;
	text-transform: uppercase;
	color: var(--jd-paper);
}
.jd-talks__text {
	font-size: 17px;
	line-height: 1.6;
}

/* Stages list. */
.jd-stages {
	padding-block: clamp(64px, 9vw, 104px);
}
.jd-stages__text {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

/* Media list. */
.jd-media {
	padding-block: clamp(64px, 9vw, 104px);
}
.jd-media__text {
	display: flex;
	flex-direction: column;
	gap: 20px;
}
.jd-media-list {
	border-top: 1px solid var(--jd-ink);
}
.jd-media-list > li {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 22px 0;
	border-bottom: 1px solid var(--jd-line-2);
}
.jd-media-list__title {
	font-size: 19px;
	font-weight: 500;
	line-height: 1.35;
	color: var(--jd-ink);
}
.jd-media-list__meta {
	font-size: 15px;
	line-height: 1.5;
	color: var(--jd-muted);
}

/* Endorsements, ink (held). */
.jd-endorsements {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-endorsements__inner {
	display: flex;
	flex-direction: column;
	gap: 56px;
}
.jd-endorsements__head {
	align-items: end;
}
.jd-endorsements__titles {
	display: flex;
	flex-direction: column;
	gap: 20px;
}
.jd-endorsements__note {
	font-family: var(--jd-serif);
	font-size: 24px;
	line-height: 1.45;
}
.jd-endorsements__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
	gap: 24px;
}
.jd-quote-card {
	display: flex;
	flex-direction: column;
	gap: 24px;
	padding: 32px;
	border: 1px solid var(--jd-line-dark);
}
.jd-quote-card__quote p {
	font-family: var(--jd-serif);
	font-size: 21px;
	line-height: 1.45;
	color: var(--jd-on-ink);
}
.jd-quote-card__cite {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin-top: auto;
}
.jd-quote-card__name {
	font-size: 17px;
	font-weight: 500;
	color: var(--jd-paper);
}
.jd-quote-card__role {
	font-size: 14px;
	color: var(--jd-on-ink-muted);
}

/* FAQ: native details and summary sharing one name (2.5.6). */
.jd-faq {
	padding-block: clamp(64px, 9vw, 112px);
}
.jd-faq__inner {
	display: flex;
	flex-direction: column;
	gap: 40px;
}
.jd-faq__head {
	display: flex;
	flex-direction: column;
	gap: 20px;
}
.jd-faq__list {
	border-top: 1px solid var(--jd-ink);
}
.jd-faq__item {
	border-bottom: 1px solid var(--jd-line-2);
}
.jd-faq__item > summary {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 24px;
	min-height: 44px;
	padding: 24px 0;
	font-size: 20px;
	font-weight: 500;
	line-height: 1.35;
	color: var(--jd-ink);
	cursor: pointer;
	list-style: none;
}
.jd-faq__item > summary::-webkit-details-marker {
	display: none;
}
.jd-faq__item > summary::after {
	content: "+";
	content: "+" / "";
	flex-shrink: 0;
	font-size: 26px;
	font-weight: 300;
	line-height: 1;
	color: var(--jd-blue);
}
.jd-faq__item[open] > summary::after {
	content: "\2212";
	content: "\2212" / "";
}
.jd-faq__item > summary:hover {
	color: var(--jd-gold-text);
}
.jd-faq__answer {
	max-width: 44em;
	padding: 0 0 28px;
	font-size: 17px;
	line-height: 1.65;
}
.jd-faq__more {
	font-size: 17px;
}

/* Newsletter band. */
.jd-newsletter {
	padding-block: clamp(64px, 9vw, 104px);
}
.jd-newsletter__grid {
	align-items: center;
}
.jd-newsletter__text {
	display: flex;
	flex-direction: column;
	gap: 20px;
}
.jd-newsletter__title {
	line-height: 1.02;
}
.jd-newsletter__lead {
	font-size: 19px;
	line-height: 1.6;
	max-width: 30em;
}
.jd-newsletter__form {
	display: flex;
	flex-direction: column;
	gap: 14px;
}
.jd-newsletter__closing {
	font-size: 15px;
}

/* Pathway section (Work with me). */
.jd-pathway {
	padding-block: clamp(64px, 9vw, 104px);
	border-bottom: 1px solid var(--jd-line);
}
.jd-pathway__grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr));
}
.jd-pathway__main {
	display: flex;
	flex-direction: column;
	gap: 24px;
}
.jd-pathway__head {
	display: flex;
	align-items: center;
	gap: 16px;
}
.jd-pathway .jd-pathway__step {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	flex-shrink: 0;
	border: 1px solid var(--jd-gold);
	font-size: 15px;
	font-weight: 500;
	color: var(--jd-gold-text);
}
.jd-pathway .jd-pathway__persona {
	font-size: 13px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--jd-muted);
}
.jd-pathway__title {
	line-height: 1.04;
}
.jd-pathway__intro {
	font-size: 19px;
	line-height: 1.6;
}
.jd-pathway__pair {
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	margin-top: 8px;
}
.jd-pathway__cell {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 24px;
}
.jd-pathway .jd-pathway__label {
	font-size: 12px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--jd-muted);
}
.jd-pathway .jd-pathway__label--aim {
	color: var(--jd-gold-text);
}
.jd-pathway__before {
	font-size: 16px;
	line-height: 1.55;
}
.jd-pathway .jd-pathway__aim {
	font-family: var(--jd-serif);
	font-size: 18px;
	line-height: 1.45;
	color: var(--jd-ink);
}
.jd-pathway__path {
	align-self: start;
	display: flex;
	flex-direction: column;
	border-top: 2px solid var(--jd-ink);
}
.jd-pathway__path > .jd-list-label {
	padding: 18px 0 6px;
}
.jd-steps > li {
	display: grid;
	grid-template-columns: 40px minmax(0, 1fr) auto;
	gap: 16px;
	align-items: center;
	padding: 20px 0;
	border-bottom: 1px solid var(--jd-line);
}
.jd-steps__n {
	font-size: 14px;
	font-weight: 500;
	color: var(--jd-gold-text);
}
.jd-steps__body {
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.jd-steps__name {
	font-size: 19px;
	font-weight: 500;
	line-height: 1.3;
	color: var(--jd-ink);
}
.jd-steps__note {
	font-size: 15px;
	line-height: 1.4;
	color: var(--jd-muted);
}
.jd-steps__link,
.jd-steps__link:visited {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	font-size: 13px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	white-space: nowrap;
	color: var(--jd-blue);
	text-decoration: none;
}
.jd-pathway__path .jd-btn-row {
	padding-top: 28px;
	gap: 12px;
}

/* Programme grid. */
.jd-programmes {
	padding-block: clamp(64px, 9vw, 104px);
}
.jd-programmes__inner {
	display: flex;
	flex-direction: column;
	gap: 40px;
}
.jd-programmes__head {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: flex-end;
	gap: 24px;
}
.jd-programmes__titles {
	display: flex;
	flex-direction: column;
	gap: 20px;
}
.jd-programmes .jd-programmes__note {
	font-size: 16px;
	line-height: 1.55;
	color: var(--jd-muted);
	max-width: 26em;
}
.jd-programmes__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
	gap: 20px;
}
.jd-programme-card {
	display: flex;
	flex-direction: column;
	gap: 12px;
	min-height: 220px;
	padding: 28px;
	border: 1px solid var(--jd-line);
}
.jd-programme-card .jd-programme-card__tag {
	font-size: 12px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--jd-gold-text);
}
.jd-programme-card__name {
	font-size: 22px;
	font-weight: 500;
	line-height: 1.2;
	color: var(--jd-ink);
}
.jd-programme-card .jd-programme-card__note {
	font-size: 15px;
	line-height: 1.55;
	color: var(--jd-muted);
}
.jd-programme-card__price:empty {
	display: none;
}
.jd-programme-card__link {
	margin-top: auto;
}
.jd-programme-card__link a,
.jd-programme-card__link a:visited {
	display: inline-flex;
	min-height: 24px;
	align-items: center;
	font-size: 13px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--jd-blue);
	text-decoration: none;
}

/* Call to action bands. */
.jd-cta-band--blue {
	padding-block: clamp(64px, 9vw, 96px);
}
.jd-cta-band--blue.jd-cta-band--tight {
	padding-block: clamp(64px, 9vw, 88px);
}
.jd-cta-band--light {
	padding-block: clamp(64px, 9vw, 104px);
}
.jd-cta-band__inner {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: center;
	gap: 40px;
}
.jd-cta-band__text {
	display: flex;
	flex-direction: column;
	gap: 16px;
	max-width: 36em;
}
.jd-cta-band__title {
	max-width: 14em;
}
.jd-cta-band__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px 24px;
}
.jd-cta-band__link {
	font-size: 17px;
}

/* Book detail. */
.jd-book {
	padding-block: clamp(64px, 9vw, 96px);
	border-bottom: 1px solid var(--jd-line);
}
.jd-book__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 56px;
}
.jd-book__cover {
	flex: 0 0 min(100%, 340px);
}
.jd-book__cover img {
	width: 100%;
	aspect-ratio: 2 / 3;
	object-fit: cover;
	box-shadow: 0 20px 40px rgba(0, 0, 0, 0.18);
}
.jd-book__details {
	flex: 1 1 360px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 22px;
}
.jd-book .jd-book__stage {
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--jd-gold-text);
}
.jd-book__subtitle {
	font-family: var(--jd-serif);
	font-size: 22px;
	line-height: 1.45;
}
.jd-book__desc {
	font-size: 18px;
	line-height: 1.65;
	max-width: 40em;
}
.jd-book__facts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
	column-gap: 24px;
	border-top: 1px solid var(--jd-ink);
}
.jd-book__fact {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 14px 0;
}
.jd-book__fact dt {
	font-size: 12px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--jd-muted);
}
.jd-book__fact dd {
	font-size: 15px;
	line-height: 1.45;
	color: var(--jd-ink);
}
.wp-block-buttons.jd-btn-row.jd-book__buttons,
.jd-book__details .jd-btn-row {
	gap: 12px;
}
.jd-book__next,
.jd-book__author {
	font-size: 17px;
}

/* Book-cover mocks (interim; aria-hidden; brief 2.8). */
.jd-cover-mock {
	aspect-ratio: 2 / 3;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding: 32px 28px;
	outline: 1px solid var(--jd-gold);
	outline-offset: -12px;
	box-shadow: 0 20px 40px rgba(0, 0, 0, 0.18);
	text-align: center;
	text-transform: uppercase;
}
.jd-cover-mock__edition {
	font-size: 11px;
	letter-spacing: 0.2em;
}
.jd-cover-mock__title {
	font-size: 34px;
	line-height: 1.1;
}
.jd-cover-mock__byline {
	font-size: 11px;
	letter-spacing: 0.16em;
}
.jd-cover-mock--paper {
	background: var(--jd-paper);
	color: var(--jd-blue);
}
.jd-cover-mock--blue {
	background: var(--jd-blue);
	color: var(--jd-paper);
}
.jd-cover-mock--ink {
	background: var(--jd-ink);
	color: var(--jd-paper);
}
.jd-cover-mock--blue .jd-cover-mock__title,
.jd-cover-mock--ink .jd-cover-mock__title {
	color: var(--jd-gold);
}

/* More books. */
.jd-more-books {
	padding-block: clamp(64px, 9vw, 96px);
}
.jd-more-books__inner {
	display: flex;
	flex-direction: column;
	gap: 40px;
}
.jd-more-books__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 400px), 1fr));
	gap: 24px;
}
.jd-more-books__card {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 36px;
	border: 1px solid var(--jd-line);
}
.jd-more-books__title {
	font-size: 28px;
	font-weight: 400;
	line-height: 1.1;
	text-transform: uppercase;
}
.jd-more-books__subtitle {
	font-family: var(--jd-serif);
	font-size: 19px;
	line-height: 1.45;
}
.jd-more-books .jd-more-books__meta {
	font-size: 14px;
	color: var(--jd-muted);
}
.jd-more-books__links {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 24px;
}
.jd-more-books__links a,
.jd-more-books__links a:visited {
	display: inline-flex;
	min-height: 24px;
	align-items: center;
	font-size: 13px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-decoration: none;
}
.jd-more-books__aside {
	font-size: 17px;
}

/* Press list. */
.jd-press {
	padding-block: clamp(64px, 9vw, 88px);
}
.jd-press__inner {
	display: flex;
	flex-direction: column;
	gap: 32px;
}
.jd-press__filters:not([hidden]) {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.jd-press__filters button {
	min-height: 44px;
	padding: 10px 18px;
	border: 1px solid var(--jd-ink);
	background: transparent;
	color: var(--jd-ink);
	font-family: var(--jd-sans);
	font-size: 14px;
	letter-spacing: 0.08em;
	cursor: pointer;
	transition: color var(--jd-t), background-color var(--jd-t);
}
.jd-press__filters button:hover {
	color: var(--jd-gold-text);
}
.jd-press__filters button[aria-pressed="true"] {
	background: var(--jd-ink);
	color: var(--jd-paper);
}
.jd-press-list {
	border-top: 2px solid var(--jd-ink);
}
.jd-press-row {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 100px) minmax(0, 220px) minmax(0, 1fr) auto;
	gap: 24px;
	align-items: baseline;
	padding: 26px 0;
	border-bottom: 1px solid var(--jd-line);
	transition: background-color var(--jd-t);
}
.jd-press-row:hover {
	background: var(--jd-paper-2);
}
.jd-press-row[hidden] {
	display: none;
}
.jd-press-row__date {
	font-size: 17px;
	font-weight: 500;
	color: var(--jd-blue);
}
.jd-press-row__pub {
	font-size: 13px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--jd-muted);
}
.jd-press-row__headline,
.jd-press-row__headline:visited {
	font-size: 19px;
	line-height: 1.4;
	color: var(--jd-ink);
	text-decoration: none;
}
.jd-press-row__headline::after {
	content: "";
	position: absolute;
	inset: 0;
}
.jd-press-row__headline:hover {
	color: var(--jd-ink);
}
.jd-press-row__read {
	font-size: 13px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--jd-gold-text);
	white-space: nowrap;
}
.jd-press-row:focus-within {
	outline: 2px solid var(--jd-blue);
	outline-offset: 2px;
}
.jd-press-row__headline:focus-visible {
	outline: none;
}

/* Media kit band. */
.jd-media-kit {
	padding-block: clamp(64px, 9vw, 96px);
}
.jd-media-kit__grid {
	align-items: center;
}
.jd-media-kit__text {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

/* Speaking enquiry form section. */
.jd-speaking-form {
	padding-block: clamp(64px, 9vw, 104px);
}
.jd-speaking-form__text {
	display: flex;
	flex-direction: column;
	gap: 20px;
}
.jd-speaking-form__title {
	line-height: 1.04;
}
.jd-speaking-form__text .jd-body-18 {
	max-width: 28em;
}

/* Prose (legal pages). */
.jd-prose-section {
	padding-block: 0 clamp(64px, 9vw, 112px);
}
.jd-prose {
	font-size: 17px;
	line-height: 1.65;
	color: var(--jd-ink-2);
}
.jd-prose > * + *,
.jd-prose .wp-block-post-content > * + * {
	margin-top: 1em;
}
.jd-prose h2 {
	margin-top: 2em;
	font-size: clamp(32px, 3.6vw, 48px);
	font-weight: 400;
	line-height: 1.08;
	text-transform: uppercase;
	color: var(--jd-ink);
}
.jd-prose h3 {
	margin-top: 1.6em;
	font-size: 22px;
	font-weight: 500;
	letter-spacing: 0.06em;
	line-height: 1.2;
	text-transform: uppercase;
	color: var(--jd-ink);
}
.jd-prose ul,
.jd-prose ol {
	padding-left: 1.25em;
}
.jd-prose li + li {
	margin-top: 0.4em;
}
.jd-prose table {
	width: 100%;
	border-collapse: collapse;
	border-top: 1px solid var(--jd-ink);
	font-size: 15px;
}
.jd-prose th,
.jd-prose td {
	padding: 12px 12px 12px 0;
	border-bottom: 1px solid var(--jd-line);
	text-align: left;
	vertical-align: top;
}
.jd-prose .wp-block-table {
	overflow-x: auto;
}

/* Search results and the 404 links. */
.jd-results-section {
	padding-block: 0 clamp(64px, 9vw, 112px);
}
.jd-results .wp-block-post {
	padding: 24px 0;
	border-bottom: 1px solid var(--jd-line);
}
.jd-results__title {
	font-size: 22px;
	font-weight: 500;
	line-height: 1.3;
}
.jd-link-list {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 28px;
}
.jd-link-list a {
	display: inline-flex;
	min-height: 44px;
	align-items: center;
	font-size: 14px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

/* 11  Forms (brief 2.3) ---------------------------------------------------- */

.jd-form {
	display: flex;
	flex-direction: column;
	gap: 20px;
}
.jd-form__fields {
	display: flex;
	flex-direction: column;
	gap: 20px;
}
.jd-form--newsletter,
.jd-form--newsletter .jd-form__fields {
	gap: 12px;
}
.jd-form--speaking .jd-form__fields {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 12px;
}
.jd-form--speaking .jd-field--full {
	grid-column: 1 / -1;
}
.jd-field {
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.jd-field__label {
	font-size: 15px;
	line-height: 1.4;
	color: var(--jd-heading);
}
.jd-ground-blue .jd-field__label {
	color: var(--jd-on-blue);
}
.jd-field__help,
.jd-form__note {
	font-size: 14px;
	line-height: 1.5;
	color: var(--jd-meta);
}
.jd-field__input {
	width: 100%;
	min-height: 44px;
	padding: 16px 18px;
	border: 1px solid var(--jd-field);
	background: var(--jd-paper);
	color: var(--jd-ink);
	font-family: var(--jd-sans);
	font-size: 17px;
	line-height: 1.4;
}
textarea.jd-field__input {
	resize: vertical;
}
.jd-field__input::placeholder {
	color: var(--jd-muted);
	opacity: 1;
}
.jd-ground-blue .jd-field__input {
	padding: 18px 20px;
	background: transparent;
	color: var(--jd-white);
	border-color: var(--jd-field-line-on-blue);
}
.jd-ground-blue .jd-field__select option {
	color: var(--jd-ink);
	background: var(--jd-white);
}
.jd-field__input:focus-visible {
	outline: 2px solid var(--jd-focus);
	outline-offset: 2px;
}
.jd-field__input[aria-invalid="true"] {
	border: 2px solid var(--jd-error);
}
.jd-field__error {
	font-size: 15px;
	font-weight: 500;
	line-height: 1.45;
	color: var(--jd-error);
}
.jd-field--check {
	flex-direction: row;
	align-items: flex-start;
	gap: 12px;
}
.jd-check {
	width: 24px;
	height: 24px;
	margin: 0;
	flex-shrink: 0;
	accent-color: var(--jd-blue);
}
.jd-field__label--check {
	padding-top: 2px;
}

/* Topic chips: native radio inputs styled as chips, with visible focus. */
.jd-form__topics {
	border: 0;
	padding: 0;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.jd-form__legend {
	padding: 0;
	margin-bottom: 12px;
	font-size: 12px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--jd-muted);
}
.jd-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.jd-chip {
	position: relative;
	display: inline-flex;
}
.jd-chip__input {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	margin: 0;
	opacity: 0;
	cursor: pointer;
}
.jd-chip__label {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 10px 16px;
	border: 1px solid var(--jd-ink);
	font-size: 14px;
	line-height: 1.2;
	color: var(--jd-ink);
	cursor: pointer;
	transition: color var(--jd-t), background-color var(--jd-t);
}
.jd-chip__input:hover + .jd-chip__label {
	color: var(--jd-gold-text);
}
.jd-chip__input:checked + .jd-chip__label {
	background: var(--jd-ink);
	color: var(--jd-paper);
}
.jd-chip__input:focus-visible + .jd-chip__label {
	outline: 2px solid var(--jd-blue);
	outline-offset: 2px;
}

/* Honeypot: visually hidden, out of the tab order and the accessibility tree. */
.jd-hp {
	position: absolute !important;
	left: -10000px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.jd-form__privacy,
.jd-form__consent {
	font-size: 14px;
	line-height: 1.5;
	color: var(--jd-meta);
}
.jd-form__actions {
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.jd-form__submit[aria-busy="true"] {
	opacity: 0.8;
	cursor: progress;
}

.jd-form__summary {
	padding: 20px;
	border: 2px solid var(--jd-error);
}
.jd-form__summary:focus-visible {
	outline: 2px solid var(--jd-focus);
	outline-offset: 2px;
}
.jd-form__summary-title {
	font-size: 17px;
	font-weight: 500;
	color: var(--jd-heading);
}
.jd-form__summary-list {
	margin: 8px 0 0;
	padding-left: 1.2em;
}
.jd-form__summary-list a {
	color: var(--jd-error);
	text-decoration-color: currentColor;
}

.jd-form-success {
	padding: 32px;
	border: 1px solid var(--jd-field);
	font-family: var(--jd-serif);
	font-size: 26px;
	line-height: 1.4;
	color: var(--jd-heading);
}
.jd-form-success p {
	color: inherit;
}
.jd-form-success:focus-visible {
	outline: 2px solid var(--jd-focus);
	outline-offset: 2px;
}

/* Windows contrast themes (08-qa item 13): forced colours replace the ink fill that marks the
   selected press filter and the selected topic chip, so both take the system highlight instead
   and stay distinct from the unselected ones. Outside forced colours nothing changes. The focus
   ring on a selected chip takes the system text colour, so it stays visible in a dark contrast
   theme (08-qa cycle 2, A13). */
@media (forced-colors: active) {
	.jd-press__filters button[aria-pressed="true"],
	.jd-chip__input:checked + .jd-chip__label {
		forced-color-adjust: none;
		background: Highlight;
		color: HighlightText;
		border-color: Highlight;
	}
	.jd-press__filters button[aria-pressed="true"]:focus-visible,
	.jd-chip__input:checked:focus-visible + .jd-chip__label {
		outline-color: CanvasText;
	}
}

/* 12  Small screens (brief D15: floors below 480px) ------------------------- */

@media (max-width: 479.98px) {
	.jd-h1,
	.jd-h1--lg {
		font-size: 34px;
	}
	.jd-h1--display {
		font-size: 36px;
	}
	.jd-h2 {
		font-size: 30px;
	}
	.jd-h2--band {
		font-size: 32px;
	}
	.jd-h2--sm {
		font-size: 28px;
	}
	.jd-h2--book {
		font-size: 30px;
	}
	.jd-lead,
	.jd-lead--21,
	.jd-story__text {
		font-size: 18px;
	}
	.jd-statement__text,
	.jd-books-band__lead,
	.jd-newsletter__lead,
	.jd-pathway__intro {
		font-size: 17px;
	}
	.jd-stats__num {
		font-size: 40px;
	}
	.jd-pathway-card__title {
		font-size: 26px;
	}
	.jd-books-band__title,
	.jd-more-books__title {
		font-size: 24px;
	}
	.jd-five-v__name {
		font-size: 24px;
	}
	.jd-statement__quote,
	.jd-story__quote,
	.jd-endorsements__note,
	.jd-form-success {
		font-size: 22px;
	}
	.jd-wordmark__name {
		font-size: 18px;
	}
	.jd-dl__row {
		grid-template-columns: minmax(0, 1fr);
		gap: 6px;
	}
	.jd-cover-mock__title {
		font-size: 28px;
	}
	.jd-pathway-card {
		padding: 0 24px 28px;
	}
	.jd-pathway-card::before {
		margin: 0 -24px 12px;
	}
	.jd-books-band__cell,
	.jd-talks__cell,
	.jd-chapters__cell {
		padding: 28px 24px;
	}
	.jd-stats__grid > li {
		padding: 28px 20px;
	}
}

/* Press rows stack below 640px: date and publication, then the headline, then Read. */
@media (max-width: 639.98px) {
	.jd-press-row {
		grid-template-columns: auto minmax(0, 1fr);
		gap: 8px 16px;
	}
	.jd-press-row__headline {
		grid-column: 1 / -1;
	}
	.jd-press-row__read {
		grid-column: 1 / -1;
	}
	.jd-steps > li {
		grid-template-columns: 32px minmax(0, 1fr);
	}
	.jd-steps__link {
		grid-column: 2;
	}
}

/* 13  Motion ----------------------------------------------------------------
   Hover transitions only, about 150ms on colour, background and border. No transforms, no
   lifts and no scroll animations (2.5.6). */

@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
	.jd-nav.is-enhanced.is-open .jd-nav__list {
		animation: jd-fade 150ms ease;
	}
}
@keyframes jd-fade {
	from {
		opacity: 0;
	}
	to {
		opacity: 1;
	}
}
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
	}
}

/* 14  Phase D: copy in place ------------------------------------------------ */

/* Home credentials: a 1px rule on top while the endorsements section above it is held. */
.jd-credentials--ruled {
	border-top: 1px solid var(--jd-line);
}

/* Published subtitles are italic in the copy; the italics keep the subtitle's fixed size
   (brief 2.8) instead of adding the 2px that inline emphasis carries. */
.jd-book__subtitle em,
.jd-more-books__subtitle em {
	font-size: inherit;
}

/* FAQ answers that run to more than one paragraph, or carry a list. */
.jd-faq__answer > * + * {
	margin-top: 12px;
}
.jd-faq__bullets {
	margin: 0;
	padding-left: 1.25em;
	list-style: disc;
}
.jd-faq__bullets li + li {
	margin-top: 6px;
}

/* The opt-in's label and its visible help text sit beside the checkbox (compliance J2). */
.jd-field__check-text {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

/* A form card with no form in it (no form is shown before /privacy/ is live) is not shown. */
.jd-form-card:not(:has(*)) {
	display: none;
}

/* Stats strip: the last column's right rule and the last row's bottom rule are clipped, so the
   strip reads as cells split by hairlines at every width, whatever the container's padding. */
.jd-stats__grid {
	clip-path: inset(0 1px 1px 0);
}

/* Pathway steps below 640px: a long link ("Book a call with Blue Cow Practice") wraps inside
   its column instead of running past the screen edge; the gap keeps the arrow off the text. */
@media (max-width: 639.98px) {
	.jd-steps__link {
		white-space: normal;
		column-gap: 0.4em;
	}
}

/* Legal tables: horizontal rules only. Core's table block draws a border on every side of
   each cell, which put vertical lines against the unpadded text. */
.jd-prose th,
.jd-prose td {
	border-top: 0;
	border-right: 0;
	border-left: 0;
}

/* 15  Consent tool (compliance checklist 3.3) ------------------------------
   Printed only while analytics is on, or for the tester under test. One region in the normal
   flow directly after the skip link: not a modal, not an overlay, no focus trap (K3). Accept
   and reject are the same button in every respect, side by side on wide screens and stacked at
   the same full width on narrow ones (K4). Text and focus follow the paper-2 ground (K12). */

.jd-consent[hidden],
.jd-consent [hidden],
[data-jd-consent-open][hidden] {
	display: none !important;
}
.jd-consent {
	padding-block: 24px;
	border-bottom: 1px solid var(--jd-rule);
	color: var(--jd-body);
}
.jd-consent__view {
	max-width: 760px;
}
.jd-consent__heading {
	margin: 0 0 12px;
	font-family: var(--jd-sans);
	font-size: 20px;
	font-weight: 500;
	line-height: 1.3;
	letter-spacing: 0;
	text-transform: none;
	color: var(--jd-heading);
}
.jd-consent__text,
.jd-consent__state,
.jd-consent__message {
	margin: 0 0 12px;
	font-size: 16px;
	line-height: 1.6;
	color: var(--jd-body);
}
.jd-consent__state,
.jd-consent__message {
	font-weight: 500;
	color: var(--jd-heading);
}
.jd-consent__buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 20px 0 8px;
}
.jd-consent__buttons .jd-btn {
	flex: 1 1 240px;
	max-width: 320px;
}
@media (max-width: 543.98px) {
	.jd-consent__buttons .jd-btn {
		flex-basis: 100%;
		max-width: none;
	}
}
.jd-consent__link {
	margin: 0;
}
.jd-consent__link a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	font-size: 16px;
	color: var(--jd-link);
	text-decoration: underline;
}
.jd-consent__link a:hover {
	color: var(--jd-link-hover);
}
.jd-consent__close-row {
	margin: 16px 0 0;
}
.jd-consent-settings-button {
	margin: 0 0 1.5em;
}
