/* Shared block styles. Colours and type inherit from the active theme. */

.swish-grid {
	display: grid;
	gap: var(--wp--preset--spacing--40, 1.5rem);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}

@media (min-width: 1024px) {

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

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

	.swish-grid--columns-3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1280px) {

	.swish-grid--columns-4 {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.swish-card {
	background: var(--wp--preset--color--surface, #fff);
	border: 1px solid var(--wp--preset--color--border, #dce5df);
	border-radius: var(--swish-radius-card, 18px);
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	transition: transform 200ms ease;
}

.swish-card:hover {
	transform: translateY(-2px);
}

.swish-card__media {
	aspect-ratio: 4 / 3;
	background: var(--wp--preset--color--surface-alt, #eaf0eb);
	overflow: hidden;
	position: relative;
}

/* Out of flow, so a portrait photo cannot stretch the card. */
.swish-card__media a {
	display: block;
	inset: 0;
	position: absolute;
}

.swish-card__media img,
.swish-card__no-image {
	display: block;
	height: 100%;
	width: 100%;
}

.swish-card__media img {
	object-fit: cover;
}

.swish-card__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	inset-block-start: 0.75rem;
	inset-inline-start: 0.75rem;
	position: absolute;
}

.swish-chip,
.swish-card__photos {
	background: var(--wp--preset--color--surface, #fff);
	border-radius: var(--swish-radius-pill, 999px);
	color: var(--wp--preset--color--ink, #102322);
	font-size: 0.8125rem;
	font-weight: 600;
	padding: 0.25rem 0.75rem;
}

/*
 * Chip text is always white, so a chip's background must be dark in every
 * style variation. A variant changes the background through the variable.
 */
.swish-chip {
	background: var(--swish-chip-background, var(--wp--custom--chip--background, var(--wp--preset--color--scrim, #0b1918)));
	color: #fff;
}

.swish-chip--featured {
	--swish-chip-background: var(--wp--custom--chip--featured, var(--wp--preset--color--accent-dark, #0f6b57));
}

.swish-card__photos {
	inset-block-end: 0.75rem;
	inset-inline-end: 0.75rem;
	position: absolute;
}

/*
 * Controls an extension adds over the photo (swish/blocks/card_actions). The
 * layer covers the photo and lets clicks through to its link, except on the
 * controls themselves, which start at the top end corner.
 */
.swish-card__actions {
	align-items: flex-start;
	display: flex;
	gap: 0.5rem;
	inset: 0;
	justify-content: flex-end;
	padding: 0.5rem;
	pointer-events: none;
	position: absolute;
	z-index: 2;
}

.swish-card__actions > * {
	pointer-events: auto;
}

.swish-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 0.5rem;
	padding: 1.25rem;
}

.swish-card__price,
.swish-card__title,
.swish-card__location {
	margin: 0;
}

.swish-card__title {
	font-size: 1.125rem;
}

.swish-card__title a {
	color: inherit;
	text-decoration: none;
}

.swish-card__title a:hover {
	text-decoration: underline;
}

.swish-card__location,
.swish-price__period {
	color: var(--wp--preset--color--muted, #5f716e);
}

/* The pin stays on the first line when a long place wraps. */
.swish-card__location {
	align-items: flex-start;
	display: flex;
	gap: 0.375rem;
}

.swish-card__location .swish-icon {
	height: 1.125em;
	margin-block-start: calc((1lh - 1.125em) / 2);
	width: 1.125em;
}

/* Foot: specifications at the start, the agent at the far end. */
.swish-card__foot {
	align-items: center;
	border-block-start: 1px solid var(--wp--preset--color--border, #dce5df);
	display: flex;
	gap: 0.75rem;
	margin-block-start: auto;
	min-height: 2rem;
	padding-block-start: 0.75rem;
}

.swish-card__specs {
	display: flex;
	flex: 1;
	flex-wrap: wrap;
	font-size: 0.875rem;
	gap: 0.25rem 1rem;
	list-style: none;
	margin: 0;
	padding: 0;
}

/* Above any link that covers the card, so it can be pointed at and followed. */
.swish-card__agent {
	border-radius: 50%;
	color: inherit;
	display: block;
	flex: none;
	margin-inline-start: auto;
	position: relative;
	text-decoration: none;
	z-index: 2;
}

/* The focus ring follows the round picture. */
.swish-card .swish-card__agent:focus-visible {
	border-radius: 50%;
}

.swish-card__avatar {
	align-items: center;
	background: var(--wp--preset--color--surface-alt, #eaf0eb);
	border-radius: 50%;
	box-shadow: 0 0 0 1px var(--wp--preset--color--border, #dce5df);
	color: var(--wp--preset--color--ink, #102322);
	display: flex;
	font-family: var(--wp--preset--font-family--manrope, inherit);
	font-size: 0.75rem;
	font-weight: 700;
	height: 2rem;
	justify-content: center;
	letter-spacing: 0.02em;
	overflow: hidden;
	width: 2rem;
}

.swish-card .swish-card__avatar img {
	display: block;
	height: 100%;
	object-fit: cover;
	width: 100%;
}

/* The agent's name: a tooltip that stays inside the card. */
.swish-card__agent-name {
	background: var(--wp--preset--color--scrim, #0b1918);
	border-radius: var(--swish-radius-control, 10px);
	box-shadow: 0 0 0 1px var(--wp--preset--color--border, #dce5df);
	color: var(--wp--preset--color--on-scrim, #fff);
	font-size: 0.8125rem;
	font-weight: 600;
	inset-block-end: calc(100% + 0.5rem);
	inset-inline-end: 0;
	line-height: 1.3;
	max-inline-size: 13rem;
	opacity: 0;
	overflow: hidden;
	padding: 0.375rem 0.625rem;
	position: absolute;
	text-overflow: ellipsis;
	transition: opacity 120ms ease, visibility 120ms;
	visibility: hidden;
	white-space: nowrap;
}

/* A bridge over the gap, so the pointer can move onto the name. */
.swish-card__agent::before {
	block-size: 0.5rem;
	content: "";
	inset-block-end: 100%;
	inset-inline: 0;
	position: absolute;
}

.swish-card__agent:hover .swish-card__agent-name,
.swish-card__agent:focus .swish-card__agent-name {
	opacity: 1;
	visibility: visible;
}

.swish-card__agent.is-dismissed .swish-card__agent-name {
	opacity: 0;
	visibility: hidden;
}

@media (forced-colors: active) {

	.swish-card__agent-name {
		border: 1px solid canvastext;
	}
}

.swish-card--compact .swish-card__body {
	padding: 0.75rem;
}

.swish-card--editorial {
	background: transparent;
	border: 0;
	border-radius: 0;
}

.swish-listings__count {
	margin-block: 0 1rem;
}

.swish-pagination {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	justify-content: center;
	margin-block-start: 2rem;
}

.swish-pagination a {
	align-items: center;
	display: inline-flex;
	min-height: 44px;
}

.swish-search {
	display: grid;
	gap: 0.75rem;
}

/*
 * Inline: one row that wraps. The "More filters" panel is drawn below the row
 * although it comes before the Search button, so opening it moves nothing.
 */
@media (min-width: 768px) {

	.swish-search--inline {
		align-items: flex-end;
		display: flex;
		flex-wrap: wrap;
	}

	.swish-search--inline > .swish-search__field {
		flex: 1 1 8rem;
		min-width: 0;
	}

	.swish-search--inline > .swish-search__more-toggle,
	.swish-search--inline > .swish-search__actions {
		flex: none;
	}

	.swish-search--inline > .swish-search__more {
		flex: 0 0 100%;
		order: 1;
	}
}

.swish-search__field label,
.swish-enquiry__field label {
	display: block;
	font-size: 0.875rem;
	font-weight: 600;
	margin-block-end: 0.25rem;
}

.swish-search input:not([type="checkbox"], [type="radio"]),
.swish-search select,
.swish-enquiry input:not([type="checkbox"]),
.swish-enquiry select,
.swish-enquiry textarea,
select.swish-select {
	background: var(--wp--preset--color--surface, #fff);
	border: 1px solid var(--wp--preset--color--muted, #5f716e);
	border-radius: var(--swish-radius-control, 10px);
	box-sizing: border-box;
	color: var(--wp--preset--color--ink, #102322);
	font: inherit;
	min-height: 48px;
	padding: 0.5rem 0.75rem;
	width: 100%;
}

/*
 * Every dropdown: the browser's arrow is replaced by a chevron drawn in the
 * text colour, set in from the edge, with room kept so text never runs under it.
 * Add the swish-select class to a select outside these forms.
 */
.swish-search select,
.swish-enquiry select,
select.swish-select {
	--swish-select-inset: 1rem;
	--swish-select-arrow: 0.375rem;

	appearance: none;
	background-image:
		linear-gradient(45deg, transparent calc(50% - 1px), currentcolor calc(50% - 1px), currentcolor calc(50% + 1px), transparent calc(50% + 1px)),
		linear-gradient(-45deg, transparent calc(50% - 1px), currentcolor calc(50% - 1px), currentcolor calc(50% + 1px), transparent calc(50% + 1px));
	background-position:
		right calc(var(--swish-select-inset) + var(--swish-select-arrow) - 1px) top calc(50% + 1px),
		right var(--swish-select-inset) top calc(50% + 1px);
	background-repeat: no-repeat;
	background-size: var(--swish-select-arrow) var(--swish-select-arrow);
	cursor: pointer;
	padding-inline-end: calc(var(--swish-select-inset) * 2 + var(--swish-select-arrow) * 2);
	text-overflow: ellipsis;
}

:where(.rtl, [dir="rtl"]) .swish-search select,
:where(.rtl, [dir="rtl"]) .swish-enquiry select,
:where(.rtl, [dir="rtl"]) select.swish-select {
	background-position:
		left var(--swish-select-inset) top calc(50% + 1px),
		left calc(var(--swish-select-inset) + var(--swish-select-arrow) - 1px) top calc(50% + 1px);
}

/* Dropdown lists are drawn by the browser, so they need colours it can read. */
.swish-search select option,
.swish-enquiry select option,
select.swish-select option {
	background: var(--wp--preset--color--surface, #fff);
	color: var(--wp--preset--color--ink, #102322);
}

/* With forced colours a painted arrow can vanish, so the browser's own returns. */
@media (forced-colors: active) {

	.swish-search select,
	.swish-enquiry select,
	select.swish-select {
		appearance: auto;
		background-image: none;
		padding-inline-end: 0.75rem;
	}
}

.swish-search button,
.swish-enquiry button {
	cursor: pointer;
	min-height: 48px;
}

.swish-search__actions {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
}

/*
 * Sticky: the form stays at the top of the window while its results scroll.
 * Only where the form is one row; stacked on a phone it would fill the screen.
 */
@media (min-width: 768px) {

	.swish-search-block--sticky {
		background: var(--wp--preset--color--surface, #fff);
		border: 1px solid var(--wp--preset--color--border, #dce5df);
		border-radius: var(--swish-radius-card, 18px);
		box-shadow: 0 12px 24px -20px rgba(0, 0, 0, 0.45);
		box-sizing: border-box;
		inset-block-start: calc(var(--wp-admin--admin-bar--height, 0px) + var(--swish-sticky-offset, 0px) + 0.5rem);
		padding: 1rem;
		position: sticky;
		z-index: 20;
	}
}

/* More filters: a button in the row of fields, and the panel it opens below. */
.swish-search__more-toggle[hidden],
.swish-search__more[hidden],
.swish-search__toggle-count[hidden] {
	display: none;
}

.swish-search .swish-search__toggle {
	align-items: center;
	background: transparent;
	border: 0;
	border-radius: var(--swish-radius-control, 10px);
	box-sizing: border-box;
	color: inherit;
	cursor: pointer;
	display: flex;
	font: inherit;
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
	font-weight: 400;
	gap: 0.375rem;
	justify-content: center;
	min-block-size: 44px;
	padding: 0.5rem 0.25rem;
	white-space: nowrap;
	width: 100%;
}

.swish-search__toggle-label {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
}

.swish-search .swish-search__toggle:hover .swish-search__toggle-label {
	text-decoration-thickness: 2px;
}

.swish-search__toggle .swish-icon--chevron {
	height: 1em;
	transform: rotate(90deg);
	transition: transform 200ms ease;
	width: 1em;
}

.swish-search__toggle[aria-expanded="true"] .swish-icon--chevron {
	transform: rotate(-90deg);
}

.swish-search__toggle-count {
	align-items: center;
	background: var(--wp--preset--color--accent-dark, #0f6b57);
	border-radius: var(--swish-radius-pill, 999px);
	color: var(--wp--preset--color--on-accent-dark, #fff);
	display: inline-flex;
	font-size: 0.75rem;
	font-variant-numeric: tabular-nums;
	justify-content: center;
	line-height: 1;
	min-block-size: 1.375rem;
	min-inline-size: 1.375rem;
	padding-inline: 0.375rem;
}

.swish-search__toggle-count-text {
	block-size: 1px;
	clip-path: inset(50%);
	inline-size: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
}

.swish-search__more {
	background: var(--wp--preset--color--surface-alt, #eaf0eb);
	border-radius: var(--swish-radius-control, 10px);
	display: grid;
	gap: 0.75rem;
	box-sizing: border-box;
	grid-column: 1 / -1;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 9.5rem), 1fr));
	padding: 1rem;
}

@media (prefers-reduced-motion: reduce) {

	.swish-search__toggle .swish-icon--chevron,
	.swish-card__agent-name {
		transition: none;
	}
}

.swish-details {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
	margin: 0;
}

.swish-details--inline {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.5rem;
}

.swish-details dt {
	color: var(--wp--preset--color--muted, #5f716e);
	font-size: 0.875rem;
}

.swish-details dd {
	font-weight: 600;
	margin: 0;
}

/* Icons take the size and colour of the text beside them. */
.swish-icon {
	flex: none;
	height: 1.25em;
	width: 1.25em;
}

/* Section headings inside a listing sit one step below the page title. */
.single-swish_property .wp-block-post-content :where(h2),
.editor-styles-wrapper.post-type-swish_property :where(h2) {
	font-size: var(--wp--preset--font-size--h-3, 1.5rem);
	line-height: 1.2;
}

.swish-description h2 {
	font-size: var(--wp--preset--font-size--h-3, 1.5rem);
}

/* Summary row: status, price and place on one line, reference at the end. */
.wp-block-group.swish-summary {
	align-items: center;
	gap: var(--wp--preset--spacing--20, 0.5rem) var(--wp--preset--spacing--50, 1.5rem);
}

.swish-summary .swish-status-block {
	display: flex;
}

.swish-summary .swish-chip {
	padding: 0.375rem 0.875rem;
}

.swish-summary .swish-price {
	font-family: var(--wp--preset--font-family--manrope, inherit);
	font-size: var(--wp--preset--font-size--lead, 1.375rem);
	font-weight: 700;
	letter-spacing: -0.01em;
	line-height: 1.2;
	margin: 0;
}

.swish-summary .swish-price strong {
	font-weight: inherit;
}

.swish-summary .swish-price__period {
	font-size: var(--wp--preset--font-size--body, 1rem);
	font-weight: 400;
	letter-spacing: 0;
}

.swish-summary .swish-address,
.swish-summary .swish-reference {
	margin: 0;
}

.swish-address--icon {
	align-items: center;
	display: flex;
	gap: 0.375rem;
}

.swish-address--icon .swish-icon {
	color: var(--wp--preset--color--muted, #5f716e);
}

.swish-summary .swish-reference {
	color: var(--wp--preset--color--muted, #5f716e);
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
}

.swish-summary > .wp-block-swish-property-reference {
	margin-inline-start: auto;
}

@media (max-width: 599.98px) {

	/* The place gets its own line, so a long one never squeezes the price. */
	.swish-summary > .wp-block-swish-property-address {
		flex-basis: 100%;
	}

	.swish-summary > .wp-block-swish-property-reference {
		margin-inline-start: 0;
	}
}

/* Amenities: a checklist that fills as many columns as fit. */
.swish-features .swish-features__title {
	font-size: var(--wp--preset--font-size--h-3, 1.5rem);
	margin-block: 0 var(--wp--preset--spacing--40, 1rem);
}

.swish-features__group + .swish-features__group {
	margin-block-start: var(--wp--preset--spacing--50, 1.5rem);
}

.swish-features .swish-features__group-title {
	color: var(--wp--preset--color--muted, #5f716e);
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
	font-weight: 700;
	letter-spacing: 0.06em;
	margin-block-end: var(--wp--preset--spacing--20, 0.5rem);
	text-transform: uppercase;
}

.swish-features__list {
	--swish-features-columns: 3;
	--swish-features-gap: var(--wp--preset--spacing--20, 0.5rem);

	display: grid;
	gap: var(--swish-features-gap);

	/* At most the chosen number of columns, fewer when items would get cramped. */
	grid-template-columns: repeat(auto-fill, minmax(min(100%, max(11.5rem, (100% - (var(--swish-features-columns) - 1) * var(--swish-features-gap)) / var(--swish-features-columns))), 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}

.swish-features__list--columns-1 {
	--swish-features-columns: 1;
}

.swish-features__list--columns-2 {
	--swish-features-columns: 2;
}

.swish-features__list--columns-4 {
	--swish-features-columns: 4;
}

.swish-features__item {
	align-items: center;
	background: var(--wp--preset--color--surface, #fff);
	border: 1px solid var(--wp--preset--color--border, #dce5df);
	border-radius: var(--swish-radius-control, 10px);
	display: flex;
	gap: 0.625rem;
	line-height: 1.3;
	max-inline-size: none;
	overflow-wrap: anywhere;
	padding: 0.625rem 0.875rem;
}

.swish-features__item .swish-icon {
	color: var(--wp--preset--color--accent-dark, #0f6b57);
}

/* Gallery. */
.swish-gallery {
	--swish-gallery-gap: var(--wp--preset--spacing--20, 0.5rem);
	--swish-gallery-ratio: 4 / 3;
	--swish-gallery-band: 2 / 1;

	position: relative;
}

.swish-gallery--ratio-3-2 {
	--swish-gallery-ratio: 3 / 2;
	--swish-gallery-band: 9 / 4;
}

.swish-gallery--ratio-16-9 {
	--swish-gallery-ratio: 16 / 9;
	--swish-gallery-band: 8 / 3;
}

.swish-gallery--ratio-1-1 {
	--swish-gallery-ratio: 1;
	--swish-gallery-band: 3 / 2;
}

.swish-gallery .swish-gallery__list {
	display: grid;
	gap: var(--swish-gallery-gap);
	grid-template-columns: repeat(2, minmax(0, 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}

.swish-gallery .swish-gallery__item {
	aspect-ratio: var(--swish-gallery-ratio);
	background: var(--wp--preset--color--surface-alt, #eaf0eb);
	border-radius: var(--swish-radius-card, 18px);
	margin: 0;
	max-inline-size: none;
	min-height: 0;
	overflow: hidden;
	position: relative;
}

.swish-gallery__link {
	display: block;
	inset: 0;
	position: absolute;
}

.swish-gallery .swish-gallery__link img {
	display: block;
	height: 100%;
	object-fit: cover;
	transition: transform var(--wp--custom--motion--duration, 200ms) ease;
	width: 100%;
}

/* The ring is drawn inside the photo, where the rounded corners cannot clip it. */
.swish-gallery__link:focus-visible {
	box-shadow: none;
	outline: none;
}

.swish-gallery__link:focus-visible::after {
	border-radius: inherit;
	box-shadow: inset 0 0 0 5px var(--swish-focus-halo, #fff);
	content: "";
	inset: 0;
	outline: 3px solid var(--swish-focus, #102322);
	outline-offset: -3px;
	position: absolute;
}

@media (hover: hover) and (prefers-reduced-motion: no-preference) {

	.swish-gallery__link:hover img {
		transform: scale(1.03);
	}
}

.swish-gallery__more {
	align-items: center;
	background: rgba(11, 25, 24, 0.64);
	background: color-mix(in srgb, var(--wp--preset--color--scrim, #0b1918) 64%, transparent);
	color: var(--wp--preset--color--on-scrim, #fff);
	display: flex;
	font-family: var(--wp--preset--font-family--manrope, inherit);
	font-size: var(--wp--preset--font-size--lead, 1.25rem);
	font-weight: 700;
	inset: 0;
	justify-content: center;
	position: absolute;
}

.swish-gallery__all {
	align-items: center;
	background: var(--wp--preset--color--surface, #fff);
	border: 1px solid var(--wp--preset--color--border, #dce5df);
	border-radius: var(--swish-radius-pill, 999px);
	color: var(--wp--preset--color--ink, #102322);
	cursor: pointer;
	display: inline-flex;
	font: inherit;
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
	font-weight: 600;
	gap: 0.5rem;
	inset-block-end: var(--wp--preset--spacing--40, 1rem);
	inset-inline-start: var(--wp--preset--spacing--40, 1rem);
	min-height: 44px;
	padding: 0.5rem 1rem;
	position: absolute;
}

.swish-gallery__all[hidden] {
	display: none;
}

.swish-gallery__all:hover {
	background: var(--wp--preset--color--ink, #102322);
	border-color: var(--wp--preset--color--ink, #102322);
	color: var(--wp--preset--color--canvas, #fff);
}

@media (min-width: 1024px) {

	.swish-gallery--grid .swish-gallery__list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.swish-gallery--grid .swish-gallery__more {
	display: none;
}

/* Phones: one row of photos to swipe through. */
@media (max-width: 781.98px) {

	.swish-gallery--mosaic .swish-gallery__list {
		display: flex;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
	}

	.swish-gallery--mosaic .swish-gallery__item {
		flex: 0 0 86%;
		scroll-snap-align: start;
	}

	.swish-gallery--mosaic.swish-gallery--count-1 .swish-gallery__item {
		flex-basis: 100%;
	}

	.swish-gallery--mosaic .swish-gallery__more {
		display: none;
	}
}

/*
 * Wider screens: one band of three areas. The lead photo takes two thirds, the
 * second sits top right, and the area beneath it holds the third photo or, when
 * there are more, up to six thumbnails.
 */
@media (min-width: 782px) {

	.swish-gallery--mosaic .swish-gallery__list {
		aspect-ratio: var(--swish-gallery-band);
		border-radius: var(--swish-radius-card, 18px);
		grid-template-columns: repeat(18, minmax(0, 1fr));
		grid-template-rows: repeat(4, minmax(0, 1fr));
		overflow: hidden;
	}

	.swish-gallery--mosaic .swish-gallery__item {
		aspect-ratio: auto;
		border-radius: 0;
	}

	.swish-gallery--mosaic .swish-gallery__item--lead {
		grid-area: 1 / 1 / 5 / 13;
	}

	.swish-gallery--mosaic.swish-gallery--count-1 .swish-gallery__item--lead {
		grid-column-end: 19;
	}

	.swish-gallery--mosaic .swish-gallery__item--side {
		grid-column: 13 / 19;
		grid-row: span 2;
	}

	.swish-gallery--mosaic.swish-gallery--count-2 .swish-gallery__item--side {
		grid-row: span 4;
	}

	.swish-gallery--mosaic .swish-gallery__item--thumb {
		grid-column: span 2;
	}

	.swish-gallery--thumbs-2 .swish-gallery__item--thumb,
	.swish-gallery--thumbs-3 .swish-gallery__item--thumb,
	.swish-gallery--thumbs-4 .swish-gallery__item--thumb {
		grid-column: span 3;
	}

	.swish-gallery--thumbs-2 .swish-gallery__item--thumb,
	.swish-gallery--thumbs-3 .swish-gallery__item--thumb:nth-child(3) {
		grid-row: span 2;
	}

	.swish-gallery--thumbs-5 .swish-gallery__item--thumb:nth-child(3) {
		grid-column: span 4;
	}

	.swish-gallery--mosaic .swish-gallery__item--extra {
		display: none;
	}
}

/* Without scripting there is no viewer, so every photo is laid out. */
@media (scripting: none) and (min-width: 782px) {

	.swish-gallery--mosaic.swish-gallery--has-more .swish-gallery__list {
		aspect-ratio: auto;
		border-radius: 0;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		grid-template-rows: none;
	}

	.swish-gallery--mosaic.swish-gallery--has-more .swish-gallery__item {
		aspect-ratio: var(--swish-gallery-ratio);
		border-radius: var(--swish-radius-control, 10px);
		display: block;
		grid-area: auto;
	}

	.swish-gallery--mosaic.swish-gallery--has-more .swish-gallery__more {
		display: none;
	}
}

/* Photo viewer. */
.swish-lightbox-open {
	overflow: hidden;
}

.swish-lightbox {
	--swish-focus: var(--wp--preset--color--on-scrim, #fff);
	--swish-focus-halo: var(--wp--preset--color--scrim, #0b1918);

	background: var(--wp--preset--color--scrim, #0b1918);
	border: 0;
	color: var(--wp--preset--color--on-scrim, #fff);
	height: 100vh;
	height: 100dvh;
	margin: 0;
	max-height: none;
	max-width: none;
	overflow: hidden;
	padding: 0;
	width: 100vw;
}

.swish-lightbox[open] {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
}

.swish-lightbox::backdrop {
	background: var(--wp--preset--color--scrim, #0b1918);
}

.swish-lightbox__bar {
	align-items: center;
	display: flex;
	gap: var(--wp--preset--spacing--40, 1rem);
	justify-content: space-between;
	padding: var(--wp--preset--spacing--30, 0.75rem) var(--wp--preset--spacing--40, 1rem);
}

.swish-lightbox__count {
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	margin: 0;
}

.swish-lightbox__stage {
	min-height: 0;
	padding: 0 var(--wp--preset--spacing--40, 1rem) var(--wp--preset--spacing--50, 1.5rem);
	position: relative;
	touch-action: pan-y pinch-zoom;
}

.swish-lightbox__figure {
	align-items: center;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--20, 0.5rem);
	height: 100%;
	justify-content: center;
	margin: 0;
}

.swish-lightbox__image {
	border-radius: var(--swish-radius-control, 10px);
	display: block;
	flex: 0 1 auto;
	height: auto;
	max-height: 100%;
	max-width: 100%;
	min-height: 0;
	object-fit: contain;
	opacity: 0;
	transition: opacity var(--wp--custom--motion--duration, 200ms) ease;
	width: auto;
}

.swish-lightbox__image.is-loaded {
	opacity: 1;
}

.swish-lightbox__caption {
	flex: none;
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
	text-align: center;
}

.swish-lightbox__button {
	align-items: center;
	background: rgba(11, 25, 24, 0.72);
	background: color-mix(in srgb, var(--wp--preset--color--scrim, #0b1918) 72%, transparent);
	border: 1px solid currentcolor;
	border-radius: var(--swish-radius-pill, 999px);
	color: inherit;
	cursor: pointer;
	display: inline-flex;
	height: 48px;
	justify-content: center;
	padding: 0;
	width: 48px;
}

.swish-lightbox__button:hover {
	background: var(--wp--preset--color--on-scrim, #fff);
	color: var(--wp--preset--color--scrim, #0b1918);
}

.swish-lightbox__button:focus-visible {
	outline: 3px solid var(--swish-focus);
	outline-offset: 2px;
}

.swish-lightbox__previous,
.swish-lightbox__next {
	inset-block-start: calc(50% - 36px);
	position: absolute;
}

.swish-lightbox__previous {
	inset-inline-start: var(--wp--preset--spacing--40, 1rem);
}

.swish-lightbox__next {
	inset-inline-end: var(--wp--preset--spacing--40, 1rem);
}

[dir="rtl"] .swish-lightbox__previous svg,
[dir="rtl"] .swish-lightbox__next svg {
	transform: scaleX(-1);
}

@media (min-width: 782px) {

	/* Room either side, so the controls never sit on the photo. */
	.swish-lightbox__stage {
		padding-inline: calc(48px + 2 * var(--wp--preset--spacing--40, 1rem));
	}
}

/* Contact card and enquiry form: one surface each, joined when stacked. */
.swish-contact,
.swish-enquiry {
	background: var(--wp--preset--color--surface, #fff);
	border: 1px solid var(--wp--preset--color--border, #dce5df);
	border-radius: var(--swish-radius-card, 18px);
	box-sizing: border-box;
	padding: var(--wp--preset--spacing--50, 1.5rem);
}

.swish-contact {
	container-type: inline-size;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40, 1rem);
}

.swish-contact p,
.swish-contact ul {
	margin: 0;
}

.swish-contact__head {
	align-items: center;
	display: flex;
	gap: var(--wp--preset--spacing--40, 1rem);
}

.swish-contact__avatar {
	align-items: center;
	background: var(--wp--preset--color--surface-alt, #eaf0eb);
	border-radius: 50%;
	color: var(--wp--preset--color--ink, #102322);
	display: flex;
	flex: none;
	font-family: var(--wp--preset--font-family--manrope, inherit);
	font-size: 1.25rem;
	font-weight: 700;
	height: 4rem;
	justify-content: center;
	letter-spacing: 0.02em;
	overflow: hidden;
	width: 4rem;
}

.swish-contact .swish-contact__avatar img {
	display: block;
	height: 100%;
	object-fit: cover;
	width: 100%;
}

.swish-contact__who {
	display: grid;
	gap: 0.125rem;
	min-width: 0;
}

.swish-contact__eyebrow {
	color: var(--wp--preset--color--accent-dark, #0f6b57);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.swish-contact__name {
	font-family: var(--wp--preset--font-family--manrope, inherit);
	font-size: var(--wp--preset--font-size--lead, 1.25rem);
	font-weight: 700;
	letter-spacing: -0.01em;
	line-height: 1.2;
	overflow-wrap: anywhere;
}

.swish-contact__name a {
	color: inherit;
	text-decoration: none;
}

.swish-contact__name a:hover {
	text-decoration: underline;
}

.swish-contact__role {
	color: var(--wp--preset--color--muted, #5f716e);
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
}

.swish-contact .swish-contact__actions {
	display: grid;
	gap: var(--wp--preset--spacing--20, 0.5rem);
	list-style: none;
	padding: 0;
}

.swish-contact__actions li {
	margin: 0;
	max-inline-size: none;
}

.swish-contact__action {
	align-items: center;
	border: 1px solid var(--wp--preset--color--border, #dce5df);
	border-radius: var(--swish-radius-control, 10px);
	color: inherit;
	display: flex;
	gap: var(--wp--preset--spacing--30, 0.75rem);
	min-height: 3.5rem;
	padding: var(--wp--preset--spacing--20, 0.5rem) var(--wp--preset--spacing--30, 0.75rem);
	text-decoration: none;
	transition: background-color var(--wp--custom--motion--duration, 200ms) ease, border-color var(--wp--custom--motion--duration, 200ms) ease;
}

.swish-contact__action:hover {
	background: var(--wp--preset--color--surface-alt, #eaf0eb);
	border-color: var(--wp--preset--color--muted, #5f716e);
}

.swish-contact__action-icon {
	align-items: center;
	background: var(--wp--preset--color--surface-alt, #eaf0eb);
	border-radius: 50%;
	color: var(--wp--preset--color--accent-dark, #0f6b57);
	display: flex;
	flex: none;
	height: 2.25rem;
	justify-content: center;
	width: 2.25rem;
}

.swish-contact__action:hover .swish-contact__action-icon {
	background: var(--wp--preset--color--surface, #fff);
}

.swish-contact__action-text {
	display: grid;
	line-height: 1.3;
	min-width: 0;
}

.swish-contact__action-label {
	color: var(--wp--preset--color--muted, #5f716e);
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
}

.swish-contact__action-value {
	font-size: 0.9375rem;
	font-weight: 600;
	overflow-wrap: anywhere;
}

/* A narrow sidebar: smaller photo, and icons without their discs. */
@container (max-width: 17rem) {

	.swish-contact__head {
		gap: var(--wp--preset--spacing--30, 0.75rem);
	}

	.swish-contact__avatar {
		font-size: 1rem;
		height: 3rem;
		width: 3rem;
	}

	.swish-contact__name {
		font-size: var(--wp--preset--font-size--body, 1.125rem);
	}

	.swish-contact__action {
		gap: var(--wp--preset--spacing--20, 0.5rem);
	}

	.swish-contact__action-icon {
		background: none;
		height: auto;
		width: auto;
	}
}

.swish-contact__cta .wp-element-button {
	box-sizing: border-box;
	display: block;
	text-align: center;
	text-decoration: none;
	width: 100%;
}

.swish-contact__more {
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
	font-weight: 600;
}

.swish-contact__more a {
	align-items: center;
	display: inline-flex;
	gap: 0.375rem;
	min-height: 24px;
}

.swish-enquiry .swish-enquiry__title {
	font-size: var(--wp--preset--font-size--lead, 1.25rem);
	line-height: 1.2;
	margin-block: 0 var(--wp--preset--spacing--40, 1rem);
}

@supports selector(:has(*)) {

	.swish-contact:has(+ .swish-enquiry) {
		border-end-end-radius: 0;
		border-end-start-radius: 0;
	}

	.swish-contact + .swish-enquiry {
		border-block-start: 0;
		border-start-end-radius: 0;
		border-start-start-radius: 0;
		margin-block-start: 0;
	}
}

.swish-breadcrumb ol {
	display: flex;
	flex-wrap: wrap;
	font-size: 0.875rem;
	gap: 0.5rem;
	list-style: none;
	margin: 0;
	padding: 0;
}

.swish-breadcrumb li:not(:last-child)::after {
	content: "›";
	margin-inline-start: 0.5rem;
}

.swish-enquiry__form {
	display: grid;
	gap: 1rem;
}

.swish-enquiry__trap {
	block-size: 1px;
	inline-size: 1px;
	inset-inline-start: -9999px;
	overflow: hidden;
	position: absolute;
}

.swish-enquiry__error {
	color: var(--wp--preset--color--error, #b52f36);
	font-size: 0.875rem;
	margin: 0.25rem 0 0;
}

.swish-enquiry__error:empty,
.swish-enquiry__status:empty {
	display: none;
}

.swish-enquiry__status {
	border: 1px solid currentcolor;
	border-radius: var(--swish-radius-control, 10px);
	padding: 0.75rem;
}

/* ==========================================================================
   Enquiry form opened from a button (the block's "pop-up" display).

   The form is printed in the page. Where scripting runs, the page shows a
   button instead and the view script moves the form into a dialog. Without
   scripting, or if the button's link is simply followed, the form shows in
   the page.
   ========================================================================== */

.swish-enquiry__fields {
	display: grid;
	gap: 1rem;
}

.swish-enquiry [hidden] {
	display: none;
}

.swish-enquiry [aria-invalid="true"] {
	border-color: var(--wp--preset--color--error, #b52f36);
}

.swish-enquiry__open {
	display: none;
	margin: 0;
}

.swish-enquiry--preview .swish-enquiry__open,
.swish-enquiry--modal.is-enhanced .swish-enquiry__open {
	display: block;
}

.swish-enquiry__trigger.wp-element-button {
	align-items: center;
	box-sizing: border-box;
	display: flex;
	justify-content: center;
	min-height: 48px;
	text-align: center;
	text-decoration: none;
	width: 100%;
}

.swish-enquiry__hint {
	color: var(--wp--preset--color--muted, #5f716e);
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
	margin: var(--wp--preset--spacing--20, 0.5rem) 0 0;
	text-align: center;
}

.swish-enquiry__bar {
	display: none;
}

/* In the page, the panel is only a heading and the form. */
.swish-enquiry--modal > .swish-enquiry__panel .swish-enquiry__avatar,
.swish-enquiry--modal > .swish-enquiry__panel .swish-enquiry__about,
.swish-enquiry--modal > .swish-enquiry__panel .swish-enquiry__recipient {
	display: none;
}

.swish-enquiry--modal > .swish-enquiry__open + .swish-enquiry__panel:target {
	margin-block-start: var(--wp--preset--spacing--50, 1.5rem);
}

@media (scripting: enabled) {

	.swish-enquiry--modal .swish-enquiry__open {
		display: block;
	}

	.swish-enquiry--modal > .swish-enquiry__panel:not(:target) {
		display: none;
	}
}

/* Joined under the contact card, the button reads as that card's main action. */
@supports selector(:has(*)) {

	.swish-contact:has(+ .swish-enquiry--modal) {
		border-block-end: 0;
		padding-block-end: var(--wp--preset--spacing--40, 1rem);
	}

	.swish-contact + .swish-enquiry--modal {
		padding-block-start: 0;
	}
}

/* The page behind stays still, and keeps its width when the scrollbar goes. */
.swish-enquiry-open {
	overflow: hidden;
	padding-inline-end: var(--swish-enquiry-scrollbar, 0);
}

.swish-enquiry__dialog {
	background: var(--wp--preset--color--surface, #fff);
	border: 1px solid var(--wp--preset--color--border, #dce5df);
	border-radius: var(--swish-radius-card, 18px);
	box-shadow: 0 1.5rem 4rem color-mix(in srgb, var(--wp--preset--color--scrim, #0b1918) 30%, transparent);
	box-sizing: border-box;
	color: var(--wp--preset--color--ink, #102322);
	inline-size: min(34rem, calc(100vw - 2rem));
	max-block-size: min(46rem, calc(100vh - 2rem));
	max-block-size: min(46rem, calc(100dvh - 2rem));
	max-inline-size: none;
	overflow: hidden;
	padding: 0;
	text-align: start;
}

.swish-enquiry__dialog[open] {
	display: flex;
	flex-direction: column;
}

.swish-enquiry__dialog::backdrop {
	background: color-mix(in srgb, var(--wp--preset--color--scrim, #0b1918) 70%, transparent);
}

.swish-enquiry__dialog .swish-enquiry__panel {
	display: flex;
	flex: 1;
	flex-direction: column;
	min-block-size: 0;
}

.swish-enquiry__dialog .swish-enquiry__header {
	align-items: center;
	border-block-end: 1px solid var(--wp--preset--color--border, #dce5df);
	display: flex;
	flex: none;
	gap: var(--wp--preset--spacing--40, 1rem);
	padding: var(--wp--preset--spacing--40, 1rem) var(--wp--preset--spacing--40, 1rem) var(--wp--preset--spacing--40, 1rem) var(--wp--preset--spacing--50, 1.5rem);
}

.swish-enquiry__avatar {
	align-items: center;
	background: var(--wp--preset--color--surface-alt, #eaf0eb);
	border-radius: 50%;
	display: flex;
	flex: none;
	font-family: var(--wp--preset--font-family--manrope, inherit);
	font-size: 1rem;
	font-weight: 700;
	height: 3rem;
	justify-content: center;
	letter-spacing: 0.02em;
	overflow: hidden;
	width: 3rem;
}

.swish-enquiry .swish-enquiry__avatar img {
	display: block;
	height: 100%;
	object-fit: cover;
	width: 100%;
}

.swish-enquiry__heading {
	display: grid;
	flex: 1;
	gap: 0.125rem;
	min-width: 0;
}

.swish-enquiry__heading p {
	margin: 0;
}

.swish-enquiry__dialog .swish-enquiry__title {
	margin: 0;
}

.swish-enquiry__about {
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
	font-weight: 600;
	overflow-wrap: anywhere;
}

.swish-enquiry__recipient {
	color: var(--wp--preset--color--muted, #5f716e);
	font-size: var(--wp--preset--font-size--metadata, 0.875rem);
}

.swish-enquiry .swish-enquiry__close {
	align-items: center;
	align-self: flex-start;
	appearance: none;
	background: none;
	border: 0;
	border-radius: 50%;
	color: inherit;
	display: flex;
	flex: none;
	height: 44px;
	justify-content: center;
	min-height: 0;
	padding: 0;
	transition: background-color var(--wp--custom--motion--duration, 200ms) ease;
	width: 44px;
}

.swish-enquiry .swish-enquiry__close[hidden] {
	display: none;
}

.swish-enquiry .swish-enquiry__close:hover {
	background: var(--wp--preset--color--surface-alt, #eaf0eb);
}

.swish-enquiry__dialog .swish-admin-notice {
	flex: none;
	margin: var(--wp--preset--spacing--40, 1rem) var(--wp--preset--spacing--50, 1.5rem) 0;
}

/* The fields scroll between the header and the send button, which stay put. */
.swish-enquiry__dialog .swish-enquiry__form {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 0;
	min-block-size: 0;
}

.swish-enquiry__dialog .swish-enquiry__form[hidden] {
	display: none;
}

.swish-enquiry__dialog .swish-enquiry__fields {
	align-content: start;
	flex: 1;
	min-block-size: 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: var(--wp--preset--spacing--50, 1.5rem);
}

.swish-enquiry__dialog .swish-enquiry__submit {
	border-block-start: 1px solid var(--wp--preset--color--border, #dce5df);
	flex: none;
	padding: var(--wp--preset--spacing--40, 1rem) var(--wp--preset--spacing--50, 1.5rem);
}

.swish-enquiry__dialog .swish-enquiry__submit .wp-element-button,
.swish-enquiry__done .wp-element-button {
	width: 100%;
}

/* After sending: the result stays until the visitor closes the dialog. */
.swish-enquiry__done {
	align-content: center;
	display: grid;
	flex: 1;
	gap: var(--wp--preset--spacing--30, 0.75rem);
	justify-items: center;
	padding: var(--wp--preset--spacing--70, 3rem) var(--wp--preset--spacing--50, 1.5rem) var(--wp--preset--spacing--50, 1.5rem);
	text-align: center;
}

.swish-enquiry__done-icon {
	align-items: center;
	background: var(--wp--preset--color--surface-alt, #eaf0eb);
	border-radius: 50%;
	color: var(--wp--preset--color--accent-dark, #0f6b57);
	display: flex;
	font-size: 1.5rem;
	height: 4rem;
	justify-content: center;
	width: 4rem;
}

.swish-enquiry .swish-enquiry__done-title {
	font-size: var(--wp--preset--font-size--lead, 1.25rem);
	line-height: 1.2;
	margin: 0;
	outline-offset: 4px;
}

.swish-enquiry__done-text {
	color: var(--wp--preset--color--muted, #5f716e);
	margin: 0 0 var(--wp--preset--spacing--40, 1rem);
}

/* Phones: a full-screen sheet that shrinks to the space above the keyboard. */
@media (max-width: 599.98px) {

	.swish-enquiry__dialog {
		block-size: var(--swish-enquiry-height, 100vh);
		border: 0;
		border-radius: 0;
		inline-size: 100vw;
		inset-block: var(--swish-enquiry-offset, 0) auto;
		margin: 0;
		max-block-size: none;
	}

	.swish-enquiry__dialog .swish-enquiry__header {
		padding-inline-start: var(--wp--preset--spacing--40, 1rem);
	}

	.swish-enquiry__dialog .swish-enquiry__fields {
		padding: var(--wp--preset--spacing--40, 1rem);
	}

	.swish-enquiry__dialog .swish-enquiry__submit {
		padding: var(--wp--preset--spacing--30, 0.75rem) var(--wp--preset--spacing--40, 1rem) max(var(--wp--preset--spacing--30, 0.75rem), env(safe-area-inset-bottom));
	}
}

@supports (height: 100dvh) {

	@media (max-width: 599.98px) {

		.swish-enquiry__dialog {
			block-size: var(--swish-enquiry-height, 100dvh);
		}
	}
}

/* Phones and small tablets: the sidebar is far down, so the button follows. */
@media (max-width: 781.98px) {

	.swish-enquiry--modal.is-enhanced .swish-enquiry__bar {
		background: var(--wp--preset--color--surface, #fff);
		border-block-start: 1px solid var(--wp--preset--color--border, #dce5df);
		box-sizing: border-box;
		display: block;
		inset: auto 0 0;
		padding: var(--wp--preset--spacing--30, 0.75rem) var(--wp--preset--spacing--40, 1rem) max(var(--wp--preset--spacing--30, 0.75rem), env(safe-area-inset-bottom));
		position: fixed;
		z-index: 10;
	}

	/* Out of the way while the button in the page is on screen. */
	.swish-enquiry--modal.is-enhanced .swish-enquiry__bar.is-resting {
		transform: translateY(100%);
		visibility: hidden;
	}

	/* Room for the bar, so it never covers the end of the page. */
	body:has(.swish-enquiry.is-enhanced .swish-enquiry__bar) {
		padding-block-end: 4.5rem;
	}
}

@media (prefers-reduced-motion: no-preference) {

	.swish-enquiry__dialog[open] {
		animation: swish-enquiry-in var(--wp--custom--motion--duration, 200ms) ease;
	}

	.swish-enquiry__dialog[open]::backdrop {
		animation: swish-enquiry-fade var(--wp--custom--motion--duration, 200ms) ease;
	}

	.swish-enquiry__bar {
		transition: transform var(--wp--custom--motion--duration, 200ms) ease, visibility var(--wp--custom--motion--duration, 200ms) ease;
	}
}

@media (prefers-reduced-motion: reduce) {

	.swish-enquiry .swish-enquiry__close {
		transition: none;
	}
}

@keyframes swish-enquiry-in {

	from {
		opacity: 0;
		transform: translateY(0.75rem);
	}
}

@keyframes swish-enquiry-fade {

	from {
		opacity: 0;
	}
}

/* ============================ End enquiry pop-up ========================== */

.swish-admin-notice,
.swish-editor-notice {
	border: 1px dashed var(--wp--preset--color--muted, #5f716e);
	font-size: 0.875rem;
	padding: 0.75rem;
}

:where(.swish-search, .swish-enquiry, .swish-contact, .swish-card, .swish-pagination, .swish-breadcrumb) :focus-visible {
	outline: 2px solid currentcolor;
	outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {

	.swish-card,
	.swish-contact__action,
	.swish-gallery .swish-gallery__link img,
	.swish-lightbox__image {
		transition: none;
	}

	.swish-card:hover {
		transform: none;
	}
}
