/**
 * Complete Gallery page — glassmorphism layout.
 */

.bcl-gallery-page-main {
	position: relative;
	overflow: clip;
	background:
		radial-gradient(circle at 10% 18%, color-mix(in srgb, var(--bcl-accent-bright) 22%, transparent), transparent 30rem),
		radial-gradient(circle at 88% 35%, color-mix(in srgb, var(--bcl-accent) 24%, transparent), transparent 34rem),
		linear-gradient(180deg, #f7fbf8 0%, #eef7f1 48%, #f9fbf7 100%);
}

.bcl-gallery-page-main::before,
.bcl-gallery-page-main::after {
	position: absolute;
	z-index: 0;
	width: 22rem;
	height: 22rem;
	border-radius: 50%;
	content: "";
	filter: blur(24px);
	pointer-events: none;
	opacity: .34;
}

.bcl-gallery-page-main::before {
	top: 38rem;
	left: -9rem;
	background: color-mix(in srgb, var(--bcl-accent-bright) 45%, transparent);
}

.bcl-gallery-page-main::after {
	right: -10rem;
	bottom: 18rem;
	background: color-mix(in srgb, var(--bcl-accent) 42%, transparent);
}

.bcl-gallery-page-section,
.bcl-gallery-page-section > .bcl-container {
	position: relative;
	z-index: 1;
}

.bcl-gallery-page-intro {
	display: grid;
	grid-template-columns: minmax(0, 1.45fr) minmax(17rem, .55fr);
	gap: clamp(1rem, 3vw, 2rem);
	align-items: start;
	margin-bottom: clamp(2rem, 5vw, 4rem);
}

.bcl-gallery-page-copy,
.bcl-gallery-page-aside,
.bcl-complete-gallery,
.bcl-gallery-page-projects {
	margin-top: clamp(2rem, 5vw, 4rem);
}

.bcl-gallery-page-projects > .bcl-content-callout {
	border: 1px solid rgba(255,255,255,.76);
	border-radius: 1.5rem;
	background: rgba(255,255,255,.58);
	box-shadow: 0 18px 44px rgba(8,61,39,.09);
	-webkit-backdrop-filter: blur(16px);
	backdrop-filter: blur(16px);
}

.bcl-gallery-map {
	border: 1px solid rgba(255, 255, 255, .72);
	background: linear-gradient(135deg, rgba(255, 255, 255, .78), rgba(255, 255, 255, .48));
	box-shadow: 0 28px 70px rgba(8, 61, 39, .12), inset 0 1px 0 rgba(255, 255, 255, .9);
	-webkit-backdrop-filter: blur(22px) saturate(145%);
	backdrop-filter: blur(22px) saturate(145%);
}

.bcl-gallery-page-copy {
	padding: clamp(1.25rem, 3vw, 2.4rem);
	border-radius: 2rem;
}

.bcl-gallery-page-copy .bcl-entry-content {
	max-width: none;
}

.bcl-gallery-page-copy .bcl-entry-content > :first-child {
	margin-top: 0;
}

.bcl-gallery-page-aside {
	position: sticky;
	top: 7rem;
	padding: 1.4rem;
	border-radius: 1.6rem;
}

.bcl-gallery-page-aside .bcl-sidebar-card {
	padding: 0;
	border: 0;
	background: transparent;
	box-shadow: none;
}

.bcl-complete-gallery {
	position: relative;
	padding: clamp(1rem, 2.5vw, 2rem);
	border-radius: clamp(1.5rem, 3vw, 2.5rem);
}

.bcl-complete-gallery::before {
	position: absolute;
	inset: 1px;
	border-radius: inherit;
	background: linear-gradient(135deg, rgba(255,255,255,.35), transparent 35%, rgba(242,201,76,.09));
	content: "";
	pointer-events: none;
}

.bcl-complete-gallery > * {
	position: relative;
	z-index: 1;
}

.bcl-complete-gallery-head {
	display: flex;
	gap: 1.5rem;
	align-items: end;
	justify-content: space-between;
	padding: clamp(.5rem, 1vw, 1rem);
}

.bcl-complete-gallery-head h2 {
	max-width: 17ch;
	margin: .35rem 0 .7rem;
	font-size: clamp(2rem, 5vw, 4rem);
	line-height: .98;
	letter-spacing: -.045em;
}

.bcl-complete-gallery-head p:not(.bcl-eyebrow) {
	max-width: 60rem;
	margin: 0;
	color: #466154;
}

.bcl-complete-gallery-count {
	display: grid;
	min-width: 7rem;
	padding: .9rem 1.1rem;
	border: 1px solid rgba(255,255,255,.8);
	border-radius: 1.25rem;
	background: rgba(255,255,255,.52);
	box-shadow: 0 14px 35px rgba(8,61,39,.09);
	text-align: center;
}

.bcl-complete-gallery-count strong {
	font-size: 2rem;
	line-height: 1;
	color: var(--bcl-accent-deep);
}

.bcl-complete-gallery-count span {
	margin-top: .35rem;
	font-size: .76rem;
	font-weight: 800;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: #617469;
}

.bcl-complete-gallery-toolbar {
	display: flex;
	gap: 1rem;
	align-items: center;
	justify-content: space-between;
	margin: 1.5rem .5rem 1.25rem;
	padding: .65rem;
	border: 1px solid rgba(255,255,255,.82);
	border-radius: 1.4rem;
	background: rgba(255,255,255,.58);
	box-shadow: 0 16px 38px rgba(8,61,39,.08);
}

.bcl-complete-gallery-filters {
	display: flex;
	gap: .45rem;
	align-items: center;
	flex-wrap: wrap;
}

.bcl-complete-gallery-filters button {
	min-height: 2.65rem;
	padding: .6rem .95rem;
	border: 1px solid transparent;
	border-radius: .95rem;
	background: transparent;
	color: #395347;
	font: inherit;
	font-size: .88rem;
	font-weight: 800;
	cursor: pointer;
	transition: transform .22s ease, background .22s ease, color .22s ease, box-shadow .22s ease;
}

.bcl-complete-gallery-filters button:hover,
.bcl-complete-gallery-filters button:focus-visible {
	transform: translateY(-1px);
	background: rgba(255,255,255,.8);
}

.bcl-complete-gallery-filters button.is-active {
	background: linear-gradient(135deg, var(--bcl-accent), var(--bcl-accent-dark));
	box-shadow: 0 10px 24px color-mix(in srgb, var(--bcl-accent) 28%, transparent);
	color: #fff;
}

.bcl-complete-gallery-search {
	display: flex;
	gap: .55rem;
	align-items: center;
	min-width: min(100%, 18rem);
	padding: 0 .85rem;
	border: 1px solid rgba(9,61,39,.12);
	border-radius: .95rem;
	background: rgba(255,255,255,.8);
	color: #4c6559;
}

.bcl-complete-gallery-search svg {
	width: 1.15rem;
	flex: 0 0 auto;
}

.bcl-complete-gallery-search input {
	width: 100%;
	min-height: 2.7rem;
	padding: 0;
	border: 0;
	outline: 0;
	background: transparent;
	font: inherit;
	color: #173f2c;
}

.bcl-complete-gallery-grid {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: clamp(.8rem, 1.7vw, 1.25rem);
}

.bcl-complete-gallery-card {
	grid-column: span 4;
	margin: 0;
	overflow: hidden;
	border: 1px solid rgba(255,255,255,.82);
	border-radius: 1.45rem;
	background: rgba(255,255,255,.54);
	box-shadow: 0 18px 46px rgba(6,54,34,.10), inset 0 1px 0 rgba(255,255,255,.92);
	-webkit-backdrop-filter: blur(16px);
	backdrop-filter: blur(16px);
	transition: transform .28s cubic-bezier(.2,.8,.2,1), box-shadow .28s ease, opacity .2s ease;
}

.bcl-complete-gallery-card:nth-child(7n + 1),
.bcl-complete-gallery-card:nth-child(7n + 5) {
	grid-column: span 6;
}

.bcl-complete-gallery-card:hover,
.bcl-complete-gallery-card:focus-within {
	transform: translateY(-7px);
	box-shadow: 0 28px 64px rgba(6,54,34,.17), inset 0 1px 0 rgba(255,255,255,.96);
}

.bcl-complete-gallery-card[hidden] {
	display: none;
}

.bcl-complete-gallery-open {
	position: relative;
	display: block;
	width: 100%;
	padding: 0;
	border: 0;
	background: #0b2f20;
	cursor: zoom-in;
}

.bcl-complete-gallery-media {
	display: block;
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

.bcl-complete-gallery-card:nth-child(7n + 1) .bcl-complete-gallery-media,
.bcl-complete-gallery-card:nth-child(7n + 5) .bcl-complete-gallery-media {
	aspect-ratio: 16 / 9;
}

.bcl-complete-gallery-image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .7s cubic-bezier(.2,.8,.2,1), filter .35s ease;
}

.bcl-complete-gallery-card:hover .bcl-complete-gallery-image,
.bcl-complete-gallery-card:focus-within .bcl-complete-gallery-image {
	transform: scale(1.055);
	filter: saturate(1.08) contrast(1.03);
}

.bcl-complete-gallery-shine {
	position: absolute;
	inset: 0;
	background: linear-gradient(120deg, transparent 24%, rgba(255,255,255,.28) 42%, transparent 60%);
	transform: translateX(-120%);
	transition: transform .7s ease;
	pointer-events: none;
}

.bcl-complete-gallery-card:hover .bcl-complete-gallery-shine,
.bcl-complete-gallery-card:focus-within .bcl-complete-gallery-shine {
	transform: translateX(120%);
}

.bcl-complete-gallery-expand {
	position: absolute;
	top: .8rem;
	right: .8rem;
	display: grid;
	width: 2.65rem;
	height: 2.65rem;
	place-items: center;
	border: 1px solid rgba(255,255,255,.65);
	border-radius: 50%;
	background: rgba(7,48,31,.48);
	box-shadow: 0 10px 25px rgba(0,0,0,.18);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	color: #fff;
	font-size: 1.1rem;
}

.bcl-complete-gallery-card figcaption {
	padding: 1rem 1.1rem 1.2rem;
}

.bcl-complete-gallery-category {
	display: inline-flex;
	padding: .34rem .58rem;
	border: 1px solid color-mix(in srgb, var(--bcl-accent) 17%, transparent);
	border-radius: 999px;
	background: color-mix(in srgb, var(--bcl-accent-soft) 72%, #fff);
	font-size: .68rem;
	font-weight: 900;
	letter-spacing: .11em;
	text-transform: uppercase;
	color: var(--bcl-accent-dark);
}

.bcl-complete-gallery-card h3 {
	margin: .72rem 0 .4rem;
	font-size: clamp(1.05rem, 2vw, 1.3rem);
	line-height: 1.15;
	color: #103824;
}

.bcl-complete-gallery-card p {
	display: -webkit-box;
	margin: 0;
	overflow: hidden;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	color: #607268;
	font-size: .9rem;
}

.bcl-complete-gallery-empty {
	margin: 2rem 0 .5rem;
	padding: 1.25rem;
	border: 1px dashed rgba(9,61,39,.24);
	border-radius: 1rem;
	background: rgba(255,255,255,.48);
	text-align: center;
	color: #516a5e;
}

.bcl-complete-gallery-dialog {
	width: min(94vw, 88rem);
	max-width: none;
	padding: 0;
	border: 1px solid rgba(255,255,255,.38);
	border-radius: 1.8rem;
	background: rgba(4, 24, 16, .78);
	box-shadow: 0 45px 120px rgba(0,0,0,.45);
	-webkit-backdrop-filter: blur(24px) saturate(130%);
	backdrop-filter: blur(24px) saturate(130%);
	color: #fff;
}

.bcl-complete-gallery-dialog::backdrop {
	background: rgba(2, 13, 9, .78);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
}

.bcl-complete-gallery-dialog-shell {
	position: relative;
	display: grid;
	grid-template-columns: 3.5rem minmax(0,1fr) 3.5rem;
	gap: 1rem;
	align-items: center;
	padding: clamp(1rem, 2vw, 1.5rem);
}

.bcl-complete-gallery-dialog figure {
	margin: 0;
}

.bcl-complete-gallery-dialog img {
	display: block;
	width: 100%;
	max-height: 72vh;
	margin: auto;
	object-fit: contain;
	border-radius: 1.2rem;
	background: rgba(0,0,0,.24);
}

.bcl-complete-gallery-dialog figcaption {
	padding: 1rem .2rem .2rem;
}

.bcl-complete-gallery-dialog h3 {
	margin: 0 0 .35rem;
	font-size: clamp(1.15rem, 2.6vw, 1.75rem);
	color: #fff;
}

.bcl-complete-gallery-dialog p {
	margin: 0;
	color: rgba(255,255,255,.72);
}

.bcl-complete-gallery-close,
.bcl-complete-gallery-nav {
	display: grid;
	place-items: center;
	border: 1px solid rgba(255,255,255,.3);
	border-radius: 50%;
	background: rgba(255,255,255,.12);
	color: #fff;
	cursor: pointer;
	transition: background .2s ease, transform .2s ease;
}

.bcl-complete-gallery-close:hover,
.bcl-complete-gallery-nav:hover,
.bcl-complete-gallery-close:focus-visible,
.bcl-complete-gallery-nav:focus-visible {
	transform: scale(1.06);
	background: rgba(255,255,255,.24);
}

.bcl-complete-gallery-close {
	position: absolute;
	top: .75rem;
	right: .75rem;
	z-index: 2;
	width: 2.75rem;
	height: 2.75rem;
	font-size: 1.7rem;
}

.bcl-complete-gallery-nav {
	width: 3.3rem;
	height: 3.3rem;
	font-size: 1.35rem;
}

.bcl-gallery-map {
	display: grid;
	grid-template-columns: minmax(17rem, .75fr) minmax(0, 1.25fr);
	gap: 1rem;
	margin-top: clamp(2rem, 5vw, 4rem);
	padding: clamp(1rem, 2vw, 1.4rem);
	border-radius: 2rem;
}

.bcl-gallery-map-copy {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	padding: clamp(1rem, 3vw, 2.1rem);
}

.bcl-gallery-map-copy h2 {
	margin: .4rem 0 .65rem;
	font-size: clamp(1.8rem, 4vw, 3.1rem);
	line-height: 1;
	letter-spacing: -.04em;
}

.bcl-gallery-map-copy > p:not(.bcl-eyebrow) {
	margin: 0;
	color: #52695e;
}

.bcl-gallery-map-address {
	display: flex;
	gap: .65rem;
	align-items: flex-start;
	margin: 1.25rem 0;
	padding: .8rem .9rem;
	border: 1px solid rgba(9,61,39,.1);
	border-radius: 1rem;
	background: rgba(255,255,255,.56);
	color: #173f2b;
}

.bcl-gallery-map-address span {
	font-size: 1.35rem;
	color: var(--bcl-accent);
}

.bcl-gallery-map-frame {
	min-height: 28rem;
	overflow: hidden;
	border: 1px solid rgba(255,255,255,.88);
	border-radius: 1.45rem;
	box-shadow: 0 18px 50px rgba(7,51,33,.15);
	background: #dce9e0;
}

.bcl-gallery-map-frame iframe {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 28rem;
	border: 0;
}

@media (max-width: 1024px) {
	.bcl-gallery-page-intro,
	.bcl-gallery-map {
		grid-template-columns: 1fr;
	}

	.bcl-gallery-page-aside {
		position: static;
	}

	.bcl-complete-gallery-card,
	.bcl-complete-gallery-card:nth-child(7n + 1),
	.bcl-complete-gallery-card:nth-child(7n + 5) {
		grid-column: span 6;
	}

	.bcl-complete-gallery-card:nth-child(7n + 1) .bcl-complete-gallery-media,
	.bcl-complete-gallery-card:nth-child(7n + 5) .bcl-complete-gallery-media {
		aspect-ratio: 4 / 3;
	}
}

@media (max-width: 760px) {
	.bcl-complete-gallery {
		padding: .8rem;
		border-radius: 1.35rem;
	}

	.bcl-complete-gallery-head,
	.bcl-complete-gallery-toolbar {
		align-items: stretch;
		flex-direction: column;
	}

	.bcl-complete-gallery-count {
		grid-template-columns: auto auto;
		gap: .4rem;
		align-items: baseline;
		justify-content: center;
	}

	.bcl-complete-gallery-count span {
		margin: 0;
	}

	.bcl-complete-gallery-search {
		min-width: 100%;
	}

	.bcl-complete-gallery-grid {
		grid-template-columns: 1fr;
	}

	.bcl-complete-gallery-card,
	.bcl-complete-gallery-card:nth-child(7n + 1),
	.bcl-complete-gallery-card:nth-child(7n + 5) {
		grid-column: 1;
	}

	.bcl-complete-gallery-dialog-shell {
		grid-template-columns: 1fr;
		padding-top: 4rem;
	}

	.bcl-complete-gallery-nav {
		position: absolute;
		bottom: 1rem;
		z-index: 2;
	}

	.bcl-complete-gallery-nav.is-previous {
		left: 1rem;
	}

	.bcl-complete-gallery-nav.is-next {
		right: 1rem;
	}

	.bcl-complete-gallery-dialog figcaption {
		padding-bottom: 4.5rem;
	}

	.bcl-gallery-map-frame,
	.bcl-gallery-map-frame iframe {
		min-height: 22rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.bcl-complete-gallery-card,
	.bcl-complete-gallery-image,
	.bcl-complete-gallery-shine,
	.bcl-complete-gallery-filters button,
	.bcl-complete-gallery-close,
	.bcl-complete-gallery-nav {
		transition: none !important;
	}
}
