/* Native Basic Gallery and Image Carousel only. Document CSS wins over paint
 * defaults; layout resets beat Elementor's fixed-width inline gallery items. */
.elementor-widget-image-gallery .elementor-image-gallery .gallery {
	--sggw-gallery-default-image-max-width: calc((900px - var(--sggw-gallery-gap, var(--wp--preset--spacing--30, 16px))) / 2);
	display: grid;
	grid-template-columns: repeat(var(--sggw-gallery-columns, 3), minmax(0, 1fr));
	gap: var(--sggw-gallery-gap, var(--wp--preset--spacing--30, 16px));
	width: min(100%, calc(var(--sggw-gallery-columns, 3) * var(--sggw-gallery-image-max-width, var(--sggw-gallery-default-image-max-width)) + (var(--sggw-gallery-columns, 3) - 1) * var(--sggw-gallery-gap, var(--wp--preset--spacing--30, 16px))));
	margin: 0 auto;
}
.elementor-widget-image-gallery .gallery-columns-1 { --sggw-gallery-columns: 1; }
.elementor-widget-image-gallery .gallery-columns-2 { --sggw-gallery-columns: 2; }
.elementor-widget-image-gallery .gallery-columns-3 { --sggw-gallery-columns: 3; }
.elementor-widget-image-gallery .gallery-columns-4 { --sggw-gallery-columns: 4; }
.elementor-widget-image-gallery .gallery-columns-5 { --sggw-gallery-columns: 5; }
.elementor-widget-image-gallery .gallery-columns-6 { --sggw-gallery-columns: 6; }
.elementor-widget-image-gallery .gallery-columns-7 { --sggw-gallery-columns: 7; }
.elementor-widget-image-gallery .gallery-columns-8 { --sggw-gallery-columns: 8; }
.elementor-widget-image-gallery .gallery-columns-9 { --sggw-gallery-columns: 9; }
.elementor-widget-image-gallery .gallery-columns-10 { --sggw-gallery-columns: 10; }
@media (max-width: 599px) {
	.elementor-widget-image-gallery .elementor-image-gallery .gallery:where(:not(.gallery-columns-1)) { --sggw-gallery-columns: 2; }
}
.elementor-widget-image-gallery .elementor-image-gallery .gallery[class] .gallery-item {
	display: block;
	position: relative;
	align-self: start;
	width: auto;
	max-width: min(100%, var(--sggw-gallery-image-max-width, var(--sggw-gallery-default-image-max-width)));
	min-width: 0;
	margin: 0;
	padding: 0;
}
.elementor-widget-image-gallery .gallery-icon > a { display: block; }
.elementor-widget-image-gallery .gallery-icon > img,
.elementor-widget-image-gallery .gallery-icon > a > img {
	display: block;
	width: 100%;
	height: auto;
	margin: 0;
	border-radius: var(--sggw-gallery-radius, var(--wp--custom--radius--small, 4px));
}
.elementor-widget-image-gallery:where(.sggw-gallery-crop-yes) .gallery-icon { aspect-ratio: 1 / 1; }
.elementor-widget-image-gallery:where(.sggw-gallery-crop-yes) .gallery-icon > a { height: 100%; }
.elementor-widget-image-gallery:where(.sggw-gallery-crop-yes) .gallery-icon > img,
.elementor-widget-image-gallery:where(.sggw-gallery-crop-yes) .gallery-icon > a > img {
	height: 100%;
	object-fit: cover;
}
.elementor-widget-image-gallery .elementor-image-gallery .gallery-caption {
	box-sizing: border-box;
	font-family: var(--wp--preset--font-family--body);
	font-size: 13px;
	text-align: center;
	margin: 0;
	padding: 1em;
	color: var(--sggw-text);
}
.elementor-widget-image-gallery:where(.sggw-gallery-caption-overlay) .elementor-image-gallery .gallery-caption {
	position: absolute;
	inset-inline: 0;
	inset-block-end: var(--sggw-gallery-caption-gap, 0px);
	max-height: 100%;
	overflow: auto;
	scrollbar-width: thin;
	scrollbar-gutter: stable both-edges;
	z-index: 2;
	color: var(--sggw-gallery-caption-color, var(--sggw-color-sage-100, #fff));
	background: var(--sggw-gallery-caption-background, linear-gradient(0deg, rgb(0 0 0 / 40%) 0%, transparent 100%));
	text-shadow: 0 0 1.5px #000;
	border-radius: var(--sggw-gallery-radius, var(--wp--custom--radius--small, 4px));
	border-start-start-radius: 0;
	border-start-end-radius: 0;
}
.elementor-widget-image-gallery:where(.sggw-gallery-caption-overlay) .gallery-item:has(.gallery-caption)::before {
	content: "";
	position: absolute;
	inset-inline: 0;
	inset-block-end: var(--sggw-gallery-caption-gap, 0px);
	height: 3em;
	max-height: 100%;
	pointer-events: none;
	backdrop-filter: blur(3px);
	mask-image: linear-gradient(0deg, #000 20%, transparent 100%);
	border-radius: var(--sggw-gallery-radius, var(--wp--custom--radius--small, 4px));
	border-start-start-radius: 0;
	border-start-end-radius: 0;
}
.elementor-widget-image-gallery:where(.sggw-gallery-caption-below) .elementor-image-gallery .gallery-caption {
	background: none;
	text-shadow: none;
}
.elementor-widget-image-gallery:where(.sggw-gallery-caption-below) .elementor-image-gallery .gallery-item .gallery-caption {
	margin-block-start: var(--sggw-gallery-caption-gap, 0px);
}
.elementor-widget-image-gallery .gallery-caption a { color: inherit; }

.elementor .elementor-widget-image-carousel .elementor-image-carousel-wrapper .elementor-swiper-button { color: var(--sggw-text); }
.elementor .elementor-widget-image-carousel .elementor-image-carousel-wrapper .elementor-swiper-button svg { fill: currentColor; }
.elementor .elementor-widget-image-carousel .elementor-image-carousel-wrapper .swiper-pagination-bullet {
	box-sizing: border-box;
	background: var(--sggw-carousel-dot-inactive, var(--sggw-line-functional));
	opacity: 1;
}
.elementor .elementor-widget-image-carousel .elementor-image-carousel-wrapper .swiper-pagination-bullet:where(.swiper-pagination-bullet-active) { background: var(--sggw-carousel-dot-active, var(--sggw-text)); }
.elementor-widget-image-carousel .elementor-swiper-button:focus-visible,
.elementor-widget-image-carousel .swiper-pagination-bullet:focus-visible,
.elementor-widget-image-gallery .gallery-icon > a:focus-visible {
	outline: var(--wp--custom--line--focus-ring-width, 3px) solid var(--sggw-line-focus);
	outline-offset: var(--wp--custom--line--focus-ring-offset, 3px);
}
:where(html.sggw-a11y-high-contrast) .elementor-widget-image-gallery {
	--sggw-gallery-caption-color: var(--sggw-text);
	--sggw-gallery-caption-background: var(--sggw-surface-current);
}
:where(html.sggw-a11y-high-contrast) .elementor .elementor-widget-image-carousel .elementor-image-carousel-wrapper .swiper-pagination-bullet {
	border: 1px solid var(--sggw-text);
}
:where(html.sggw-a11y-high-contrast) .elementor .elementor-widget-image-carousel .elementor-image-carousel-wrapper .swiper-pagination-bullet:where(:not(.swiper-pagination-bullet-active)) { background: var(--sggw-carousel-dot-inactive, transparent); }

@media (forced-colors: active) {
	.elementor-widget-image-gallery .gallery-caption {
		background: Canvas !important;
		color: CanvasText !important;
		text-shadow: none !important;
	}
	.elementor-widget-image-gallery .gallery-item::before { content: none; }
	.elementor .elementor-widget-image-carousel .elementor-image-carousel-wrapper .elementor-swiper-button { color: ButtonText !important; }
	.elementor .elementor-widget-image-carousel .elementor-image-carousel-wrapper .elementor-swiper-button svg { fill: currentColor !important; }
	.elementor .elementor-widget-image-carousel .elementor-image-carousel-wrapper .swiper-pagination-bullet {
		forced-color-adjust: none;
		background: ButtonText !important;
		border: 1px solid ButtonText;
		opacity: 1;
	}
	.elementor .elementor-widget-image-carousel .elementor-image-carousel-wrapper .swiper-pagination-bullet:where(:not(.swiper-pagination-bullet-active)) { background: Canvas !important; }
	.elementor-widget-image-carousel .elementor-swiper-button:focus-visible,
	.elementor-widget-image-carousel .swiper-pagination-bullet:focus-visible,
	.elementor-widget-image-gallery .gallery-icon > a:focus-visible { outline-color: Highlight; }
}
