/**
 * Isolated layout and Elementor controls for portfolio card carousels.
 *
 * These rules deliberately load after portfolio-media.css. They neutralize
 * global button styles from themes and Elementor so arrows and pagination stay
 * absolutely positioned inside the card and never affect the portfolio grid.
 */

.lym-card-media-controls {
	--lym-card-media-transition-duration: 420ms;
	--lym-card-media-arrow-size: 38px;
	--lym-card-media-arrow-icon-size: 20px;
	--lym-card-media-arrow-offset: 10px;
	--lym-card-media-arrow-border-width: 0px;
	--lym-card-media-pagination-bottom: 12px;
	--lym-card-media-pagination-gap: 7px;
	--lym-card-media-dot-size: 9px;
	--lym-card-media-active-dot-width: 23px;
	--lym-card-media-dot-border-width: 1px;
}

/* Preserve the original front-face geometry. The controls are overlays and the
 * face must remain absolutely positioned inside the card. */
.lym-portfolio.lym-card-media-controls .lym-portfolio__front {
	position: absolute !important;
	inset: 0 !important;
	display: flex;
	width: 100% !important;
	height: 100% !important;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: 0;
	overflow: hidden;
	contain: layout paint;
	isolation: isolate;
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media {
	position: absolute !important;
	inset: 0 !important;
	display: block;
	width: 100% !important;
	height: 100% !important;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: 0;
	overflow: hidden;
	contain: strict;
	isolation: isolate;
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__track,
.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__slide {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: 0;
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__slide {
	transition-duration: var(--lym-card-media-transition-duration);
}

/*
 * Elementor and some themes apply height:auto and max-width:100% to images.
 * That rule prevents object-fit:cover from using the complete card height.
 * Keep every front-face image as an absolute 100% layer while leaving the
 * popup and fullscreen viewer untouched.
 */
.lym-portfolio.lym-card-media-controls .lym-portfolio__front .lym-portfolio__image {
	position: absolute !important;
	inset: 0 !important;
	display: block !important;
	width: 100% !important;
	min-width: 100% !important;
	max-width: none !important;
	height: 100% !important;
	min-height: 100% !important;
	max-height: none !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	vertical-align: top;
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__controls {
	position: absolute !important;
	inset: 50% 0 auto !important;
	z-index: 8;
	display: flex;
	width: 100% !important;
	height: 0 !important;
	min-width: 0;
	min-height: 0;
	margin: 0 !important;
	padding: 0 !important;
	align-items: center;
	justify-content: space-between;
	pointer-events: none;
	transform: translateY(-50%);
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__arrow {
	-webkit-appearance: none !important;
	appearance: none !important;
	position: absolute !important;
	top: 50% !important;
	display: inline-grid !important;
	flex: 0 0 auto !important;
	width: var(--lym-card-media-arrow-size) !important;
	min-width: 0 !important;
	max-width: none !important;
	height: var(--lym-card-media-arrow-size) !important;
	min-height: 0 !important;
	max-height: none !important;
	margin: 0 !important;
	padding: 0 !important;
	place-items: center;
	border-style: solid !important;
	border-width: var(--lym-card-media-arrow-border-width) !important;
	font-size: 0 !important;
	line-height: 0 !important;
	text-decoration: none !important;
	pointer-events: auto;
	transform: translateY(-50%);
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__arrow.is-previous {
	left: var(--lym-card-media-arrow-offset) !important;
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__arrow.is-next {
	right: var(--lym-card-media-arrow-offset) !important;
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__arrow:hover,
.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__arrow:focus-visible {
	transform: translateY(-50%) scale(1.06);
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__arrow svg {
	display: block;
	width: var(--lym-card-media-arrow-icon-size);
	height: var(--lym-card-media-arrow-icon-size);
	margin: 0;
	pointer-events: none;
}

.lym-portfolio.lym-card-media-arrows-hidden .lym-portfolio-card-media__controls,
.lym-portfolio.lym-card-media-arrows-hidden .lym-portfolio-card-media__arrow,
.lym-portfolio[data-lym-card-media-arrows="hidden"] .lym-portfolio-card-media__controls,
.lym-portfolio[data-lym-card-media-arrows="hidden"] .lym-portfolio-card-media__arrow {
	display: none !important;
}

.lym-portfolio.lym-card-media-arrows-always .lym-portfolio-card-media__arrow,
.lym-portfolio[data-lym-card-media-arrows="always"] .lym-portfolio-card-media__arrow {
	display: inline-grid !important;
	opacity: 1 !important;
	visibility: visible !important;
}

.lym-portfolio.lym-card-media-arrows-hover .lym-portfolio-card-media__arrow,
.lym-portfolio[data-lym-card-media-arrows="hover"] .lym-portfolio-card-media__arrow {
	opacity: 0 !important;
	visibility: hidden !important;
}

.lym-portfolio.lym-card-media-arrows-hover .lym-portfolio__item:hover .lym-portfolio-card-media__arrow,
.lym-portfolio.lym-card-media-arrows-hover .lym-portfolio__item:focus-within .lym-portfolio-card-media__arrow,
.lym-portfolio.lym-card-media-arrows-hover .lym-portfolio__item.is-media-autoplay-stopped .lym-portfolio-card-media__arrow,
.lym-portfolio[data-lym-card-media-arrows="hover"] .lym-portfolio__item:hover .lym-portfolio-card-media__arrow,
.lym-portfolio[data-lym-card-media-arrows="hover"] .lym-portfolio__item:focus-within .lym-portfolio-card-media__arrow,
.lym-portfolio[data-lym-card-media-arrows="hover"] .lym-portfolio__item.is-media-autoplay-stopped .lym-portfolio-card-media__arrow {
	opacity: 1 !important;
	visibility: visible !important;
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__pagination {
	position: absolute !important;
	left: 50% !important;
	bottom: var(--lym-card-media-pagination-bottom) !important;
	z-index: 9;
	display: flex !important;
	box-sizing: border-box !important;
	width: max-content !important;
	min-width: 0 !important;
	max-width: calc(100% - 24px) !important;
	height: auto !important;
	min-height: 0 !important;
	max-height: none !important;
	margin: 0 !important;
	align-items: center;
	justify-content: center;
	gap: var(--lym-card-media-pagination-gap) !important;
	font-size: 0 !important;
	line-height: 0 !important;
	white-space: nowrap;
	pointer-events: none;
	transform: translateX(-50%) !important;
	transition: opacity 180ms ease, visibility 180ms ease, background-color 180ms ease;
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__dot {
	-webkit-appearance: none !important;
	appearance: none !important;
	position: relative;
	display: block !important;
	box-sizing: border-box !important;
	flex: 0 0 auto !important;
	width: var(--lym-card-media-dot-size) !important;
	min-width: 0 !important;
	max-width: none !important;
	height: var(--lym-card-media-dot-size) !important;
	min-height: 0 !important;
	max-height: none !important;
	margin: 0 !important;
	padding: 0 !important;
	overflow: hidden;
	border-style: solid !important;
	border-width: var(--lym-card-media-dot-border-width) !important;
	border-radius: 999px;
	font-size: 0 !important;
	line-height: 0 !important;
	text-indent: -9999px;
	letter-spacing: 0 !important;
	vertical-align: middle;
	pointer-events: auto;
	transform: none !important;
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__dot::before,
.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__dot::after {
	display: none !important;
	content: none !important;
}

.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__dot[aria-current="true"] {
	width: var(--lym-card-media-active-dot-width) !important;
	min-width: 0 !important;
}

.lym-portfolio.lym-card-media-pagination-hidden .lym-portfolio-card-media__pagination,
.lym-portfolio[data-lym-card-media-pagination="hidden"] .lym-portfolio-card-media__pagination {
	display: none !important;
}

.lym-portfolio.lym-card-media-pagination-always .lym-portfolio-card-media__pagination,
.lym-portfolio[data-lym-card-media-pagination="always"] .lym-portfolio-card-media__pagination {
	display: flex !important;
	opacity: 1 !important;
	visibility: visible !important;
}

.lym-portfolio.lym-card-media-pagination-hover .lym-portfolio-card-media__pagination,
.lym-portfolio[data-lym-card-media-pagination="hover"] .lym-portfolio-card-media__pagination {
	opacity: 0 !important;
	visibility: hidden !important;
}

.lym-portfolio.lym-card-media-pagination-hover .lym-portfolio__item:hover .lym-portfolio-card-media__pagination,
.lym-portfolio.lym-card-media-pagination-hover .lym-portfolio__item:focus-within .lym-portfolio-card-media__pagination,
.lym-portfolio.lym-card-media-pagination-hover .lym-portfolio__item.is-media-autoplay-stopped .lym-portfolio-card-media__pagination,
.lym-portfolio[data-lym-card-media-pagination="hover"] .lym-portfolio__item:hover .lym-portfolio-card-media__pagination,
.lym-portfolio[data-lym-card-media-pagination="hover"] .lym-portfolio__item:focus-within .lym-portfolio-card-media__pagination,
.lym-portfolio[data-lym-card-media-pagination="hover"] .lym-portfolio__item.is-media-autoplay-stopped .lym-portfolio-card-media__pagination {
	opacity: 1 !important;
	visibility: visible !important;
}

@media (hover: none), (pointer: coarse) {
	.lym-portfolio.lym-card-media-arrows-hover .lym-portfolio-card-media__arrow,
	.lym-portfolio[data-lym-card-media-arrows="hover"] .lym-portfolio-card-media__arrow,
	.lym-portfolio.lym-card-media-pagination-hover .lym-portfolio-card-media__pagination,
	.lym-portfolio[data-lym-card-media-pagination="hover"] .lym-portfolio-card-media__pagination {
		opacity: 1 !important;
		visibility: visible !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__slide,
	.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__arrow,
	.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__pagination,
	.lym-portfolio.lym-card-media-controls .lym-portfolio-card-media__dot {
		transition-duration: 0.001ms !important;
	}
}
