/**
 * Thumbnails gallery element
 *
 * Layout is driven by [data-wb-pos] on the root, so the thumbnail strip can be
 * placed left, right, top or bottom. Arrows rotate using [data-wb-orientation],
 * which the JS keeps in sync (needed because the mobile layout can flip).
 */

.wb-thumbnails {
	--wb-thumb-size: 88px;
	--wb-gap: 12px;
	--wb-thumb-ratio: 1 / 1;
	--wb-main-ratio: 1 / 1;
	--wb-main-radius: 12px;
	--wb-thumb-radius: 12px;
	--wb-active-color: var(--brand, #a86f7d);
	--wb-active-width: 2px;
	--wb-inactive-opacity: 1;
	--wb-arrow-size: 32px;
	--wb-arrow-color: var(--text, #242126);
	--wb-arrow-bg: #fff;
	--wb-transition: 0.3s;

	display: grid;
	gap: var(--wb-gap);
	width: 100%;
	min-width: 0;
}

/* Layout: thumbnail position */

.wb-thumbnails[data-wb-pos="left"] {
	grid-template-columns: var(--wb-thumb-size) minmax(0, 1fr);
	grid-template-areas: "thumbs main";
}

.wb-thumbnails[data-wb-pos="right"] {
	grid-template-columns: minmax(0, 1fr) var(--wb-thumb-size);
	grid-template-areas: "main thumbs";
}

.wb-thumbnails[data-wb-pos="bottom"] {
	grid-template-columns: minmax(0, 1fr);
	grid-template-areas: "main" "thumbs";
}

.wb-thumbnails[data-wb-pos="top"] {
	grid-template-columns: minmax(0, 1fr);
	grid-template-areas: "thumbs" "main";
}

/* Main image */

.wb-thumbnails__main {
	grid-area: main;
	min-width: 0;
}

.wb-thumbnails__frame {
	position: relative;
	overflow: hidden;
	width: 100%;
	aspect-ratio: var(--wb-main-ratio);
	border-radius: var(--wb-main-radius);
}

.wb-thumbnails__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: opacity var(--wb-transition) ease;
}

.wb-thumbnails__image.is-fading {
	opacity: 0;
}

.wb-thumbnails__zoom {
	display: block;
	width: 100%;
	height: 100%;
	padding: 0;
	margin: 0;
	border: 0;
	background: none;
	color: inherit;
	cursor: zoom-in;
	-webkit-appearance: none;
	appearance: none;
}

.wb-thumbnails__zoom:focus-visible {
	outline: 2px solid var(--wb-active-color);
	outline-offset: -2px;
}

/* Thumbnails */

.wb-thumbnails__thumbs {
	grid-area: thumbs;
	position: relative;
	display: flex;
	gap: 8px;
	min-width: 0;
	min-height: 0;
}

.wb-thumbnails[data-wb-pos="left"] .wb-thumbnails__thumbs,
.wb-thumbnails[data-wb-pos="right"] .wb-thumbnails__thumbs {
	flex-direction: column;
	align-items: stretch;
}

.wb-thumbnails[data-wb-pos="bottom"] .wb-thumbnails__thumbs,
.wb-thumbnails[data-wb-pos="top"] .wb-thumbnails__thumbs {
	flex-direction: row;
	align-items: center;
}

.wb-thumbnails__track {
	display: flex;
	flex: 1 1 auto;
	gap: var(--wb-gap);
	min-width: 0;
	min-height: 0;
	padding: 0;
	margin: 0;
	overflow: auto;
	scroll-behavior: smooth;
	overscroll-behavior: contain;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.wb-thumbnails__track::-webkit-scrollbar {
	width: 0;
	height: 0;
	display: none;
}

.wb-thumbnails[data-wb-pos="left"] .wb-thumbnails__track,
.wb-thumbnails[data-wb-pos="right"] .wb-thumbnails__track {
	flex-direction: column;
	overflow-x: hidden;
}

.wb-thumbnails[data-wb-pos="bottom"] .wb-thumbnails__track,
.wb-thumbnails[data-wb-pos="top"] .wb-thumbnails__track {
	flex-direction: row;
	overflow-y: hidden;
}

.wb-thumbnails__thumb {
	flex: 0 0 auto;
	box-sizing: border-box;
	width: var(--wb-thumb-size);
	padding: 0;
	margin: 0;
	border: var(--wb-active-width) solid transparent;
	border-radius: var(--wb-thumb-radius);
	background: none;
	overflow: hidden;
	cursor: pointer;
	scroll-snap-align: start;
	aspect-ratio: var(--wb-thumb-ratio);
	opacity: var(--wb-inactive-opacity);
	transition: border-color var(--wb-transition) ease, opacity var(--wb-transition) ease;
	-webkit-appearance: none;
	appearance: none;
}

.wb-thumbnails__thumb img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: max(0px, calc(var(--wb-thumb-radius) - var(--wb-active-width)));
}

.wb-thumbnails__thumb:hover,
.wb-thumbnails__thumb.is-active {
	opacity: 1;
}

.wb-thumbnails__thumb.is-active {
	border-color: var(--wb-active-color);
}

.wb-thumbnails__thumb:focus-visible {
	outline: 2px solid var(--wb-active-color);
	outline-offset: 2px;
}

/* Arrows */

.wb-thumbnails__nav {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: var(--wb-arrow-size);
	height: var(--wb-arrow-size);
	padding: 0;
	margin: 0;
	border: 0;
	border-radius: 999px;
	background: var(--wb-arrow-bg);
	color: var(--wb-arrow-color);
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12);
	cursor: pointer;
	transition: opacity 0.2s ease, transform 0.2s ease;
	-webkit-appearance: none;
	appearance: none;
}

.wb-thumbnails__nav[hidden] {
	display: none;
}

.wb-thumbnails__nav:disabled {
	opacity: 0.35;
	cursor: default;
}

.wb-thumbnails__nav:focus-visible {
	outline: 2px solid var(--wb-active-color);
	outline-offset: 2px;
}

.wb-thumbnails__nav svg {
	display: block;
	width: 50%;
	height: 50%;
	transition: transform var(--wb-transition) ease;
}

.wb-thumbnails__nav.is-prev svg {
	transform: rotate(180deg);
}

.wb-thumbnails[data-wb-orientation="vertical"] .wb-thumbnails__nav.is-next svg {
	transform: rotate(90deg);
}

.wb-thumbnails[data-wb-orientation="vertical"] .wb-thumbnails__nav.is-prev svg {
	transform: rotate(-90deg);
}

/* Mobile position: below the tablet breakpoint */

@media (max-width: 991px) {
	.wb-thumbnails.wb-mobile-bottom {
		grid-template-columns: minmax(0, 1fr);
		grid-template-areas: "main" "thumbs";
	}

	.wb-thumbnails.wb-mobile-top {
		grid-template-columns: minmax(0, 1fr);
		grid-template-areas: "thumbs" "main";
	}

	.wb-thumbnails.wb-mobile-left {
		grid-template-columns: var(--wb-thumb-size) minmax(0, 1fr);
		grid-template-areas: "thumbs main";
	}

	.wb-thumbnails.wb-mobile-right {
		grid-template-columns: minmax(0, 1fr) var(--wb-thumb-size);
		grid-template-areas: "main thumbs";
	}

	.wb-thumbnails.wb-mobile-bottom .wb-thumbnails__thumbs,
	.wb-thumbnails.wb-mobile-top .wb-thumbnails__thumbs {
		flex-direction: row;
		align-items: center;
	}

	.wb-thumbnails.wb-mobile-left .wb-thumbnails__thumbs,
	.wb-thumbnails.wb-mobile-right .wb-thumbnails__thumbs {
		flex-direction: column;
		align-items: stretch;
	}

	.wb-thumbnails.wb-mobile-bottom .wb-thumbnails__track,
	.wb-thumbnails.wb-mobile-top .wb-thumbnails__track {
		flex-direction: row;
		overflow-x: auto;
		overflow-y: hidden;
	}

	.wb-thumbnails.wb-mobile-left .wb-thumbnails__track,
	.wb-thumbnails.wb-mobile-right .wb-thumbnails__track {
		flex-direction: column;
		overflow-x: hidden;
		overflow-y: auto;
	}
}

/* Click-to-enlarge overlay */

.wb-lightbox {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 5vmin;
	background: rgba(0, 0, 0, 0.88);
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.25s ease, visibility 0.25s ease;
}

.wb-lightbox.is-open {
	opacity: 1;
	visibility: visible;
}

.wb-lightbox img {
	display: block;
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
	border-radius: 4px;
}

.wb-lightbox__close {
	position: absolute;
	top: 1.25rem;
	right: 1.25rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.14);
	color: #fff;
	cursor: pointer;
}

.wb-lightbox__close:hover {
	background: rgba(255, 255, 255, 0.24);
}

.wb-lightbox__close svg {
	display: block;
	width: 20px;
	height: 20px;
}

.wb-lightbox__close:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
	.wb-thumbnails__image,
	.wb-thumbnails__thumb,
	.wb-thumbnails__nav,
	.wb-lightbox {
		transition: none;
	}

	.wb-thumbnails__track {
		scroll-behavior: auto;
	}
}
