/*
 * Infinity Studios: brand styles on top of Kadence.
 *
 * Sections use "inf-" classes, which the patterns add automatically.
 * Colours come from the Kadence palette (Appearance > Customize > Colours),
 * so changing a palette colour there updates these sections too.
 */

/* Fonts (self-hosted, no Google requests) */
@font-face {
	font-family: "Bebas Neue";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("../fonts/bebas-neue-400.woff2") format("woff2");
}
@font-face {
	font-family: "Cormorant Garamond";
	font-style: italic;
	font-weight: 500;
	font-display: swap;
	src: url("../fonts/cormorant-garamond-500-italic.woff2") format("woff2");
}
@font-face {
	font-family: "Raleway";
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url("../fonts/raleway-variable.woff2") format("woff2");
}

:root {
	--inf-purple: var(--global-palette1, #7a4d81);
	--inf-purple-deep: var(--global-palette2, #5c3962);
	--inf-ink: var(--global-palette3, #2e2724);
	--inf-text: var(--global-palette4, #4a4245);
	--inf-soft: var(--global-palette5, #5e5659);
	--inf-blush: var(--global-palette7, #f6efec);
	--inf-lilac: var(--global-palette8, #efe7f1);
	--inf-white: var(--global-palette9, #ffffff);
	--inf-sand: #efe6e1;
	--inf-line: #d8cbc5;
	--inf-display: "Bebas Neue", "Arial Narrow", sans-serif;
	--inf-serif: "Cormorant Garamond", Georgia, serif;
	--inf-gutter: clamp(24px, 6.7vw, 120px);
	--inf-caps: 0.24em;
}

/* ---------- Shared type ---------- */

.inf-script {
	font-family: var(--inf-serif);
	font-style: italic;
	font-weight: 500;
	font-size: clamp(24px, 2.6vw, 40px);
	line-height: 1.15;
	color: var(--inf-soft);
	margin: 0;
}

.inf-display,
.entry-content .inf-display {
	font-family: var(--inf-display);
	font-weight: 400;
	font-size: clamp(52px, 6.2vw, 92px);
	line-height: 0.9;
	letter-spacing: 0.01em;
	color: var(--inf-ink);
	margin: 0;
}

.inf-serif,
.entry-content .inf-serif {
	font-family: var(--inf-serif);
	font-style: italic;
	font-weight: 500;
	font-size: clamp(42px, 4.7vw, 68px);
	line-height: 1;
	letter-spacing: 0;
	color: var(--inf-ink);
	margin: 0;
}

.inf-eyebrow,
.inf-label {
	margin: 0;
	color: var(--inf-purple);
}

.inf-eyebrow {
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.3em;
	text-transform: uppercase;
}

.inf-label {
	font-family: var(--inf-display);
	font-size: clamp(22px, 2vw, 28px);
	letter-spacing: 0.2em;
	line-height: 1.1;
}

.inf-link {
	margin: 0;
}

.inf-link a {
	display: inline-block;
	color: var(--inf-ink);
	border-bottom: 1px solid currentColor;
	padding: 10px 0 4px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: var(--inf-caps);
	text-transform: uppercase;
	text-decoration: none;
	transition: color 0.2s ease;
}

.inf-link a:hover,
.inf-link a:focus-visible {
	color: var(--inf-purple);
}

.inf-centre {
	text-align: center;
}

/* Photos that fill their box */
.wp-block-image.inf-fill,
.entry-content figure.wp-block-image.inf-fill {
	margin: 0;
	height: 100%;
	min-height: 0;
}

.wp-block-image.inf-fill img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Photos that link to a page: the link takes the photo's full size. */
.wp-block-image.inf-fill > a {
	display: block;
	height: 100%;
}

.inf-pos-20 img { object-position: center 20%; }
.inf-pos-30 img { object-position: center 30%; }
.inf-pos-40 img { object-position: center 40%; }

/* ---------- Full-width page layout ---------- */

/* Sections on hero pages run edge to edge, with no gaps between them. */
.content-style-unboxed .entry-content > .inf-hero,
.content-style-unboxed .entry-content > .inf-split,
.content-style-unboxed .entry-content > .inf-experiences,
.content-style-unboxed .entry-content > .inf-review,
.content-style-unboxed .entry-content > .inf-how,
.content-style-unboxed .entry-content > .inf-faq,
.content-style-unboxed .entry-content > .inf-enquire {
	max-width: none;
	margin-top: 0;
	margin-bottom: 0;
}

.entry-content > [class*="inf-"] + [class*="inf-"] {
	margin-top: 0;
}

/* Kadence spaces blocks apart by default; the sections handle their own spacing. */
.entry-content .wp-block-group[class*="inf-"]:not(.inf-steps) {
	margin-top: 0;
	margin-bottom: 0;
}

/* ---------- Hero ---------- */

.inf-hero {
	position: relative;
	min-height: 100vh;
	min-height: 100svh;
	background: #1c1718;
	color: #fff;
	display: flex;
	align-items: flex-end;
	justify-content: center;
	overflow: hidden;
}

/* Three 3:4 photos side by side, shown whole, with the words in a band beneath. */
.inf-hero:not(.wp-block-cover) {
	display: block;
	min-height: 0;
}

.inf-hero:not(.wp-block-cover) .inf-hero__photos {
	position: relative;
	aspect-ratio: 9 / 4;
}

.inf-hero:not(.wp-block-cover)::before {
	background: linear-gradient(180deg, rgba(20, 16, 17, 0.45) 0, rgba(20, 16, 17, 0) 160px);
}

.inf-hero:not(.wp-block-cover)::after {
	display: none;
}

.inf-hero:not(.wp-block-cover) .inf-hero__text {
	padding: 40px 24px 56px;
	gap: 14px;
}

/* The band beneath the photos is soft lilac rather than dark. */
.inf-hero:not(.wp-block-cover) {
	background: var(--inf-lilac);
	color: var(--inf-ink);
}

.inf-hero:not(.wp-block-cover) .inf-script {
	color: var(--inf-purple);
}

.inf-hero:not(.wp-block-cover) .inf-hero__title {
	color: var(--inf-ink);
}

.inf-hero:not(.wp-block-cover) .inf-eyebrow {
	color: var(--inf-soft);
}

.inf-hero__photos {
	position: absolute;
	inset: 0;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 100%;
	gap: 4px;
}

/* Soft shade so the white headline stays readable. */
.inf-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(180deg, rgba(20, 16, 17, 0.45) 0%, rgba(20, 16, 17, 0.25) 35%, rgba(20, 16, 17, 0.55) 100%);
	pointer-events: none;
}

.inf-hero__text {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 18px;
	text-align: center;
	padding: 0 24px clamp(96px, 12vh, 130px);
}

.inf-hero .inf-script {
	color: #fff;
	font-size: clamp(26px, 2.5vw, 36px);
}

.inf-hero__title,
.entry-content .inf-hero__title {
	margin: 0;
	color: #fff;
	font-family: var(--inf-display);
	font-weight: 400;
	font-size: clamp(64px, 7.2vw, 108px);
	line-height: 0.9;
	letter-spacing: 0.04em;
}

.inf-hero .inf-eyebrow {
	color: #ede6e2;
}

/* Scroll cue */
.inf-hero::after {
	content: "";
	position: absolute;
	z-index: 2;
	left: 50%;
	bottom: 34px;
	width: 26px;
	height: 42px;
	margin-left: -13px;
	border: 1.5px solid #fff;
	border-radius: 13px;
	background: radial-gradient(circle at 50% 13px, #fff 3px, transparent 3.5px);
	opacity: 0.85;
}

/* Single-photo hero (a Cover block with class inf-hero), used on experience landing pages.
   Add inf-hero--left to set the text on the left so it clears a subject on the right. */
.inf-hero.wp-block-cover {
	padding: 0;
	align-items: flex-end;
}

.inf-hero.wp-block-cover .wp-block-cover__inner-container {
	z-index: 2;
}

.inf-hero--left {
	justify-content: flex-start;
}

.inf-hero--left::before {
	background: linear-gradient(90deg, rgba(20, 16, 17, 0.72) 0%, rgba(20, 16, 17, 0.4) 40%, rgba(20, 16, 17, 0) 68%);
}

.inf-hero--left .inf-hero__text {
	align-items: flex-start;
	text-align: left;
	max-width: 720px;
	padding-left: var(--inf-gutter);
}

/* A second line inside the homepage headline, so it also says what and where. */
.inf-hero__where {
	display: block;
	margin-top: 18px;
	font-family: "Raleway", sans-serif;
	font-size: clamp(14px, 1.3vw, 18px);
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: 0.3em;
	text-transform: uppercase;
}

.inf-hero--left .inf-hero__title {
	font-size: clamp(56px, 6vw, 96px);
}

.inf-hero--left::after {
	display: none;
}

/* ---------- Questions (tap to open) ---------- */

.inf-faq {
	background: var(--inf-white);
	padding: 110px var(--inf-gutter);
}

.inf-faq > :is(p, h2) {
	margin: 0 0 18px;
}

.inf-faq .wp-block-details {
	max-width: 860px;
	margin: 0 auto;
	border-bottom: 1px solid rgba(46, 39, 36, 0.14);
}

.inf-faq .wp-block-details:first-of-type {
	margin-top: 40px;
	border-top: 1px solid rgba(46, 39, 36, 0.14);
}

.inf-faq summary {
	position: relative;
	padding: 22px 48px 22px 0;
	cursor: pointer;
	list-style: none;
	font-weight: 600;
	font-size: 18px;
	color: var(--inf-ink, #2e2724);
}

.inf-faq summary::-webkit-details-marker {
	display: none;
}

.inf-faq summary::after {
	content: "+";
	position: absolute;
	right: 4px;
	top: 50%;
	transform: translateY(-50%);
	font-size: 26px;
	font-weight: 400;
	color: var(--inf-purple, #7a4d81);
}

.inf-faq details[open] summary::after {
	content: "\2013";
}

.inf-faq .wp-block-details p {
	margin: 0 0 24px;
	max-width: 760px;
}

/* ---------- Split panels (sessions, wall art, vouchers) ---------- */

.inf-split {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	min-height: 0;
	background: var(--inf-white);
}

.inf-split--blush { background: var(--inf-blush); }
.inf-split--lilac { background: var(--inf-lilac); }
.inf-split--white { background: var(--inf-white); }

/* Text-only band: a comfortable reading width, centred on the page. */
.inf-split.inf-split--text {
	display: block;
}

.inf-split--text .inf-split__text {
	max-width: 820px;
	margin: 0 auto;
}

/* The photo keeps its own shape (never cropped), sitting against the page edge. */
.inf-split .wp-block-image.inf-fill {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	height: auto;
	min-height: 0;
}

.inf-split .wp-block-image.inf-fill img {
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: min(860px, 88vh);
	object-fit: contain;
}

.inf-split--reverse .wp-block-image.inf-fill {
	order: 2;
	justify-content: flex-end;
}

.inf-split__text {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	gap: 20px;
	padding: 72px clamp(40px, 6.7vw, 110px);
}

.inf-split__text :is(p, h2, .wp-block-buttons) {
	margin: 0;
	max-width: 480px;
}

.inf-split--short {
	min-height: 0;
}

.inf-split--short .wp-block-image.inf-fill img {
	max-height: min(600px, 75vh);
}

.inf-logo--dark {
	display: none !important;
}

.inf-split .wp-block-buttons {
	margin: 4px 0 0;
}

/* ---------- Experiences strip (the one purple block) ---------- */

.inf-experiences {
	background: var(--inf-purple);
	color: #fff;
	padding: 72px 0 72px var(--inf-gutter);
	display: flex;
	flex-direction: column;
	gap: 36px;
	position: relative;
}

.inf-experiences .inf-display {
	color: #fff;
	padding-right: 140px;
}

.inf-strip {
	display: flex;
	gap: 20px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	padding-right: var(--inf-gutter);
	scrollbar-width: none;
}

.inf-strip::-webkit-scrollbar {
	display: none;
}

.inf-card {
	position: relative;
	flex: 0 0 auto;
	height: clamp(360px, 30vw, 460px);
	aspect-ratio: 3 / 4;
	background: var(--inf-purple-deep);
	scroll-snap-align: start;
	overflow: hidden;
}

.inf-card .wp-block-image.inf-fill {
	position: absolute;
	inset: 0;
}

.inf-card .wp-block-image img {
	transition: transform 0.6s ease;
}

.inf-card:hover .wp-block-image img {
	transform: scale(1.04);
}

.inf-card::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(20, 16, 17, 0) 50%, rgba(20, 16, 17, 0.55) 100%);
	pointer-events: none;
}

.inf-card__title {
	position: absolute;
	left: 20px;
	right: 20px;
	bottom: 18px;
	margin: 0;
	z-index: 2;
}

.inf-card__title a {
	display: flex;
	flex-direction: column;
	color: #fff;
	text-decoration: none;
	font-family: var(--inf-display);
	font-size: 40px;
	line-height: 1;
}

/* The whole card is clickable. */
.inf-card__title a::before {
	content: "";
	position: absolute;
	inset: -1000px;
}

.inf-card { isolation: isolate; }

/* Square cards (Expressions) keep the same height, so the strip stays level. */
.inf-card--square {
	aspect-ratio: 1;
}

/* Photo strips with class inf-natural: every photo keeps its own shape, never cropped.
   All photos share one height; the width follows each photo's proportions. */
.inf-natural .inf-card,
.inf-natural .inf-card--square {
	aspect-ratio: auto;
	background: none;
}

.inf-natural .inf-card .wp-block-image,
.inf-natural .inf-card .wp-block-image.inf-fill {
	position: static;
	height: 100%;
	margin: 0;
}

.inf-natural .inf-card .wp-block-image img {
	display: block;
	height: 100%;
	width: auto;
	max-width: none;
	object-fit: contain;
}

.inf-natural .inf-card:hover .wp-block-image img {
	transform: none;
}

/* Photo-only strips have no title, so no shading at the bottom. */
.inf-gallery .inf-card::after {
	display: none;
}

.inf-card__date {
	font-family: "Raleway", sans-serif;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	margin-bottom: 4px;
}

.inf-strip-nav {
	position: absolute;
	top: 72px;
	right: var(--inf-gutter);
	display: flex;
	gap: 12px;
}

.inf-strip-nav button {
	width: 52px;
	height: 52px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 1px solid #fff;
	background: transparent;
	color: #fff;
	cursor: pointer;
	padding: 0;
	border-radius: 0;
	transition: background 0.2s ease, color 0.2s ease;
}

.inf-strip-nav button:hover,
.inf-strip-nav button:focus-visible {
	background: #fff;
	color: var(--inf-purple);
}

.inf-strip-intro {
	margin: -16px 0 0;
	max-width: 560px;
	padding-right: var(--inf-gutter);
	color: #f3eaf4;
}

.inf-swipe-hint {
	display: none;
	margin: 0;
	font-size: 12px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: #ebddee;
}

/* ---------- Reviews ---------- */

.inf-review {
	background: var(--inf-white);
	padding: 120px var(--inf-gutter);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 28px;
	text-align: center;
}

.inf-review :is(p, h2) {
	margin: 0;
}

.inf-review__items {
	display: grid;
	max-width: 1000px;
	width: 100%;
}

.inf-review__item {
	display: flex;
	flex-direction: column;
	gap: 24px;
	transition: opacity 0.6s ease;
}

.inf-review__items.is-ready .inf-review__item {
	grid-area: 1 / 1;
	opacity: 0;
	visibility: hidden;
}

.inf-review__items.is-ready .inf-review__item.is-active {
	opacity: 1;
	visibility: visible;
}

.inf-quote {
	margin: 0;
	font-family: var(--inf-serif);
	font-style: italic;
	font-size: clamp(28px, 3.2vw, 46px);
	line-height: 1.25;
	color: var(--inf-ink);
}

.inf-cite {
	margin: 0;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: var(--inf-caps);
	text-transform: uppercase;
	color: var(--inf-soft);
}

.inf-review-dots {
	display: flex;
	gap: 6px;
	justify-content: center;
}

.inf-review-dots button {
	width: 28px;
	height: 24px;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	position: relative;
}

.inf-review-dots button::before {
	content: "";
	position: absolute;
	left: 9px;
	right: 9px;
	top: 11px;
	height: 2px;
	background: #d1c0b9;
	transition: all 0.3s ease;
}

.inf-review-dots button[aria-current="true"]::before {
	left: 0;
	right: 0;
	background: var(--inf-purple);
}

/* ---------- How it works ---------- */

.inf-how {
	background: var(--inf-blush);
	padding: 100px var(--inf-gutter);
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.inf-how :is(p, h2, h3) {
	margin: 0;
}

/* Upcoming event dates: a short lilac band, centred on every screen size. */
.inf-how.inf-dates {
	background: var(--inf-lilac);
	padding-top: 72px;
	padding-bottom: 72px;
	align-items: center;
	text-align: center;
}

.inf-dates .wp-block-buttons {
	justify-content: center;
	margin-top: 16px;
}

.inf-steps {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 56px;
	margin-top: 48px;
	max-width: 1200px;
	width: 100%;
	align-self: center;
}

.inf-step {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

/* Four across (gift vouchers): each card can open with a photo and end with a button. */
.inf-steps--4 {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 32px;
}

.inf-step .wp-block-image {
	margin: 0 0 8px;
}

.inf-step .wp-block-image img {
	display: block;
	width: 100%;
	height: auto;
}

.inf-step .wp-block-buttons {
	margin-top: auto;
	padding-top: 8px;
}

@media (max-width: 1024px) {
	.inf-steps--4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}



.inf-step__num {
	font-family: var(--inf-display);
	font-size: 56px;
	line-height: 1;
	color: var(--inf-purple);
}

/* ---------- Blog posts on other pages ([infinity_posts]) ---------- */

.inf-posts {
	align-items: start;
}

.inf-posts--two {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	max-width: 880px;
}

.inf-posts--one {
	grid-template-columns: minmax(0, 1fr);
	max-width: 560px;
}

.inf-post__date {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: var(--inf-caps);
	text-transform: uppercase;
	color: var(--inf-purple);
}

.inf-post h3 {
	font-family: var(--inf-serif);
	font-size: 28px;
	line-height: 1.15;
	font-weight: 500;
}

.inf-post h3 a {
	color: var(--inf-ink);
	text-decoration: none;
}

.inf-post h3 a:hover,
.inf-post h3 a:focus-visible {
	color: var(--inf-purple);
}

.inf-post__more a {
	color: var(--inf-purple);
	font-weight: 600;
}

.entry-content .inf-post figure.wp-block-image {
	margin: 0 0 6px;
}

.inf-post .wp-block-image a {
	display: block;
}

.inf-blog > .wp-block-buttons {
	align-self: center;
	justify-content: center;
	margin-top: 40px;
}

@media (max-width: 767px) {
	.inf-posts,
	.inf-posts--two {
		grid-template-columns: minmax(0, 1fr);
		gap: 40px;
	}
}

/* ---------- Enquire ---------- */

.inf-enquire {
	background: var(--inf-white);
	padding: 110px var(--inf-gutter);
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	gap: clamp(40px, 6.7vw, 96px);
	scroll-margin-top: 80px;
}

.inf-enquire__intro {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.inf-enquire__intro :is(p, h2) {
	margin: 0;
}

.inf-contact {
	padding-top: 12px;
	color: var(--inf-soft);
	line-height: 1.9;
}

.inf-contact a {
	color: var(--inf-ink);
}

.inf-form-placeholder,
.inf-form {
	background: var(--inf-blush);
	padding: 48px;
}

.inf-form {
	padding: 24px;
}

.inf-form-placeholder {
	border: 1px dashed var(--inf-line);
	min-height: 380px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 12px;
}

.inf-form-placeholder p {
	margin: 0;
}

.inf-form-placeholder strong {
	font-family: var(--inf-display);
	font-weight: 400;
	font-size: 34px;
	line-height: 1;
	color: var(--inf-purple);
}

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

.inf-header-phone {
	font-size: 13px;
	font-weight: 600;
	letter-spacing: var(--inf-caps);
	text-transform: uppercase;
	text-decoration: none;
	white-space: nowrap;
	color: inherit;
}

.site-header .header-button {
	letter-spacing: var(--inf-caps);
	text-transform: uppercase;
	font-size: 13px;
	font-weight: 600;
}

/* Over the hero photo the Enquire button stays purple, and the header gets a gentle shade. */
.transparent-header .site-header .header-button {
	color: #fff;
	background: var(--inf-purple);
	border-color: var(--inf-purple);
}

.transparent-header #masthead {
	background: linear-gradient(180deg, rgba(20, 16, 17, 0.35), rgba(20, 16, 17, 0));
}

.transparent-header .header-html,
.transparent-header .header-html a {
	color: #fff;
}

/* Phone menu: larger, easy-to-read text on the blush panel. */
#mobile-drawer .drawer-inner {
	color: var(--inf-ink);
}

#mobile-drawer .drawer-toggle {
	color: var(--inf-ink);
}

#mobile-drawer .mobile-navigation a {
	font-size: 20px;
	padding: 0.75em 0.5em;
	color: var(--inf-ink);
}

#mobile-drawer .mobile-navigation .sub-menu a {
	font-size: 18px;
}

#mobile-drawer .mobile-html,
#mobile-drawer .mobile-html a,
#mobile-drawer .inf-header-phone {
	color: var(--inf-ink) !important;
	font-size: 16px;
	text-decoration: none;
}

#mobile-drawer .mobile-button-wrap,
#mobile-drawer .mobile-button {
	width: 100%;
	text-align: center;
}

.transparent-header .main-navigation .primary-menu-container > ul > li.menu-item > a {
	color: #fff;
}

/* Laptops and tablets on their side: keep the menu on one line. The phone number
   moves out of the way (it's still in the footer and the Call button). */
@media (min-width: 1025px) and (max-width: 1439px) {
	.site-header .header-html {
		display: none;
	}

	.main-navigation .primary-menu-container > ul > li.menu-item > a {
		padding-left: 0.5em;
		padding-right: 0.5em;
		font-size: 12px;
		letter-spacing: 0.12em;
	}
}

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

.inf-site-footer {
	background: var(--inf-sand);
	color: var(--inf-ink);
	font-size: 15px;
}

.inf-footer {
	padding: 72px var(--inf-gutter) 32px;
	max-width: 1440px;
	margin: 0 auto;
}

.inf-footer p {
	margin: 0;
}

.inf-footer a {
	color: var(--inf-ink);
	text-decoration: none;
}

.inf-footer a:hover {
	color: var(--inf-purple);
}

.inf-footer__cols {
	display: grid;
	grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr));
	gap: 48px;
}

.inf-footer__brand {
	display: flex;
	flex-direction: column;
	gap: 16px;
	color: var(--inf-soft);
	max-width: 320px;
}

.inf-footer__logo {
	margin: 0;
}

.inf-footer__logo img {
	width: 170px;
	height: auto;
}

.inf-footer__col {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.inf-footer__title {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: var(--inf-caps);
	text-transform: uppercase;
	color: var(--inf-purple);
}

.inf-footer__links {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.inf-footer__finance {
	margin: 28px 0 0;
	max-width: 960px;
	font-size: 12px;
	line-height: 1.6;
	color: var(--inf-soft);
}

.inf-footer__finance a {
	color: inherit;
}

.inf-footer__bottom {
	border-top: 1px solid var(--inf-line);
	margin-top: 56px;
	padding-top: 20px;
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 12px 24px;
	font-size: 13px;
	color: var(--inf-soft);
}

.inf-footer__social {
	display: flex;
	flex-wrap: wrap;
	gap: 24px;
}

.inf-footer__bottom a {
	color: var(--inf-soft);
	text-decoration: underline;
}

/* ---------- Phone action bar ---------- */

.inf-action-bar {
	display: none;
}

/* Back to top: appears once the page has scrolled (see infinity.js). */
.inf-to-top {
	position: fixed;
	left: 24px;
	bottom: 24px;
	z-index: 98;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	border-radius: 50%;
	background: var(--inf-purple);
	color: #fff;
	box-shadow: 0 4px 14px rgba(46, 39, 36, 0.18);
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	transition: opacity 0.25s, transform 0.25s, visibility 0.25s;
}

.inf-to-top.is-visible {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.inf-to-top:hover,
.inf-to-top:focus {
	color: #fff;
	background: var(--inf-ink);
}

/* ---------- Blog ---------- */

/* Post photos at their natural shape, never taller than the screen. */
.single-post .article-post-thumbnail .post-thumbnail-inner img,
.loop-entry .post-thumbnail-inner img {
	display: block;
	width: 100%;
	height: auto;
}

.single-post .article-post-thumbnail .post-thumbnail-inner img {
	width: auto;
	max-width: 100%;
	max-height: 80vh;
	margin: 0 auto;
}

.single-post .entry-header .entry-title {
	font-size: clamp(40px, 5vw, 60px);
	line-height: 1;
}

.single-post .single-content :is(h2, h3, h4) {
	font-family: var(--inf-serif);
	font-style: italic;
	font-weight: 500;
	text-transform: none;
	letter-spacing: 0;
	color: var(--inf-ink);
	margin: 1.6em 0 0.5em;
}

.single-post .single-content h2 {
	font-size: clamp(28px, 3vw, 36px);
	line-height: 1.15;
}

.single-post .single-content :is(h3, h4) {
	font-size: clamp(22px, 2.2vw, 27px);
	line-height: 1.2;
}

.single-post .single-content :is(img, .wp-caption) {
	max-width: 100%;
	height: auto;
}

.single-post .single-content blockquote {
	margin: 1.5em 0;
	padding: 0 0 0 24px;
	border-left: 2px solid var(--inf-purple);
	font-family: var(--inf-serif);
	font-style: italic;
	font-size: 22px;
	color: var(--inf-ink);
}

.loop-entry .entry-title {
	font-family: var(--inf-serif);
	font-style: italic;
	font-weight: 500;
	text-transform: none;
	letter-spacing: 0;
	font-size: 26px;
	line-height: 1.15;
}

.entry-taxonomies a {
	color: var(--inf-purple);
	letter-spacing: var(--inf-caps);
}

.entry-related .entry-related-title {
	font-family: var(--inf-display);
}

/* Keep the desktop menu on one line on smaller laptop screens. */
@media (min-width: 1025px) and (max-width: 1440px) {
	.main-navigation .primary-menu-container > ul > li.menu-item > a {
		padding-left: 0.55em;
		padding-right: 0.55em;
		letter-spacing: 0.14em;
	}
}

@media (min-width: 1025px) and (max-width: 1240px) {
	.site-header .header-html {
		display: none;
	}
}

@media (min-width: 1025px) and (max-width: 1239px) {
	.main-navigation .primary-menu-container > ul > li.menu-item > a {
		padding-left: 0.4em;
		padding-right: 0.4em;
		font-size: 11px;
		letter-spacing: 0.08em;
	}
}

@media (min-width: 1025px) and (max-width: 1139px) {
	.main-navigation .primary-menu-container > ul > li.menu-item > a {
		padding-left: 0.3em;
		padding-right: 0.3em;
		letter-spacing: 0.04em;
	}
}

/* ---------- Tablet and phone ---------- */

@media (max-width: 1024px) {
	.inf-steps {
		gap: 32px;
	}

	.inf-footer__cols {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 767px) {
	.inf-faq {
		padding: 56px 24px;
	}

	.inf-faq summary {
		font-size: 16px;
	}

	/* On phones a full-screen photo would be cropped hard, so the photo shows whole
	   and the words sit beneath it on lilac, like the three-photo openings. */
	.inf-hero.wp-block-cover {
		display: block;
		min-height: 0 !important;
		background: var(--inf-lilac);
		color: var(--inf-ink);
	}

	.inf-hero.wp-block-cover .wp-block-cover__image-background {
		position: static;
		display: block;
		width: 100%;
		height: auto;
		object-fit: contain;
	}

	.inf-hero.wp-block-cover .wp-block-cover__background {
		display: none;
	}

	.inf-hero.wp-block-cover::before {
		bottom: auto;
		height: 140px;
		background: linear-gradient(180deg, rgba(20, 16, 17, 0.45) 0%, rgba(20, 16, 17, 0) 100%);
	}

	.inf-hero.wp-block-cover .wp-block-cover__inner-container {
		position: relative;
		width: 100%;
		color: var(--inf-ink);
	}

	.inf-hero--left .inf-hero__text,
	.inf-hero--left .inf-hero__text.wp-block-group {
		padding: 28px 20px 40px;
		gap: 12px;
	}

	.inf-hero.wp-block-cover .inf-script {
		color: var(--inf-purple);
	}

	.inf-hero.wp-block-cover .inf-hero__title {
		color: var(--inf-ink);
		font-size: 48px;
	}

	.inf-hero.wp-block-cover .inf-eyebrow {
		color: var(--inf-soft);
	}

	/* A logo used as the title swaps to its dark version on the lilac band. */
	.inf-logo--light {
		display: none !important;
	}

	.inf-logo--dark {
		display: block !important;
		width: min(320px, 100%) !important;
	}

	/* The form is the next section down, so the button would only cover the photo. */
	.inf-hero--left .wp-block-buttons {
		display: none;
	}

	.inf-hero {
		min-height: 760px;
		min-height: 92svh;
		justify-content: flex-start;
	}

	.inf-hero__photos {
		grid-template-columns: 1fr;
	}

	/* One photo in its own 3:4 shape, with the words underneath. */
	.inf-hero:not(.wp-block-cover) {
		min-height: 0;
	}

	.inf-hero:not(.wp-block-cover) .inf-hero__photos {
		aspect-ratio: 3 / 4;
	}

	.inf-hero:not(.wp-block-cover) .inf-hero__text {
		padding: 28px 20px 44px;
	}

	/* Phones show the middle photo, the main image of the three. */
	.inf-hero__photos .wp-block-image:not(:nth-child(2)) {
		display: none;
	}

	.inf-hero__text {
		align-items: flex-start;
		text-align: left;
		gap: 12px;
		padding: 0 20px 120px;
	}

	.inf-hero__title,
	.entry-content .inf-hero__title {
		font-size: 64px;
		letter-spacing: 0.03em;
	}

	.inf-hero__title .inf-dot {
		display: block;
		height: 0;
		overflow: hidden;
	}

	.inf-hero .inf-eyebrow {
		font-size: 12px;
		letter-spacing: var(--inf-caps);
	}

	.inf-hero::after {
		display: none;
	}

	.inf-split,
	.inf-split--short {
		grid-template-columns: 1fr;
		min-height: 0;
	}

	/* Text first, then the photo at full width in its own shape, so photos never sit back to back. */
	.inf-split .wp-block-image.inf-fill,
	.inf-split--short .wp-block-image.inf-fill {
		order: 2;
	}

	.inf-split .wp-block-image.inf-fill img,
	.inf-split--short .wp-block-image.inf-fill img {
		width: 100%;
		max-height: none;
	}

	.inf-split__text {
		padding: 40px 24px 48px;
		gap: 14px;
	}

	.inf-experiences {
		padding: 48px 0 56px 20px;
		gap: 24px;
	}

	.inf-experiences .inf-display {
		padding-right: 20px;
	}

	.inf-strip {
		gap: 14px;
		padding-right: 20px;
	}

	.inf-card {
		height: 360px;
	}

	/* Shorter on phones so a landscape photo still fits the screen. */
	.inf-natural .inf-card {
		height: 250px;
	}

	.inf-card__title a {
		font-size: 36px;
	}

	.inf-strip-nav {
		display: none;
	}

	.inf-swipe-hint {
		display: block;
	}

	.inf-review {
		padding: 56px 24px;
		gap: 18px;
	}

	.inf-how {
		padding: 56px 24px;
	}

	.inf-how .inf-centre {
		text-align: left;
	}

	.inf-how.inf-dates .inf-centre {
		text-align: center;
	}

	.inf-steps {
		grid-template-columns: 1fr;
		gap: 28px;
		margin-top: 28px;
	}

	.inf-enquire {
		grid-template-columns: 1fr;
		padding: 56px 24px;
		gap: 24px;
	}

	.inf-form-placeholder {
		padding: 28px 24px;
		min-height: 0;
	}

	.inf-footer {
		padding: 48px 24px 120px;
	}

	.inf-footer__cols {
		grid-template-columns: 1fr 1fr;
		gap: 32px 24px;
	}

	.inf-footer__brand {
		grid-column: 1 / -1;
	}

	.inf-footer__bottom {
		margin-top: 32px;
		flex-direction: column;
	}

	.inf-action-bar {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 99;
		display: flex;
		gap: 10px;
		padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
		background: #fff;
		border-top: 1px solid #eae2de;
	}

	.inf-action-bar a {
		text-align: center;
		text-decoration: none;
		padding: 13px;
		font-size: 13px;
		font-weight: 600;
		letter-spacing: 0.16em;
		text-transform: uppercase;
	}

	.inf-action-bar__call {
		flex: 1 1 0;
		border: 1px solid var(--inf-ink);
		color: var(--inf-ink);
	}

	.inf-action-bar__enquire {
		flex: 2 1 0;
		background: var(--inf-purple);
		color: #fff;
	}

	.inf-action-bar__enquire:hover,
	.inf-action-bar__enquire:focus {
		color: #fff;
	}

	.inf-action-bar {
		transition: transform 0.25s;
	}

	.inf-form-in-view .inf-action-bar {
		transform: translateY(110%);
	}

	.inf-form-in-view .inf-to-top {
		opacity: 0;
		visibility: hidden;
	}

	/* Sit just above the Call / Enquire bar. */
	.inf-to-top {
		left: 16px;
		bottom: calc(84px + env(safe-area-inset-bottom));
		width: 44px;
		height: 44px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.inf-strip {
		scroll-behavior: auto;
	}

	.inf-card .wp-block-image img,
	.inf-review__item {
		transition: none;
	}
}

/* WordPress wraps group blocks in an extra container on some setups; let the
   section layouts see straight through it. */
[class*="inf-"] > .wp-block-group__inner-container,
[class*="inf-"] > .block-editor-inner-blocks,
[class*="inf-"] > .block-editor-inner-blocks > .block-editor-block-list__layout {
	display: contents;
}
