/*
 * Beaux Villages Prestige site template.
 *
 * White and quiet, in the manner of the international luxury houses: big
 * photography, Montserrat throughout (light for headings, as in the identity),
 * small tracked capitals for labels and the
 * Prestige navy as the one dark accent. Every class is prefixed bvp- so it
 * never collides with Bootstrap, Joomla core or OS Property.
 */

/* ---------------------------------------------------------------- tokens */

:root {
	--bvp-navy: #182531;
	--bvp-navy-2: #23364a;
	--bvp-ink: #1d232a;
	--bvp-text: #3d4650;
	--bvp-muted: #6f7882;
	--bvp-line: #e3e0da;
	--bvp-paper: #ffffff;
	--bvp-stone: #f6f4f0;
	--bvp-brass: #a3865a;

	/* One typeface, as in the Beaux Villages identity: Montserrat, light for
	   headings and figures, regular for text, medium for labels. */
	--bvp-sans: 'Montserrat', 'Helvetica Neue', Arial, sans-serif;
	--bvp-head: var(--bvp-sans);

	--bvp-gutter: clamp(1rem, 4vw, 3rem);
	--bvp-wide: 1440px;
	--bvp-section: clamp(4rem, 9vw, 8.5rem);
	--bvp-header-h: 92px;
	--bvp-ease: cubic-bezier(.22, .61, .36, 1);
}

/* ---------------------------------------------------------------- base */

html { scroll-behavior: smooth; }

/* Anchored sections land below the sticky header, not under it. */
[id] { scroll-margin-top: 110px; }

body {
	margin: 0;
	background: var(--bvp-paper);
	color: var(--bvp-text);
	font-family: var(--bvp-sans);
	font-size: 15px;
	font-weight: 400;
	line-height: 1.75;
	letter-spacing: .01em;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, .bvp-display {
	font-family: var(--bvp-head);
	font-weight: 300;
	color: var(--bvp-ink);
	line-height: 1.18;
	letter-spacing: -.01em;
	margin: 0 0 .6em;
}

h1 { font-size: clamp(2.1rem, 4vw, 3.4rem); }
h2 { font-size: clamp(1.7rem, 2.8vw, 2.5rem); }
h3 { font-size: clamp(1.15rem, 1.5vw, 1.35rem); font-weight: 400; }
h4 { font-size: 1.05rem; font-weight: 500; }

p { margin: 0 0 1.25em; }

a { color: var(--bvp-navy); text-decoration: none; transition: color .25s, opacity .25s; }
a:hover { color: var(--bvp-brass); }

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

::selection { background: var(--bvp-navy); color: #fff; }

.bvp-skip {
	position: absolute; left: -999px; top: 0; z-index: 1000;
	background: var(--bvp-navy); color: #fff; padding: .75rem 1.25rem;
}
.bvp-skip:focus { left: 1rem; top: 1rem; color: #fff; }

:focus-visible { outline: 2px solid var(--bvp-brass); outline-offset: 3px; }

.bvp-wrap {
	width: 100%;
	max-width: var(--bvp-wide);
	margin: 0 auto;
	padding: 0 var(--bvp-gutter);
}
.bvp-wrap--narrow { max-width: 860px; }

.bvp-section { padding: var(--bvp-section) 0; }
.bvp-section--stone { background: var(--bvp-stone); }
.bvp-section--tight { padding-top: calc(var(--bvp-section) * .5); }

/* Small tracked capitals: the label voice used everywhere. */
.bvp-eyebrow {
	display: inline-flex; align-items: center; gap: .9rem;
	font-family: var(--bvp-sans);
	font-size: .7rem; font-weight: 500;
	letter-spacing: .28em; text-transform: uppercase;
	color: var(--bvp-muted);
	margin-bottom: 1.4rem;
}
.bvp-eyebrow::before {
	content: ""; width: 2.5rem; height: 1px; background: currentColor; opacity: .6;
}
.bvp-eyebrow--center { justify-content: center; }
.bvp-eyebrow--plain::before { display: none; }

.bvp-lead {
	font-family: var(--bvp-head);
	font-size: clamp(1.08rem, 1.4vw, 1.25rem);
	font-weight: 300;
	line-height: 1.65;
	color: var(--bvp-ink);
}

.bvp-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.5rem 3rem; margin-bottom: clamp(2.5rem, 4vw, 4rem); }
.bvp-head h2 { margin: 0; max-width: 16ch; }
.bvp-head--center { flex-direction: column; align-items: center; text-align: center; }
.bvp-head--center h2 { max-width: 22ch; }

/* ---------------------------------------------------------------- buttons & links */

.bvp-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: .75rem;
	min-height: 52px; padding: 0 2.1rem;
	border: 1px solid var(--bvp-navy);
	background: var(--bvp-navy); color: #fff;
	font-family: var(--bvp-sans); font-size: .72rem; font-weight: 500;
	letter-spacing: .22em; text-transform: uppercase;
	cursor: pointer;
	transition: background .3s var(--bvp-ease), color .3s var(--bvp-ease), border-color .3s var(--bvp-ease);
}
.bvp-btn:hover { background: transparent; color: var(--bvp-navy); }
.bvp-btn--ghost { background: transparent; color: var(--bvp-navy); }
.bvp-btn--ghost:hover { background: var(--bvp-navy); color: #fff; }
.bvp-btn--light { background: #fff; border-color: #fff; color: var(--bvp-navy); }
.bvp-btn--light:hover { background: transparent; color: #fff; }
.bvp-btn--outline-light { background: transparent; border-color: rgba(255,255,255,.7); color: #fff; }
.bvp-btn--outline-light:hover { background: #fff; border-color: #fff; color: var(--bvp-navy); }

/* Text link with a line that grows on hover. */
.bvp-link {
	display: inline-flex; align-items: center; gap: .8rem;
	font-size: .72rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase;
	color: var(--bvp-navy);
	padding-bottom: .35rem;
	background: linear-gradient(currentColor, currentColor) 0 100% / 2.5rem 1px no-repeat;
	transition: background-size .45s var(--bvp-ease), color .25s;
}
.bvp-link:hover { background-size: 100% 1px; color: var(--bvp-navy); }
.bvp-link--light, .bvp-link--light:hover { color: #fff; }

/* ---------------------------------------------------------------- top bar */

.bvp-topbar {
	background: var(--bvp-stone);
	border-bottom: 1px solid var(--bvp-line);
	color: var(--bvp-text);
	font-size: .68rem; letter-spacing: .14em; text-transform: uppercase;
}
.bvp-topbar .bvp-wrap { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 38px; }
.bvp-topbar a { color: var(--bvp-text); }
.bvp-topbar a:hover { color: var(--bvp-navy); }
.bvp-topbar__group { display: flex; align-items: center; gap: 1.75rem; }
.bvp-topbar i { margin-right: .5rem; font-size: .7rem; opacity: .7; }

.bvp-langs { display: flex; gap: .2rem; list-style: none; margin: 0; padding: 0; }
.bvp-langs li + li::before { content: "/"; margin-right: .2rem; opacity: .4; }
.bvp-langs .is-active { color: var(--bvp-navy); font-weight: 600; }

/* ---------------------------------------------------------------- header */

.bvp-header {
	position: sticky; top: 0; z-index: 100;
	background: var(--bvp-navy);
	border-bottom: 1px solid transparent;
	transition: border-color .3s, box-shadow .3s;
}
.bvp-header.is-scrolled { border-color: rgba(255,255,255,.08); box-shadow: 0 8px 30px rgba(14,22,30,.25); }

.bvp-header .bvp-wrap { display: flex; align-items: center; justify-content: space-between; gap: 2rem; min-height: var(--bvp-header-h); transition: min-height .3s; }
.bvp-header.is-scrolled .bvp-wrap { min-height: 72px; }

.bvp-brand { display: block; flex: 0 0 auto; }
.bvp-brand img { height: 52px; width: auto; transition: height .3s; }
.bvp-header.is-scrolled .bvp-brand img { height: 42px; }

.bvp-menu { display: flex; align-items: center; gap: clamp(1.25rem, 2.2vw, 2.4rem); list-style: none; margin: 0; padding: 0; }
.bvp-menu > li { position: relative; }
.bvp-menu a, .bvp-menu button {
	display: block; position: relative;
	padding: .6rem 0;
	background: none; border: 0;
	font-family: var(--bvp-sans); font-size: .72rem; font-weight: 500;
	letter-spacing: .2em; text-transform: uppercase;
	color: rgba(255,255,255,.88);
	cursor: pointer;
}
.bvp-menu > li > a::after, .bvp-menu > li > button::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: .2rem;
	height: 1px; background: var(--bvp-brass);
	transform: scaleX(0); transform-origin: left; transition: transform .4s var(--bvp-ease);
}
.bvp-menu > li:hover > a::after, .bvp-menu > li.is-active > a::after,
.bvp-menu > li:hover > button::after { transform: scaleX(1); }
.bvp-menu a:hover, .bvp-menu button:hover, .bvp-menu > li.is-active > a { color: #fff; }

.bvp-submenu {
	position: absolute; top: 100%; left: -1.5rem; min-width: 250px;
	list-style: none; margin: 0; padding: 1rem 0;
	background: var(--bvp-navy); border: 1px solid rgba(255,255,255,.08); border-top-color: var(--bvp-brass);
	box-shadow: 0 20px 40px rgba(14,22,30,.3);
	opacity: 0; visibility: hidden; transform: translateY(8px);
	transition: opacity .25s, transform .25s, visibility .25s;
}
.bvp-menu > li:hover > .bvp-submenu, .bvp-menu > li.is-open > .bvp-submenu { opacity: 1; visibility: visible; transform: none; }
.bvp-submenu a { padding: .55rem 1.5rem; letter-spacing: .14em; font-size: .68rem; color: rgba(255,255,255,.75); }
.bvp-submenu a:hover { color: #fff; background: var(--bvp-navy-2); }

.bvp-header__cta { flex: 0 0 auto; }
.bvp-header__cta .bvp-btn { min-height: 44px; padding: 0 1.5rem; }

.bvp-burger {
	display: none; width: 44px; height: 44px; padding: 0; border: 0; background: none; cursor: pointer;
	position: relative;
}
.bvp-burger span { position: absolute; left: 10px; right: 10px; height: 1px; background: #fff; transition: transform .3s, opacity .3s; }
.bvp-burger span:nth-child(1) { top: 15px; }
.bvp-burger span:nth-child(2) { top: 22px; }
.bvp-burger span:nth-child(3) { top: 29px; }
.bvp-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.bvp-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.bvp-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ---------------------------------------------------------------- hero */

.bvp-hero {
	position: relative;
	min-height: min(88vh, 900px);
	display: flex; align-items: flex-end;
	color: #fff;
	overflow: hidden;
	background: var(--bvp-navy);
}
.bvp-hero__slide {
	position: absolute; inset: 0;
	background-size: cover; background-position: center;
	opacity: 0; transform: scale(1.06);
	transition: opacity 1.6s ease, transform 8s linear;
}
.bvp-hero__slide.is-active { opacity: 1; transform: scale(1); }
.bvp-hero::after {
	content: ""; position: absolute; inset: 0;
	/* Darker towards the bottom left, where the words sit, so white text
	   stays readable on bright photos without dimming the whole picture. */
	background:
		linear-gradient(90deg, rgba(14,22,30,.5) 0%, rgba(14,22,30,.15) 45%, rgba(14,22,30,0) 70%),
		linear-gradient(180deg, rgba(14,22,30,.15) 0%, rgba(14,22,30,0) 35%, rgba(14,22,30,.62) 100%);
}
.bvp-hero__body { position: relative; z-index: 2; width: 100%; padding-bottom: clamp(7rem, 12vw, 9.5rem); }
.bvp-hero h1 { color: #fff; max-width: 20ch; font-size: clamp(2.1rem, 4.2vw, 3.6rem); margin-bottom: 1.6rem; font-weight: 300; text-shadow: 0 1px 24px rgba(14,22,30,.25); }
.bvp-hero .bvp-eyebrow { color: rgba(255,255,255,.85); }
.bvp-hero__actions { display: flex; flex-wrap: wrap; gap: 1rem; }

.bvp-hero__dots { position: absolute; z-index: 2; right: var(--bvp-gutter); bottom: clamp(7rem, 12vw, 9.5rem); display: flex; gap: .6rem; }
.bvp-hero__dots button { width: 34px; height: 2px; padding: 0; border: 0; background: rgba(255,255,255,.4); cursor: pointer; transition: background .3s; }
.bvp-hero__dots button.is-active { background: #fff; }

/* Sub page hero: shorter, same voice. */
.bvp-hero--page { min-height: min(56vh, 540px); }
.bvp-hero--page .bvp-hero__body { padding-bottom: clamp(3rem, 6vw, 5rem); }

/* ---------------------------------------------------------------- property search bar */

.bvp-search {
	position: relative; z-index: 5;
	margin-top: -4.5rem;
}
.bvp-search__form {
	display: flex;
	background: #fff;
	box-shadow: 0 30px 60px rgba(24,37,49,.12);
}
.bvp-search__field { position: relative; flex: 1 1 0; min-width: 0; padding: 1.15rem 1.6rem; border-right: 1px solid var(--bvp-line); }
.bvp-search__field label {
	display: block; margin-bottom: .2rem;
	font-size: .62rem; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; color: var(--bvp-muted);
}
.bvp-search .bvp-search__field select, .bvp-search .bvp-search__field input {
	width: 100%; padding: 0; border: 0; background: transparent;
	font-family: var(--bvp-head); font-size: 1rem; font-weight: 400; color: var(--bvp-ink);
	appearance: none; -webkit-appearance: none; cursor: pointer;
}
.bvp-search .bvp-search__field select:focus, .bvp-search .bvp-search__field input:focus { outline: none; box-shadow: none; }
.bvp-search__field:focus-within { background: var(--bvp-stone); }
.bvp-search__field::after {
	content: ""; position: absolute; right: 1.5rem; bottom: 1.6rem;
	width: 7px; height: 7px; border-right: 1px solid var(--bvp-muted); border-bottom: 1px solid var(--bvp-muted);
	transform: rotate(45deg); pointer-events: none;
}
.bvp-search__field--text::after { display: none; }
.bvp-search__submit { flex: 0 0 auto; min-height: auto; padding: 0 2.6rem; }

/* ---------------------------------------------------------------- intro statement */

.bvp-intro { text-align: center; }
.bvp-intro h2 { max-width: 20ch; margin-left: auto; margin-right: auto; }
.bvp-intro .bvp-lead { margin-bottom: 1.5rem; }
.bvp-intro p { max-width: 62ch; margin-left: auto; margin-right: auto; }

.bvp-stats {
	display: grid; grid-template-columns: repeat(4, 1fr);
	margin-top: clamp(3rem, 6vw, 5rem);
	border-top: 1px solid var(--bvp-line);
}
.bvp-stat { padding: 2rem 1rem 0; text-align: center; }
.bvp-stat + .bvp-stat { border-left: 1px solid var(--bvp-line); }
.bvp-stat strong { display: block; font-family: var(--bvp-head); font-size: clamp(1.8rem, 2.8vw, 2.4rem); font-weight: 300; line-height: 1; color: var(--bvp-navy); margin-bottom: .6rem; }
.bvp-stat span { font-size: .66rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; color: var(--bvp-muted); }

/* ---------------------------------------------------------------- property cards */

.bvp-grid { display: grid; gap: clamp(2rem, 3vw, 3rem) clamp(1.25rem, 2.2vw, 2.25rem); }
.bvp-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.bvp-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.bvp-card { position: relative; display: flex; flex-direction: column; color: var(--bvp-text); }
.bvp-card:hover { color: var(--bvp-text); }
.bvp-card__media { position: relative; overflow: hidden; aspect-ratio: 4 / 3; background: var(--bvp-stone); margin-bottom: 1.4rem; }
.bvp-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--bvp-ease); }
.bvp-card:hover .bvp-card__media img { transform: scale(1.045); }
.bvp-card__badge {
	position: absolute; top: 1rem; left: 1rem;
	padding: .4rem .8rem; background: #fff; color: var(--bvp-navy);
	font-size: .6rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;
}
.bvp-card__place { font-size: .66rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; color: var(--bvp-muted); margin-bottom: .55rem; }
.bvp-card__title {
	font-family: var(--bvp-head); font-size: 1.12rem; font-weight: 400; line-height: 1.35; color: var(--bvp-ink);
	margin: 0 0 .9rem;
	display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.bvp-card__meta { display: flex; flex-wrap: wrap; gap: .3rem 1.1rem; font-size: .78rem; color: var(--bvp-muted); margin-bottom: 1rem; }
.bvp-card__meta span + span::before { content: ""; display: inline-block; width: 3px; height: 3px; border-radius: 50%; margin-right: 1.1rem; vertical-align: middle; position: relative; top: -1px; background: #b8b3aa; }
.bvp-card__foot { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-top: auto; padding-top: 1rem; border-top: 1px solid var(--bvp-line); }
.bvp-card__price { font-family: var(--bvp-head); font-size: 1.1rem; font-weight: 400; color: var(--bvp-navy); }
.bvp-card__ref { font-size: .64rem; letter-spacing: .16em; text-transform: uppercase; color: var(--bvp-muted); }

/* First card of a "featured" set runs large across two columns. */
.bvp-grid--feature { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.bvp-grid--feature .bvp-card:first-child { grid-column: span 2; grid-row: span 2; }
.bvp-grid--feature .bvp-card:first-child .bvp-card__media { aspect-ratio: auto; flex: 1 1 auto; min-height: 420px; }
.bvp-grid--feature .bvp-card:first-child .bvp-card__title { font-size: clamp(1.25rem, 1.8vw, 1.6rem); }

/* ---------------------------------------------------------------- split (image + text) */

.bvp-split { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); align-items: center; gap: clamp(2.5rem, 6vw, 7rem); }
.bvp-split--flip > :first-child { order: 2; }
.bvp-split__media { position: relative; }
.bvp-split__media img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.bvp-split__media figcaption {
	position: absolute; left: -1px; bottom: -1px; max-width: 70%;
	padding: 1.4rem 1.8rem; background: #fff;
	font-family: var(--bvp-head); font-size: .9rem; font-weight: 300; color: var(--bvp-ink); line-height: 1.5;
}

.bvp-pillars { list-style: none; margin: 2.5rem 0 2.75rem; padding: 0; counter-reset: pillar; }
.bvp-pillars li { counter-increment: pillar; display: grid; grid-template-columns: 3.2rem 1fr; padding: 1.5rem 0; border-top: 1px solid var(--bvp-line); }
.bvp-pillars li:last-child { border-bottom: 1px solid var(--bvp-line); }
.bvp-pillars li::before { content: counter(pillar, decimal-leading-zero); font-family: var(--bvp-head); font-size: .85rem; font-weight: 500; color: var(--bvp-brass); line-height: 1.6; }
.bvp-pillars h3 { font-size: 1.05rem; margin: 0 0 .35rem; }
.bvp-pillars p { margin: 0; font-size: .9rem; }

/* ---------------------------------------------------------------- regions */

.bvp-regions { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 1px; background: var(--bvp-line); }
.bvp-region { position: relative; display: block; aspect-ratio: 3 / 4.4; overflow: hidden; color: #fff; background: var(--bvp-navy); }
.bvp-region img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--bvp-ease), opacity .6s; opacity: .92; }
.bvp-region::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14,22,30,0) 40%, rgba(14,22,30,.75) 100%); transition: background .5s; }
.bvp-region:hover img { transform: scale(1.06); }
.bvp-region:hover::after { background: linear-gradient(180deg, rgba(24,37,49,.25) 0%, rgba(24,37,49,.85) 100%); }
.bvp-region__body { position: absolute; z-index: 2; left: 1.5rem; right: 1.5rem; bottom: 1.6rem; }
.bvp-region__name { font-family: var(--bvp-head); font-size: 1.2rem; font-weight: 400; line-height: 1.1; color: #fff; margin: 0 0 .6rem; }
.bvp-region__more { font-size: .62rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; color: rgba(255,255,255,.8); opacity: 0; transform: translateY(6px); transition: opacity .4s, transform .4s var(--bvp-ease); }
.bvp-region:hover .bvp-region__more { opacity: 1; transform: none; }
.bvp-region:hover { color: #fff; }

/* ---------------------------------------------------------------- navy band (the dark accent) */

.bvp-band {
	position: relative; overflow: hidden;
	background: var(--bvp-navy) center / cover no-repeat;
	color: rgba(255,255,255,.82);
	padding: clamp(5rem, 11vw, 9.5rem) 0;
}
.bvp-band::before { content: ""; position: absolute; inset: 0; background: rgba(24,37,49,.84); }
.bvp-band > * { position: relative; }
.bvp-band h2 { color: #fff; max-width: 18ch; }
.bvp-band .bvp-eyebrow { color: rgba(255,255,255,.7); }
.bvp-band__grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: clamp(2rem, 6vw, 6rem); align-items: end; }
.bvp-band p { font-size: 1rem; }
.bvp-band__actions { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2rem; }

/* ---------------------------------------------------------------- testimonial */

.bvp-quote { text-align: center; max-width: 920px; margin: 0 auto; }
.bvp-quote__mark { font-family: var(--bvp-head); font-size: 3.5rem; font-weight: 300; line-height: .7; color: var(--bvp-brass); display: block; margin-bottom: 1.5rem; }
.bvp-quote blockquote { margin: 0 0 2rem; font-family: var(--bvp-head); font-size: clamp(1.15rem, 1.8vw, 1.5rem); font-weight: 300; line-height: 1.6; color: var(--bvp-ink); }
.bvp-quote cite { font-style: normal; font-size: .7rem; font-weight: 500; letter-spacing: .24em; text-transform: uppercase; color: var(--bvp-muted); }

/* ---------------------------------------------------------------- team */

.bvp-team { display: grid; grid-template-columns: repeat(var(--bvp-team-cols, 5), minmax(0, 1fr)); gap: clamp(1rem, 2vw, 2rem); }
.bvp-person { text-align: center; }
.bvp-person__photo { overflow: hidden; aspect-ratio: 4 / 5; margin-bottom: 1.2rem; background: var(--bvp-stone); }
.bvp-person__photo img { width: 100%; height: 100%; object-fit: cover; object-position: top; filter: grayscale(1); transition: filter .6s, transform 1.2s var(--bvp-ease); }
.bvp-person:hover .bvp-person__photo img { filter: none; transform: scale(1.03); }
.bvp-person__name { font-family: var(--bvp-head); font-size: 1rem; font-weight: 400; color: var(--bvp-ink); margin: 0 0 .15rem; }
.bvp-person__role { font-size: .64rem; letter-spacing: .2em; text-transform: uppercase; color: var(--bvp-muted); }

/* ---------------------------------------------------------------- two way CTA (buy / sell) */

.bvp-paths { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--bvp-line); border: 1px solid var(--bvp-line); }
.bvp-path { background: #fff; padding: clamp(2.5rem, 5vw, 4.5rem); display: flex; flex-direction: column; align-items: flex-start; }
.bvp-path h3 { font-size: clamp(1.35rem, 2vw, 1.75rem); font-weight: 300; }
.bvp-path p { max-width: 46ch; margin-bottom: 2rem; }
.bvp-path .bvp-btn { margin-top: auto; }

/* ---------------------------------------------------------------- partner strip */

.bvp-partner { display: flex; align-items: center; justify-content: center; gap: 2rem; flex-wrap: wrap; text-align: center; padding: 2.5rem 0; border-top: 1px solid var(--bvp-line); border-bottom: 1px solid var(--bvp-line); }
.bvp-partner p { margin: 0; font-family: var(--bvp-head); font-size: 1rem; font-weight: 300; color: var(--bvp-ink); }
.bvp-partner__mark { display: inline-flex; align-items: center; justify-content: center; width: 54px; height: 54px; background: #ffde00; color: #e2231a; font: 600 .78rem/1 Arial, sans-serif; letter-spacing: -.01em; }

/* ---------------------------------------------------------------- footer */

.bvp-footer { background: var(--bvp-navy); color: rgba(255,255,255,.7); font-size: .88rem; }
.bvp-footer a { color: rgba(255,255,255,.78); }
.bvp-footer a:hover { color: #fff; }
.bvp-footer__top { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: 3rem; padding: clamp(4rem, 7vw, 6rem) 0 3.5rem; }
.bvp-footer__logo img { height: 56px; width: auto; margin-bottom: 1.75rem; }
.bvp-footer h4 { font-family: var(--bvp-sans); font-size: .68rem; font-weight: 600; letter-spacing: .24em; text-transform: uppercase; color: #fff; margin-bottom: 1.4rem; }
.bvp-footer ul { list-style: none; margin: 0; padding: 0; }
.bvp-footer li { margin-bottom: .55rem; }
.bvp-footer__social { display: flex; gap: .6rem; margin-top: 1.5rem; }
.bvp-footer__social a { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border: 1px solid rgba(255,255,255,.25); border-radius: 50%; font-size: .85rem; transition: background .3s, color .3s, border-color .3s; }
.bvp-footer__social a:hover { background: #fff; border-color: #fff; color: var(--bvp-navy); }

.bvp-newsletter { display: flex; border-bottom: 1px solid rgba(255,255,255,.35); margin-top: 1rem; }
.bvp-newsletter input { flex: 1; min-width: 0; padding: .8rem 0; border: 0; background: transparent; color: #fff; font: inherit; }
.bvp-newsletter input::placeholder { color: rgba(255,255,255,.5); }
.bvp-newsletter input:focus { outline: none; }
.bvp-newsletter button { border: 0; background: none; color: #fff; padding: 0 0 0 1rem; cursor: pointer; font-size: .68rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }

.bvp-footer__bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.75rem 0; border-top: 1px solid rgba(255,255,255,.12); font-size: .72rem; letter-spacing: .04em; color: rgba(255,255,255,.5); }
.bvp-footer__bottom ul { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; }
.bvp-footer__bottom li { margin: 0; }
.bvp-footer__bottom a { color: rgba(255,255,255,.6); }

/* ---------------------------------------------------------------- sub page head */

/* No Link Image on the menu item: a quiet white title block. */
.bvp-pagehead { padding: clamp(3.5rem, 7vw, 6rem) 0 clamp(2rem, 4vw, 3rem); text-align: center; border-bottom: 1px solid var(--bvp-line); }
.bvp-pagehead h1 { font-size: clamp(2rem, 3.6vw, 3.1rem); max-width: 26ch; margin: 0 auto .5rem; }
.bvp-pagehead__sub, .bvp-hero__sub { font-family: var(--bvp-head); font-size: clamp(1rem, 1.3vw, 1.15rem); font-weight: 300; line-height: 1.6; max-width: 52ch; margin: 1rem auto 0; color: var(--bvp-text); }
.bvp-hero__sub { margin: 0; color: rgba(255,255,255,.9); }
.bvp-pagehead .bvp-eyebrow { justify-content: center; }
.bvp-pagehead .bvp-eyebrow::before { display: none; }

/* With a Link Image: a shorter photo hero, words bottom left. */
.bvp-hero--page h1 { font-size: clamp(2rem, 3.6vw, 3.1rem); max-width: 24ch; margin-bottom: .75rem; }

/* ---------------------------------------------------------------- breadcrumbs */

/* Joomla's breadcrumbs module, quietly: no "You are here", no Bootstrap box,
   one slash between steps. */
.mod-breadcrumbs.breadcrumb {
	display: flex; flex-wrap: wrap; justify-content: center; gap: .25rem .6rem;
	list-style: none; margin: 0 0 1.5rem; padding: 0 !important; background: none;
	font-size: .64rem; font-weight: 500; letter-spacing: .2em; text-transform: uppercase; color: var(--bvp-muted);
}
.mod-breadcrumbs__here { display: none; }
.mod-breadcrumbs .breadcrumb-item { padding: 0; }
.mod-breadcrumbs .breadcrumb-item + .breadcrumb-item { padding-left: 0; }
.mod-breadcrumbs .breadcrumb-item + .breadcrumb-item::before { content: "/"; float: none; padding: 0 .6rem 0 0; color: inherit; opacity: .5; }
.mod-breadcrumbs .breadcrumb-item.active { color: inherit; }
.mod-breadcrumbs a { color: inherit; }
.mod-breadcrumbs a:hover { color: var(--bvp-navy); }

/* Over a photo: left aligned, white. */
.bvp-hero .mod-breadcrumbs.breadcrumb { justify-content: flex-start; color: rgba(255,255,255,.85); }
.bvp-hero .mod-breadcrumbs a:hover { color: #fff; }

/* ---------------------------------------------------------------- main content */

.bvp-main { padding: clamp(3rem, 6vw, 5.5rem) 0 var(--bvp-section); }
.bvp-main__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(2.5rem, 5vw, 5rem); }
.bvp-main__grid--sidebar { grid-template-columns: minmax(0, 1fr) 340px; }

/* Article text: comfortable measure, serif headings. */
.bvp-prose, .com-content-article__body, .item-page .article-body { max-width: 760px; }
.bvp-main__grid:not(.bvp-main__grid--sidebar) .com-content-article__body,
.bvp-main__grid:not(.bvp-main__grid--sidebar) .bvp-prose { margin-left: auto; margin-right: auto; }
.com-content-article__body > p:first-of-type { font-family: var(--bvp-head); font-size: clamp(1.08rem, 1.4vw, 1.25rem); font-weight: 300; line-height: 1.65; color: var(--bvp-ink); }
.com-content-article__body h2 { font-size: clamp(1.45rem, 2.2vw, 1.9rem); margin-top: 2.5rem; }
.com-content-article__body h3 { margin-top: 2rem; }
.com-content-article__body ul, .com-content-article__body ol { padding-left: 1.2rem; margin-bottom: 1.5rem; }
.com-content-article__body li { margin-bottom: .4rem; }
.com-content-article__body li::marker { color: var(--bvp-brass); }
.com-content-article__body img { margin: 2rem 0; }
.com-content-article__body blockquote { margin: 2.5rem 0; padding: 0 0 0 1.75rem; border-left: 1px solid var(--bvp-brass); font-family: var(--bvp-head); font-size: 1.15rem; font-weight: 300; line-height: 1.6; color: var(--bvp-ink); }
.com-content-article__body a:not(.bvp-btn):not(.bvp-link) { text-decoration: underline; text-decoration-color: var(--bvp-line); text-underline-offset: 3px; }
.com-content-article__body a:not(.bvp-btn):not(.bvp-link):hover { text-decoration-color: currentColor; }
.com-content-article__body table { width: 100%; border-collapse: collapse; margin: 2rem 0; font-size: .9rem; }
.com-content-article__body th, .com-content-article__body td { padding: .8rem 1rem; border-bottom: 1px solid var(--bvp-line); text-align: left; }
.com-content-article__body th { font-size: .66rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--bvp-muted); }

/* Joomla's own article furniture we don't want on a brochure site. */
.article-info, .com-content-article__info { font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; color: var(--bvp-muted); }
.page-header h1, .page-header h2 { margin-bottom: 1.5rem; }

/* Blog and category lists. */
.blog-items { display: grid; gap: 3rem; }
.blog-item .item-image img, .blog-item figure img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.readmore .btn, .readmore a { display: inline-flex; padding-bottom: .35rem; border: 0; border-radius: 0; background: linear-gradient(currentColor, currentColor) 0 100% / 2.5rem 1px no-repeat; color: var(--bvp-navy); font-size: .72rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; }
.readmore a:hover { background-size: 100% 1px; }

/* ---------------------------------------------------------------- sidebar */

.bvp-card-module { padding: 2rem; background: var(--bvp-stone); margin-bottom: 1.5rem; }
.bvp-card-module__title { font-family: var(--bvp-sans); font-size: .68rem; font-weight: 600; letter-spacing: .24em; text-transform: uppercase; color: var(--bvp-ink); margin-bottom: 1.2rem; }
.bvp-card-module ul { list-style: none; margin: 0; padding: 0; }
.bvp-card-module li { padding: .5rem 0; border-bottom: 1px solid var(--bvp-line); }

/* ---------------------------------------------------------------- forms (contact, OS Property, Joomla core) */

.form-control, .form-select, input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="password"], textarea, select {
	border-radius: 0;
	border-color: var(--bvp-line);
	font-family: var(--bvp-sans); font-size: .92rem; color: var(--bvp-ink);
}
.form-control, .form-select { min-height: 50px; padding: .7rem 1rem; }
.form-control:focus, .form-select:focus { border-color: var(--bvp-navy); box-shadow: 0 0 0 3px rgba(24,37,49,.08); }
label, .form-label, .control-label label { font-size: .68rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--bvp-muted); margin-bottom: .45rem; }
.form-check-input:checked { background-color: var(--bvp-navy); border-color: var(--bvp-navy); }
.control-group { margin-bottom: 1.4rem; }

/* Bootstrap buttons inside components take the house style. */
.btn { border-radius: 0; font-family: var(--bvp-sans); font-size: .72rem; font-weight: 500; letter-spacing: .2em; text-transform: uppercase; padding: .9rem 1.8rem; }
.btn-primary, .btn-success { background: var(--bvp-navy); border-color: var(--bvp-navy); color: #fff; }
.btn-primary:hover, .btn-primary:focus, .btn-success:hover { background: var(--bvp-navy-2); border-color: var(--bvp-navy-2); color: #fff; }
.btn-secondary, .btn-outline-primary { background: transparent; border-color: var(--bvp-navy); color: var(--bvp-navy); }
.btn-secondary:hover, .btn-outline-primary:hover { background: var(--bvp-navy); border-color: var(--bvp-navy); color: #fff; }

/* ---------------------------------------------------------------- pagination */

.pagination { justify-content: center; gap: .4rem; margin-top: 3rem; }
.page-link { border: 1px solid var(--bvp-line); border-radius: 0 !important; color: var(--bvp-ink); min-width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; font-size: .8rem; }
.page-link:hover { background: var(--bvp-stone); color: var(--bvp-navy); border-color: var(--bvp-line); }
.page-item.active .page-link { background: var(--bvp-navy); border-color: var(--bvp-navy); color: #fff; }
.counter { text-align: center; font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; color: var(--bvp-muted); }

/* ---------------------------------------------------------------- system messages */

#system-message-container { max-width: var(--bvp-wide); margin: 0 auto; }
joomla-alert, .alert { border-radius: 0; border-width: 0 0 0 3px; font-size: .9rem; }

/* ---------------------------------------------------------------- back to top */

.bvp-totop {
	position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 90;
	width: 46px; height: 46px; border: 1px solid rgba(255,255,255,.2); background: var(--bvp-navy); color: #fff;
	display: flex; align-items: center; justify-content: center; cursor: pointer;
	opacity: 0; visibility: hidden; transform: translateY(10px);
	transition: opacity .3s, transform .3s, visibility .3s, background .3s;
}
.bvp-totop.is-visible { opacity: 1; visibility: visible; transform: none; }
.bvp-totop:hover { background: var(--bvp-navy-2); }

/* ---------------------------------------------------------------- error page */

.bvp-error { min-height: 70vh; display: flex; align-items: center; text-align: center; }
.bvp-error__code { font-family: var(--bvp-head); font-size: clamp(4rem, 11vw, 7.5rem); font-weight: 300; line-height: 1; color: var(--bvp-navy); margin-bottom: 1rem; }

/* ---------------------------------------------------------------- print */

@media print {
	.bvp-topbar, .bvp-header, .bvp-footer, .bvp-totop, .bvp-search, .bvp-burger { display: none !important; }
	.bvp-reveal { opacity: 1 !important; transform: none !important; }
	body { font-size: 11pt; }
}

/* ---------------------------------------------------------------- reveal on scroll */

.bvp-reveal { opacity: 0; transform: translateY(24px); transition: opacity 1s var(--bvp-ease), transform 1s var(--bvp-ease); }
.bvp-reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
	.bvp-reveal { opacity: 1; transform: none; transition: none; }
	.bvp-hero__slide { transition: opacity .01s; transform: none !important; }
	html { scroll-behavior: auto; }
}

/* ---------------------------------------------------------------- responsive */

@media (max-width: 1199.98px) {
	.bvp-regions { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.bvp-region { aspect-ratio: 4 / 3.6; }
	.bvp-team { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.bvp-footer__top { grid-template-columns: 1fr 1fr; }
	.bvp-header__cta { display: none; }
}

@media (max-width: 991.98px) {
	:root { --bvp-header-h: 76px; }
	.bvp-brand img { height: 42px; }
	.bvp-burger { display: block; }
	.bvp-nav {
		position: fixed; inset: var(--bvp-nav-top, 76px) 0 0 0;
		background: var(--bvp-navy); overflow-y: auto;
		padding: 1.5rem var(--bvp-gutter) 3rem;
		opacity: 0; visibility: hidden; transform: translateY(-8px);
		transition: opacity .3s, transform .3s, visibility .3s;
	}
	.bvp-nav.is-open { opacity: 1; visibility: visible; transform: none; }
	.bvp-menu { flex-direction: column; align-items: stretch; gap: 0; }
	.bvp-menu > li { border-bottom: 1px solid rgba(255,255,255,.1); }
	.bvp-menu a, .bvp-menu button { padding: 1.1rem 0; font-size: .78rem; width: 100%; text-align: left; }
	.bvp-menu > li > a::after, .bvp-menu > li > button::after { display: none; }
	.bvp-submenu { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: 0; padding: 0 0 1rem; display: none; }
	.bvp-menu > li.is-open > .bvp-submenu { display: block; }
	.bvp-submenu a { padding: .6rem 1rem; }
	body.bvp-locked { overflow: hidden; }

	.bvp-search { margin-top: 0; }
	.bvp-search .bvp-wrap { padding: 0; }
	.bvp-search__form { flex-wrap: wrap; box-shadow: none; border-bottom: 1px solid var(--bvp-line); }
	.bvp-search__field { flex: 1 1 50%; border-bottom: 1px solid var(--bvp-line); }
	.bvp-search__submit { flex: 1 1 100%; min-height: 60px; }

	.bvp-grid--3, .bvp-grid--feature { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.bvp-grid--feature .bvp-card:first-child { grid-row: auto; }
	.bvp-grid--feature .bvp-card:first-child .bvp-card__media { min-height: 0; aspect-ratio: 16 / 10; }
	.bvp-split, .bvp-band__grid { grid-template-columns: 1fr; }
	.bvp-split--flip > :first-child { order: 0; }
	.bvp-split__media img { aspect-ratio: 4 / 3; }
	.bvp-paths { grid-template-columns: 1fr; }
	.bvp-main__grid--sidebar { grid-template-columns: minmax(0, 1fr); }
	.bvp-stats { grid-template-columns: repeat(2, 1fr); }
	.bvp-stat:nth-child(3) { border-left: 0; }
}

@media (max-width: 767.98px) {
	body { font-size: 14.5px; }
	.bvp-topbar__group--secondary { display: none; }
	.bvp-hero { min-height: min(78vh, 640px); }
	.bvp-hero__dots { display: none; }
	.bvp-hero::after { background: linear-gradient(180deg, rgba(14,22,30,.1) 0%, rgba(14,22,30,.25) 35%, rgba(14,22,30,.72) 100%); }
	.bvp-search__field { flex-basis: 100%; border-right: 0; }
	.bvp-grid--3, .bvp-grid--feature, .bvp-grid--2 { grid-template-columns: 1fr; }
	.bvp-grid--feature .bvp-card:first-child { grid-column: auto; }
	.bvp-regions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.bvp-region__name { font-size: 1.3rem; }
	.bvp-region__body { left: 1rem; right: 1rem; bottom: 1rem; }
	.bvp-region__more { display: none; }
	.bvp-team { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.bvp-footer__top { grid-template-columns: 1fr; gap: 2.5rem; }
	.bvp-split__media figcaption { position: static; max-width: none; padding: 1rem 0 0; }
}

/* ---------------------------------------------------------------- inline menus (top bar, footer legal) */

.bvp-inline-menu { display: flex; flex-wrap: wrap; gap: .4rem 1.5rem; list-style: none; margin: 0; padding: 0; }
.bvp-topbar .bvp-inline-menu { gap: 1.75rem; }

/* A menu module in a footer column: a plain vertical list, not the header nav. */
.bvp-footer .bvp-menu { display: block; }
.bvp-footer .bvp-menu > li { margin-bottom: .55rem; }
.bvp-footer .bvp-menu a, .bvp-footer .bvp-menu button { display: inline; padding: 0; font-size: .88rem; font-weight: 400; letter-spacing: .01em; text-transform: none; color: rgba(255,255,255,.78); }
.bvp-footer .bvp-menu a:hover { color: #fff; }
.bvp-footer .bvp-menu > li > a::after, .bvp-footer .bvp-menu > li > button::after { display: none; }
.bvp-footer .bvp-submenu { display: none; }

/* ---------------------------------------------------------------- bands page (Our regions) */

.bvp-band-item .bvp-split__media img { aspect-ratio: 4 / 3; }
.bvp-band-item h2 { font-size: clamp(1.6rem, 2.5vw, 2.2rem); }
.bvp-prose p:last-child { margin-bottom: 0; }

/* ---------------------------------------------------------------- team page: portraits with bios */

.bvp-team--full { gap: clamp(2.5rem, 4vw, 4rem) clamp(1.5rem, 3vw, 3rem); }
.bvp-team--full .bvp-person { text-align: left; }
.bvp-team--full .bvp-person__name { font-size: 1.2rem; }
.bvp-team--full .bvp-person__photo img { filter: none; }
.bvp-person__bio { margin-top: 1rem; font-size: .9rem; }
.bvp-person__bio p:last-child { margin-bottom: 0; }

/* ---------------------------------------------------------------- testimonials page */

.bvp-quotes { columns: 2 380px; column-gap: clamp(1.5rem, 3vw, 3rem); }
.bvp-quotes__item { break-inside: avoid; margin: 0 0 clamp(1.5rem, 3vw, 3rem); padding: clamp(2rem, 3vw, 3rem); background: var(--bvp-stone); }
.bvp-quotes__item .bvp-quote__mark { font-size: 3.5rem; margin-bottom: 1rem; }
.bvp-quotes__item blockquote { margin: 0 0 1.5rem; font-size: .95rem; }
.bvp-quotes__item blockquote p:first-child { font-family: var(--bvp-head); font-size: 1.05rem; font-weight: 300; line-height: 1.6; color: var(--bvp-ink); }
.bvp-quotes__item cite { font-style: normal; font-size: .68rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; color: var(--bvp-muted); }

/* ---------------------------------------------------------------- contact page (article + RSForm) */

/* In the contact article: <div class="bvp-contact"><div>text, phone, email</div><div>{rsform 1}</div></div> */
.bvp-contact { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(2.5rem, 6vw, 6rem); align-items: start; }
.com-content-article__body:has(.bvp-contact) { max-width: none; }
.bvp-contact__details { list-style: none; padding: 0 !important; margin: 2rem 0 0; border-top: 1px solid var(--bvp-line); }
.bvp-contact__details li { padding: 1.1rem 0; border-bottom: 1px solid var(--bvp-line); margin: 0 !important; }
.bvp-contact__details span { display: block; font-size: .64rem; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; color: var(--bvp-muted); margin-bottom: .2rem; }
.bvp-contact__details a { font-family: var(--bvp-head); font-size: 1.05rem; font-weight: 400; text-decoration: none !important; color: var(--bvp-ink); }
.bvp-contact__form { padding: clamp(2rem, 4vw, 3.5rem); background: var(--bvp-stone); }

/* RSForm! Pro output, in the house style. */
.bvp-contact__form .formContainer, .bvp-contact__form form { margin: 0; }
.bvp-contact__form .form-group, .bvp-contact__form .rsform-block { margin-bottom: 1.2rem; }
.bvp-contact__form .formControlLabel, .bvp-contact__form .form-label { display: block; font-size: .66rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--bvp-muted); margin-bottom: .4rem; }
.bvp-contact__form input[type="text"], .bvp-contact__form input[type="email"], .bvp-contact__form input[type="tel"], .bvp-contact__form select, .bvp-contact__form textarea { width: 100%; background: #fff; border: 1px solid var(--bvp-line); padding: .85rem 1rem; }
.bvp-contact__form textarea { min-height: 160px; }
.bvp-contact__form .formRed, .bvp-contact__form .formError { color: #a33; font-size: .78rem; }
.bvp-contact__form button[type="submit"], .bvp-contact__form input[type="submit"], .bvp-contact__form .rsform-submit-button { border: 1px solid var(--bvp-navy); border-radius: 0; background: var(--bvp-navy); color: #fff; min-height: 52px; padding: 0 2.2rem; font-family: var(--bvp-sans); font-size: .72rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; cursor: pointer; }
.bvp-contact__form button[type="submit"]:hover, .bvp-contact__form input[type="submit"]:hover { background: var(--bvp-navy-2); }

@media (max-width: 991.98px) {
	.bvp-contact { grid-template-columns: minmax(0, 1fr); }
	.bvp-team.bvp-team--full { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
	.bvp-team.bvp-team--full { grid-template-columns: minmax(0, 1fr); }
}

/* Legal links in the footer's bottom line: always one row, whichever menu
   layout the module uses. */
.bvp-footer__bottom .bvp-menu { display: flex; flex-wrap: wrap; gap: .4rem 1.5rem; }
.bvp-footer__bottom .bvp-menu > li { margin: 0; }
.bvp-footer__bottom .bvp-menu a { font-size: .72rem; color: rgba(255,255,255,.6); }

/* RSForm prints the form's own name as a heading; the page already has one. */
.bvp-contact__form h1, .bvp-contact__form h2, .bvp-contact__form .formTitle { display: none; }

/* RSForm "horizontal" layout: labels above the fields in the narrow panel. */
.bvp-contact__form .formHorizontal .formControlLabel { float: none; width: auto; text-align: left; padding: 0; margin-bottom: .45rem; }
.bvp-contact__form .formHorizontal .formControls { margin-left: 0; }
.bvp-contact__form .rsform-block { margin-bottom: 1.3rem; }
.bvp-contact__form .formDescription:empty { display: none; }
.bvp-contact__form .formRequired { font-weight: 400; margin-left: .2rem; color: var(--bvp-brass); }
.bvp-contact__form .formNoError { display: none; }
/* No "Send" label above the button, and plain sentence case for the consent text. */
.bvp-contact__form .rsform-type-submitbutton .formControlLabel { display: none; }
.bvp-contact__form .rsform-type-checkboxgroup .formBody label,
.bvp-contact__form .rsform-type-checkboxgroup .formBody { font-size: .85rem; font-weight: 400; letter-spacing: 0; text-transform: none; color: var(--bvp-text); }
.bvp-contact__form input[type="checkbox"] { margin-right: .5rem; accent-color: var(--bvp-navy); }

/* ---------------------------------------------------------------- property listing (OS Property) */

.bvp-listing { padding-top: .5rem; }
.bvp-listing__bar {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem;
	padding-bottom: 1.4rem; margin-bottom: clamp(2rem, 4vw, 3.5rem);
	border-bottom: 1px solid var(--bvp-line);
}
.bvp-listing__count { margin: 0; font-size: .7rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; color: var(--bvp-muted); }
.bvp-listing__count strong { font-family: var(--bvp-head); font-size: 1.6rem; font-weight: 300; letter-spacing: 0; color: var(--bvp-ink); margin-right: .45rem; vertical-align: -.15em; }
.bvp-listing__sort { display: flex; align-items: center; gap: .9rem; }
.bvp-listing__sort label { margin: 0; }
.bvp-listing__sort select {
	min-height: 0; padding: .4rem 2rem .4rem 0; border: 0; border-bottom: 1px solid var(--bvp-ink);
	background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%231d232a'/%3E%3C/svg%3E") right center no-repeat;
	font-family: var(--bvp-head); font-size: .9rem; color: var(--bvp-ink);
	appearance: none; -webkit-appearance: none; cursor: pointer;
}
.bvp-listing__sort select:focus { outline: none; box-shadow: none; border-bottom-color: var(--bvp-brass); }

.bvp-listing__grid { gap: clamp(2.75rem, 5vw, 4.5rem) clamp(1.5rem, 3vw, 3rem); }
.bvp-card--large .bvp-card__media { aspect-ratio: 3 / 2; margin-bottom: 1.6rem; }
.bvp-card--large .bvp-card__title { font-size: clamp(1.15rem, 1.5vw, 1.4rem); }
.bvp-card--large .bvp-card__price { font-size: 1.2rem; }

.bvp-listing__pages { display: flex; justify-content: center; margin-top: clamp(3rem, 6vw, 5rem); }
.bvp-listing__pages ul { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; margin: 0; padding: 0; }

/* OS Property draws its own heading, toolbar and filter blocks around the
   list; the page hero and the bar above already do that job. */
.option-osproperty .componentheading,
.option-osproperty #listing-header,
.option-osproperty .nodisplay,
.option-osproperty .block_caption,
.option-osproperty .ospropertytoolbar,
.option-osproperty .property_footer { display: none; }

@media (max-width: 767.98px) {
	.bvp-listing__bar { flex-direction: column; align-items: flex-start; }
}

/* ---------------------------------------------------------------- property detail (OS Property) */

/* 1. Gallery: one large photo, two beside it, edge to edge under the header. */
.bvp-prop__gallery {
	position: relative;
	display: grid; grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; gap: 4px;
	height: min(78vh, 760px); background: var(--bvp-navy);
}
.bvp-prop__gallery--single { grid-template-columns: 1fr; grid-template-rows: 1fr; }
.bvp-prop__shot { position: relative; padding: 0; border: 0; background: var(--bvp-navy); overflow: hidden; cursor: zoom-in; }
.bvp-prop__shot img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--bvp-ease), opacity .4s; }
.bvp-prop__shot:hover img { transform: scale(1.03); }
.bvp-prop__shot--0 { grid-row: 1 / 3; }
.bvp-prop__all {
	position: absolute; right: var(--bvp-gutter); bottom: 1.5rem; z-index: 2;
	display: inline-flex; align-items: center; gap: .6rem; padding: .85rem 1.4rem;
	border: 0; background: #fff; color: var(--bvp-navy); cursor: pointer;
	font-family: var(--bvp-sans); font-size: .68rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;
	box-shadow: 0 10px 30px rgba(14,22,30,.2);
}
.bvp-prop__all:hover { background: var(--bvp-navy); color: #fff; }

/* 2. Title block. */
.bvp-prop__head {
	display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2rem 4rem; align-items: end;
	padding: clamp(2.5rem, 5vw, 4rem) 0 clamp(2rem, 4vw, 3rem); border-bottom: 1px solid var(--bvp-line);
}
.bvp-prop__title { font-size: clamp(1.7rem, 2.6vw, 2.5rem); max-width: 38ch; margin-bottom: 1.6rem; text-wrap: balance; }
.bvp-prop__facts { display: flex; flex-wrap: wrap; gap: 1.25rem 2.75rem; list-style: none; margin: 0; padding: 0; }
.bvp-prop__facts li { display: flex; flex-direction: column; }
.bvp-prop__facts strong { font-family: var(--bvp-head); font-size: 1.35rem; font-weight: 300; color: var(--bvp-ink); line-height: 1.1; }
.bvp-prop__facts span { font-size: .62rem; font-weight: 500; letter-spacing: .2em; text-transform: uppercase; color: var(--bvp-muted); margin-top: .35rem; }
.bvp-prop__pricebox { text-align: right; }
.bvp-prop__price { font-family: var(--bvp-head); font-size: clamp(1.6rem, 2.3vw, 2.1rem); font-weight: 300; color: var(--bvp-navy); margin: 0 0 .2rem; line-height: 1.1; }
.bvp-prop__ref { font-size: .66rem; letter-spacing: .2em; text-transform: uppercase; color: var(--bvp-muted); margin: 0 0 1.4rem; }

/* 3. Body and sticky panel. */
.bvp-prop__body { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: clamp(2.5rem, 6vw, 6rem); padding: clamp(3rem, 5vw, 4.5rem) 0 var(--bvp-section); }
.bvp-prop__block + .bvp-prop__block { margin-top: clamp(2.75rem, 5vw, 4rem); padding-top: clamp(2.75rem, 5vw, 4rem); border-top: 1px solid var(--bvp-line); }
.bvp-prop__h { font-size: clamp(1.35rem, 1.9vw, 1.7rem); margin-bottom: 1.5rem; }
.bvp-prop__desc p { max-width: 68ch; }
.bvp-prop__desc p:first-of-type { font-family: var(--bvp-head); font-size: clamp(1.05rem, 1.35vw, 1.2rem); font-weight: 300; line-height: 1.65; color: var(--bvp-ink); }

.bvp-prop__highlights { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem 2.5rem; }
.bvp-prop__highlights li { position: relative; padding-left: 1.6rem; font-family: var(--bvp-head); font-size: .98rem; font-weight: 300; line-height: 1.5; color: var(--bvp-ink); }
.bvp-prop__highlights li::before { content: ""; position: absolute; left: 0; top: .65em; width: .8rem; height: 1px; background: var(--bvp-brass); }

.bvp-prop__dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 2.5rem; margin: 0; }
.bvp-prop__dl > div { display: flex; justify-content: space-between; gap: 1rem; padding: .85rem 0; border-bottom: 1px solid var(--bvp-line); }
.bvp-prop__dl dt { flex: 0 0 auto; white-space: nowrap; font-size: .66rem; font-weight: 500; letter-spacing: .18em; text-transform: uppercase; color: var(--bvp-muted); padding-top: .2rem; }
.bvp-prop__dl dd { margin: 0; text-align: right; color: var(--bvp-ink); }

.bvp-prop__tags { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.bvp-prop__tags li { padding: .5rem .95rem; border: 1px solid var(--bvp-line); font-size: .82rem; color: var(--bvp-text); }

.bvp-prop__rooms { columns: 2 260px; column-gap: 2.5rem; }
.bvp-prop__roomgroup { break-inside: avoid; margin-bottom: 2rem; }
.bvp-prop__roomgroup h3 { font-family: var(--bvp-sans); font-size: .66rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--bvp-ink); margin: 0 0 .6rem; }
.bvp-prop__roomgroup ul { list-style: none; margin: 0; padding: 0; }
.bvp-prop__roomgroup li { display: flex; justify-content: space-between; gap: 1rem; padding: .45rem 0; border-bottom: 1px dotted var(--bvp-line); font-size: .9rem; }
.bvp-prop__roomgroup li span:last-child:not(:first-child) { color: var(--bvp-muted); white-space: nowrap; }

/* Energy labels: the official A–G colours, the current class stands out. */
.bvp-energy { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.5rem; margin-bottom: 1.5rem; }
.bvp-energy__title { font-size: .66rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--bvp-ink); margin-bottom: .9rem; }
.bvp-energy ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 3px; }
.bvp-energy li { display: flex; align-items: center; gap: .8rem; }
.bvp-energy li span { display: inline-flex; align-items: center; height: 22px; padding: 0 .6rem; font: 600 .75rem/1 var(--bvp-sans); color: #fff; opacity: .35; }
.bvp-energy li.is-current span { height: 30px; opacity: 1; font-size: .95rem; }
.bvp-energy li em { font-style: normal; font-size: .78rem; color: var(--bvp-ink); }
.bvp-energy__scale--dpe .bvp-energy__a span { background: #009c6d; width: 32%; }
.bvp-energy__scale--dpe .bvp-energy__b span { background: #52b153; width: 40%; }
.bvp-energy__scale--dpe .bvp-energy__c span { background: #78bd76; width: 48%; }
.bvp-energy__scale--dpe .bvp-energy__d span { background: #f4e70f; width: 56%; color: var(--bvp-ink); }
.bvp-energy__scale--dpe .bvp-energy__e span { background: #f0b40f; width: 64%; }
.bvp-energy__scale--dpe .bvp-energy__f span { background: #eb8235; width: 72%; }
.bvp-energy__scale--dpe .bvp-energy__g span { background: #d7221f; width: 80%; }
.bvp-energy__scale--ges .bvp-energy__a span { background: #a4dbf8; width: 32%; color: var(--bvp-ink); }
.bvp-energy__scale--ges .bvp-energy__b span { background: #8cb4d3; width: 40%; }
.bvp-energy__scale--ges .bvp-energy__c span { background: #7792b1; width: 48%; }
.bvp-energy__scale--ges .bvp-energy__d span { background: #636f93; width: 56%; }
.bvp-energy__scale--ges .bvp-energy__e span { background: #4f4c74; width: 64%; }
.bvp-energy__scale--ges .bvp-energy__f span { background: #3a2a56; width: 72%; }
.bvp-energy__scale--ges .bvp-energy__g span { background: #281b35; width: 80%; }
.bvp-energy li span { min-width: 2.2rem; }
.bvp-energy__note { font-size: .82rem; color: var(--bvp-muted); margin-bottom: .5rem; }

.bvp-prop__aside { align-self: start; position: sticky; top: 96px; }
.bvp-prop__aside.is-static { position: static; }
.bvp-prop__panel { padding: clamp(1.75rem, 3vw, 2.5rem); background: var(--bvp-stone); }
.bvp-prop__panelprice { font-family: var(--bvp-head); font-size: 1.55rem; font-weight: 300; color: var(--bvp-navy); margin: 0 0 .1rem; line-height: 1.1; }
.bvp-prop__agent { display: flex; align-items: center; gap: 1rem; min-height: 0; padding: 1.2rem 0; border-top: 1px solid var(--bvp-line); border-bottom: 1px solid var(--bvp-line); margin-bottom: 1rem; }
.bvp-prop__agent img { width: 64px; height: 64px; object-fit: cover; border-radius: 50%; }
.bvp-prop__agent span { display: block; font-size: .62rem; font-weight: 500; letter-spacing: .2em; text-transform: uppercase; color: var(--bvp-muted); }
.bvp-prop__agent strong { font-family: var(--bvp-head); font-size: 1.05rem; font-weight: 400; color: var(--bvp-ink); }
.bvp-prop__direct { list-style: none; margin: 0 0 1.5rem; padding: 0; font-size: .88rem; }
.bvp-prop__direct li { margin-bottom: .35rem; }
.bvp-prop__direct i { width: 1.4rem; color: var(--bvp-brass); font-size: .8rem; }
.bvp-prop__form { padding: 0; background: none; }
.bvp-prop__form textarea { min-height: 120px; }

/* 4. Film and tour. */
.bvp-prop__media .bvp-wrap { display: grid; gap: clamp(2.5rem, 5vw, 4rem); }
.bvp-ratio { position: relative; aspect-ratio: 16 / 9; background: var(--bvp-navy); }
.bvp-ratio iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* 5. Map. */
.bvp-prop__map { height: clamp(320px, 45vw, 520px); background: var(--bvp-stone); }
.bvp-prop__map .leaflet-control-attribution { font-size: 10px; }
.bvp-prop__map .leaflet-tile-pane { filter: grayscale(1) contrast(.92) brightness(1.04); }

/* Full screen photo viewer (template.js). */
.bvp-lightbox { position: fixed; inset: 0; z-index: 1000; background: rgba(12,18,24,.97); display: flex; flex-direction: column; opacity: 0; visibility: hidden; transition: opacity .3s, visibility .3s; }
.bvp-lightbox.is-open { opacity: 1; visibility: visible; }
.bvp-lightbox__stage { flex: 1; display: flex; align-items: center; justify-content: center; padding: 4.5rem 5rem 1rem; min-height: 0; }
.bvp-lightbox__stage img { max-width: 100%; max-height: 100%; object-fit: contain; }
.bvp-lightbox__bar { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.5rem 1.4rem; color: rgba(255,255,255,.75); font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; }
.bvp-lightbox button { border: 0; background: none; color: #fff; cursor: pointer; }
.bvp-lightbox__close { position: absolute; top: 1rem; right: 1.25rem; width: 48px; height: 48px; font-size: 1.4rem; }
.bvp-lightbox__prev, .bvp-lightbox__next { position: absolute; top: 50%; transform: translateY(-50%); width: 56px; height: 56px; font-size: 1.3rem; opacity: .8; }
.bvp-lightbox__prev { left: .75rem; }
.bvp-lightbox__next { right: .75rem; }
.bvp-lightbox button:hover { opacity: 1; color: var(--bvp-brass); }
body.bvp-locked-lb { overflow: hidden; }

@media (max-width: 991.98px) {
	.bvp-prop__gallery { grid-template-columns: 1fr; grid-template-rows: 1fr; height: min(62vh, 520px); }
	.bvp-prop__shot--1, .bvp-prop__shot--2 { display: none; }
	.bvp-prop__shot--0 { grid-row: auto; }
	.bvp-prop__head { grid-template-columns: 1fr; }
	.bvp-prop__pricebox { text-align: left; }
	.bvp-prop__body { grid-template-columns: minmax(0, 1fr); }
	.bvp-prop__aside { position: static; }
	.bvp-prop__dl, .bvp-prop__highlights, .bvp-energy { grid-template-columns: minmax(0, 1fr); }
	.bvp-lightbox__stage { padding: 4rem .5rem 1rem; }
}

/* Property photo grid ("The property in pictures"): three columns, every
   seventh photo twice the size, packed without holes. */
.bvp-mosaic {
	display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-flow: dense;
	/* Fixed row height, so a large tile is exactly two rows and every gap is equal. */
	grid-auto-rows: clamp(150px, 18vw, 290px); gap: clamp(6px, .8vw, 12px);
}
.bvp-mosaic__item { position: relative; padding: 0; border: 0; overflow: hidden; background: #e7e3dc; cursor: zoom-in; }
.bvp-mosaic__item:nth-child(7n + 1) { grid-column: span 2; grid-row: span 2; }
.bvp-mosaic__item img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--bvp-ease); }
.bvp-mosaic__item:hover img { transform: scale(1.04); }
.bvp-mosaic__item::after { content: ""; position: absolute; inset: 0; background: rgba(24,37,49,0); transition: background .4s; }
.bvp-mosaic__item:hover::after { background: rgba(24,37,49,.12); }
@media (max-width: 767.98px) {
	.bvp-mosaic { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 34vw; }
}

/* ---------------------------------------------------------------- RSForm! Pro, Prestige style
   For the contact page and the enquiry panel beside each property: quiet
   underlined fields on the stone panel, small capitals for the labels, one
   full width button. Written against RSForm's "Responsive" layout and strong
   enough to win over its own stylesheet. */

.bvp-contact__form .formResponsive,
.bvp-contact__form .formContainer,
.bvp-contact__form .formRow,
.bvp-contact__form .formSpan12 { margin: 0 !important; padding: 0 !important; width: 100% !important; float: none !important; }
.bvp-contact__form *, .bvp-contact__form *::before, .bvp-contact__form *::after { box-sizing: border-box; }

.bvp-contact__form .rsform-block { margin: 0 0 1.35rem !important; padding: 0 !important; }
.bvp-contact__form .formControls, .bvp-contact__form .formBody { margin: 0 !important; padding: 0 !important; width: 100% !important; }

.bvp-contact__form .formControlLabel {
	display: block; float: none !important; width: auto !important; margin: 0 0 .15rem !important; padding: 0 !important; text-align: left !important;
	font-family: var(--bvp-sans); font-size: .62rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--bvp-muted);
}
/* "(*)" becomes a small brass asterisk. */
.bvp-contact__form .formRequired { font-size: 0; margin-left: .25rem; }
.bvp-contact__form .formRequired::after { content: "*"; font-size: .75rem; font-weight: 400; color: var(--bvp-brass); }

.bvp-contact__form input[type="text"],
.bvp-contact__form input[type="email"],
.bvp-contact__form input[type="tel"],
.bvp-contact__form select,
.bvp-contact__form textarea {
	display: block; width: 100% !important; max-width: none !important; min-height: 0;
	margin: 0; padding: .55rem 0 .6rem !important;
	border: 0 !important; border-bottom: 1px solid rgba(29,35,42,.28) !important; border-radius: 0 !important;
	background: transparent !important; box-shadow: none !important;
	font-family: var(--bvp-sans); font-size: .95rem; color: var(--bvp-ink);
	transition: border-color .25s;
}
.bvp-contact__form textarea { min-height: 7.5rem !important; resize: vertical; line-height: 1.55; }
.bvp-contact__form select {
	appearance: none; -webkit-appearance: none; cursor: pointer; padding-right: 1.5rem !important;
	background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%231d232a'/%3E%3C/svg%3E") right center no-repeat !important;
}
.bvp-contact__form input:focus, .bvp-contact__form select:focus, .bvp-contact__form textarea:focus {
	outline: none; border-bottom-color: var(--bvp-navy) !important; box-shadow: 0 1px 0 0 var(--bvp-navy) !important;
}

/* Consent: no group label, a neat square box beside the sentence. */
.bvp-contact__form .rsform-type-checkboxgroup > .formControlLabel { display: none; }
.bvp-contact__form fieldset.rsfp-fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.bvp-contact__form .rsform-type-checkboxgroup .formBody label {
	display: flex; gap: .7rem; align-items: flex-start; margin: .25rem 0 0;
	font-size: .8rem; font-weight: 400; letter-spacing: 0; text-transform: none; line-height: 1.5; color: var(--bvp-text); cursor: pointer;
}
.bvp-contact__form input[type="checkbox"] {
	appearance: none; -webkit-appearance: none; flex: 0 0 auto;
	width: 16px; height: 16px; margin: .15rem 0 0 !important; border: 1px solid rgba(29,35,42,.45); background: #fff; cursor: pointer;
	display: inline-grid; place-content: center;
}
.bvp-contact__form input[type="checkbox"]::before { content: ""; width: 8px; height: 8px; background: var(--bvp-navy); transform: scale(0); transition: transform .15s; }
.bvp-contact__form input[type="checkbox"]:checked::before { transform: scale(1); }
.bvp-contact__form input[type="checkbox"]:focus-visible { outline: 2px solid var(--bvp-brass); outline-offset: 2px; }

/* Validation messages, only when RSForm marks a field. */
.bvp-contact__form .formNoError { display: none !important; }
.bvp-contact__form .formError { display: block; margin-top: .35rem; font-size: .74rem; color: #a2382f; }
.bvp-contact__form .formDescription:empty, .bvp-contact__form .formValidation:empty { display: none; }

/* The button: full width, no "Send" label above it. */
.bvp-contact__form .rsform-type-submitbutton { margin: 1.75rem 0 0 !important; }
.bvp-contact__form .rsform-type-submitbutton > .formControlLabel { display: none; }
.bvp-contact__form button[type="submit"], .bvp-contact__form .rsform-submit-button {
	display: block; width: 100%; min-height: 54px; padding: 0 1.5rem;
	border: 1px solid var(--bvp-navy); border-radius: 0; background: var(--bvp-navy); color: #fff;
	font-family: var(--bvp-sans); font-size: .72rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase;
	cursor: pointer; transition: background .3s, color .3s;
}
.bvp-contact__form button[type="submit"]:hover, .bvp-contact__form .rsform-submit-button:hover { background: transparent; color: var(--bvp-navy); }

/* Thank you message after sending. */
.bvp-contact__form .alert, .bvp-contact__form .rsform-thankyou { padding: 1.25rem 0; border: 0; background: none; font-family: var(--bvp-head); font-size: 1.05rem; font-weight: 300; color: var(--bvp-ink); }

/* In the property panel: a small heading, and no extra padding (the panel has it). */
.bvp-prop__formtitle {
	margin: 1.75rem 0 1.1rem; padding-top: 1.5rem; border-top: 1px solid var(--bvp-line);
	font-family: var(--bvp-head); font-size: 1.15rem; font-weight: 400; color: var(--bvp-ink);
}
.bvp-prop__form.bvp-contact__form { padding: 0; background: none; }
.bvp-prop__direct { margin-bottom: 0; }

/* RSForm's responsive stylesheet sizes fields as content-box with fixed
   heights, and shows its (empty) validation holder inline-block, which
   leaves a blank line under every field. */
.bvp-contact__form input, .bvp-contact__form select, .bvp-contact__form textarea { box-sizing: border-box !important; height: auto !important; line-height: 1.5 !important; }
.bvp-contact__form .formValidation { display: block !important; line-height: 0; }
.bvp-contact__form .formValidation .formError { line-height: 1.4; }
.bvp-contact__form .formValidation:has(> .formNoError:only-child) { display: none !important; }
.bvp-contact__form input[type="checkbox"] { width: 16px !important; height: 16px !important; padding: 0 !important; border: 1px solid rgba(29,35,42,.45) !important; line-height: 1 !important; }

/* Home page: the photo takes the screen height minus the top bar, header and
   the part of the search bar that hangs below it, so the search bar always
   sits inside the first screen, on a laptop as on a large monitor. svh = the
   visible height on phones, with the browser bars counted. */
body.is-home .bvp-hero:not(.bvp-hero--page) {
	min-height: clamp(440px, calc(100vh - 175px), 880px);
	min-height: clamp(440px, calc(100svh - 175px), 880px);
}
body.is-home .bvp-hero:not(.bvp-hero--page) .bvp-hero__body { padding-bottom: clamp(6rem, 11vh, 8.5rem); }
body.is-home .bvp-hero:not(.bvp-hero--page) h1 { font-size: clamp(2rem, min(4.2vw, 6.2vh), 3.6rem); }

@media (max-width: 991.98px) {
	/* Phones and tablets: the fields stack under the photo; a lower photo
	   lets the search start on the first screen. */
	body.is-home .bvp-hero:not(.bvp-hero--page) { min-height: min(56vh, 460px); min-height: min(56svh, 460px); }
	body.is-home .bvp-hero:not(.bvp-hero--page) .bvp-hero__body { padding-bottom: 2.5rem; }
}

/* reCAPTCHA notice under the Send button (an RSForm Free Text field): small
   and quiet. With this notice next to the form, Google allows hiding its
   floating badge, which would otherwise sit on the back to top button. */
.bvp-contact__form .rsform-type-freetext { margin: .9rem 0 0 !important; }
.bvp-contact__form .rsform-type-freetext p {
	margin: 0; font-size: .68rem; line-height: 1.55; letter-spacing: .01em; text-transform: none; color: var(--bvp-muted);
}
.bvp-contact__form .rsform-type-freetext a { color: var(--bvp-muted); text-decoration: underline; text-underline-offset: 2px; }
.bvp-contact__form .rsform-type-freetext a:hover { color: var(--bvp-navy); }
.grecaptcha-badge { visibility: hidden !important; }


/* ---------------------------------------------------------------- cookie consent banner */

.bvp-consent {
	position: fixed; z-index: 200; left: var(--bvp-gutter); right: var(--bvp-gutter); bottom: var(--bvp-gutter);
	max-width: 760px; margin: 0 auto;
	display: flex; align-items: center; gap: 1.5rem 2rem;
	padding: 1.5rem 1.75rem; background: #fff; border-top: 2px solid var(--bvp-navy);
	box-shadow: 0 20px 60px rgba(14,22,30,.22);
	opacity: 0; transform: translateY(12px); transition: opacity .35s, transform .35s;
}
.bvp-consent.is-open { opacity: 1; transform: none; }
.bvp-consent[hidden] { display: none; }
.bvp-consent__title { margin: 0 0 .35rem; font-size: .68rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--bvp-navy); }
.bvp-consent__text p:last-child { margin: 0; font-size: .82rem; line-height: 1.6; color: var(--bvp-text); }
.bvp-consent__text a { color: var(--bvp-navy); text-decoration: underline; text-underline-offset: 2px; }
.bvp-consent__actions { display: flex; gap: .6rem; flex: 0 0 auto; }
.bvp-consent__actions .bvp-btn { min-height: 44px; padding: 0 1.4rem; }
.bvp-footer__consent { border: 0; background: none; padding: 0; color: rgba(255,255,255,.6); font: inherit; cursor: pointer; }
.bvp-footer__consent:hover { color: #fff; }

@media (max-width: 767.98px) {
	.bvp-consent { flex-direction: column; align-items: stretch; }
	.bvp-consent__actions .bvp-btn { flex: 1; }
}
