/* ==========================================================================
   IABA — global styles
   Colours, fonts and sizes are placeholders for the mock-up stage.
   Change the tokens in :root to rebrand the whole site.
   ========================================================================== */

:root {
	/* Palette — Irish flag only: green, white, orange (+ black text).
	   Light green tints are the only soft backgrounds; never add pinks, peaches or other hues. */
	--c-black: #000;
	--c-white: #fff;
	--c-green: #169b62;
	--c-orange: #ff883e;
	--c-green-tint: #e3f3ec;

	/* Type */
	--font-display: "Barlow Condensed", "Arial Narrow", sans-serif;
	--font-body: "Hanken Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;
	--fs-display: clamp(2.25rem, 1.6rem + 2.4vw, 3.5rem);
	--fs-h3: clamp(1.625rem, 1.35rem + 0.9vw, 2.1875rem);
	--fs-section: 1.875rem;
	--fs-lead: clamp(1.125rem, 1rem + 0.5vw, 1.375rem);

	/* Surfaces and motion: soft corners, hairlines instead of shadows, and natural easing */
	--radius: 14px;
	--radius-sm: 10px;
	--hairline: rgb(0 0 0 / 0.14);
	--ease: cubic-bezier(0.22, 0.61, 0.36, 1);
	--ease-soft: cubic-bezier(0.16, 1, 0.3, 1); /* long, gentle settle for cards and photos */
	--dur: 0.35s;

	/* Layout */
	--container: 1440px;
	--gutter: clamp(1.25rem, 4.45vw, 4rem);
	--space-section: clamp(4rem, 3rem + 3vw, 6rem);
}

/* Base
   ========================================================================== */

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

@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
}

/* Visitors who ask their device for less motion get no transitions or animations anywhere */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

body {
	margin: 0;
	font-family: var(--font-body);
	font-size: 1rem;
	line-height: 1.5;
	color: var(--c-black);
	background: var(--c-white);
	-webkit-font-smoothing: antialiased;
}

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

a {
	color: inherit;
}

/* Headings share their words out evenly over the lines (no single word left alone on the last line);
   paragraphs avoid a lone word at the end where the browser can */
h1,
h2,
h3,
h4 {
	margin: 0;
	font-family: var(--font-display);
	font-weight: 600;
	line-height: 1.15;
	text-wrap: balance;
}

p {
	margin: 0;
	text-wrap: pretty;
}

/* Zero specificity so component classes can set their own margins */
:where(ul[class]) {
	margin: 0;
	padding: 0;
	list-style: none;
}

button {
	font: inherit;
	color: inherit;
}

/* Anything with the hidden attribute stays hidden, even if a class gives it a display value */
[hidden] {
	display: none !important;
}

.container {
	width: 100%;
	max-width: var(--container);
	margin-inline: auto;
	padding-inline: var(--gutter);
}

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

.skip-link:focus {
	z-index: 1000;
	top: 1rem;
	left: 1rem;
	width: auto;
	height: auto;
	clip: auto;
	padding: 0.75rem 1rem;
	background: var(--c-black);
	color: var(--c-white);
}

/* Colour utilities — values of the blocks' colour pickers */
.has-bg-green { background-color: var(--c-green); }
.has-bg-white { background-color: var(--c-white); }
.has-bg-orange { background-color: var(--c-orange); }
.has-bg-green-tint { background-color: var(--c-green-tint); }

/* Shared components
   ========================================================================== */

/* Every button and pill behaves the same: a small lift under the pointer, a gentle press when clicked */
.contact-form__submit,
.newsletter__submit,
.cta__link,
.event-button,
.quick-links__link,
.company-invite__link,
.news-filters__button,
.company-filters__button,
.icon-btn,
.search-form__submit,
.hero__arrow,
.hero__dot {
	transition: transform var(--dur) var(--ease), background-color 0.2s var(--ease), border-color 0.2s var(--ease);
}

:is(.contact-form__submit,
.newsletter__submit,
.cta__link,
.event-button,
.quick-links__link,
.company-invite__link,
.news-filters__button,
.company-filters__button,
.icon-btn,
.search-form__submit,
.hero__arrow,
.hero__dot):hover {
	transform: translateY(-1px);
}

:is(.contact-form__submit,
.newsletter__submit,
.cta__link,
.event-button,
.quick-links__link,
.company-invite__link,
.news-filters__button,
.company-filters__button,
.icon-btn,
.search-form__submit,
.hero__arrow,
.hero__dot):active {
	transform: translateY(0) scale(0.97);
}

/* Focus ring: a soft green halo, never a hard box */
:focus-visible {
	outline: 2px solid var(--c-green);
	outline-offset: 3px;
	border-radius: 4px;
}

/* Animations (assets/js/animations.js): the page title waits for its entrance so it doesn't flash first.
   .iaba-motion is only set when motion is allowed, and removed again if GSAP can't load. */
.iaba-motion .page-header__body,
.iaba-motion .person-header__text,
.iaba-motion .article-hero__inner {
	visibility: hidden;
}

/* Printing: show everything, even sections that haven't scrolled into view (and animated in) yet */
@media print {
	.iaba-motion *,
	.iaba-motion .page-header__body,
	.iaba-motion .person-header__text,
	.iaba-motion .article-hero__inner {
		visibility: visible !important;
		opacity: 1 !important;
		transform: none !important;
		clip-path: none !important;
	}
}

/* Every IABA block is a page section with the same gap below it */
.iaba-block {
	margin-block: 0 var(--space-section);
}

/* Dark (black / photo) sections join straight onto the next section, like one continuous band.
   A plain white section that follows a dark one gets its breathing space back on top. */
.iaba-block.is-dark {
	margin-bottom: 0;
}

.iaba-block.is-dark + .iaba-block:not(.is-dark):not([class*="has-bg-"]) {
	margin-top: var(--space-section);
}

/* A coloured band that ends the page (e.g. a green Call to Action) joins straight onto the footer's newsletter band */
.site-main > .iaba-block[class*="has-bg-"]:last-child {
	margin-bottom: 0;
}

/* Two sections of different colours in a row join up (no thin white stripe between, e.g. a light-green quote
   straight onto a green Call to Action); two of the same colour keep the white gap so they stay apart */
.iaba-block.has-bg-green:has(+ .iaba-block:is(.has-bg-green-tint, .has-bg-orange, .is-dark)),
.iaba-block.has-bg-green-tint:has(+ .iaba-block:is(.has-bg-green, .has-bg-orange, .is-dark)),
.iaba-block.has-bg-orange:has(+ .iaba-block:is(.has-bg-green, .has-bg-green-tint, .is-dark)) {
	margin-bottom: 0;
}

.is-dark a {
	color: inherit;
}

.arrow-link {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	font-weight: 600;
	text-decoration: none;
}

.arrow-link .icon {
	flex: none;
	width: 1.5rem;
	height: 0.875rem;
	transition: transform 0.2s ease;
}

.arrow-link__label {
	padding-bottom: 2px;
	border-bottom: 2px solid transparent;
}

.arrow-link:hover .arrow-link__label {
	border-color: currentColor;
}

.arrow-link:hover .icon {
	transform: translateX(4px);
}

.section-head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem 2rem;
	margin-bottom: 3rem;
}

.section-head__title {
	font-size: var(--fs-section);
}

.section-head__link .icon {
	color: var(--c-green);
}

.img-placeholder {
	background: repeating-linear-gradient(45deg, var(--c-green-tint) 0 12px, var(--c-white) 12px 24px);
}

.block-empty {
	padding: 2rem;
	border: 2px dashed var(--c-green);
	font-weight: 600;
	text-align: center;
}

/* Section heading with a thin rule above (listing sections) */
.section-head--ruled {
	padding-top: 1.5rem;
	border-top: 1px solid var(--hairline);
}

/* Cards — shared by the Card Grid block, the News list, the events gallery, "More news" and "More events".
   IABA style: photo with an orange type label (and a desk calendar for events), white body in a thin
   light-green frame with a green line at the bottom; on hover the card lifts, the line turns orange
   and the photo zooms a touch.
   ========================================================================== */

.card-grid__cards {
	display: grid;
	grid-template-columns: repeat(var(--cols, 4), minmax(0, 1fr));
	gap: 2.5rem 2rem;
}

.post-card {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border-bottom: 4px solid var(--c-green);
	border-radius: var(--radius);
	background: var(--c-white);
	box-shadow: inset 0 0 0 1px var(--c-green-tint); /* thin frame, no shadow */
	transition: transform 0.6s var(--ease-soft), border-color 0.3s var(--ease);
}

.post-card--linked:hover,
.post-card--linked:focus-within {
	transform: translateY(-3px);
	border-bottom-color: var(--c-orange);
}

/* A slight press when tapped or clicked */
.post-card--linked:active {
	transform: scale(0.985);
	transition-duration: 0.15s;
}

.post-card__media {
	position: relative;
	aspect-ratio: 3 / 2;
	overflow: hidden;
}

.post-card__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1.2s var(--ease-soft);
}

.post-card--linked:hover .post-card__image {
	transform: scale(1.03);
}

/* Type label: orange pill on the photo */
.post-card__label {
	position: absolute;
	top: 1rem;
	left: 1rem;
	z-index: 1;
	padding: 0.3rem 0.75rem;
	border-radius: 999px;
	background: var(--c-orange);
	color: var(--c-black);
	font-size: 0.8125rem;
	font-weight: 700;
	line-height: 1.2;
}

/* Desk calendar — the event date on cards, event rows, the event page and in the newsletter.
   A white page with two green binder rings, the month on an orange strip, the day in big type and the
   weekday (or the year, for past events) underneath; a green edge below hints at the pages beneath. */
.cal {
	position: relative;
	display: inline-flex;
	flex-direction: column;
	min-width: 5rem;
	border-radius: 0.375rem;
	background: var(--c-white);
	color: var(--c-black);
	line-height: 1;
	text-align: center;
	box-shadow: 0 4px 0 -1px var(--c-white), 0 4px 0 0 var(--c-green);
	transition: rotate 0.3s ease;
}

.cal::before,
.cal::after {
	content: "";
	position: absolute;
	top: -0.5rem;
	z-index: 1;
	width: 0.5rem;
	height: 1.125rem;
	border: 2.5px solid var(--c-green);
	border-radius: 999px;
	background: var(--c-white);
}

.cal::before { left: 22%; }
.cal::after { right: 22%; }

.cal__month {
	padding: 0.6875rem 0.5rem 0.4375rem;
	border-radius: 0.375rem 0.375rem 0 0;
	background: var(--c-orange);
	font-size: 0.8125rem;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.cal__day {
	padding: 0.375rem 0.625rem 0;
	font-family: var(--font-display);
	font-size: 2.375rem;
	font-weight: 700;
}

.cal__foot {
	padding: 0.25rem 0.5rem 0.625rem;
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	white-space: nowrap;
}

/* Bigger page for the event rows and the event page */
.cal--lg {
	min-width: 6.5rem;
}

.cal--lg .cal__month { font-size: 0.9375rem; }
.cal--lg .cal__day { font-size: 3.25rem; }
.cal--lg .cal__foot { font-size: 0.75rem; }

/* Small page, no weekday (newsletter preview) */
.cal--mini {
	min-width: 3.25rem;
	border-radius: 0.25rem;
	box-shadow: 0 3px 0 -1px var(--c-white), 0 3px 0 0 var(--c-green);
}

.cal--mini::before,
.cal--mini::after {
	top: -0.3125rem;
	width: 0.3125rem;
	height: 0.6875rem;
	border-width: 1.5px;
}

.cal--mini .cal__month {
	padding: 0.5rem 0.25rem 0.3125rem;
	border-radius: 0.25rem 0.25rem 0 0;
	font-size: 0.625rem;
}

.cal--mini .cal__day {
	padding: 0.25rem 0.25rem 0.375rem;
	font-size: 1.625rem;
}

.cal--mini .cal__foot {
	display: none;
}

/* Events: the calendar sits top-left on the photo, so the label moves to the right */
.post-card__badge {
	position: absolute;
	top: 1rem;
	left: 1rem;
	z-index: 1;
}

.post-card--event .post-card__label {
	right: 1rem;
	left: auto;
}

.post-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 1.5rem 1.5rem 1.75rem;
}

/* No photo: the label sits in the body, above the title */
.post-card--text .post-card__label {
	position: static;
	align-self: flex-start;
	margin-bottom: 0.875rem;
}

.post-card__title {
	font-size: clamp(1.375rem, 1.2rem + 0.5vw, 1.625rem);
	line-height: 1.2;
}

.post-card__link {
	text-decoration: none;
}

/* The title link covers the whole card */
.post-card__link::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 2;
}

.post-card__link:focus-visible {
	outline: none;
}

.post-card__link:focus-visible::after {
	outline: 3px solid var(--c-green);
	outline-offset: 3px;
}

.post-card__excerpt {
	display: -webkit-box;
	margin-top: 0.75rem;
	overflow: hidden;
	font-size: 1rem;
	line-height: 1.6;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 4;
}

/* Meta: date / reading time / time / place, with small green icons — always one item per line and
   pushed to the bottom of the card, so they line up across a row whatever the text above */
.post-card__meta {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	margin: auto 0 0;
	padding: 1.25rem 0 0;
	font-size: 0.9375rem;
	font-weight: 600;
	list-style: none;
}

.post-card__meta li {
	display: flex;
	align-items: center;
	gap: 0.4rem;
}

.post-card__meta .icon {
	flex: none;
	width: 1.05rem;
	height: 1.05rem;
	color: var(--c-green);
}

.post-card__more {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	margin-top: auto;
	padding-top: 1.25rem;
	font-size: 0.9375rem;
	font-weight: 700;
}

/* With meta above it, the link follows the meta (the meta already sits at the bottom) */
.post-card__meta + .post-card__more {
	margin-top: 0;
}

/* The lead story has room for the meta side by side */
.post-card--featured .post-card__meta {
	flex-direction: row;
	flex-wrap: wrap;
	gap: 0.5rem 1.5rem;
	margin-top: 1.25rem;
	padding-top: 0;
}

.post-card__more .icon {
	width: 1.5rem;
	height: 0.875rem;
	color: var(--c-green);
	transition: transform 0.6s var(--ease-soft), color 0.25s ease;
}

.post-card--linked:hover .post-card__more .icon {
	color: var(--c-orange);
	transform: translateX(3px);
}

/* Topic chips (article pages) */
.post-card__tags {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 1rem 0 0;
	padding: 0;
	list-style: none;
}

.post-card__tag {
	padding: 0.25rem 0.75rem;
	border: 1px solid var(--c-green);
	border-radius: 999px;
	font-size: 0.875rem;
	line-height: 1.25rem;
}

/* Featured (lead story): photo left, text right, bigger title */
.post-card--featured {
	display: grid;
	grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
}

.post-card--featured .post-card__media {
	aspect-ratio: auto;
	min-height: 22rem;
}

.post-card--featured .post-card__image {
	position: absolute;
	inset: 0;
}

.post-card--featured .post-card__body {
	justify-content: center;
	padding: clamp(2rem, 1.5rem + 2vw, 3.5rem);
}

.post-card--featured .post-card__title {
	font-size: clamp(1.875rem, 1.4rem + 1.4vw, 2.75rem);
	line-height: 1.1;
}

.post-card--featured .post-card__excerpt {
	margin-top: 1.25rem;
	font-size: 1.125rem;
	-webkit-line-clamp: 5;
}

.post-card--featured .post-card__more {
	align-self: flex-start;
	margin-top: 1.75rem;
	padding: 0.875rem 1.5rem;
	border-radius: 999px;
	background: var(--c-orange);
	transition: background-color 0.25s ease;
}

.post-card--featured .post-card__more .icon {
	color: var(--c-black);
}

.post-card--featured.post-card--linked:hover .post-card__more {
	background: var(--c-green);
}

.post-card--featured.post-card--linked:hover .post-card__more .icon {
	color: var(--c-black);
}

.card-grid__featured {
	margin-bottom: 2.5rem;
}

@media (max-width: 1023.98px) {
	.card-grid__cards {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.post-card--featured {
		grid-template-columns: minmax(0, 1fr);
	}

	.post-card--featured .post-card__media {
		min-height: 0;
		aspect-ratio: 16 / 9;
	}
}

/* Tablets (two cards a row): an odd card left over at the end takes the full row, photo beside the text,
   instead of sitting alone with an empty half next to it */
@media (min-width: 640px) and (max-width: 1023.98px) {
	.card-grid__cards > .post-card:last-child:nth-child(odd) {
		grid-column: 1 / -1;
		flex-direction: row;
	}

	.card-grid__cards > .post-card:last-child:nth-child(odd) .post-card__media {
		flex: 0 0 50%;
		aspect-ratio: auto;
		min-height: 16rem;
	}

	.card-grid__cards > .post-card:last-child:nth-child(odd) .post-card__image {
		position: absolute;
		inset: 0;
	}
}

@media (max-width: 639.98px) {
	.card-grid__cards {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Person profile: Irish green panel with name + role, orange panel on the right with the photo
   (white photo frame between them, so the header reads green / white / orange like the flag) */
.person-header {
	background: linear-gradient(90deg, var(--c-green) 66.667%, var(--c-orange) 66.667%);
}

.person-header__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) min(19rem, 28vw);
	align-items: center;
	gap: 2rem;
	padding-block: clamp(3rem, 2rem + 4vw, 6rem);
}

.person-header__name {
	font-size: var(--fs-display);
	line-height: 1.1;
}

.person-header__role {
	margin-top: 1rem;
	font-size: 1rem;
}

.person-header__organisation {
	margin-top: 0.25rem;
	font-weight: 600;
}

.person-header__linkedin {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin-top: 1.25rem;
	font-weight: 600;
	text-decoration: none;
}

.person-header__linkedin .icon {
	width: 1.125rem;
	height: 1.125rem;
}

.person-header__linkedin:hover span {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.person-header__photo {
	aspect-ratio: 1;
	overflow: hidden;
	border: 6px solid var(--c-white);
	border-radius: var(--radius);
}

.person-header__image,
.person-header__photo .img-placeholder {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Tablets and phones: green only, everything centred, photo above the name */
@media (max-width: 1023.98px) {
	.person-header {
		background: var(--c-green);
	}

	.person-header__inner {
		grid-template-columns: minmax(0, 1fr);
		justify-items: center;
		gap: 1.5rem;
		text-align: center;
	}

	.person-header__photo {
		order: -1;
		width: clamp(10.75rem, 30vw, 13rem);
	}
}

/* Article hero (news articles, events — parts/article-hero.php): light-green text panel left, photo right,
   orange line underneath. The text lines up with the page container; on tablets and phones the photo goes on top. */
.article-hero {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	border-bottom: 6px solid var(--c-orange);
	background: var(--c-green-tint);
}

.article-hero__text {
	display: flex;
	align-items: center;
	padding-block: clamp(3rem, 2rem + 3vw, 5rem);
	padding-inline: max(var(--gutter), calc((100vw - var(--container)) / 2 + var(--gutter))) clamp(2rem, 1rem + 3vw, 4.5rem);
}

.article-hero--no-image {
	grid-template-columns: minmax(0, 1fr);
}

.article-hero--no-image .article-hero__inner {
	max-width: 56rem;
}

.article-hero__inner {
	width: 100%;
}

.article-hero .breadcrumbs {
	margin-bottom: 2rem;
}

.article-hero__label {
	display: inline-block;
	margin-bottom: 1.25rem;
	padding: 0.3rem 0.875rem;
	border-radius: 999px;
	background: var(--c-orange);
	font-size: 0.875rem;
	font-weight: 700;
}

.article-hero__title {
	font-size: clamp(2.25rem, 1.5rem + 2.6vw, 3.75rem);
	line-height: 1.06;
}

.article-hero__intro {
	max-width: 36rem;
	margin-top: 1.25rem;
	font-size: var(--fs-lead);
	line-height: 1.5;
}

.article-hero__date {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin-top: 1.5rem;
	font-weight: 700;
}

.article-hero__date .icon {
	width: 1.25rem;
	height: 1.25rem;
	color: var(--c-green);
}

.article-hero__media {
	position: relative;
	min-height: clamp(22rem, 38vw, 34rem);
	overflow: hidden;
	background: var(--c-green);
}

.article-hero__image {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (max-width: 1023.98px) {
	.article-hero {
		grid-template-columns: minmax(0, 1fr);
	}

	.article-hero__media {
		order: -1;
		min-height: 0;
		aspect-ratio: 16 / 9;
	}

	.article-hero__text {
		padding: 2.5rem var(--gutter) 3rem;
	}
}

.article-meta__inner {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 2rem;
	padding-top: 2rem;
}

/* The line above stops at the side margins, like every other line on the site */
.article-meta__inner::before {
	content: "";
	position: absolute;
	top: 0;
	right: var(--gutter);
	left: var(--gutter);
	border-top: 1px solid var(--hairline);
}

.article-meta__title {
	margin-bottom: 0.75rem;
	font-family: var(--font-body);
	font-size: 0.875rem;
	font-weight: 700;
}

.article-meta .post-card__tags {
	margin-top: 0;
}

/* Share buttons reuse the footer's round social icons, but sit on white: green circles, white icons */
.social-links--share {
	justify-self: auto;
}

.article-meta .social-links--share a {
	background: var(--c-green);
	color: var(--c-white);
}

.article-meta .social-links--share a:hover {
	background: var(--c-orange);
	color: var(--c-black);
}

.news-list__intro {
	margin: -1.5rem 0 2rem;
	font-size: 1.125rem;
}

/* Page numbers under listings */

.pagination {
	margin-top: 4rem;
}

.pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.25rem 0.5rem;
}

.pagination .page-numbers {
	display: grid;
	place-items: center;
	min-width: 2.5rem;
	height: 2.5rem;
	padding-inline: 0.5rem;
	font-weight: 600;
	text-decoration: none;
}

.pagination a.page-numbers:hover {
	background: var(--c-green-tint);
}

.pagination .page-numbers.current {
	border-radius: 50%;
	background: var(--c-green);
	color: var(--c-white);
}

/* Text column: WordPress's own blocks (paragraph, heading, list, quote…) placed between
   IABA sections sit in a narrow, centred reading column */
.site-main > :not(.iaba-block) {
	max-width: calc(55.5rem + 2 * var(--gutter));
	margin-inline: auto;
	padding-inline: var(--gutter);
}

.site-main > p,
.site-main > ul,
.site-main > ol,
.wp-block-paragraph,
.wp-block-list {
	margin-block: 0 1.5rem;
	font-size: 1.125rem;
	line-height: 1.8;
}

/* Lists written in the editor (articles, event stories) keep their bullets and numbers —
   the zero-specificity reset for classed lists above would otherwise remove them */
ul.wp-block-list {
	padding-left: 1.5rem;
	list-style: disc;
}

ol.wp-block-list {
	padding-left: 1.5rem;
	list-style: decimal;
}

.wp-block-list li + li {
	margin-top: 0.5rem;
}

/* Straight in a page (privacy policy, articles): the bullets stay inside the side margin */
.site-main > ul.wp-block-list,
.site-main > ol.wp-block-list {
	padding-left: calc(var(--gutter) + 1.5rem);
}

.wp-block-list li::marker {
	color: var(--c-green);
}

.site-main > h2,
.site-main > h3,
.wp-block-heading {
	margin-block: 2.5rem 1rem;
}

.site-main > h2,
h2.wp-block-heading {
	font-size: clamp(1.75rem, 1.4rem + 1.2vw, 2.25rem);
}

.site-main > h3,
h3.wp-block-heading {
	font-size: clamp(1.375rem, 1.2rem + 0.6vw, 1.625rem);
}

.site-main > :not(.iaba-block) a {
	text-decoration-color: var(--c-green);
	text-decoration-thickness: 2px;
	text-underline-offset: 3px;
}

/* Space between the last line of text and the next IABA section (or the footer, when text ends the page) */
.site-main > :not(.iaba-block) + .iaba-block {
	margin-top: calc(var(--space-section) - 1.5rem);
}

.site-main > :not(.iaba-block):last-child {
	margin-bottom: var(--space-section);
}

/* Text straight after a dark section (e.g. a Photo page header, which has no bottom margin) gets the
   usual section gap on top */
.site-main > .iaba-block.is-dark + :not(.iaba-block) {
	margin-top: var(--space-section);
}

/* Block editor: text blocks in the same reading column as the site */
.is-root-container > .wp-block:not([data-type^="iaba/"]):not(:has(> [data-type^="iaba/"])) {
	max-width: 55.5rem;
	margin-inline: auto;
}

/* …but the wrapper the pattern editor puts around the shared header and footer blocks stays full width */
.is-root-container > .wp-block:has(> [data-type^="iaba/"]) {
	max-width: none;
	margin-inline: 0;
}

/* Block editor: links and form controls inside block previews are not clickable
   (they would navigate the editor away or take typing) — they still work on the site */
.acf-block-preview a,
.acf-block-preview input,
.acf-block-preview select,
.acf-block-preview textarea,
.acf-block-preview button {
	pointer-events: none;
}

/* Block editor: shared footer — sign-up band sits directly on the green footer, as on the site.
   (The editor wraps blocks separately, so this keys off the editor containing the Site Footer block.) */
.is-root-container:has([data-type="iaba/site-footer"]) [data-type="iaba/cta"] .iaba-block,
.is-root-container:has([data-type="iaba/site-footer"]) [data-type="iaba/newsletter"] .iaba-block {
	margin-bottom: 0;
}

/* Block editor: let IABA blocks use the full canvas width */
.wp-block[data-type^="iaba/"] {
	max-width: none;
	margin-block: 0;
}

/* Header
   ========================================================================== */

.site-header {
	position: relative;
	z-index: 100;
}

.site-header__bar {
	position: relative;
	background: var(--c-white);
}

.site-header__inner {
	display: grid;
	grid-template-columns: 1fr auto;
	grid-template-areas:
		"logo utility"
		"nav  actions";
	align-items: center;
	gap: 2.5rem 2rem;
	padding-block: 1.75rem 1rem;
}

.site-logo {
	grid-area: logo;
	justify-self: start;
	display: inline-flex;
	text-decoration: none;
}

/* Logo lockup: symbol + two-line name (header and footer) */
.logo {
	--logo-mark: 2.5rem; /* the mark is about two-thirds the height of the two-line name, so the name leads */
	--logo-text: 1.625rem;
	display: inline-flex;
	align-items: center;
	gap: 1rem;
}

.logo__image {
	flex: none;
	width: auto;
	height: var(--logo-mark);
}

/* Irish tricolour mark, outlined so the white band shows on white and the green band on green */
.logo__flag {
	flex: none;
	display: flex;
	width: var(--logo-mark);
	height: var(--logo-mark);
	border: 2px solid var(--c-black);
}

.logo__flag span {
	flex: 1;
}

.logo__flag span:nth-child(1) { background: var(--c-green); }
.logo__flag span:nth-child(2) { background: var(--c-white); }
.logo__flag span:nth-child(3) { background: var(--c-orange); }

.logo__text {
	font-family: var(--font-body);
	font-size: var(--logo-text);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -0.01em;
}

.utility-nav {
	grid-area: utility;
	align-self: start;
}

/* List reset repeated here so the Header block's preview in the editor has no bullets either */
.utility-nav ul,
.main-nav__list,
.main-nav__utility {
	display: flex;
	gap: 1.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.utility-nav a,
.main-nav__list > li > a,
.main-nav__utility a {
	font-size: 1.125rem;
	font-weight: 600;
	text-decoration: none;
}

.utility-nav a:hover,
.main-nav a:hover,
.utility-nav .current-menu-item > a,
.main-nav .current-menu-item > a {
	text-decoration: underline;
	text-decoration-color: var(--c-orange);
	text-decoration-thickness: 3px;
	text-underline-offset: 6px;
}

.main-nav {
	grid-area: nav;
}

.main-nav__list {
	align-items: center;
	gap: 1.25rem 1.75rem;
}

.main-nav .menu-item {
	display: flex;
	align-items: center;
}

.site-header__actions {
	grid-area: actions;
	justify-self: end;
	display: flex;
	gap: 0.75rem;
}

.icon-btn {
	display: inline-grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	border: 0;
	border-radius: 50%;
	background: var(--c-green);
	color: var(--c-white);
	cursor: pointer;
}

.icon-btn .icon {
	width: 1.25rem;
	height: 1.25rem;
}

.menu-toggle,
.menu-toggle__close,
.is-menu-open .menu-toggle__open {
	display: none;
}

.is-menu-open .menu-toggle__close {
	display: block;
}

/* Search: a calm, frosted panel opened by the header search button, like Spotlight on a Mac.
   The page shows softly through; the box, the close button and a few popular pages sit in one centred column. */
.search-overlay {
	position: fixed;
	inset: var(--wp-admin--admin-bar--height, 0px) 0 0;
	z-index: 1000;
	overflow-y: auto;
	padding-block: clamp(2rem, 12vh, 9rem) 3rem;
	background: rgb(227 243 236 / 0.9);
	-webkit-backdrop-filter: saturate(160%) blur(24px);
	backdrop-filter: saturate(160%) blur(24px);
	animation: search-in 0.35s var(--ease-soft);
}

@keyframes search-in {
	from { opacity: 0; }
}

.search-overlay__inner {
	max-width: calc(48rem + 2 * var(--gutter));
	animation: search-rise 0.5s var(--ease-soft);
}

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

.search-overlay__top {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 1rem;
}

.search-overlay__label {
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.search-overlay__close {
	display: grid;
	flex: none;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--c-white);
	color: var(--c-black);
	cursor: pointer;
	transition: background-color 0.2s var(--ease), color 0.2s var(--ease);
}

.search-overlay__close:hover,
.search-overlay__close:focus-visible {
	background: var(--c-black);
	color: var(--c-white);
}

.search-overlay__close .icon {
	width: 1.125rem;
	height: 1.125rem;
}

/* The box: a white rounded field with the green search button inside it */
.search-overlay .search-form {
	gap: 0.75rem;
	padding: 0.5rem 0.5rem 0.5rem 1.75rem;
	border: 2px solid transparent;
	border-radius: 999px;
	background: var(--c-white);
	transition: border-color 0.2s var(--ease);
}

.search-overlay .search-form:focus-within {
	border-color: var(--c-green);
	box-shadow: none;
}

.search-overlay .search-form__input {
	padding: 0;
	font-family: var(--font-body);
	font-size: clamp(1.25rem, 1rem + 1vw, 1.75rem);
	font-weight: 600;
	line-height: 1.4;
}

.search-overlay .search-form__input::placeholder {
	color: var(--c-black);
	opacity: 0.45;
}

.search-overlay .search-form__submit {
	width: clamp(3rem, 2.6rem + 1vw, 3.75rem);
	margin: 0;
}

.search-overlay__suggest {
	margin-top: 2.75rem;
}

.search-overlay .quick-links {
	margin-top: 1rem;
}

.search-overlay .quick-links__link {
	background: var(--c-white);
}

@media (prefers-reduced-motion: reduce) {
	.search-overlay,
	.search-overlay__inner {
		animation: none;
	}
}

/* Lock page scrolling behind the open search */
html.has-search-open {
	overflow: hidden;
}

.search-form {
	display: flex;
	align-items: center;
	gap: 1.5rem;
	border-bottom: 2px solid var(--c-black);
}

/* width: 100% stops the field's built-in minimum width (huge at this font size) pushing the button off small screens */
.search-form__input {
	flex: 1;
	width: 100%;
	min-width: 0;
	padding: 0 0 0.25em;
	border: 0;
	border-radius: 0;
	background: transparent;
	color: var(--c-black);
	font-family: var(--font-display);
	font-size: clamp(2.75rem, 1.5rem + 5vw, 6.5rem);
	font-weight: 700;
	line-height: 1.1;
	-webkit-appearance: none;
	appearance: none;
}

.search-form__input::placeholder {
	color: var(--c-black);
	opacity: 1;
}

.search-form__input:focus {
	outline: none;
}

/* The underline is the field — thicken it in green while typing */
.search-form:focus-within {
	border-bottom-color: var(--c-green);
	box-shadow: 0 2px 0 var(--c-green);
}

.search-form__input::-webkit-search-cancel-button {
	display: none;
}

.search-form__submit {
	flex: none;
	display: grid;
	place-items: center;
	width: clamp(3.5rem, 2.5rem + 3vw, 5.625rem);
	aspect-ratio: 1;
	margin-bottom: 0.5rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--c-green);
	color: var(--c-white);
	cursor: pointer;
	transition: transform 0.15s;
}

.search-form__submit:hover {
	transform: scale(1.05);
}

.search-form__submit .icon {
	width: 45%;
	height: 45%;
}

/* Compact bar once the page is scrolled past the header */
.site-header.is-compact .site-header__bar {
	position: fixed;
	top: var(--wp-admin--admin-bar--height, 0px);
	right: 0;
	left: 0;
	/* Frosted glass, like a Mac toolbar: the page shows faintly through (plain white where unsupported) */
	background: rgb(255 255 255 / 0.72);
	-webkit-backdrop-filter: saturate(180%) blur(20px);
	backdrop-filter: saturate(180%) blur(20px);
	box-shadow: 0 1px 0 var(--hairline); /* a hairline under the bar, no shadow */
	animation: header-in 0.25s var(--ease);
}

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
	.site-header.is-compact .site-header__bar {
		background: var(--c-white);
	}
}

@keyframes header-in {
	from { transform: translateY(-100%); }
}

@media (min-width: 1024px) {
	.main-nav__utility {
		display: none;
	}

	.site-header.is-compact .site-header__inner {
		grid-template-columns: auto 1fr auto;
		grid-template-areas: "logo nav actions";
		padding-block: 1rem;
	}

	.site-header.is-compact .utility-nav {
		display: none;
	}

	.site-header.is-compact .main-nav {
		justify-self: end;
	}

	.site-header.is-compact .logo {
		--logo-mark: 2rem;
		--logo-text: 1.25rem;
	}
}

/* Phones: a little less space around the logo so the name keeps its two lines next to the two buttons */
@media (max-width: 479.98px) {
	.site-header__inner {
		column-gap: 1rem;
	}

	.site-header__actions {
		gap: 0.5rem;
	}

	.site-header .site-logo .logo {
		--logo-mark: 1.625rem;
		--logo-text: 0.9375rem;
		gap: 0.625rem;
	}
}

/* Mobile header: logo + buttons, menu opens as a panel */
@media (max-width: 1023.98px) {
	.site-header__inner {
		grid-template-areas: "logo actions";
		padding-block: 1rem;
	}

	.site-logo .logo {
		--logo-mark: 1.875rem;
		--logo-text: 1.0625rem;
		gap: 0.75rem;
	}

	.utility-nav {
		display: none;
	}

	.menu-toggle {
		display: inline-grid;
	}

	.main-nav {
		display: none;
		position: absolute;
		top: 100%;
		right: 0;
		left: 0;
		max-height: calc(100vh - 5rem);
		overflow-y: auto;
		padding: 0.5rem var(--gutter) 2rem;
		border-top: 4px solid var(--c-green);
		background: var(--c-white);
		border-bottom: 1px solid var(--hairline);
	}

	.is-menu-open .main-nav {
		display: block;
	}

	.main-nav__list {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
	}

	.main-nav .menu-item {
		border-bottom: 1px solid var(--c-green-tint);
	}

	.main-nav__list > li > a {
		padding-block: 1rem;
		font-size: 1.25rem;
	}

	.main-nav__utility {
		flex-wrap: wrap;
		gap: 1rem 1.5rem;
		margin-top: 1.5rem;
	}
}

/* Footer
   ========================================================================== */

/* Shared footer: the sign-up band sits directly on top of the green footer (no section gap) */
.site-footer-area .iaba-block {
	margin-bottom: 0;
}

/* Green footer with a thin orange line on top (the orange accent, as under page headers) */
.site-footer {
	padding-block: 3.5rem 4rem;
	border-top: 6px solid var(--c-orange);
	background: var(--c-green);
}

.site-footer__top {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	align-items: start;
	gap: 2rem;
}

.site-footer__logo {
	grid-column: 1 / span 6;
	justify-self: start;
	display: inline-flex;
	text-decoration: none;
}

.site-footer__logo .logo {
	--logo-mark: 2.875rem;
	--logo-text: 1.875rem;
}

/* Tablets and phones: a slightly smaller footer logo, so the name keeps to two lines */
@media (max-width: 1023.98px) {
	.site-footer__logo .logo {
		--logo-mark: 2.5rem;
		--logo-text: 1.5rem;
	}
}

@media (max-width: 479.98px) {
	.site-footer__logo .logo {
		--logo-mark: 2.375rem;
		--logo-text: 1.375rem;
	}
}

/* On the green footer the name is white, and the flag gets a white outline to match */
.site-footer__logo .logo__text {
	color: var(--c-white);
}

.site-footer__logo .logo__flag {
	border-color: var(--c-white);
}

.footer-nav {
	grid-column: 7 / span 4;
}

.footer-nav__list {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
}

.footer-nav__list a {
	font-family: var(--font-display);
	font-size: var(--fs-display);
	font-weight: 600;
	line-height: 1.15;
	text-decoration: none;
}

/* Hover and current page: black text, orange underline — the same accent as the main menu
   (orange text would be hard to read on the green) */
.footer-nav__list a:hover,
.footer-nav__list a:focus-visible,
.footer-nav__list a.is-current {
	text-decoration: underline;
	text-decoration-color: var(--c-orange);
	text-decoration-thickness: 4px;
	text-underline-offset: 8px;
}

.footer-bottom-nav a:hover,
.footer-bottom-nav a:focus-visible,
.footer-bottom-nav a.is-current,
.site-footer__credits a:hover {
	text-decoration: underline;
	text-decoration-color: var(--c-orange);
	text-decoration-thickness: 2px;
	text-underline-offset: 4px;
}

.social-links {
	grid-column: 11 / span 2;
	justify-self: end;
	display: flex;
	gap: 0.5rem;
}

/* White circles with green icons on the green footer */
.social-links a {
	display: grid;
	place-items: center;
	width: 2rem;
	height: 2rem;
	border-radius: 50%;
	background: var(--c-white);
	color: var(--c-green);
	transition: background-color 0.15s, color 0.15s;
}

.social-links a:hover {
	background: var(--c-orange);
	color: var(--c-black);
}

.social-links .icon {
	width: 1rem;
	height: 1rem;
}

/* Badges: white marks on transparent PNGs, all the same height, right-aligned under the links.
   The list reset lives in this rule (not the shared one below) so it can't cancel the top margin. */
.site-footer__badges {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	align-items: center;
	gap: 1.5rem 3rem;
	margin: 4.5rem 0 0;
	padding: 0;
	list-style: none;
}

.site-footer__badges img {
	display: block;
	width: auto;
	max-width: 100%;
	height: 2.75rem;
}

/* Credits and legal links under a thin white divider */
.site-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 1rem 2rem;
	margin-top: 2.5rem;
	padding-top: 1.5rem;
	border-top: 1px solid rgb(255 255 255 / 0.45);
	font-size: 0.875rem;
	font-weight: 600;
}

/* List reset repeated for the block editor, whose own list styles outrank the global one */
.footer-bottom-nav ul,
.footer-nav__list,
.social-links {
	margin: 0;
	padding: 0;
	list-style: none;
}

.footer-bottom-nav ul {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1rem;
}

.footer-bottom-nav a {
	/* Taller tap area on phones without changing the layout */
	display: inline-block;
	margin-block: -0.625rem;
	padding-block: 0.625rem;
	text-decoration: none;
}

@media (max-width: 1023.98px) {
	.site-footer__top {
		grid-template-columns: minmax(0, 1fr);
	}

	.site-footer__logo,
	.footer-nav,
	.social-links {
		grid-column: 1 / -1;
		justify-self: start;
	}

	.site-footer__badges {
		justify-content: flex-start;
		margin-top: 3rem;
	}

	.site-footer__badges img {
		height: 2.25rem;
	}

	/* Touch screens: bigger social circles */
	.social-links {
		gap: 0.75rem;
	}

	.social-links a {
		width: 2.75rem;
		height: 2.75rem;
	}

	.social-links .icon {
		width: 1.25rem;
		height: 1.25rem;
	}
}

/* Tablets: logo and social icons on the left, the big links on the right; the three badges fit on one row */
@media (min-width: 640px) and (max-width: 1023.98px) {
	.site-footer__top {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		grid-template-rows: auto 1fr;
		row-gap: 1.5rem;
	}

	.site-footer__logo {
		grid-column: 1;
		grid-row: 1;
	}

	.social-links {
		grid-column: 1;
		grid-row: 2;
	}

	.footer-nav {
		grid-column: 2;
		grid-row: 1 / span 2;
	}

	.site-footer__badges {
		justify-content: space-between;
		gap: 1.5rem;
	}

	.site-footer__badges img {
		height: 2rem;
	}
}

/* Search results and "Page not found" (search.php, 404.php)
   ========================================================================== */

.search-page {
	padding-top: 0;
}

.search-page__inner {
	max-width: calc(52rem + 2 * var(--gutter));
}

.search-page__label {
	margin-bottom: 0.5rem;
	font-weight: 700;
}

/* A normal-sized search box here (the header's full-screen one uses huge type) */
.search-page .search-form {
	gap: 1rem;
}

.search-page .search-form__input {
	font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem);
}

.search-page .search-form__submit {
	width: 3.25rem;
}

.results-list {
	margin: 3rem 0 0;
	padding: 0;
	list-style: none;
}

.search-result {
	padding-block: 1.75rem;
	border-bottom: 1px solid var(--c-green-tint);
}

.search-result:first-child {
	padding-top: 0;
}

.search-result__type {
	display: inline-block;
	margin-bottom: 0.625rem;
	padding: 0.25rem 0.75rem;
	border-radius: 999px;
	background: var(--c-orange);
	font-size: 0.8125rem;
	font-weight: 700;
	line-height: 1.2;
}

.search-result__title {
	font-size: var(--fs-h3);
	line-height: 1.2;
}

.search-result__title a {
	text-decoration: none;
}

.search-result__title a:hover,
.search-result__title a:focus-visible {
	text-decoration: underline;
	text-decoration-color: var(--c-green);
	text-decoration-thickness: 2px;
	text-underline-offset: 4px;
}

.search-result__summary {
	margin-top: 0.5rem;
	font-size: 1.0625rem;
	line-height: 1.6;
}

.search-result__url {
	margin-top: 0.5rem;
	overflow-wrap: anywhere;
	font-size: 0.875rem;
	font-weight: 600;
}

.search-empty {
	margin-top: 3rem;
}

.search-empty__title {
	font-size: var(--fs-h3);
}

.search-empty p {
	margin-top: 0.75rem;
	font-size: 1.0625rem;
}

/* Links to the main pages: pills that wrap */
.quick-links {
	display: flex;
	flex-wrap: wrap;
	gap: 0.625rem;
	margin: 1.5rem 0 0;
	padding: 0;
	list-style: none;
}

.quick-links__link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.625rem 1rem 0.625rem 1.25rem;
	border: 2px solid var(--c-green);
	border-radius: 999px;
	font-weight: 700;
	text-decoration: none;
	transition: background-color 0.2s, border-color 0.2s;
}

.quick-links__link .icon {
	width: 1.125rem;
	height: 0.75rem;
	color: var(--c-green);
}

.quick-links__link:hover,
.quick-links__link:focus-visible {
	border-color: var(--c-orange);
	background: var(--c-orange);
}

.quick-links__link:hover .icon {
	color: var(--c-black);
}

/* Finishing touches
   Small details in the spirit of Apple's sites. None of them changes the layout, colours or blocks.
   ========================================================================== */

html {
	/* Anchor links (e.g. /contact-us/#contact-form) land below the sticky header, not under it */
	scroll-padding-top: 6rem;
	-webkit-tap-highlight-color: transparent;
	text-rendering: optimizeLegibility;
	font-kerning: normal;
}

/* Selected text in the site's light green */
::selection {
	background: var(--c-green-tint);
	color: var(--c-black);
}

/* Ticks, radio buttons and the typing cursor in Irish green instead of the browser's blue */
input,
textarea,
select {
	accent-color: var(--c-green);
	caret-color: var(--c-green);
}

/* Dates, times, prices and counts use equal-width figures, so numbers line up neatly */
.post-card__meta,
.event-row__meta,
.event-details__list,
.tier__price,
.cal__day,
.company-group__count,
.company-filters__count,
.step__number {
	font-variant-numeric: tabular-nums;
}

/* The phone menu scrolls on its own without dragging the page behind it */
.main-nav {
	overscroll-behavior: contain;
}

/* Soft cross-fade between pages (Chrome, Edge and Safari; other browsers simply change page as before) */
@media (prefers-reduced-motion: no-preference) {
	@view-transition {
		navigation: auto;
	}

	::view-transition-old(root),
	::view-transition-new(root) {
		animation-duration: 0.35s;
		animation-timing-function: var(--ease);
	}
}

/* Photos fade in once they have loaded instead of popping in (the class is added by main.js,
   only to images that are still loading, so without JavaScript nothing is ever hidden) */
.img-fade {
	opacity: 0;
	transition: opacity 0.7s var(--ease-soft);
}

.img-fade.is-loaded {
	opacity: 1;
}

/* Touch screens: no hover lift or photo zoom that would stay stuck after a tap (the press still shows) */
@media (hover: none) {
	.post-card--linked:hover,
	.post-card--linked:focus-within,
	.company-card--linked:hover,
	.company-card--linked:focus-within,
	:is(.contact-form__submit, .newsletter__submit, .cta__link, .event-button, .quick-links__link, .company-invite__link,
	.news-filters__button, .company-filters__button, .icon-btn, .search-form__submit, .hero__arrow, .hero__dot):hover {
		transform: none;
	}

	.post-card--linked:hover .post-card__image,
	.company-card--linked:hover .company-card__image,
	.feature-card:hover .feature-card__image {
		transform: none;
	}
}
