/**
 * IHR corporate stylesheet: Ledger and Plate (G2 Version 9, owner approved).
 *
 * Colours, fonts and sizes come from theme.json presets only
 * (--wp--preset--*), so a confirmed brand value changes in one place.
 * Component classes below are applied to ordinary core blocks by the
 * patterns in /patterns, so every word and photograph stays editable in
 * WordPress. Breakpoints: 782px (WordPress's tablet break) for two-column
 * passages and 1024px for the desktop header.
 *
 * @package IHR
 */

/* ---------- Base ---------- */

:root {
	--ihr-paper: var(--wp--preset--color--base);
	--ihr-ink: var(--wp--preset--color--contrast);
	--ihr-band: var(--wp--preset--color--band);
	--ihr-muted: var(--wp--preset--color--muted);
	--ihr-line: var(--wp--preset--color--line);
	--ihr-line-strong: var(--wp--preset--color--line-strong);
	--ihr-plate: var(--wp--preset--color--plate);
	--ihr-on-ink-muted: var(--wp--preset--color--on-ink-muted);
	--ihr-action: var(--wp--preset--color--action);
	--ihr-action-hover: var(--wp--preset--color--action-hover);
	--ihr-serif: var(--wp--preset--font-family--serif);
	--ihr-olive: var(--wp--preset--color--mark);
	--ihr-olive-text: var(--wp--preset--color--olive-text);
	--ihr-focus: 3px solid var(--ihr-ink);
	--ihr-header-h: var(--wp--custom--header-height-mobile);
	--ihr-section: 4rem;
	--ihr-section-tight: 2.75rem;
}

@media (min-width: 782px) {
	:root {
		--ihr-section: 7rem;
		--ihr-section-tight: 4.5rem;
	}
}

@media (min-width: 1024px) {
	:root {
		--ihr-header-h: var(--wp--custom--header-height);
	}
}

body {
	-webkit-font-smoothing: antialiased;
	/* Garamond's default old-style figures make phone numbers, dates and
	   references harder to read; lining figures keep them even. */
	font-variant-numeric: lining-nums;
	/* A word longer than its column breaks rather than pushing the page
	   sideways (enlarged text, long email addresses). */
	overflow-wrap: break-word;
	text-rendering: optimizeLegibility;
}

:where(.wp-site-blocks) :focus-visible {
	outline: var(--ihr-focus);
	outline-offset: 3px;
}

.ihr-on-ink :focus-visible {
	outline-color: var(--ihr-paper);
}

/* Links in running text: ink, with the Action colour on hover (E13). */
:where(.wp-site-blocks) a:where(:not(.wp-element-button)) {
	text-decoration-thickness: 1px;
	text-underline-offset: 0.25em;
}

:where(.wp-site-blocks) a:where(:not(.wp-element-button)):hover {
	text-decoration-color: var(--ihr-action);
	text-decoration-thickness: 2px;
}

.skip-link.screen-reader-text:focus {
	background: var(--ihr-paper);
	color: var(--ihr-ink);
	font-weight: 600;
	outline: var(--ihr-focus);
}

/* Anchor targets clear the header when jumped to. */
[id] {
	scroll-margin-top: 1.5rem;
}

/* ---------- Type roles (applied as block classes) ---------- */

.ihr-statement {
	font-family: var(--ihr-serif);
	font-size: var(--wp--preset--font-size--statement);
	font-weight: 400;
	letter-spacing: -0.012em;
	line-height: 1.05;
	text-wrap: balance;
}

.ihr-tagline {
	font-family: var(--ihr-serif);
	font-size: var(--wp--preset--font-size--tagline);
	font-style: italic;
	line-height: 1.25;
}

.ihr-lead {
	font-family: var(--ihr-serif);
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.45;
}

.ihr-index {
	color: var(--ihr-muted);
	font-family: var(--ihr-serif);
	font-feature-settings: "tnum";
	font-size: 0.875rem;
	font-weight: 500;
	letter-spacing: 0.04em;
}

.ihr-muted,
.ihr-muted a {
	color: var(--ihr-muted);
}

.ihr-small {
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.6;
}

/* Reading text inside long pages (About, Services, Privacy, Insights). */
.ihr-reading {
	font-family: var(--ihr-serif);
	font-size: 1.25rem;
	line-height: 1.6;
}

/* ---------- Buttons and text links ---------- */

.wp-block-button__link {
	min-height: 3.25rem;
	align-items: center;
	display: inline-flex;
	justify-content: center;
}

.wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent;
	border-color: var(--ihr-ink);
	color: var(--ihr-ink);
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--ihr-band);
	border-color: var(--ihr-ink);
	color: var(--ihr-ink);
}

/* Inverse: the one control on the dark passage (D10: Action never sits on ink). */
.wp-block-button.is-style-ihr-inverse > .wp-block-button__link {
	background: var(--ihr-paper);
	border-color: var(--ihr-paper);
	color: var(--ihr-ink);
}

.wp-block-button.is-style-ihr-inverse > .wp-block-button__link:hover {
	background: var(--ihr-band);
	border-color: var(--ihr-band);
	color: var(--ihr-ink);
}

/* Text link: underlined in the Action colour, used for secondary actions. */
.wp-block-button.is-style-ihr-text-link > .wp-block-button__link,
.ihr-link-strong a {
	background: transparent;
	border: 0;
	color: var(--ihr-ink);
	font-weight: 600;
	min-height: 2.75rem;
	padding: 0;
	text-decoration: underline;
	text-decoration-color: var(--ihr-action);
	text-decoration-thickness: 2px;
	text-underline-offset: 6px;
}

.wp-block-button.is-style-ihr-text-link > .wp-block-button__link:hover,
.ihr-link-strong a:hover {
	background: transparent;
	color: var(--ihr-action-hover);
	text-decoration-color: var(--ihr-action-hover);
}

.ihr-link-strong a {
	align-items: center;
	display: inline-flex;
	overflow-wrap: anywhere;
}

.ihr-on-ink .ihr-link-strong a {
	color: var(--ihr-paper);
	text-decoration-color: var(--ihr-paper);
}

/* ---------- Sections and surfaces ---------- */

.ihr-section {
	padding-block: var(--ihr-section);
}

.ihr-section--tight {
	padding-block: var(--ihr-section-tight);
}

.ihr-band {
	background: var(--ihr-band);
}

.ihr-on-ink {
	background: var(--ihr-ink);
	color: var(--ihr-paper);
}

.ihr-on-ink :where(h1, h2, h3, h4, a) {
	color: var(--ihr-paper);
}

/* Brand olive reads on ink (6.5:1); rust never sits on ink (2.9:1). */
.ihr-on-ink :where(h1, h2) {
	color: var(--ihr-olive);
}

.ihr-on-ink .ihr-muted {
	color: var(--ihr-on-ink-muted);
}

/* Composed passages are grids; WordPress's flow margins are reset inside them. */
.ihr-grid > *,
.ihr-ledger__row > *,
.ihr-facts > * {
	margin-block: 0;
}

.ihr-rule,
.wp-block-separator.ihr-rule {
	background: var(--ihr-line);
	border: 0;
	height: 1px;
	margin: 0;
	opacity: 1;
	width: 100%;
}

.ihr-rule--ink {
	background: var(--ihr-olive);
	height: 1px;
}

/* ---------- Plates (photography) ---------- */

.ihr-plate {
	background: var(--ihr-plate);
	margin: 0;
	overflow: hidden;
}

/* Image blocks used as plates: the photograph fills the ratio chosen in
   the editor (aspect ratio and "Cover" scale). */
.ihr-plate img {
	display: block;
	height: auto;
	width: 100%;
}

.ihr-plate .wp-element-caption,
.ihr-plate figcaption {
	background: var(--ihr-paper);
	color: var(--ihr-muted);
	font-size: var(--wp--preset--font-size--caption);
	line-height: 1.5;
	margin: 0;
	padding-top: 0.625rem;
	text-align: left;
}

.ihr-band .ihr-plate .wp-element-caption {
	background: var(--ihr-band);
}

/* Focal points from the approved crops (design E7). A replacement photo
   with a different subject position may need its own class. */
.ihr-plate--hero img {
	object-position: 44% 40%;
}

.ihr-plate--approach img {
	object-position: 42% 35%;
}

@media (max-width: 781px) {
	.ihr-plate--mobile-3x2 img {
		aspect-ratio: 3 / 2 !important;
	}
}

.ihr-plate-cap {
	color: var(--ihr-muted);
	font-size: var(--wp--preset--font-size--caption);
	line-height: 1.5;
	margin: 0.625rem 0 0 !important;
}

/* ---------- Site logo (E3: never below 69px high) ---------- */

.ihr-logo img,
.ihr-logo .custom-logo {
	height: var(--wp--custom--logo--header-mobile);
	max-width: none;
	width: auto;
}

@media (min-width: 1024px) {
	.ihr-header .ihr-logo img,
	.ihr-header .ihr-logo .custom-logo {
		height: var(--wp--custom--logo--header-desktop);
	}
}

.ihr-footer .ihr-logo img,
.ihr-footer .ihr-logo .custom-logo {
	height: var(--wp--custom--logo--footer-mobile);
}

@media (min-width: 782px) {
	.ihr-footer .ihr-logo img,
	.ihr-footer .ihr-logo .custom-logo {
		height: var(--wp--custom--logo--footer-desktop);
	}
}

/* ---------- Header ---------- */

.ihr-header {
	background: var(--ihr-paper);
	border-bottom: 1px solid var(--ihr-line);
}

.ihr-header__in {
	align-items: center;
	display: flex;
	gap: 0.75rem;
	justify-content: space-between;
	min-height: var(--ihr-header-h);
}

/* The logo stays above the open menu sheet, as drawn (no stacking context
   is created by the header, so this z-index competes with the sheet's). */
.ihr-header .ihr-logo {
	position: relative;
	z-index: 100001;
}

/* Navigation. The block's overlay is "always"; on wide screens the theme
   shows the menu inline instead, so the breakpoint is the theme's (1024px)
   rather than the block's fixed 600px. */
.ihr-nav .wp-block-navigation-item__content {
	color: var(--ihr-ink);
	text-decoration: none;
}

.ihr-nav .wp-block-navigation-item__description {
	display: none;
}

.ihr-nav .wp-block-navigation__responsive-container-open,
.ihr-nav .wp-block-navigation__responsive-container-close {
	align-items: center;
	display: inline-flex;
	justify-content: center;
}

.ihr-nav .wp-block-navigation__responsive-container-open {
	border: 1.5px solid var(--ihr-ink);
	border-radius: 2px;
	font: 600 0.9375rem/1 var(--ihr-serif);
	min-height: 2.75rem;
	min-width: 4.75rem;
	padding: 0 1rem;
}

.ihr-nav .wp-block-navigation__responsive-container-close {
	border: 1.5px solid var(--ihr-ink);
	border-radius: 2px;
	font: 600 0.9375rem/1 var(--ihr-serif);
	min-height: 2.75rem;
	min-width: 4.75rem;
	padding: 0 1rem;
	position: fixed;
	right: var(--wp--custom--gutter);
	top: calc((var(--ihr-header-h) - 2.75rem) / 2 + var(--wp-admin--admin-bar--height, 0px));
}

/* Inline (wide screens). */
@media (min-width: 1024px) {
	.ihr-nav .wp-block-navigation__responsive-container-open {
		display: none;
	}

	.ihr-nav .wp-block-navigation__responsive-container.hidden-by-default {
		background: transparent;
		display: block;
		position: static;
		width: auto;
	}

	.ihr-nav .wp-block-navigation__responsive-container-close {
		display: none;
	}

	.ihr-nav .wp-block-navigation__container {
		align-items: center;
		flex-direction: row;
		gap: 2.25rem;
	}

	.ihr-nav .wp-block-navigation-item__content {
		display: block;
		font-size: 1rem;
		font-weight: 500;
		padding-block: 2.875rem 2.75rem;
	}

	.ihr-nav .current-menu-item > .wp-block-navigation-item__content,
	.ihr-nav .current-menu-ancestor > .wp-block-navigation-item__content {
		box-shadow: inset 0 -2px 0 var(--ihr-action);
		font-weight: 600;
	}

	.ihr-nav .ihr-nav-cta {
		margin-left: 0.5rem;
	}

	.ihr-nav .ihr-nav-cta > .wp-block-navigation-item__content {
		font-weight: 600;
		padding-block: 0.5rem;
		text-decoration: underline;
		text-decoration-color: var(--ihr-action);
		text-decoration-thickness: 2px;
		text-underline-offset: 6px;
	}

	.ihr-nav .ihr-nav-channel {
		display: none;
	}
}

/* Narrower desktops: with Home in the menu (client review, 12 October 2026)
   the items close up so the consultation link stays on the header line. */
@media (min-width: 1024px) and (max-width: 1279px) {
	.ihr-nav .wp-block-navigation__container {
		gap: 1rem;
	}

	.ihr-nav .ihr-nav-cta {
		margin-left: 0.25rem;
	}

	/* "Our Expertise" and "Who We Are" (15 October 2026) are longer labels:
	   the lockup takes its approved minimum height (E3: 69px) here so the
	   menu and the consultation link stay on one line. */
	.ihr-header .ihr-logo img,
	.ihr-header .ihr-logo .custom-logo {
		height: var(--wp--custom--logo--header-mobile);
	}
}

/* Open sheet (phones and tablets). */
.ihr-nav .wp-block-navigation__responsive-container.is-menu-open {
	background: var(--ihr-paper);
	color: var(--ihr-ink);
	padding: calc(var(--ihr-header-h) + 0.75rem) var(--wp--custom--gutter) 2rem;
}

.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	align-items: stretch;
	padding-top: 0;
}

.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	align-items: stretch;
	gap: 0;
	width: 100%;
}

.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	box-sizing: border-box;
}

.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	border-bottom: 1px solid var(--ihr-line);
	width: 100%;
}

.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	display: block;
	font-family: var(--ihr-serif);
	font-size: 2.25rem;
	line-height: 1.1;
	padding: 1.25rem 0;
	width: 100%;
}

.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .current-menu-item > .wp-block-navigation-item__content,
.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .current-menu-ancestor > .wp-block-navigation-item__content {
	box-shadow: inset 3px 0 0 var(--ihr-action);
	padding-left: 1rem;
}

.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .ihr-nav-cta {
	border-bottom: 0;
	margin: 1.75rem 0 2.25rem;
}

.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .ihr-nav-cta > .wp-block-navigation-item__content {
	background: var(--ihr-action);
	border-radius: 2px;
	color: var(--ihr-paper);
	font: 600 1rem/1.2 var(--ihr-serif);
	padding: 1rem 1.75rem;
	text-align: center;
}

.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .ihr-nav-channel > .wp-block-navigation-item__content {
	align-items: baseline;
	display: flex;
	font: 500 1.0625rem/1.4 var(--ihr-serif);
	justify-content: space-between;
	min-height: 3.5rem;
	padding: 0.875rem 0;
}

.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .ihr-nav-channel .wp-block-navigation-item__description {
	color: var(--ihr-muted);
	display: block;
	font-size: 0.875rem;
	order: -1;
}

/* The first contact channel sits clear of the menu items. */
.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:not(.ihr-nav-channel) + .ihr-nav-channel {
	margin-top: 1.75rem;
	border-top: 1px solid var(--ihr-line);
}

.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .ihr-nav-cta + .ihr-nav-channel {
	margin-top: 0;
}

/* Candidate shell: the candidate task owns the primary action (IA §6). */
.ihr-header--candidate .ihr-nav-cta {
	display: none !important;
}

.ihr-header--candidate .ihr-nav .wp-block-navigation__responsive-container.is-menu-open .ihr-nav-cta + .ihr-nav-channel {
	margin-top: 1.75rem;
}

/* Narrow phones (under 380px). The full lockup is never shown below 69px
   high (design E3); at that size (240px wide) plus the Menu button and the
   gutters, one row needs about 370px. Until IHR supplies an approved compact variant,
   the header wraps: logo first, Menu below it. The open sheet then covers
   the logo and carries its own Close button. */
@media (max-width: 1023px) {
	/* The row wraps whenever it does not fit: narrow phones or enlarged text. */
	.ihr-header .ihr-header__in {
		flex-wrap: wrap;
		row-gap: 0.5rem;
	}

	.ihr-header .ihr-header__in > .ihr-nav {
		margin-left: auto;
	}
}

@media (max-width: 379px) {
	.ihr-header .ihr-header__in {
		padding-block: 0.625rem;
	}

	.ihr-header .ihr-logo {
		z-index: auto;
	}

	.ihr-nav .wp-block-navigation__responsive-container.is-menu-open {
		padding-top: calc(1rem + var(--wp-admin--admin-bar--height, 0px));
	}

	.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
		margin: 0 0 1rem auto;
		position: static;
	}

	.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog {
		display: flex;
		flex-direction: column;
	}

	/* Footer lockup fits the column (about 80px high at 320px), never below 69px. */
	.ihr-footer .ihr-logo img,
	.ihr-footer .ihr-logo .custom-logo {
		height: auto;
		max-width: 300px;
		width: 100%;
	}
}

/* ---------- Footer ---------- */

.ihr-footer {
	background: var(--ihr-paper);
	border-top: 1px solid var(--ihr-olive);
	font-size: var(--wp--preset--font-size--small);
}

.ihr-footer__top {
	display: grid;
	gap: 2rem;
	grid-template-columns: minmax(0, 1fr);
	padding-block: 2.75rem 1.5rem;
}

.ihr-footer h2 {
	color: var(--ihr-ink);
	font: 600 1.0625rem/1.4 var(--ihr-serif);
	letter-spacing: 0;
	margin: 0 0 1rem;
}

.ihr-footer ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ihr-footer li {
	margin: 0 0 0.6875rem;
}

.ihr-footer a {
	text-decoration: none;
}

.ihr-footer a:hover,
.ihr-footer a[aria-current] {
	text-decoration: underline;
	text-decoration-color: var(--ihr-action);
	text-decoration-thickness: 2px;
	text-underline-offset: 5px;
}

.ihr-footer ul ul {
	border-left: 1px solid var(--ihr-line);
	margin: 0.625rem 0 0;
	padding-left: 1rem;
}

.ihr-footer ul ul a {
	color: var(--ihr-muted);
}

.ihr-footer__channels li {
	align-items: baseline;
	border-bottom: 1px solid var(--ihr-line);
	display: flex;
	flex-wrap: wrap;
	overflow-wrap: anywhere;
	gap: 0.875rem;
	margin: 0;
	min-height: 3.25rem;
	padding: 0.8125rem 0;
}

.ihr-footer__channels {
	border-top: 1px solid var(--ihr-line);
}

.ihr-footer__label {
	color: var(--ihr-ink);
	flex: 0 0 2rem;
	font-weight: 700;
}

/* Contact channels: icons in place of the words (client review, 15 October
   2026). The word stays for assistive technology (visually hidden) and as a
   hover tooltip; the link or address beside each icon says the rest. */
.ihr-footer__label::before {
	background: currentColor;
	content: "";
	display: inline-block;
	height: 1.25rem;
	-webkit-mask: var(--ihr-icon) center / contain no-repeat;
	mask: var(--ihr-icon) center / contain no-repeat;
	vertical-align: -0.2rem;
	width: 1.25rem;
}

.ihr-footer__label--email { --ihr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='1.5'/%3E%3Cpath d='m3.5 6 8.5 7 8.5-7'/%3E%3C/svg%3E"); }
.ihr-footer__label--call { --ihr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 3.5h3.2l1.6 4.2-2.2 1.4a11 11 0 0 0 7.3 7.3l1.4-2.2 4.2 1.6V19a1.5 1.5 0 0 1-1.6 1.5A16.5 16.5 0 0 1 3.5 5.1 1.5 1.5 0 0 1 5 3.5z'/%3E%3C/svg%3E"); }
.ihr-footer__label--office { --ihr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-6.5-5.6-6.5-11a6.5 6.5 0 0 1 13 0c0 5.4-6.5 11-6.5 11z'/%3E%3Ccircle cx='12' cy='10' r='2.4'/%3E%3C/svg%3E"); }
.ihr-footer__label--follow { --ihr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='2.5'/%3E%3Cpath d='M8 10.5V16M8 7.6v.01M11.5 16v-5.5M11.5 13c0-1.6 1-2.6 2.4-2.6s2.1 1 2.1 2.6V16'/%3E%3C/svg%3E"); }

.ihr-visually-hidden {
	border: 0;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

.ihr-footer__base {
	border-top: 1px solid var(--ihr-line);
	color: var(--ihr-muted);
	display: flex;
	flex-direction: column-reverse;
	font-size: 0.875rem;
	gap: 0.875rem;
	padding-block: 1.375rem 2.125rem;
}

.ihr-footer__base > * {
	margin: 0 !important;
}

/* The rule above the copyright follows the columns directly: no block gap,
   and the last link in a column adds no margin. */
.ihr-footer > .ihr-footer__base {
	margin-block-start: 0;
}

.ihr-footer__top li:last-child {
	margin-bottom: 0;
}

@media (min-width: 782px) {
	.ihr-footer__top {
		column-gap: 1.5rem;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		padding-block: 2.75rem 1.25rem;
	}

	.ihr-footer__id { grid-column: 1 / 5; }
	.ihr-footer__company { grid-column: 5 / 8; }
	.ihr-footer__opportunities { grid-column: 8 / 10; }
	.ihr-footer__contact { grid-column: 10 / 13; }

	.ihr-footer__channels {
		border-top: 0;
	}

	.ihr-footer__channels li {
		border-bottom: 0;
		margin: 0 0 0.6875rem;
		min-height: 0;
		padding: 0;
	}

	.ihr-footer__base {
		flex-direction: row;
		justify-content: space-between;
		padding-block: 1rem 1.25rem;
	}
}

.ihr-footer__top > * {
	margin-block: 0;
}

.ihr-footer .ihr-logo {
	margin-bottom: 0;
}

/* ---------- Homepage: hero ---------- */

.ihr-hero {
	padding-top: 2.25rem;
}

.ihr-hero__text {
	padding-bottom: 2.25rem;
}

.ihr-hero__text .ihr-tagline {
	color: var(--ihr-olive-text);
	margin-top: 1.125rem;
}

.ihr-hero__text .ihr-rule {
	margin: 1.75rem 0 1.375rem;
}

.ihr-hero__actions {
	margin-top: 1.75rem;
}

@media (max-width: 781px) {
	.ihr-hero__actions {
		align-items: flex-start;
		flex-direction: column;
		gap: 1.375rem;
	}

	.ihr-hero__actions .wp-block-button:not(.is-style-ihr-text-link) {
		width: 100%;
	}

	.ihr-hero__actions .wp-block-button:not(.is-style-ihr-text-link) .wp-block-button__link {
		width: 100%;
	}
}

.ihr-hero__foot {
	margin-top: 0;
}

@media (min-width: 782px) {
	.ihr-hero {
		padding-top: 4.5rem;
	}

	.ihr-hero__grid {
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}

	.ihr-hero__text {
		grid-column: 1 / 8;
		padding-bottom: 6rem;
	}

	.ihr-hero__plate {
		align-self: end;
		grid-column: 8 / 13;
	}

	.ihr-hero__text .ihr-tagline {
		margin-top: 1.75rem;
	}

	.ihr-hero__text .ihr-rule {
		margin: 2.75rem 0 1.875rem;
	}

	.ihr-hero__text .ihr-lead {
		max-width: 31em;
	}

	.ihr-hero__actions {
		gap: 2.25rem;
		margin-top: 2.5rem;
	}
}

/* ---------- Intro row (heading and lead side by side) ---------- */

.ihr-intro {
	margin-bottom: 2.25rem;
}

.ihr-intro > .ihr-lead {
	margin-top: 1.125rem;
}

@media (min-width: 782px) {
	.ihr-intro {
		align-items: end;
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		margin-bottom: 4.5rem;
	}

	.ihr-intro > :first-child { grid-column: 1 / 6; }
	.ihr-intro > :last-child { grid-column: 7 / 13; margin-top: 0; }
}

/* ---------- Capability ledger ---------- */

.ihr-ledger {
	border-top: 1px solid var(--ihr-olive);
}

.ihr-ledger__row {
	border-bottom: 1px solid var(--ihr-line);
	padding-block: 1.625rem 1.75rem;
}

.ihr-ledger__row h3 {
	margin: 0.375rem 0 0.75rem;
}

@media (min-width: 782px) {
	.ihr-ledger__row {
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: 4.5rem minmax(0, 5fr) minmax(0, 1fr) minmax(0, 6fr);
		padding-block: 2.5rem 2.75rem;
	}

	.ihr-ledger__row > .ihr-index { grid-column: 1; padding-top: 0.5rem; }
	.ihr-ledger__row > .ihr-ledger__head { grid-column: 2; }
	.ihr-ledger__row > .ihr-svc { grid-column: 4; }

	.ihr-ledger__row h3 {
		margin: 0 0 0.875rem;
	}
}

.ihr-ledger__head > * {
	margin-block: 0;
}

/* Phones: the services list follows the title (there is no summary). */
@media (max-width: 781px) {
	.ihr-ledger__head {
		margin-bottom: 1rem;
	}
}

.ihr-svc {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ihr-svc > li {
	border-top: 1px solid var(--ihr-line);
	padding: 0.8125rem 0 0.875rem;
}

.ihr-svc > li:first-child {
	border-top: 0;
	padding-top: 0.125rem;
}

.ihr-svc a {
	font-size: 1.125rem;
	font-weight: 500;
	text-decoration: none;
}

.ihr-svc a:hover {
	text-decoration: underline;
}

/* Supporting services: a quiet comma-separated line under their parent. */
.ihr-svc ul {
	color: var(--ihr-muted);
	display: block;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.5;
	list-style: none;
	margin: 0.1875rem 0 0;
	padding: 0;
}

.ihr-svc ul li {
	display: inline;
}

.ihr-svc ul li:not(:last-child)::after {
	content: ", ";
}

.ihr-ledger-more {
	margin-top: 1.75rem;
}

@media (min-width: 782px) {
	.ihr-ledger-more {
		margin-top: 2.25rem;
		text-align: right;
	}
}

/* ---------- Split passage (plate beside text) ---------- */

.ihr-split__plate {
	margin-top: 2rem;
}

.ihr-facts {
	margin-top: 2rem;
}

.ihr-facts > p {
	border-top: 1px solid var(--ihr-line);
	padding: 1.25rem 0 1.375rem;
}

.ihr-facts > p:first-child {
	border-top: 1px solid var(--ihr-olive);
}

.ihr-split .ihr-link-strong {
	margin-top: 1.5rem;
}

@media (min-width: 782px) {
	.ihr-split {
		align-items: start;
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}

	.ihr-split__plate {
		grid-column: 1 / 6;
		grid-row: 1 / span 2;
		margin-top: 0;
	}

	.ihr-split__body {
		grid-column: 7 / 13;
	}

	.ihr-facts {
		margin-top: 3rem;
	}

	.ihr-split .ihr-link-strong {
		margin-top: 1.75rem;
	}
}

/* On phones the heading comes before the plate, as drawn. */
@media (max-width: 781px) {
	.ihr-split {
		display: flex;
		flex-direction: column;
	}

	.ihr-split__body {
		display: contents;
	}

	.ihr-split__body > h2 { order: 1; }
	.ihr-split__plate { order: 2; }
	.ihr-split__body > .ihr-facts { order: 3; }
	.ihr-split__body > .ihr-link-strong { order: 4; }
}

.ihr-split__body > * {
	margin-block: 0;
}

/* ---------- Talk to Us (the one dark passage) ---------- */

.ihr-talk h2.ihr-statement,
.ihr-talk h1.ihr-statement {
	font-size: clamp(3.25rem, 2.2rem + 3vw, 4.75rem);
}

.ihr-talk .ihr-lead {
	margin-top: 1rem;
}

.ihr-talk .wp-block-buttons {
	margin: 1.75rem 0 2.25rem;
}

@media (max-width: 781px) {
	.ihr-talk .wp-block-button,
	.ihr-talk .wp-block-button__link {
		width: 100%;
	}
}

.ihr-chan {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ihr-chan li {
	align-items: baseline;
	border-top: 1px solid rgb(255 255 255 / 0.28);
	color: var(--ihr-on-ink-muted);
	display: flex;
	flex-wrap: wrap;
	font-size: var(--wp--preset--font-size--small);
	gap: 0.25rem 1rem;
	justify-content: space-between;
	padding: 1.25rem 0;
}

.ihr-chan li:last-child {
	border-bottom: 1px solid rgb(255 255 255 / 0.28);
}

.ihr-chan a {
	color: var(--ihr-paper);
	font-family: var(--ihr-serif);
	font-size: 1.4375rem;
	text-decoration: none;
}

.ihr-chan a:hover {
	text-decoration: underline;
	text-decoration-color: var(--ihr-paper);
}

@media (min-width: 782px) {
	.ihr-talk {
		align-items: end;
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}

	.ihr-talk__text { grid-column: 1 / 8; }
	.ihr-talk > .ihr-chan { grid-column: 9 / 13; }

	.ihr-talk .ihr-lead {
		margin-top: 1.5rem;
		max-width: 24em;
	}

	.ihr-talk .wp-block-buttons {
		margin: 2.5rem 0 0;
	}

	.ihr-chan a {
		font-size: 1.75rem;
	}
}

.ihr-talk__text > * {
	margin-block: 0;
}

/* ---------- Candidate signpost ---------- */

.ihr-signpost .ihr-muted {
	margin: 0.5rem 0 1.25rem;
}

@media (min-width: 782px) {
	.ihr-signpost {
		align-items: start;
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}

	.ihr-signpost__text { grid-column: 1 / 6; }
	.ihr-signpost__roles { grid-column: 7 / 13; }

	.ihr-signpost .ihr-muted {
		margin: 0.625rem 0 0;
	}
}

.ihr-signpost__text > *,
.ihr-signpost__roles > * {
	margin-block: 0;
}

.ihr-signpost__roles .ihr-link-strong {
	margin-top: 1.375rem;
}

/* The vacancy list's compact style (block style "Compact list"), filled by IHR Jobs. */
.ihr-roles {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ihr-roles li {
	align-items: flex-start;
	border-top: 1px solid var(--ihr-line);
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	padding: 1.125rem 0;
}

.ihr-roles li:last-child {
	border-bottom: 1px solid var(--ihr-line);
}

.ihr-roles a {
	font-family: var(--ihr-serif);
	font-size: 1.3125rem;
	line-height: 1.3;
	text-decoration: none;
}

.ihr-roles a:hover {
	text-decoration: underline;
}

.ihr-roles__meta {
	color: var(--ihr-muted);
	font-size: var(--wp--preset--font-size--small);
}

.ihr-roles__empty {
	color: var(--ihr-muted);
	margin: 0;
}

@media (min-width: 782px) {
	.ihr-roles li {
		align-items: baseline;
		flex-direction: row;
		gap: 1.5rem;
		justify-content: space-between;
	}

	.ihr-roles a {
		font-size: 1.5rem;
	}

	.ihr-roles__meta {
		white-space: nowrap;
	}
}

/* ---------- Page head (inner corporate pages) ---------- */

.ihr-page-intro {
	padding-block: 2.25rem 2.75rem;
}

.ihr-page-intro > * {
	margin-block: 0;
}

.ihr-page-intro h1 {
	font-size: var(--wp--preset--font-size--display);
	max-width: 24ch;
	text-wrap: balance;
}

.ihr-page-intro .ihr-lead {
	margin-top: 1.25rem;
	max-width: 32em;
}

.ihr-page-intro .ihr-reading {
	margin-top: 1.25rem;
	max-width: 34em;
}

@media (min-width: 782px) {
	.ihr-page-intro {
		padding-block: 4.5rem 4.5rem;
	}
}

/* ---------- Two-column ledger (About: mission and vision; Privacy) ---------- */

.ihr-pair {
	border-top: 1px solid var(--ihr-olive);
}

/* Mission and Vision start level (WordPress's block gap pushed the second down). */
.ihr-pair > * {
	margin-block: 0;
}

.ihr-pair__item {
	border-bottom: 1px solid var(--ihr-line);
	padding-block: 1.75rem 2rem;
}

.ihr-pair__item > * {
	margin-block: 0;
}

.ihr-pair__item h2,
.ihr-pair__item h3 {
	font-size: var(--wp--preset--font-size--x-large);
	margin-bottom: 0.75rem;
}

@media (min-width: 782px) {
	.ihr-pair {
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ihr-pair__item {
		border-bottom: 0;
		padding-block: 2rem 0;
	}
}

/* ---------- About: values ledger (D.I.C.E.) ---------- */

/* The designer's cube (the D.I.C.E.) beside the heading, without the
   company name or tagline; decorative, so it carries no text alternative.
   Above the heading on phones, at its side from tablet up. */
.ihr-values-intro {
	column-gap: 1.75rem;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	margin-bottom: 2rem;
}

.ihr-values-intro::before {
	aspect-ratio: 1;
	background: url("../img/ihr-mark.svg") center / contain no-repeat;
	content: "";
	margin-bottom: 1.25rem;
	width: 4.5rem;
}

.ihr-values-intro > * {
	margin-block: 0;
}

.ihr-values-intro .ihr-lead {
	margin-top: 0.75rem;
	max-width: 32em;
}

/* Rows are separated by their rules and padding, not the block gap. */
.ihr-values > * {
	margin-block: 0;
}

.ihr-value {
	border-top: 1px solid var(--ihr-line);
	padding-block: 1.25rem 1.5rem;
}

.ihr-value:first-of-type {
	border-top: 1px solid var(--ihr-olive);
}

.ihr-value:last-of-type {
	border-bottom: 1px solid var(--ihr-line);
}

.ihr-value > * {
	margin-block: 0;
}

.ihr-value .ihr-value__letter {
	color: var(--ihr-action);
	font-family: var(--ihr-serif);
	font-size: 2.125rem;
	line-height: 1;
}

.ihr-value h3 {
	font-size: clamp(1.75rem, 1.45rem + 1.2vw, 2.375rem);
	line-height: 1.15;
	margin: 0.375rem 0 0.5rem;
}

@media (min-width: 782px) {
	.ihr-values-intro {
		align-items: center;
		grid-template-columns: 8.5rem minmax(0, 1fr);
		margin-bottom: 2.75rem;
	}

	.ihr-values-intro::before {
		grid-column: 1;
		grid-row: 1 / span 2;
		margin-bottom: 0;
		width: 8.5rem;
	}

	.ihr-values-intro > * {
		grid-column: 2;
	}

	.ihr-value {
		align-items: baseline;
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		padding-block: 1rem 1.125rem;
	}

	.ihr-value .ihr-value__letter { grid-column: 1; }
	.ihr-value h3 { grid-column: 2 / 6; margin: 0; }
	.ihr-value > p:last-child { grid-column: 6 / 13; line-height: 1.55; }
}

/* ---------- About: leadership ---------- */

.ihr-person > * {
	margin-block: 0;
}

.ihr-person h3 {
	font-size: var(--wp--preset--font-size--x-large);
}

.ihr-person__role {
	color: var(--ihr-olive-text);
	font-family: var(--ihr-serif);
	font-size: 1.3125rem;
	line-height: 1.4;
	margin: 0.375rem 0 1.75rem !important;
}

.ihr-person .ihr-reading {
	margin-bottom: 1.125rem;
	max-width: 34em;
}

.ihr-person .ihr-email-link {
	margin-top: 1.75rem;
}

/* Email icon, then the address (decorative icon: the address is the link text). */
.ihr-email-link a {
	align-items: center;
	display: inline-flex;
	font-weight: 600;
	gap: 0.625rem;
	max-width: 100%;
	overflow-wrap: anywhere;
	text-decoration-color: var(--ihr-action);
}

.ihr-email-link a::before {
	background: currentColor;
	content: "";
	flex: none;
	height: 1.25em;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='1.5'/%3E%3Cpath d='m3.5 6 8.5 7 8.5-7'/%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 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='1.5'/%3E%3Cpath d='m3.5 6 8.5 7 8.5-7'/%3E%3C/svg%3E") center / contain no-repeat;
	width: 1.25em;
}

@media (min-width: 782px) {
	.ihr-person {
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}

	/* No portrait is published until IHR supplies one (A7); the biography
	   keeps the reading column it would have beside the portrait. */
	.ihr-person > * {
		grid-column: 6 / 12;
	}

	.ihr-person > .ihr-person__portrait {
		grid-column: 1 / 5;
		grid-row: 1 / span 6;
	}
}

/* Owner, 15 October 2026: IHR has not supplied a portrait, so the team lead
   is centred in the section rather than held in the column beside an empty
   space. A published portrait (.ihr-person__portrait) restores the
   two-column layout above. */
.ihr-section:has(> .ihr-person):not(:has(.ihr-person__portrait)) > .ihr-team-heading {
	text-align: center;
}

.is-layout-constrained > .ihr-person:not(:has(.ihr-person__portrait)) {
	display: block;
	max-width: 46rem;
	text-align: center;
}

.ihr-person:not(:has(.ihr-person__portrait)) .ihr-person__role {
	margin-bottom: 1.25rem !important;
}

.ihr-person:not(:has(.ihr-person__portrait)) .ihr-reading {
	margin-inline: auto;
	max-width: none;
}

.ihr-person:not(:has(.ihr-person__portrait)) .ihr-email-link {
	margin-top: 1.25rem;
}

/* Phones: the title, name and role stay centred; the biography and
   address read left-aligned. */
@media (max-width: 781px) {
	.ihr-person:not(:has(.ihr-person__portrait)) .ihr-reading,
	.ihr-person:not(:has(.ihr-person__portrait)) .ihr-email-link {
		text-align: left;
	}
}

@media (min-width: 782px) {
	body:not(.home) .ihr-section:has(> .ihr-person):not(:has(.ihr-person__portrait)) {
		padding-block: 2.5rem;
	}
}

/* ---------- Our Expertise (client review, 15 October 2026) ----------
   Landing page (/services/) with the four clusters, and one page per
   cluster: cluster navigation, then the image to the left of the title and
   the cluster's services. Images keep their own proportions (supplied 3:2
   landscape); nothing is cropped or stretched. */

.ihr-expertise-image img,
.ihr-clients-image img {
	display: block;
	height: auto;
	width: 100%;
}

.ihr-expertise-image,
.ihr-clients-image {
	margin: 0;
}

/* Landing: the four clusters. */
.ihr-clusters {
	display: grid;
	gap: 0 1.5rem;
	grid-template-columns: minmax(0, 1fr);
}

.ihr-clusters > * {
	margin-block: 0;
}

.ihr-cluster {
	border-top: 1px solid var(--ihr-olive);
	display: flex;
	flex-direction: column;
	padding-block: 1.5rem 2.25rem;
}

.ihr-cluster > * {
	margin-block: 0;
}

.ihr-cluster h2 {
	font-size: var(--wp--preset--font-size--x-large);
	margin-top: 0.5rem;
}

.ihr-cluster__services {
	border-top: 1px solid var(--ihr-line);
	color: var(--ihr-muted);
	font-size: var(--wp--preset--font-size--small);
	list-style: none;
	margin-top: 1.25rem !important;
	padding: 0.75rem 0 0;
}

.ihr-cluster__services li {
	margin: 0;
	padding-block: 0.1875rem;
}

.ihr-cluster .ihr-link-strong {
	margin-top: auto !important;
	padding-top: 1.25rem;
}

/* The section's own padding closes the page; the last row adds none. */
.ihr-clusters > :last-child {
	padding-bottom: 0;
}

@media (min-width: 782px) {
	.ihr-clusters {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ihr-clusters > :nth-last-child(2):nth-child(odd) {
		padding-bottom: 0;
	}
}

/* Cluster pages: navigation between the four clusters. Ordinary links;
   the current cluster is marked (aria-current) and shown with a rule. */
.ihr-expertise-nav {
	border-bottom: 1px solid var(--ihr-line);
}

/* Columns sized in em: two side by side on phones, four in a row on wide
   screens, and one per row when the visitor enlarges the text. */
.ihr-expertise-nav__list {
	display: grid;
	gap: 0 1.5rem;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 6em), 1fr));
	list-style: none;
	margin-block: 0;
	padding: 0;
}

.ihr-expertise-nav__list li {
	margin: 0;
}

.ihr-expertise-nav__list a {
	align-items: center;
	box-shadow: inset 0 -2px 0 transparent;
	box-sizing: border-box;
	color: var(--ihr-ink);
	display: flex;
	font-size: 1rem;
	font-weight: 500;
	height: 100%;
	hyphens: auto;
	line-height: 1.3;
	min-height: 3.25rem;
	overflow-wrap: break-word;
	padding-block: 0.625rem;
	text-decoration: none;
}

.ihr-expertise-nav__list a:hover {
	text-decoration: underline;
	text-decoration-color: var(--ihr-action);
}

.ihr-expertise-nav__list a[aria-current="page"] {
	box-shadow: inset 0 -2px 0 var(--ihr-action);
	color: var(--ihr-action);
	font-weight: 600;
}

@media (min-width: 1024px) {
	.ihr-expertise-nav__list a {
		min-height: 4rem;
	}
}

/* Cluster pages: title, image and services. Phones: title, image, then the
   services. From tablet up the image sits to the left of the title and
   stays in view while the services scroll. */
.ihr-cluster-layout > * {
	margin-block: 0;
}

.ihr-cluster-layout__title {
	font-size: var(--wp--preset--font-size--xx-large);
	margin-bottom: 1.5rem !important;
	text-wrap: balance;
}

.ihr-cluster-layout__media {
	margin-bottom: 1.75rem !important;
}

@media (min-width: 782px) {
	.ihr-cluster-layout {
		align-items: start;
		column-gap: 2.5rem;
		display: grid;
		grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
		grid-template-rows: auto 1fr;
	}

	.ihr-cluster-layout__media {
		grid-column: 1;
		grid-row: 1 / span 2;
		margin-bottom: 0 !important;
		position: sticky;
		top: 1.5rem;
	}

	.ihr-cluster-layout__title {
		grid-column: 2;
		grid-row: 1;
	}

	.ihr-cluster-layout__services {
		grid-column: 2;
		grid-row: 2;
	}
}

.ihr-cluster-layout__services > * {
	margin-block: 0;
}

.ihr-svc-entry {
	border-top: 1px solid var(--ihr-line);
	padding-block: 1.5rem 1.75rem;
}

.ihr-cluster-layout__services > .ihr-svc-entry:first-child {
	border-top: 1px solid var(--ihr-olive);
}

.ihr-cluster-layout__services > .ihr-svc-entry:last-child {
	padding-bottom: 0;
}

.ihr-svc-entry > * {
	margin-block: 0;
}

.ihr-svc-entry .ihr-svc-entry__title {
	color: var(--ihr-ink);
	font-size: var(--wp--preset--font-size--x-large);
	margin-bottom: 0.75rem;
}

.ihr-svc-entry .ihr-svc-entry__sub {
	font-family: var(--ihr-serif);
	font-size: 1.0625rem;
	font-weight: 600;
	letter-spacing: 0;
	margin: 1.25rem 0 0.375rem;
}

.ihr-svc-entry > p,
.ihr-svc-entry > ul {
	max-width: 40em;
}

.ihr-svc-entry > p + p {
	margin-top: 0.875rem;
}

.ihr-svc-entry > ul {
	margin: 0;
	padding-left: 1.25rem;
}

.ihr-svc-entry .ihr-related {
	color: var(--ihr-muted);
	font-size: var(--wp--preset--font-size--small);
	margin-top: 1.25rem;
}

.ihr-svc-entry .ihr-related a {
	color: var(--ihr-ink);
}

.ihr-svc-entry .ihr-link-strong {
	margin-top: 0.75rem;
}

/* ---------- Long-form reading (Privacy policy, Insights) ---------- */

.ihr-policy__contents {
	border-bottom: 1px solid var(--ihr-line);
	border-top: 1px solid var(--ihr-olive);
	margin-bottom: 2.5rem;
}

.ihr-policy__contents summary {
	cursor: pointer;
	font-weight: 600;
	list-style-position: outside;
	min-height: 2.75rem;
	padding: 0.75rem 0;
}

.ihr-policy__contents ol {
	list-style: none;
	margin: 0 0 1rem;
	padding: 0;
}

.ihr-policy__contents li {
	border-top: 1px solid var(--ihr-line);
}

.ihr-policy__contents a {
	display: block;
	padding: 0.5rem 0;
	text-decoration: none;
}

.ihr-policy__contents a:hover {
	text-decoration: underline;
}

.ihr-policy__text > * {
	margin-block: 0;
	max-width: 42rem;
}

.ihr-policy__text > h2 {
	border-top: 1px solid var(--ihr-line);
	font-size: var(--wp--preset--font-size--x-large);
	margin-top: 2.5rem;
	padding-top: 1.5rem;
}

.ihr-policy__text > h3 {
	font-size: var(--wp--preset--font-size--h4);
	margin-top: 1.75rem;
}

.ihr-policy__text > p,
.ihr-policy__text > ul,
.ihr-policy__text > ol {
	margin-top: 1rem;
}

.ihr-policy__text > h2 + p,
.ihr-policy__text > h3 + p {
	margin-top: 0.75rem;
}

.ihr-policy__meta {
	color: var(--ihr-muted);
	font-size: var(--wp--preset--font-size--small);
}

@media (min-width: 1024px) {
	.ihr-policy {
		align-items: start;
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}

	.ihr-policy > .ihr-policy__contents {
		grid-column: 1 / 4;
		margin: 0;
		position: sticky;
		top: calc(1.5rem + var(--wp-admin--admin-bar--height, 0px));
	}

	.ihr-policy > .ihr-policy__text {
		grid-column: 5 / 12;
	}

	/* Wide screens: the contents list is always open. */
	.ihr-policy__contents summary {
		pointer-events: none;
		list-style: none;
	}

	.ihr-policy__contents summary::-webkit-details-marker {
		display: none;
	}
}

.ihr-policy > * {
	margin-block: 0;
}

/* ---------- Insights (native Posts) ---------- */


.ihr-posts .wp-block-post {
	border-top: 1px solid var(--ihr-line);
	padding-block: 1.75rem;
}

.ihr-posts .wp-block-post:first-child {
	border-top: 1px solid var(--ihr-olive);
}

.ihr-posts .wp-block-post-title {
	font-size: var(--wp--preset--font-size--x-large);
	margin: 0 0 0.5rem;
}

.ihr-posts .wp-block-post-title a {
	text-decoration: none;
}

.ihr-posts .wp-block-post-title a:hover {
	text-decoration: underline;
	text-decoration-color: var(--ihr-action);
}

.ihr-posts .wp-block-post-date,
.ihr-post-meta {
	color: var(--ihr-muted);
	font-size: var(--wp--preset--font-size--small);
}

.ihr-posts .wp-block-post-excerpt {
	margin-top: 0.5rem;
	max-width: 40em;
}

.ihr-posts .wp-block-post-excerpt__excerpt {
	margin: 0;
}

@media (min-width: 782px) {
	.ihr-posts .wp-block-post.has-post-thumbnail {
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: minmax(0, 4fr) minmax(0, 8fr);
	}

	.ihr-posts .wp-block-post.has-post-thumbnail > .wp-block-post-featured-image {
		grid-column: 1;
		grid-row: 1 / span 4;
	}

	.ihr-posts .wp-block-post.has-post-thumbnail > :not(.wp-block-post-featured-image) {
		grid-column: 2;
	}
}

.ihr-posts .wp-block-post > * {
	margin-block: 0;
}

.ihr-posts .wp-block-post-featured-image {
	margin-bottom: 1rem;
}

.ihr-article .ihr-page-intro .wp-block-post-title {
	font-size: var(--wp--preset--font-size--display);
	max-width: var(--wp--style--global--content-size);
	text-wrap: balance;
}

.ihr-article .ihr-page-intro > * + * {
	margin-top: 1rem;
}

.ihr-article .wp-block-post-content {
	font-family: var(--ihr-serif);
	font-size: 1.25rem;
	line-height: 1.6;
}

.ihr-article .wp-block-post-content :where(h2, h3, h4) {
	margin-top: 2.5rem;
}

.ihr-article .wp-block-post-content :where(figcaption, .wp-element-caption) {
	font-family: var(--ihr-serif);
}

/* ---------- Enquiry forms (IHR Enquiries plugin, Contact page) ----------
   Same control language as the application form: labels above, 1.5px
   control edge, 3px ink focus ring, errors in text and colour. */

.ihr-form-section__intro > * {
	margin-block: 0;
}

.ihr-form-section__intro > * + * {
	margin-top: 0.75rem;
}

.ihr-form-section__form {
	margin-top: 2rem;
}

@media (min-width: 782px) {
	.ihr-form-section {
		align-items: start;
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}

	.ihr-form-section__intro { grid-column: 1 / 5; }
	.ihr-form-section__form { grid-column: 6 / 13; margin-top: 0; max-width: 40rem; }
}

.ihr-enquiry__form > * {
	margin: 0;
}

.ihr-enquiry__intro {
	color: var(--ihr-muted);
	font-size: var(--wp--preset--font-size--small);
	margin-bottom: 1.25rem !important;
}

.ihr-enquiry__field {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
	margin-bottom: 1.25rem !important;
}

.ihr-enquiry__field label {
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.ihr-enquiry__required {
	color: var(--wp--preset--color--error);
	margin-left: 0.125rem;
}

.ihr-enquiry__optional {
	color: var(--ihr-muted);
	font-weight: 400;
}

.ihr-enquiry input:not([type="hidden"]),
.ihr-enquiry select,
.ihr-enquiry textarea {
	background: var(--ihr-paper);
	border: 1.5px solid var(--ihr-line-strong);
	border-radius: 2px;
	box-sizing: border-box;
	color: var(--ihr-ink);
	font: inherit;
	font-size: 1.0625rem;
	max-width: 100%;
	min-height: 3rem;
	padding: 0.625rem 0.75rem;
	width: 100%;
}

.ihr-enquiry textarea {
	line-height: 1.5;
	min-height: 9rem;
	resize: vertical;
}

.ihr-enquiry input:focus-visible,
.ihr-enquiry select:focus-visible,
.ihr-enquiry textarea:focus-visible {
	border-color: var(--ihr-ink);
	outline: var(--ihr-focus);
	outline-offset: 2px;
}

.ihr-enquiry__field--error input,
.ihr-enquiry__field--error select,
.ihr-enquiry__field--error textarea {
	border-color: var(--wp--preset--color--error);
	border-width: 2px;
}

.ihr-enquiry__error {
	color: var(--wp--preset--color--error);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	margin: 0;
}

.ihr-enquiry__error::before {
	content: "\25B2\00a0";
	font-size: 0.75em;
}

.ihr-enquiry__actions .wp-element-button {
	cursor: pointer;
}

.ihr-enquiry__notice {
	border-left: 4px solid currentcolor;
	margin-bottom: 1.5rem;
	padding: 1rem 1.25rem;
}

.ihr-enquiry__notice > * {
	margin: 0;
}

.ihr-enquiry__notice > * + * {
	margin-top: 0.5rem;
}

.ihr-enquiry__notice-title {
	font-weight: 600;
}

.ihr-enquiry__notice--success {
	background: var(--wp--preset--color--success-bg);
	color: var(--wp--preset--color--success);
}

.ihr-enquiry__notice--error {
	background: var(--wp--preset--color--error-bg);
	color: var(--wp--preset--color--error);
}

.ihr-enquiry__notice ul {
	margin: 0.5rem 0 0;
	padding-left: 1.25rem;
}

.ihr-enquiry__notice a {
	color: inherit;
}

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

/* ---------- About: intro with photograph ---------- */

.ihr-page-intro__plate {
	margin-top: 2.25rem;
}

.ihr-plate--about img {
	object-position: 50% 40%;
}

@media (min-width: 782px) {
	.ihr-page-intro__grid {
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}

	.ihr-page-intro__text {
		grid-column: 1 / 8;
	}

	.ihr-page-intro__plate {
		align-self: start;
		grid-column: 8 / 13;
		margin-top: 0;
	}
}

/* ---------- Client logos (Home: six in a row; About: full set) ---------- */

.ihr-clients-heading {
	margin: 0 0 1.75rem;
}

.ihr-clients {
	border-left: 1px solid var(--ihr-line);
	border-top: 1px solid var(--ihr-line);
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

/* Each supplied logo, unaltered, centred in an equal hairline cell. */
.ihr-clients > .ihr-client {
	align-items: center;
	aspect-ratio: 3 / 2;
	background: var(--ihr-paper);
	border-bottom: 1px solid var(--ihr-line);
	border-right: 1px solid var(--ihr-line);
	display: flex;
	justify-content: center;
	margin: 0;
	padding: 0.875rem;
}

.ihr-clients > .ihr-client img {
	height: auto;
	max-height: 4rem;
	max-width: 85%;
	object-fit: contain;
	width: auto;
}

@media (min-width: 600px) {
	.ihr-clients {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.ihr-clients > .ihr-client {
		padding: 1.25rem;
	}

	.ihr-clients > .ihr-client img {
		max-height: 4.5rem;
	}
}

@media (min-width: 1024px) {
	.ihr-clients--six {
		grid-template-columns: repeat(6, minmax(0, 1fr));
	}

	.ihr-clients-layout {
		column-gap: 1.5rem;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}


	.ihr-clients-layout > .ihr-clients {
		grid-column: 5 / 13;
		margin-top: 0;
	}

	.ihr-clients--all > .ihr-client {
		aspect-ratio: 2 / 1;
	}
}

/* Selected Clientele (About): the heading with IHR-IMG-004 beneath it, the
   logos, then the industries as a plain list in three columns that read
   top to bottom, column by column, in IHR's order. */
.ihr-clients-aside > * {
	margin-block: 0;
}

.ihr-clients-image {
	margin: 0 0 1.75rem !important;
	max-width: 32rem;
}

.ihr-industries {
	margin-top: 2.5rem;
}

.ihr-industries > * {
	margin-block: 0;
}

.ihr-industries__title {
	color: var(--ihr-olive-text);
	font-size: var(--wp--preset--font-size--h4);
	margin-bottom: 0.75rem !important;
}

.ihr-industries__list {
	border-bottom: 1px solid var(--ihr-line);
	column-gap: 1.5rem;
	list-style: none;
	margin: 0;
	padding: 0;
}

.ihr-industries__list li {
	border-top: 1px solid var(--ihr-line);
	break-inside: avoid;
	margin: 0;
	padding-block: 0.5rem;
}

@media (min-width: 600px) {
	.ihr-industries__list { columns: 2; }
}

@media (min-width: 1024px) {
	.ihr-industries__list { columns: 3; }

	.ihr-clients-layout > .ihr-clients-aside {
		grid-column: 1 / 5;
		grid-row: 1 / span 2;
		padding-right: 1rem;
	}

	.ihr-clients-layout > .ihr-clients,
	.ihr-clients-layout > .ihr-industries {
		grid-column: 5 / 13;
	}

	.ihr-clients-image {
		margin-bottom: 0 !important;
	}
}

/* ---------- Contact: office, post and hours (on ink) ---------- */

/* On phones the channel list's last hairline already separates the two. */
.ihr-visit {
	display: grid;
	gap: 1.75rem;
	margin-top: 2rem;
}

.ihr-visit > .ihr-visit__item {
	margin: 0;
}

.ihr-visit__item > * {
	margin-block: 0;
}

.ihr-visit__item p {
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.6;
}

.ihr-visit .ihr-visit__label {
	color: var(--ihr-on-ink-muted);
	font: 600 0.9375rem/1.4 var(--ihr-serif);
	letter-spacing: 0;
	margin-bottom: 0.625rem;
}

.ihr-visit__link {
	margin-top: 0.625rem !important;
}

@media (min-width: 782px) {
	.ihr-visit {
		border-top: 1px solid rgb(255 255 255 / 0.28);
		column-gap: 1.5rem;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		margin-top: 4rem;
		padding-top: 2rem;
	}
}

/* Footer contact values (an address is longer than a label's line). */
.ihr-footer__channels li > :last-child {
	flex: 1 1 0;
	min-width: 0;
}

/* ---------- Spacing rhythm (client review, 15 October 2026) ----------
   One principle for every page except Home ("Home - no changes"): tighter
   section spacing, and two adjoining sections on the same white ground do
   not stack both of their paddings. Bands and the dark passage keep their
   own padding so their colour still reads as a block. */
body:not(.home) {
	--ihr-section: 3.25rem;
	--ihr-section-tight: 2.25rem;
}

@media (min-width: 782px) {
	body:not(.home) {
		/* Desktop rhythm matched to the Jobs page (owner review, 15 October
		   2026): about 56px around a section, 40px around a tight one. */
		--ihr-section: 3.5rem;
		--ihr-section-tight: 2.5rem;
	}
}

/* Sections meet edge to edge, as on the Jobs page: WordPress's 24px block
   gap between them would otherwise add a strip of white to every join. */
body:not(.home) .wp-block-post-content > * + * {
	margin-block-start: 0;
}

body:not(.home) :is(.ihr-section, .ihr-section--tight):not(.ihr-band, .ihr-on-ink) + :is(.ihr-section, .ihr-section--tight):not(.ihr-band, .ihr-on-ink) {
	margin-block-start: 0;
	padding-top: 0;
}

body:not(.home) .ihr-page-intro {
	padding-block: 2rem 2.25rem;
}

@media (min-width: 782px) {
	body:not(.home) .ihr-page-intro {
		padding-block: 2.5rem 2.25rem;
	}
}

/* A page that opens with a band or the dark passage (Contact) meets the
   header directly, without the white strip of the usual gap. */
.wp-site-blocks > main:has(> .wp-block-post-content > :is(.ihr-band, .ihr-on-ink):first-child) {
	margin-block-start: 0;
}

/* About: the values follow mission and vision more closely, and the D.I.C.E.
   rows sit nearer their introduction. */
body:not(.home) .ihr-values-intro {
	margin-bottom: 1.5rem;
}

@media (min-width: 782px) {
	body:not(.home) .ihr-values-intro {
		margin-bottom: 2rem;
	}
}

/* Insights: the article list sits close under its title and line. */
.blog .ihr-page-intro {
	padding-bottom: 1rem;
}

.blog .ihr-posts.ihr-section--tight {
	padding-top: 0.75rem;
}

@media (min-width: 782px) {
	.blog .ihr-page-intro {
		padding-bottom: 1rem;
	}

	.blog .ihr-posts.ihr-section--tight {
		padding-top: 0.5rem;
	}
}

/* Insights: the list follows its title directly (no block gap between). */
.blog main > .ihr-page-intro + * {
	margin-block-start: 0;
}

/* Contact: the dark passage and the two signposts are proportioned to their
   words (the sentences read at body size, not small). */
body:not(.home) .ihr-signpost .ihr-muted {
	font-size: var(--wp--preset--font-size--medium);
}

body:not(.home) .ihr-on-ink.ihr-section {
	padding-block: 3rem 2.5rem;
}

@media (min-width: 782px) {
	body:not(.home) .ihr-on-ink.ihr-section {
		padding-block: 3rem 2.5rem;
	}

	/* Signposts: the sentence starts level with its heading. */
	body:not(.home) .ihr-signpost .ihr-muted {
		margin-top: 0;
	}

	/* Owner, 15 October 2026: closer still. The two columns carry no block
	   gap (the right one sat 24px low), the signpost bands are 28px top and
	   bottom, and the Email / Call / Follow rows are 12px with a tighter
	   line. */
	body:not(.home) .ihr-signpost > * {
		margin-block: 0;
	}

	body:not(.home) .ihr-section--tight:has(> .ihr-signpost) {
		padding-block: 1.75rem;
	}

	body:not(.home) .ihr-chan li {
		padding-block: 0.75rem;
	}

	body:not(.home) .ihr-chan a {
		line-height: 1.3;
	}
}

/* Home, desktop (owner, 15 October 2026: "tighten the homepage too").
   The hero and the split passage ("We translate…", the tinted band) keep
   their proportions; the other sections follow the inner-page rhythm, and
   Talk to Us and the vacancies signpost match Contact. */
@media (min-width: 782px) {
	.home .wp-block-post-content > * + * {
		margin-block-start: 0;
	}

	.home .ihr-section:not(.ihr-band):not(.ihr-on-ink) {
		padding-block: 3.5rem;
	}

	.home .ihr-on-ink.ihr-section {
		padding-block: 3rem 2.5rem;
	}

	.home .ihr-section--tight {
		padding-block: 2.5rem;
	}

	.home .ihr-ledger__row {
		align-items: center;
		padding-block: 1.5rem 1.625rem;
	}

	/* No summary (client review, 15 October 2026): the number and title sit
	   level with the middle of the services list. */
	.home .ihr-ledger__row > .ihr-index {
		padding-top: 0;
	}

	.home .ihr-ledger__row h3 {
		margin: 0;
	}

	.home .ihr-svc > li {
		margin-block-start: 0;
		padding-block: 0.5rem 0.5625rem;
	}

	.home .ihr-svc > li:first-child {
		padding-top: 0;
	}

	.home .ihr-ledger-more {
		margin-top: 1.5rem;
	}

	.home .ihr-chan li {
		padding-block: 0.75rem;
	}

	.home .ihr-chan a {
		line-height: 1.3;
	}

	.home .ihr-signpost > * {
		margin-block: 0;
	}
}

/* A page that ends on a tinted band meets the footer rule directly, with no
   white strip between them. */
body:not(.home):has(.wp-block-post-content > .ihr-band:last-child) footer.wp-block-template-part {
	margin-block-start: 0;
}

/* ---------- Motion and interaction (G3-MOTION-001) ----------
   Restrained by design: short durations, movements of 16px or less, one
   easing curve. CSS only, no script and no library. Nothing is ever hidden
   waiting for a script:
   - page-load entrances are ordinary CSS animations that always finish;
   - scroll reveals use CSS scroll-driven animations with no backwards fill,
     so an element is untouched until it starts to enter the viewport, and
     browsers without support simply show the page as it is;
   - all movement sits inside prefers-reduced-motion: no-preference, and the
     reduced-motion block below also shortens colour transitions.
   Only opacity and transform are animated (no layout shift). */

:root {
	--ihr-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
	--ihr-t-fast: 150ms;
	--ihr-t: 220ms;
}

/* Interaction feedback (colour and underline changes). */
:where(.wp-site-blocks) a:where(:not(.wp-element-button)) {
	transition: color var(--ihr-t-fast) var(--ihr-ease), text-decoration-color var(--ihr-t-fast) var(--ihr-ease), text-decoration-thickness var(--ihr-t-fast) var(--ihr-ease), text-underline-offset var(--ihr-t) var(--ihr-ease);
}

.wp-block-button__link,
.wp-element-button,
.ihr-nav .wp-block-navigation__responsive-container-open,
.ihr-nav .wp-block-navigation__responsive-container-close {
	transition: background-color var(--ihr-t) var(--ihr-ease), border-color var(--ihr-t) var(--ihr-ease), color var(--ihr-t) var(--ihr-ease), text-decoration-color var(--ihr-t) var(--ihr-ease), text-underline-offset var(--ihr-t) var(--ihr-ease), transform var(--ihr-t-fast) var(--ihr-ease);
}

/* Secondary text links draw their underline in on hover. */
.wp-block-button.is-style-ihr-text-link > .wp-block-button__link:hover,
.ihr-link-strong a:hover,
.ihr-nav .ihr-nav-cta > .wp-block-navigation-item__content:hover {
	text-underline-offset: 3px;
}

/* Underlines that appear on hover fade in rather than switching on. */
.ihr-svc a,
.ihr-footer a {
	text-decoration: underline;
	text-decoration-color: transparent;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.25em;
}

.ihr-svc a:hover {
	text-decoration-color: var(--ihr-action);
	text-decoration-thickness: 2px;
}

/* Menu buttons (phones and tablets). */
.ihr-nav .wp-block-navigation__responsive-container-open:hover,
.ihr-nav .wp-block-navigation__responsive-container-close:hover {
	background: var(--ihr-band);
}

/* Desktop menu: an Action rule draws in under the hovered or focused item;
   the current item keeps its fixed rule. */
@media (min-width: 1024px) {
	.ihr-nav .wp-block-navigation-item:not(.ihr-nav-cta) > .wp-block-navigation-item__content {
		position: relative;
	}

	.ihr-nav .wp-block-navigation-item:not(.ihr-nav-cta) > .wp-block-navigation-item__content::after {
		background: var(--ihr-action);
		bottom: 0;
		content: "";
		height: 2px;
		left: 0;
		position: absolute;
		right: 0;
		transform: scaleX(0);
		transform-origin: left center;
		transition: transform var(--ihr-t) var(--ihr-ease);
	}

	.ihr-nav .wp-block-navigation-item:not(.ihr-nav-cta) > .wp-block-navigation-item__content:hover::after,
	.ihr-nav .wp-block-navigation-item:not(.ihr-nav-cta) > .wp-block-navigation-item__content:focus-visible::after {
		transform: scaleX(1);
	}

	.ihr-nav .current-menu-item > .wp-block-navigation-item__content::after,
	.ihr-nav .current-menu-ancestor > .wp-block-navigation-item__content::after {
		display: none;
	}
}

@media (prefers-reduced-motion: no-preference) {
	/* Smooth in-page jumps (Privacy contents, Contact anchors), but not for
	   find-in-page: only while focus is inside the page. */
	html:focus-within {
		scroll-behavior: smooth;
	}

	/* Pressed buttons settle by a pixel. */
	.wp-block-button:not(.is-style-ihr-text-link) > .wp-block-button__link:active,
	.wp-element-button:active,
	.ihr-nav .wp-block-navigation__responsive-container-open:active,
	.ihr-nav .wp-block-navigation__responsive-container-close:active {
		transform: translateY(1px);
	}

	/* Phone and tablet menu: the sheet fades in, its items rise in turn.
	   (Opacity only on the sheet: a transform would re-anchor its fixed
	   Close button. Closing stays instant, as WordPress handles it.) */
	@media (max-width: 1023px) {
		.ihr-nav .wp-block-navigation__responsive-container.is-menu-open {
			animation: ihr-fade-in var(--ihr-t) var(--ihr-ease) both;
		}

		.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item {
			animation: ihr-rise 320ms var(--ihr-ease) both;
		}

		.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(2) { animation-delay: 30ms; }
		.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(3) { animation-delay: 60ms; }
		.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(4) { animation-delay: 90ms; }
		.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(5) { animation-delay: 120ms; }
		.ihr-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(n+6) { animation-delay: 150ms; }
	}

	/* Page-load entrance: the opening statement of each page. */
	.ihr-hero__grid > .ihr-hero__text > *,
	.ihr-page-intro :is(h1, .ihr-lead, .ihr-reading, .ihr-policy__meta, .ihr-post-meta),
	.wp-block-post-content > .ihr-on-ink:first-child .ihr-talk__text > *,
	.ihr-page-head__title,
	.ihr-page-head__lead {
		animation: ihr-rise 600ms var(--ihr-ease) both;
	}

	.ihr-hero__grid > .ihr-hero__text > :nth-child(2),
	.ihr-page-intro :is(.ihr-lead, .ihr-policy__meta, .ihr-post-meta),
	.wp-block-post-content > .ihr-on-ink:first-child .ihr-talk__text > :nth-child(2),
	.ihr-page-head__lead {
		animation-delay: 70ms;
	}

	.ihr-hero__grid > .ihr-hero__text > :nth-child(4),
	.ihr-page-intro .ihr-reading {
		animation-delay: 140ms;
	}

	.ihr-hero__grid > .ihr-hero__text > :nth-child(5) {
		animation-delay: 210ms;
	}

	/* The hero rule draws across instead of rising. */
	.ihr-hero__grid > .ihr-hero__text > .ihr-rule {
		animation: ihr-draw 700ms var(--ihr-ease) 100ms both;
		transform-origin: left center;
	}

	/* Opening photographs settle into their frame (the plate clips them, so
	   nothing moves outside it and the image is never transparent). */
	.ihr-hero__plate .ihr-plate img,
	.ihr-page-intro__plate .ihr-plate img {
		animation: ihr-settle 1200ms var(--ihr-ease) both;
	}
}

/* Scroll reveals: selected editorial passages, as they come into view. */
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.ihr-intro,
		.ihr-ledger__row,
		.ihr-split__plate,
		.ihr-split__body,
		.ihr-clients-heading,
		.ihr-clients > .ihr-client img,
		.wp-block-post-content > :not(:first-child) .ihr-talk,
		.ihr-signpost,
		.ihr-pair__item,
		.ihr-values-intro,
		.ihr-value,
		.ihr-team-heading,
		.ihr-person,
		.ihr-cluster,
		.ihr-svc-entry,
		.ihr-posts .wp-block-post {
			animation: ihr-rise linear forwards;
			animation-range: entry 0% entry calc(160px + var(--ihr-reveal-lag, 0px));
			animation-timeline: view();
			animation-timing-function: var(--ihr-ease);
		}

		/* Logos in a row arrive one after another: every reveal starts at the
		   viewport edge (so nothing is ever shown and then hidden again) and
		   later logos take a little longer to finish. */
		.ihr-clients--six > .ihr-client:nth-child(6n+2) img,
		.ihr-clients--all > .ihr-client:nth-child(3n+2) img { --ihr-reveal-lag: 30px; }
		.ihr-clients--six > .ihr-client:nth-child(6n+3) img,
		.ihr-clients--all > .ihr-client:nth-child(3n+3) img { --ihr-reveal-lag: 60px; }
		.ihr-clients--six > .ihr-client:nth-child(6n+4) img { --ihr-reveal-lag: 90px; }
		.ihr-clients--six > .ihr-client:nth-child(6n+5) img { --ihr-reveal-lag: 120px; }
		.ihr-clients--six > .ihr-client:nth-child(6n) img { --ihr-reveal-lag: 150px; }

		/* The approach photograph also settles as it arrives. */
		.ihr-split__plate .ihr-plate img {
			animation: ihr-settle linear forwards;
			animation-range: entry 0% cover 40%;
			animation-timeline: view();
		}
	}
}

@keyframes ihr-rise {
	from {
		opacity: 0;
		transform: translateY(16px);
	}

	to {
		opacity: 1;
		transform: none;
	}
}

@keyframes ihr-fade-in {
	from {
		opacity: 0;
	}

	to {
		opacity: 1;
	}
}

@keyframes ihr-draw {
	from {
		transform: scaleX(0);
	}

	to {
		transform: scaleX(1);
	}
}

@keyframes ihr-settle {
	from {
		transform: scale(1.04);
	}

	to {
		transform: none;
	}
}

/* ---------- Reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
	}
}
