/*
Theme Name: Swish Real Estate
Theme URI: https://realestate.swishfolio.com
Author: Pixel Tribe
Author URI: https://denis.swishfolio.com
Description: An editorial WordPress block theme for property businesses. Large imagery, calm typography and an asymmetric layout, built entirely with core blocks. Works on its own with no plugin required.
Requires at least: 6.9
Tested up to: 7.1
Requires PHP: 8.1
Version: 0.2.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: swish-real-estate
Tags: full-site-editing, block-patterns, custom-colors, custom-logo, custom-menu, editor-style, featured-images, full-width-template, one-column, two-columns, template-editing, translation-ready, wide-blocks, style-variations, blog, portfolio
*/

/*
 * Only the rules that theme.json cannot express live here: layout offsets for
 * the editorial grid, focus rings, navigation details and reduced motion.
 * All values are logical properties or theme.json presets.
 */

:root {
	--swish-radius-card: var(--wp--custom--radius--card, 18px);
	--swish-radius-control: var(--wp--custom--radius--control, 10px);
	--swish-radius-pill: var(--wp--custom--radius--pill, 999px);
	--swish-content: var(--wp--custom--layout--content, 760px);
	--swish-wide: var(--wp--custom--layout--wide, 1280px);
	--swish-max: var(--wp--custom--layout--max, 1480px);
	--swish-focus: var(--wp--preset--color--ink);
	--swish-focus-halo: var(--wp--preset--color--canvas);
	--swish-transition: var(--wp--custom--motion--duration, 200ms) ease;
}

/* Focus: a two-tone ring stays visible on light, dark and image backgrounds. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--swish-focus);
	outline-offset: 2px;
	box-shadow: 0 0 0 2px var(--swish-focus-halo);
	border-radius: 2px;
}

.wp-block-cover,
.has-scrim-background-color {
	--swish-focus: var(--wp--preset--color--on-scrim);
	--swish-focus-halo: var(--wp--preset--color--scrim);
}

.has-accent-dark-background-color {
	--swish-focus: var(--wp--preset--color--on-accent-dark);
	--swish-focus-halo: var(--wp--preset--color--accent-dark);
}

.wp-block-button__link.has-background:hover,
.wp-block-button__link.has-background:focus {
	filter: brightness(0.92);
}

/* Header */
.swish-header {
	min-block-size: 64px;
}

@media (min-width: 782px) {
	.swish-header {
		min-block-size: 80px;
	}
}

.swish-header .wp-block-site-title {
	white-space: nowrap;
}

.swish-header .wp-block-navigation__responsive-container-open,
.swish-header .wp-block-navigation__responsive-container-close {
	padding: 10px;
	min-block-size: 44px;
	min-inline-size: 44px;
}

.swish-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog {
	padding-block-start: var(--wp--preset--spacing--40);
}

.swish-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	display: flex;
	align-items: center;
	min-block-size: 44px;
	font-size: var(--wp--preset--font-size--lead);
}

.wp-block-navigation .wp-block-navigation-item.swish-nav-mobile-only {
	display: none;
}

.wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.swish-nav-mobile-only {
	display: flex;
}

/*
 * Below 1200px the buttons give way to the "Get in touch" navigation link,
 * which sits in the inline menu from 600px and in the core overlay below that.
 */
@media (max-width: 1199.98px) {
	.swish-header .wp-block-buttons.swish-header-cta {
		display: none;
	}

	.wp-block-navigation .wp-block-navigation-item.swish-nav-mobile-only {
		display: flex;
	}
}

@media (min-width: 600px) and (max-width: 1023.98px) {
	.swish-header .wp-block-navigation {
		font-size: 0.875rem;
		gap: 0.75rem;
	}

	.swish-header .wp-block-navigation .wp-block-navigation__container {
		gap: 0.75rem;
	}
}

/* Sticky header is opt-in through the header-sticky variation of the header pattern. */
.swish-header--sticky {
	position: sticky;
	inset-block-start: 0;
	z-index: 20;
}

/* Editorial eyebrow text above headings. */
.swish-eyebrow {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: var(--wp--preset--font-size--metadata);
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent-dark);
}

.has-scrim-background-color .swish-eyebrow,
.has-accent-dark-background-color .swish-eyebrow,
.wp-block-cover .swish-eyebrow {
	color: inherit;
}

/* Rounded images and cards */
.swish-card {
	border-radius: var(--swish-radius-card);
	overflow: hidden;
}

.wp-block-image.swish-rounded img,
.swish-card .wp-block-image img {
	border-radius: var(--swish-radius-card);
}

.swish-card .wp-block-image img {
	border-end-start-radius: 0;
	border-end-end-radius: 0;
}

.swish-card:has(.wp-block-post-featured-image) .wp-block-post-featured-image img {
	border-end-start-radius: 0;
	border-end-end-radius: 0;
}

/*
 * A rounded panel for controls and plain links. Unlike a card it holds no
 * image and does not lift on hover.
 */
.swish-panel {
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--swish-radius-card);
}

/* The panel's one link covers it, so the whole panel is the target. */
.swish-panel--link {
	position: relative;
	transition: border-color var(--swish-transition);
}

.swish-panel--link a {
	text-decoration: none;
}

.swish-panel--link a::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: var(--swish-radius-card);
}

.swish-panel--link:hover {
	border-color: var(--wp--preset--color--accent-dark);
}

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

.swish-chip {
	display: inline-block;
	padding-block: 2px;
	padding-inline: 12px;
	border-radius: var(--swish-radius-pill);

	/* White text on every chip, so the chip tokens are dark in each variation. */
	background: var(--swish-chip-background, var(--wp--custom--chip--background));
	color: #fff;
	font-size: var(--wp--preset--font-size--metadata);
	font-weight: 600;
	width: fit-content;
}

.swish-card img,
.wp-block-image.swish-rounded img {
	transition: transform var(--swish-transition);
}

@media (hover: hover) {
	a:hover .swish-lift,
	.swish-card:hover .wp-block-image img {
		transform: translateY(-2px);
	}
}

/* Editorial asymmetry at desktop widths. */
.swish-section--max {
	max-inline-size: var(--swish-max);
	margin-inline: auto;
}

.wp-block-group.swish-bleed-end {
	max-inline-size: none;
}

@media (min-width: 900px) {
	.swish-stagger > :nth-child(3n + 2) {
		margin-block-start: var(--wp--preset--spacing--70);
	}

	.swish-stagger > :nth-child(3n) {
		margin-block-start: var(--wp--preset--spacing--30);
	}

	.swish-overlap-start {
		margin-inline-start: clamp(-6rem, -5vw, -2rem) !important;
		position: relative;
		z-index: 1;
	}

	.swish-hero-columns .swish-hero-text {
		padding-block-end: var(--wp--preset--spacing--70);
	}

}

.swish-hero-image .wp-block-image {
	margin: 0;
}

.swish-hero-image .wp-block-image img {
	display: block;
	inline-size: 100%;
	object-fit: cover;
}

/* Prose legibility */
.wp-block-post-content :where(p, li) {
	max-inline-size: 72ch;
}

/* Pagination tap targets */
.wp-block-query-pagination a,
.wp-block-query-pagination .page-numbers,
.wp-block-post-navigation-link a {
	min-block-size: 44px;
	display: inline-flex;
	align-items: center;
}

.wp-block-query-pagination .page-numbers,
.wp-block-post-navigation-link a {
	padding-inline: 4px;
	min-inline-size: 44px;
	justify-content: center;
}

/* Comment form controls (rendered by core) */
.wp-block-post-comments-form :where(input[type="text"], input[type="email"], input[type="url"], textarea) {
	min-block-size: 48px;
	border: 1px solid var(--wp--preset--color--muted);
	border-radius: var(--swish-radius-control);
	background: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--ink);
	padding-inline: var(--wp--preset--spacing--40);
}

/*
 * Dropdowns rendered by core (archives, categories). The chevron is drawn in
 * the text colour and set in from the edge; listing plugins use the same recipe.
 */
:where(.wp-block-archives-dropdown, .wp-block-categories-dropdown) select,
select.swish-select {
	--swish-select-inset: 1rem;
	--swish-select-arrow: 0.375rem;

	appearance: none;
	min-block-size: 48px;
	border: 1px solid var(--wp--preset--color--muted);
	border-radius: var(--swish-radius-control);
	background-color: var(--wp--preset--color--surface);
	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);
	color: var(--wp--preset--color--ink);
	font: inherit;
	max-inline-size: 100%;
	padding-block: var(--wp--preset--spacing--20);
	padding-inline: var(--wp--preset--spacing--30) calc(var(--swish-select-inset) * 2 + var(--swish-select-arrow) * 2);
	text-overflow: ellipsis;
}

:where(.rtl, [dir="rtl"]) :where(.wp-block-archives-dropdown, .wp-block-categories-dropdown) 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);
}

:where(.wp-block-archives-dropdown, .wp-block-categories-dropdown) select option,
select.swish-select option {
	background: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--ink);
}

@media (forced-colors: active) {
	:where(.wp-block-archives-dropdown, .wp-block-categories-dropdown) select,
	select.swish-select {
		appearance: auto;
		background-image: none;
		padding-inline-end: var(--wp--preset--spacing--30);
	}
}

/* Details / FAQ: a plus at the end of the question, a minus while it is open. */
.wp-block-details {
	border-block-end: 1px solid var(--wp--preset--color--border);
	padding-block: var(--wp--preset--spacing--40);
}

.wp-block-details summary {
	min-block-size: 44px;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--40);
	list-style: none;
	font-family: var(--wp--preset--font-family--manrope);
	font-weight: 600;
	font-size: var(--wp--preset--font-size--lead);
}

.wp-block-details summary::-webkit-details-marker {
	display: none;
}

.wp-block-details summary::after {
	content: "";
	flex: none;
	inline-size: 1.25rem;
	block-size: 1.25rem;
	background:
		linear-gradient(currentcolor, currentcolor) center / 100% 2px no-repeat,
		linear-gradient(currentcolor, currentcolor) center / 2px 100% no-repeat;
}

.wp-block-details[open] > summary::after {
	background: linear-gradient(currentcolor, currentcolor) center / 100% 2px no-repeat;
}

@media (forced-colors: active) {
	.wp-block-details summary::after,
	.wp-block-details[open] > summary::after {
		background: none;
		content: "+";
		inline-size: auto;
		block-size: auto;
	}

	.wp-block-details[open] > summary::after {
		content: "\2212";
	}
}

/* Page titles: room below the title before the page begins. */
main :is(.wp-block-post-title, .wp-block-query-title):is(h1) + * {
	margin-block-start: clamp(2rem, 1.5rem + 2vw, 3rem);
}

/* Post grids: every card fills its row, with or without a picture, and none is stepped down. */
.wp-block-post-template.is-layout-grid > li {
	display: flex;
	margin-block-start: 0;
}

.wp-block-post-template.is-layout-grid > li > .swish-card {
	flex: 1 1 auto;
	min-inline-size: 0;
}

/* "Read all articles", "View all properties": plain weight, with an arrow. */
.swish-more-link {
	font-weight: 400;
}

.swish-more-link a {
	align-items: center;
	display: inline-flex;
	position: relative;
	text-decoration: none;
}

.swish-more-link a:hover,
.swish-more-link a:focus {
	text-decoration: none;
}

/* Hover underline: grows from the arrow end across the text only, and shrinks back on mouse-out. */
.swish-more-link a::before {
	background: currentcolor;
	block-size: 1px;
	content: "";
	inset-block-start: calc(50% + 0.7em);
	inset-inline: 0 calc(1.125em + 0.375rem);
	pointer-events: none;
	position: absolute;
	transform: scaleX(0);
	transform-origin: right center;
	transition: transform 300ms ease;
}

[dir="rtl"] .swish-more-link a::before {
	transform-origin: left center;
}

.swish-more-link a:hover::before,
.swish-more-link a:focus-visible::before {
	transform: scaleX(1);
}

.swish-more-link a::after {
	background: currentcolor;
	block-size: 1.125em;
	content: "";
	flex: none;
	inline-size: 1.125em;
	margin-inline-start: 0.375rem;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14m-6-6 6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
}

[dir="rtl"] .swish-more-link a::after {
	transform: scaleX(-1);
}

@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;
	}

	.swish-card img,
	.wp-block-image.swish-rounded img {
		transform: none !important;
	}
}

/* Remove the default template-part gap so bands sit flush against the header and footer. */
.wp-site-blocks > * + * {
	margin-block-start: 0;
}

.swish-header {
	border-block-end: 1px solid var(--wp--preset--color--border);
}

@media (min-width: 900px) {
	.swish-hero-image .wp-block-image img {
		min-block-size: 0;
		aspect-ratio: auto !important;
		block-size: min(82vh, 740px);
	}

	.swish-pull-up {
		margin-block-start: calc(var(--wp--preset--spacing--80) * -1) !important;
		position: relative;
		z-index: 2;
	}
}

.swish-posts-feature > li:first-child {
	grid-column: 1 / -1;
}

@media (min-width: 900px) {
	.swish-posts-feature > li:first-child .wp-block-post-featured-image {
		aspect-ratio: 21 / 9 !important;
	}

	.swish-posts-feature > li:first-child .wp-block-post-title {
		font-size: var(--wp--preset--font-size--h-2);
	}
}

/*
 * Hero with search (patterns/hero-search.php). A Cover block, so the
 * photograph and its overlay stay editable. On top of the editor's overlay
 * sits a second shade that deepens towards the foot, where the text is, so
 * the headline keeps its contrast whichever photograph is used.
 */
.swish-hero-search::after {
	background-image: linear-gradient(to top, rgba(11, 25, 24, 0.8), rgba(11, 25, 24, 0.5));
	content: "";
	inset: 0;
	pointer-events: none;
	position: absolute;
	z-index: 1;
}

@supports (color: color-mix(in srgb, red 50%, transparent)) {
	.swish-hero-search::after {
		background-image: linear-gradient(to top, color-mix(in srgb, var(--wp--preset--color--scrim) 80%, transparent), color-mix(in srgb, var(--wp--preset--color--scrim) 50%, transparent));
	}
}

/* With room to spare, the shade keeps to the foot and the text's side, and the rest of the photograph stays bright. */
@media (min-width: 782px) {
	.swish-hero-search::after {
		background-image:
			linear-gradient(to top, rgba(11, 25, 24, 0.7), rgba(11, 25, 24, 0) 60%),
			linear-gradient(to right, rgba(11, 25, 24, 0.62), rgba(11, 25, 24, 0.4) 45%, rgba(11, 25, 24, 0) 80%);
	}

	@supports (color: color-mix(in srgb, red 50%, transparent)) {
		.swish-hero-search::after {
			background-image:
				linear-gradient(to top, color-mix(in srgb, var(--wp--preset--color--scrim) 70%, transparent), transparent 60%),
				linear-gradient(to right, color-mix(in srgb, var(--wp--preset--color--scrim) 62%, transparent), color-mix(in srgb, var(--wp--preset--color--scrim) 40%, transparent) 45%, transparent 80%);
		}
	}
}

.swish-hero-search .wp-block-cover__inner-container {
	color: var(--wp--preset--color--on-scrim);
	z-index: 2;
}

.swish-hero-search h1 {
	text-wrap: balance;
}

.swish-hero-search__text > p {
	text-wrap: balance;
}

/* The search panel is an ordinary light surface again, inside the dark hero. */
.swish-hero-search__panel {
	--swish-focus: var(--wp--preset--color--ink);
	--swish-focus-halo: var(--wp--preset--color--surface);
}

@media (max-width: 599.98px) {
	.swish-hero-search__panel.wp-block-group {
		padding: var(--wp--preset--spacing--40) !important;
	}
}

/*
 * Homepage sections (patterns story-video, feature-luxury,
 * testimonials-rotator, cta-banner and footer-columns).
 *
 * Shared scale: a 1296px container with 32px gutters (24px at 1280px and
 * below), 120/80/56px section padding, 12px media radius and 16px controls.
 */
.swish-band,
.swish-cta-band,
.swish-footer {
	--swish-section-pad: 120px;
	--swish-col-gap: 80px;
	--swish-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
	--wp--style--root--padding-left: 32px;
	--wp--style--root--padding-right: 32px;
	--swish-focus-width: 2px;
}

.wp-block-group.swish-band {
	padding-block: var(--swish-section-pad);
}

.swish-band .swish-cols.wp-block-columns {
	gap: var(--swish-col-gap);
	margin-block: 0;
}

.swish-band :where(a, button):focus-visible,
.swish-cta-band :where(a, button):focus-visible,
.swish-footer :where(a, button):focus-visible {
	outline-width: var(--swish-focus-width);
}

/* Our story: label, statement, link and a wide photograph with a play card. */
.swish-pill {
	background: color-mix(in srgb, var(--wp--preset--color--accent) 16%, transparent);
	border-radius: 8px;
	display: inline-block;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.4;
	margin: 0;
	padding: 6px 14px;
}

.swish-story__lede.wp-block-heading {
	font-size: 32px;
	font-weight: 600;
	line-height: 1.3;
	margin-block: 0;
	max-inline-size: 720px;
}

.swish-arrow-link {
	margin-block: 32px 0;
}

.swish-arrow-link a {
	align-items: center;
	display: inline-flex;
	font-size: 15px;
	font-weight: 600;
	gap: 16px;
	position: relative;
	text-decoration: none;
}

.swish-arrow-link a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.swish-arrow-link a::before,
.swish-arrow-link a::after {
	content: "";
	flex: none;
	order: 1;
	transition: transform 200ms ease;
}

/* The circle, then the arrow drawn in the accent's text colour on top of it. */
.swish-arrow-link a::before {
	background: var(--wp--preset--color--accent);
	block-size: 40px;
	border-radius: 50%;
	inline-size: 40px;
}

.swish-arrow-link a::after {
	background: #fff;
	block-size: 20px;
	inline-size: 20px;
	inset-block-start: calc(50% - 10px);
	inset-inline-end: 10px;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M8 7h9v9'/%3E%3C/svg%3E") center / contain no-repeat;
	position: absolute;
}

.swish-arrow-link a:hover::before,
.swish-arrow-link a:hover::after {
	transform: translate(2px, -2px);
}

.wp-block-cover.swish-story__media {
	aspect-ratio: 16 / 9;
	border-radius: 12px;
	margin-block-start: 72px;
	min-block-size: 0;
	overflow: hidden;
	padding: 24px;
}

/* A diagonal tint over the photograph, light enough to keep it legible. */
.swish-story__media::after {
	background-image: linear-gradient(135deg, color-mix(in srgb, var(--wp--preset--color--scrim) 45%, transparent), color-mix(in srgb, var(--wp--preset--color--accent-dark) 25%, transparent) 60%, transparent);
	content: "";
	inset: 0;
	pointer-events: none;
	position: absolute;
	z-index: 1;
}

.swish-story__media .wp-block-cover__inner-container {
	z-index: 2;
}

/* Feature: heading and checklist beside a photograph with a stat card. */
.swish-luxury__title.wp-block-heading {
	font-size: 52px;
	font-weight: 600;
	letter-spacing: -2px;
	line-height: 1.1;
	margin-block: 0;
	max-inline-size: 600px;
}

.swish-luxury__intro {
	font-size: 18px;
	margin-block: 20px 0;
	max-inline-size: 420px;
}

.swish-checklist.wp-block-list {
	display: grid;
	gap: 16px;
	list-style: none;
	margin-block: 36px 0;
	padding: 0;
}

.swish-checklist li {
	align-items: center;
	display: flex;
	font-size: 16px;
	font-weight: 500;
	gap: 12px;
	position: relative;
}

.swish-checklist li::before,
.swish-checklist li::after {
	content: "";
	flex: none;
}

.swish-checklist li::before {
	background: var(--wp--preset--color--accent);
	block-size: 20px;
	border-radius: 50%;
	inline-size: 20px;
}

.swish-checklist li::after {
	background: var(--wp--preset--color--on-accent);
	block-size: 12px;
	inline-size: 12px;
	inset-block-start: calc(50% - 6px);
	inset-inline-start: 4px;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat;
	position: absolute;
}

.swish-luxury__media {
	position: relative;
}

.swish-luxury__photo.wp-block-image {
	margin: 0;
}

.swish-luxury__photo img {
	border-radius: 12px;
	display: block;
	inline-size: 100%;
	object-fit: cover;
}

.wp-block-group.swish-stat-card {
	border-radius: 12px;
	box-sizing: border-box;
	gap: 16px;

	/* At least 188 by 200, and wide enough for the figure on one line. */
	inline-size: min-content;
	min-block-size: 200px;
	min-inline-size: 188px;
	inset-block-end: 48px;
	inset-inline-start: -56px;
	justify-content: space-between;
	padding: 28px;
	position: absolute;
}

.swish-stat-card p {
	margin: 0;
}

.swish-stat-card .swish-stat-card__number {
	color: var(--wp--preset--color--accent);
	font-size: 72px;
	font-weight: 500;
	letter-spacing: -3px;
	line-height: 1;
	white-space: nowrap;
}

.swish-stat-card .swish-stat-card__text {
	font-size: 16px;
	line-height: 1.5;
}

/* Testimonials: the band's colour is the gap inside the active avatar's ring. */
.swish-testimonials-band {
	--swish-testimonials-ring-gap: var(--wp--preset--color--surface-alt);
}

.swish-testimonials-band .swish-testimonials {
	--swish-testimonials-ring-gap: var(--wp--preset--color--surface-alt);
}

/* Call to action: a full-bleed photograph shaded from the left. */
.wp-block-cover.swish-cta-band {
	min-block-size: 600px;
	padding-block: 72px;
}

.swish-cta-band::after {
	background-image: linear-gradient(90deg, var(--wp--preset--color--scrim) 0, var(--wp--preset--color--scrim) 28%, color-mix(in srgb, var(--wp--preset--color--scrim) 35%, transparent) 100%);
	content: "";
	inset: 0;
	pointer-events: none;
	position: absolute;
	z-index: 1;
}

.swish-cta-band .wp-block-cover__inner-container {
	--swish-focus: var(--wp--preset--color--on-scrim);
	--swish-focus-halo: var(--wp--preset--color--scrim);

	color: var(--wp--preset--color--on-scrim);
	z-index: 2;
}

.swish-cta-band__content > * {
	max-inline-size: 520px;
}

.swish-cta-band__title.wp-block-heading {
	font-size: 72px;
	font-weight: 600;
	letter-spacing: -2px;
	line-height: 1.05;
	margin-block: 0;
}

.swish-cta-band .swish-cta-band__text {
	color: color-mix(in srgb, var(--wp--preset--color--on-scrim) 82%, transparent);
	font-size: 18px;
	margin-block: 24px 0;
	max-inline-size: 400px;
}

.swish-cta-band__actions.wp-block-buttons {
	margin-block: 36px 0;
}

.swish-arrow-button .wp-block-button__link {
	align-items: center;
	background: var(--wp--preset--color--accent);
	border-color: var(--wp--preset--color--accent);
	border-radius: 14px;
	color: var(--wp--preset--color--on-accent);
	display: inline-flex;
	font-size: 16px;
	font-weight: 600;
	gap: 12px;
	justify-content: center;
	padding: 17px 28px;
	transition: filter 200ms ease, transform 200ms ease, box-shadow 200ms ease;
}

.swish-arrow-button .wp-block-button__link::after {
	background: currentcolor;
	block-size: 16px;
	content: "";
	flex: none;
	inline-size: 16px;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M8 7h9v9'/%3E%3C/svg%3E") center / contain no-repeat;
}

.swish-arrow-button .wp-block-button__link:hover,
.swish-arrow-button .wp-block-button__link:focus-visible {
	background: var(--wp--preset--color--accent);
	border-color: var(--wp--preset--color--accent);
	box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);
	color: var(--wp--preset--color--on-accent);
	filter: brightness(1.08);
	transform: translateY(-2px);
}

/* Footer */
.wp-block-group.swish-footer {
	padding-block: 100px 40px;
}

.swish-footer__grid {
	align-items: start;
	display: grid;
	gap: 48px;
	grid-template-columns: 2fr 1fr 1fr 1fr;
}

.swish-footer__grid > * {
	margin-block-start: 0;
}

.swish-footer__brand > * + *,
.swish-footer__brand > .swish-footer__contact + * {
	margin-block-start: 36px;
}

.swish-footer__contact {
	display: flex;
	flex-direction: column;
	font-size: 16px;
	gap: 6px;
}

.swish-footer__contact p {
	margin: 0;
}

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

.swish-footer a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.swish-footer .swish-social {
	gap: 12px;
}

.swish-footer .swish-social .wp-social-link {
	background: color-mix(in srgb, var(--wp--preset--color--on-scrim) 10%, transparent);
	block-size: 46px;
	border-radius: 12px;
	color: var(--wp--preset--color--on-scrim);
	inline-size: 46px;
	transition: background-color 200ms ease, color 200ms ease;
}

.swish-footer .swish-social .wp-social-link a {
	align-items: center;
	block-size: 100%;
	box-sizing: border-box;
	color: inherit;
	display: flex;
	inline-size: 100%;
	justify-content: center;
	padding: 0;
}

.swish-footer .swish-social .wp-social-link svg {
	block-size: 20px;
	inline-size: 20px;
}

.swish-footer .swish-social .wp-social-link:hover {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--on-accent);
	transform: none;
}

.swish-footer .swish-footer-heading.wp-block-heading {
	font-size: 17px;
	font-weight: 600;
	letter-spacing: 0;
	margin-block: 0 20px;
}

.swish-footer__links {
	font-size: 16px;
	font-weight: 400;
	gap: 14px;
}

.swish-footer__links .wp-block-navigation__container {
	gap: 14px;
}

.swish-footer__address {
	font-size: 16px;
	line-height: 1.7;
	margin: 0;
	max-inline-size: 190px;
}

.swish-footer .swish-footer__rule.wp-block-separator {
	border: 0;
	border-block-start: 1px solid color-mix(in srgb, var(--wp--preset--color--on-scrim) 18%, transparent);
	margin-block: 56px 28px;
	opacity: 1;
}

.swish-footer__bar {
	align-items: center;
	font-size: 15px;
	gap: 16px;
}

.swish-footer__bar p {
	margin: 0;
}

.swish-footer__legal.wp-block-group {
	gap: 36px;
}

/*
 * Scroll reveal. assets/js/reveal.js adds .swish-js-reveal to the root only
 * when motion is allowed, so without it every section is simply visible.
 */
.swish-js-reveal .swish-reveal:not(.is-revealed),
.swish-js-reveal .swish-reveal-group:not(.is-revealed) > * {
	opacity: 0;
	transform: translateY(24px);
}

.swish-js-reveal .swish-reveal,
.swish-js-reveal .swish-reveal-group > * {
	transition: opacity 600ms var(--swish-ease-out, ease), transform 600ms var(--swish-ease-out, ease);
	transition-delay: var(--swish-reveal-delay, 0ms);
}

@media (max-width: 1280px) {

	.swish-band,
	.swish-cta-band,
	.swish-footer {
		--swish-col-gap: 48px;
		--wp--style--root--padding-left: 24px;
		--wp--style--root--padding-right: 24px;
	}

	.swish-luxury__title.wp-block-heading {
		font-size: 44px;
	}

	.swish-cta-band__title.wp-block-heading {
		font-size: 56px;
	}
}

@media (max-width: 1024px) {

	.swish-band,
	.swish-cta-band {
		--swish-section-pad: 80px;
	}

	.wp-block-cover.swish-cta-band {
		min-block-size: 440px;
	}

	.swish-band .swish-cols.wp-block-columns {
		flex-wrap: wrap !important;
	}

	.swish-band .swish-cols.wp-block-columns > .wp-block-column {
		flex-basis: 100% !important;
	}

	.swish-story__intro.wp-block-columns {
		gap: 24px;
	}

	.swish-luxury__cols.wp-block-columns {
		gap: 40px;
	}

	.wp-block-group.swish-stat-card {
		inset-block-end: 24px;
		inset-inline-start: 24px;
	}

	.swish-footer__grid {
		grid-template-columns: 1fr 1fr;
	}

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

@media (max-width: 768px) {

	.swish-band,
	.swish-cta-band {
		--swish-section-pad: 56px;
	}

	.swish-luxury__title.wp-block-heading {
		font-size: 36px;
		letter-spacing: -1px;
	}

	.swish-story__lede.wp-block-heading {
		font-size: 26px;
	}

	.swish-cta-band__title.wp-block-heading {
		font-size: 40px;
		letter-spacing: -1px;
	}

	.swish-stat-card .swish-stat-card__number {
		font-size: 56px;
		letter-spacing: -2px;
	}

	.wp-block-cover.swish-story__media {
		aspect-ratio: 4 / 3;
		margin-block-start: 48px;
	}

	.wp-block-cover.swish-cta-band {
		min-block-size: 0;
	}

	/* The stat card sits inside the photograph's corner. */
	.wp-block-group.swish-stat-card {
		gap: 12px;
		min-block-size: 0;
		min-inline-size: 160px;
		inset-block-end: 20px;
		inset-inline-start: 20px;
		padding: 20px;
	}
}

@media (max-width: 480px) {

	.swish-footer__grid {
		grid-template-columns: 1fr;
	}

	.swish-footer__bar.wp-block-group {
		align-items: flex-start;
		flex-direction: column;
		gap: 16px;
	}

	.swish-footer__legal.wp-block-group {
		gap: 12px 24px;
	}

	.swish-arrow-button,
	.swish-arrow-button .wp-block-button__link {
		inline-size: 100%;
	}
}

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

	.swish-arrow-link a:hover::before,
	.swish-arrow-link a:hover::after,
	.swish-arrow-button .wp-block-button__link:hover,
	.swish-arrow-button .wp-block-button__link:focus-visible {
		transform: none;
	}

	.swish-more-link a::before {
		transition: none;
	}
}
