/*
	Elementor-specific rules and overrides.
*/
@import '../mixins.less';

.elementor-container {
	form.elementor-form {
		input[type], select {
			margin-bottom: 0;
		}

		.elementor-field-group .elementor-field-label {
			padding-left: 20px;
			padding-right: 20px;
		}

		.elementor-field-textual {
			&.elementor-size-xl {
				padding: 6px 20px;
			}

			&.elementor-size-lg {
				padding: 6px 20px;
			}

			&.elementor-size-md {
				padding: 6px 20px;
			}

			&.elementor-size-sm {
				padding: 5px 20px;
			}

			&.elementor-size-xs {
				padding: 3px 20px;
			}
		}

		textarea.elementor-field.elementor-field-textual {
			padding-top: 13px;
			padding-bottom: 13px;
		}

		.elementor-field-option {
			input[type="radio"] {
				vertical-align: middle;
			}
			label {
				padding-left: 10px;
			}
		}
	}
}

// WC products override.
.cross-sells,
.elementor-wc-products {
	.products.vamtam-wc .product {
		.woocommerce-product-details__short-description,
		.woocommerce-loop-product__title {
			margin: 0;
		}
	}
}

.elementor-element.elementor-products-grid ul.products li.product {
	width: auto !important;
	margin: 0 !important;
	float: none !important;
}

// Elementor post meta widget vertical alignment fix (inline).
.elementor-inline-items.elementor-icon-list-items.elementor-post-info > li.elementor-inline-item {
	align-items: center;
}

.elementor-pagination {
	margin-top: 50px;
	border-top: 3px solid var(--vamtam-accent-color-7);
	padding-top: 30px;
}

.woocommerce div.product.elementor .elementor-product-booking form.cart:not(.grouped_form):not(.variations_form) {
	flex-flow: column;
}

.elementor-price-list-price {
	font-weight: 600;
}

.elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item {
	padding-bottom: 10px;
}

.elementor-select-wrapper {
	&:before {
		z-index: 1;
		color: currentColor;
	}

	&.woocommerce-input-wrapper:before {
		inset-inline-end: 30px;
	}
}

body[class*="elementor-"] {
	.select2.select2-container .select2-selection[role="combobox"] {
		line-height: normal;
		// Bijoux-after.
		display: flex;
		align-items: center;
		padding: 0px 20px;

		.select2-selection__arrow {
			display: none;
		}

		.select2-selection__rendered {
			line-height: inherit;
			padding: 0px;
		}
	}

	:not([class*="elementor-select-wrapper"]) > .select2.select2-container .select2-selection[role="combobox"] {
		&:before {
			content: "\e92a";
			font-family: eicons;
			font-size: 15px;
			position: absolute;
			top: 50%;
			transform: translateY(-50%);
			right: 30px;
			pointer-events: none;
		}
	}
}

// Theme Icons.
[class^="vamtam-theme-"], [class*=" vamtam-theme-"] {
	/* use !important to prevent issues with browser extensions that change fonts */
	font-family: "theme-icons" !important;
	speak: none;
	font-style: normal;
	font-weight: normal;
	font-variant: normal;
	text-transform: none;
	line-height: 1;

	/* Better Font Rendering =========== */
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

// Elementor Lightbox.
.dialog-lightbox-widget.dialog-type-buttons.elementor-lightbox {
	// Fix for slideshow controls.
	:is(.swiper-container, .swiper) * {
		box-sizing: border-box;
	}
}

#elementor-lightbox.dialog-type-lightbox {
	z-index: 99999;
}

@keyframes vamtam-grow-left {
    from { clip-path: inset(0 100% 0 0); }
  	to { clip-path: inset(0); }
}
@keyframes vamtam-grow-right {
    from { clip-path: inset(0 0 0 100%); }
  	to { clip-path: inset(0); }
}
@keyframes vamtam-grow-top {
    from { clip-path: inset(100% 0 0 0); }
  	to { clip-path: inset(0); }
}
@keyframes vamtam-grow-bottom {
    from { clip-path: inset(0 0 100% 0); }
  	to { clip-path: inset(0); }
}

.growFromLeft {
	&:not(.elementor-widget-image ) {
		animation-name: vamtam-grow-left;
		will-change: clip-path;
	}
}

.growFromRight {
	&:not(.elementor-widget-image ) {
		animation-name: vamtam-grow-right;
		will-change: clip-path;
	}
}

.growFromLeftScroll {
	@val: calc(100% - var(--vamtam-scroll-ratio));
	&:not(.elementor-widget-image) {
		clip-path:inset(0 @val 0 0);
		transition: clip-path .1s linear;
		will-change: clip-path;
	}
}
.growFromRightScroll {
	@val: calc(100% - var(--vamtam-scroll-ratio));
	&:not(.elementor-widget-image) {
		clip-path:inset(0 0 0 @val);
		transition: clip-path .1s linear;
		will-change: clip-path;
	}
}

.growFromLeftScroll,
.growFromRightScroll {
	&.animated-fast {
		transition-duration: .1s;
	}
	&.animated-slow {
		transition-duration: .1s;
	}
}

@keyframes vamtam-scale-out {
    from { transform: scale(1.4); }
  	to { transform: scale(1);}
}

.vamtam-popup-toggle {
	&, &-clone {
		i, svg {
			transition: all .3s ease;
		}
	}
	&-clone {
		z-index: 99999;
		position: fixed;
		&, * {
			background: transparent !important;
			padding: 0 !important;
			margin: 0 !important;
		}
		a {
			pointer-events: none !important;
		}
		&, li {
			list-style: none;
		}
		opacity: 0;
		pointer-events: none;
		&.is-active {
			opacity: 1;
			&.is-clickable {
				pointer-events: all;
			}
			i {
				transition: all .3s ease !important;
			}
			&:hover i {
				color: var(--vamtam-accent-color-1) !important;
			}
		}
		// Use vamtam close Icon.
		&.vamtam-popup-close-icon {
			i {
				&::before {
					font-family: 'vamtam-theme' !important;
					content: icon('vamtam-theme-close-sample') !important;
				}
			}
		}
		&.vamtam-popup-close-dark {
			i, svg {
				color: var(--vamtam-accent-color-6) !important;
				fill: var(--vamtam-accent-color-6) !important;
				stroke: var(--vamtam-accent-color-6) !important;
			}
			&.is-active {
				&:hover {
					i, svg {
						color: var(--vamtam-accent-color-6) !important;
						fill: var(--vamtam-accent-color-6) !important;
						stroke: var(--vamtam-accent-color-6) !important;
					}
				}
			}
		}
		&.hidden {
			z-index: -99999;
			pointer-events: none;
			transition: none !important;
			opacity: 0 !important;
		}
	}
}
// Bijoux-only.
.vamtam-popup-toggle {
	@keyframes vamtam-fade-out {
		0% {
			opacity: 1;
		}
		100% {
			opacity: 0;
		}
	}
	@keyframes vamtam-fade-in {
		0% {
			opacity: 0;
		}
		100% {
			opacity: 1;
		}
	}
	// Clone
	&.vamtam-popup-toggle-clone {
		// Active state
		&.is-active {
			opacity: 1;
			animation: vamtam-fade-in 1s forwards linear !important;
		}
		// Closed state
		&:not(.is-active) {
			opacity: 1;
			animation: vamtam-fade-out .3s forwards linear !important;
		}
	}
}

.elementor-field-textual {
	border-radius: 0;
	&.elementor-size-lg {
		min-height: 60px
}
}

.elementor-field-group .elementor-field-textual:focus {
	box-shadow: none;
}

.elementor-field-group .elementor-select-wrapper::before {
	right: 18px;
	text-shadow: none;
}

// Bijoux-after.
.elementor-lightbox .elementor-lightbox-image,
.elementor-lightbox .elementor-video-container {
	box-shadow: none;
	border-radius: 0;
}

// Bijoux-after.
.rotate-270 {
	transform: rotate(270deg);
}

// Fitness-only.
.flatpickr-calendar {
	.flatpickr-month {
		padding-bottom: 20px;
		.flatpickr-current-month {
			display: flex;
			justify-content: center;
			align-items: center;
			flex-wrap: nowrap;
			.numInput.cur-year {
				background: transparent;
				box-sizing: border-box;
				color: inherit;
				cursor: default;
				padding: 0 0 0 .5ch;
				margin: 0;
				display: inline-block;
				font-size: inherit;
				font-family: inherit;
				font-weight: 300;
				line-height: inherit;
				height: initial;
				border: 0;
				border-radius: 0;
				vertical-align: initial;
			}
		}
	}
	.flatpickr-day {
		color: var(--vamtam-accent-color-3);
		&:hover, &:focus {
			border-color: var(--vamtam-accent-color-1);
			background: var(--vamtam-accent-color-1);
		}
		&.today {
			border-color: var(--vamtam-accent-color-3);
		}
		&.selected {
			border-color: var(--vamtam-accent-color-1);
			background: var(--vamtam-accent-color-1);
			color: var(--vamtam-accent-color-3);
		}
	}
}

// Fix for "Upgrade Swiper Library" experiment.
.swiper-container {
    margin-left: auto;
    margin-right: auto;
    position: relative;
    overflow: hidden;
    z-index: 1;
}
.elementor-swiper-button {
	cursor: pointer;
	position: absolute;
	display: inline-flex;
	z-index: 1;
	top: 50%;
	transform: translateY(-50%);

	&-prev {
		left: 10px;
	}
	&-next {
		right: 10px;
	}
}

// Fix for blink-based browsers so the scrollbar is not included in the calculation (like in max-width:100%).
body.e--ua-blink .elementor-popup-modal .dialog-widget-content {
	max-width: 100vw;
}

// ---------------- Custom Widget Styles -------------- //

.elementor-blockquote footer {
	align-items: center;
}

.elementor-blockquote__tweet-button {
	align-self: center;
}

// Button
.elementor-widget-button {
	&.vamtam-el-btn-flex[data-widget_type="button.default"] {
		&, .elementor-widget-container, .elementor-button-wrapper, .elementor-button {
			height: 100%;
		}
		.elementor-button {
			display: flex;
			justify-content: center;
			align-items: center;
		}
		&.elementor-align-left {
			.elementor-button {
				justify-content: flex-start;
			}
		}
		&.elementor-align-center {
			.elementor-button {
				justify-content: center;
			}
		}
		&.elementor-align-right {
			.elementor-button {
				justify-content: flex-end;
			}
		}
	}

	.elementor-button:hover {
		cursor: pointer;
	}

	// Estudiar-adjusted.
	&.vamtam-has-underline-anim {
		a.elementor-button-link {
			&, * {
				text-decoration-line: none !important;
			}
		}
		.elementor-button-wrapper {
			// This is for ensuring that the 2ond line is always shown.
			// f.e. when button is at then end of a column/section.
			padding-bottom: 8px;
		}
		.elementor-button {
			position: relative;
			&::after, &::before {
				content: "";
				z-index: 1;
				display: block;
				position: absolute;
				left: 0;
				right: 0;
				height: 1px;
				background-size: 201% 100%;
				background-position: right center;
				transition: all 1s ease;
			}
			&::before {
				background-image: linear-gradient(to right, var(--vamtam-underline-bg-color ,var(--vamtam-accent-color-1)) 50%, var(--vamtam-underline-bg-color, var(--vamtam-accent-color-1)) 50%);
				bottom: 0px;
			}
			&::after {
				background-image: linear-gradient(to right, var(--vamtam-underline-bg-hover-color ,var(--vamtam-accent-color-1)) 50%, transparent 50%);
				bottom: -8px;
			}
			&:hover {
				&::after {
					background-position: left center;
				}
			}
		}
	}

	// Fitness-only.
	&.vamtam-has-theme-style {
		.elementor-button-text {
			.theme-btn-hover-underline();
		}
	}
}

// Gallery
.elementor-widget-gallery {
	// Safari-only fix for elementor gallery items.
	.elementor-gallery-item {
		// Add on element with overflow
		-webkit-mask-image: -webkit-radial-gradient(white, black);
	}
}

// Icon-Box
.elementor-widget-icon-box {
	&.elementor-shape-vamtam-amorph .elementor-icon {
		// Base64 version of vamtam-amorph-shape.
		mask: data-uri('image/svg+xml;base64', '../../../assets/images/vamtam-amorph-shape.svg');
	}

	// Maintain flex for all devices for icon box widget (icon left/right).
	&.vamtam-el-widget-icon-box-flex {
		&.elementor-position-left,
		&.elementor-position-right {
			.elementor-icon-box-wrapper {
				display: flex;
				align-items: center;
				.elementor-icon-box-icon {
					display: inline-flex;
					flex: 0 0 auto;
				}
			}
		}

		&.elementor-position-left {
			.elementor-icon-box-icon {
				margin-right: 10px !important;
			}
		}

		&.elementor-position-right {
			.elementor-icon-box-wrapper {
				flex-direction: row-reverse;
			}
			.elementor-icon-box-icon {
				margin-left: 10px !important;
			}
		}
	}

	// Whole box is link.
	&.vamtam-has-box-is-link {
		a.elementor-icon-box-wrapper {
			display: block;

			.elementor-icon-box-description,
			.elementor-icon-box-title {
				transition: all .3s;
			}
		}
	}
}

// Icon-List
.elementor-widget-icon-list {
	.elementor-icon-list-item {
		.elementor-icon-list-icon i,
		.elementor-icon-list-text {
			transition: all .3s ease;
		}
	}
}

// Image-Box
.elementor-widget-image-box {
	&.vamtam-has-bg-mask .elementor-widget-container {
		// Base64 version of vamtam-imageBox-bg.
		mask: data-uri('image/svg+xml;base64','../../../assets/images/vamtam-imageBox-bg.svg');
		mask-repeat: no-repeat;
		mask-size: cover;
	}
	&.vamtam-has-image-mask .elementor-image-box-img img {
		// Base64 version of vamtam-imageBox-img.svg.
		mask: data-uri('image/svg+xml;base64','../../../assets/images/vamtam-imageBox-img.svg');
		mask-repeat: no-repeat;
		mask-size: cover;
	}
	&.vamtam-has-eye {
		&.vamtam-has-bg-mask .elementor-widget-container {
			.vamtam-eye {
				position: absolute;
				left: 0;
			}
		}
		.vamtam-eye {
			position: relative;
			bottom: 12px;
			width: 100%;

			&, .outer, .inner {
				display: flex;
				justify-content: center;
				align-items: center;
			}
			.outer, .inner {
				// Base64 version of vamtam-imageBox-eye.svg.
				mask: data-uri('image/svg+xml;base64','../../../assets/images/vamtam-imageBox-eye.svg');
				mask-repeat: no-repeat;
				mask-size: cover;
			}
			.outer {
				height: 50px;
				width: 50px;
			}
			.inner {
				height: 26px;
				width: 26px;
			}
			.eye {
				position: relative;
				width: 100%;
				height: 100%;
				&, &:after {
					border-radius: 50%;
				}
				&:after {
					content: ' ';
					position: absolute;
					height: 8px;
					width: 8px;
					top: 5px;
				}
			}
		}
	}
	.elementor-image-box-content {
		padding-left: 20px;
		padding-right: 20px;
	}

	// Whole box is link.
	&.vamtam-has-box-is-link {
		a.elementor-image-box-wrapper {
			display: block;

			.elementor-image-box-description,
			.elementor-image-box-title {
				transition: all .3s;
			}
		}
	}
}

// Image.
.elementor-widget-image {
	&[data-settings*="imageGrowWithScale"],
	.elementor-editor-active &[class*="imageGrowWithScale"] {
		.vamtam-image-wrapper {
			display: inline-block;
			width: 100%;
			img {
				width: 100% !important;
			}
		}
	}
	&.imageGrowWithScaleLeft .vamtam-image-wrapper {
		will-change: clip-path;
		animation-name: vamtam-grow-left;
		animation-timing-function: cubic-bezier(0.4, 0, 0, 0.9);
	}
	&.imageGrowWithScaleRight .vamtam-image-wrapper {
		will-change: clip-path;
		animation-name: vamtam-grow-right;
		animation-timing-function: cubic-bezier(0.4, 0, 0, 0.9);
	}
	&.imageGrowWithScaleTop .vamtam-image-wrapper {
		will-change: clip-path;
		animation-name: vamtam-grow-top;
		animation-timing-function: cubic-bezier(0.4, 0, 0, 0.9);
	}
	&.imageGrowWithScaleBottom .vamtam-image-wrapper {
		will-change: clip-path;
		animation-name: vamtam-grow-bottom;
		animation-timing-function: cubic-bezier(0.4, 0, 0, 0.9);
	}
	img.imageGrowWithScaleLeft,
	img.imageGrowWithScaleRight,
	img.imageGrowWithScaleTop,
	img.imageGrowWithScaleBottom {
		animation-name: vamtam-scale-out;
		animation-timing-function: cubic-bezier(0.4, 0, 0, 0.9);
	}

	&.growFromLeftScroll,
	&.growFromRightScroll {
		&.animated-fast .elementor-image img {
			transition-duration: .1s;
		}
		&.animated-slow .elementor-image img {
			transition-duration: .1s;
		}
	}

	&.growFromLeftScroll {
		@val: calc(100% - var(--vamtam-scroll-ratio));
		.elementor-image img {
			clip-path:inset(0 @val 0 0);
			transition: clip-path .1s ease;
			will-change: clip-path;
		}
	}
	&.growFromRightScroll {
		@val: calc(100% - var(--vamtam-scroll-ratio));
		.elementor-image img {
			clip-path:inset(0 0 0 @val);
			transition: clip-path .1s ease;
			will-change: clip-path;
		}
	}
}

// Nav menu
.elementor-widget-nav-menu {

	html.ios-safari & li {
		outline: 0 !important;
	}

	ul.elementor-nav-menu {
		flex-basis: 100%;
		z-index: 99;
		margin: 0;

		li {
			z-index: 99;
		}
	}

	.elementor-nav-menu ul ul a,
	.elementor-nav-menu--dropdown a	{
		&,
		&:active,
		&:focus,
		&:hover {
			border-left: 0 solid transparent;
		}
	}

	.elementor-nav-menu--dropdown .elementor-item-active {
		font-weight: 600;
	}

	.elementor-nav-menu--main {
		.current-menu-ancestor {
			> a.elementor-item:after {
				width: 100% !important;
				opacity: 1 !important;
				left: 0% !important;
			}
		}

		.elementor-item.elementor-item-active,
		.current-menu-ancestor > a {
			font-weight: 700;
		}

		> .elementor-nav-menu > .current-menu-ancestor .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted) {
			&:before, &:after {
				opacity: 1;
			}
		}

		&:not(.e--pointer-text):not(.e--pointer-none):not(.e--pointer-background) {
			> .elementor-nav-menu > .current-menu-ancestor .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted) {
				&:before, &:after {
					left: auto;
				}
			}
		}

		// Line through pointer.
		&.e--pointer-line-through {
			.elementor-item:after {
				top: 0;
				bottom: 0;
				margin: auto 0;
				z-index: -1;
			}

			.elementor-item.elementor-item-active:after,
			.current-menu-ancestor .elementor-item:after {
				width: 100% !important;
			}

			// Horizontal-grow animation.
			&.e--animation-horizontal-grow .elementor-item {
				&:after {
					opacity: 1 !important;
					transition: background-color .4s ease, width .3s ease-in;
					width: 0;
				}
				&:hover:not(.elementor-item-active):after {
					width: 100% !important;
				}
			}
		}

		// Prefix pointer.
		&.e--pointer-prefix {
			// Theme-dependant values.
			@prefix-width: 10px;
			@prefix-active-width: 25px;
			@prefix-height: 1px;

			.elementor-item:after {
				bottom: unset;
				z-index: -1;
				transform: translateX( calc( -100% - 10px ) );
				height: @prefix-height;
				width: @prefix-width !important;
			}

			.elementor-item.elementor-item-active:after,
			.current-menu-ancestor .elementor-item:after {
				width: @prefix-active-width !important;
			}

			// Prefix-grow animation.
			&.e--animation-prefix-grow .elementor-item {
				&:after {
					opacity: 1 !important;
					transition: background-color .4s ease, width .4s ease;
				}
				&:hover:not(.elementor-item-active):after {
					width: @prefix-active-width !important;
				}
			}
		}

		// Underline-Theme pointer.
		&.e--pointer-underline.e--pointer-underline-theme {
			.elementor-item:after {
				// Fitness-only.
				transform: skewX(-45deg);
				left: -2px !important;
			}
		}

		// Fitness-only.
		.elementor-nav-menu ul {
			padding: 20px 0px;
		}
	}
	// Nav menu dropdown item override.
	ul.elementor-nav-menu--dropdown a,
	ul.elementor-nav-menu--dropdown a:focus,
	ul.elementor-nav-menu--dropdown a:hover {
		border-left-width: 0;
	}

	// Pointer bounce anim.
	.e--animation-bounce {
		@keyframes nav-menu--pointer-bounce {
			0%{
			  opacity: 0;
			  transform: scale(0) translateY(200%);
			}
			30%{
				opacity: 0.5;
				transform: scale(0.89) translateY(-35%);
			}
			50%{
			  opacity: 0.9;
			  transform: scale(1) translateY(-35%);
			}
			70%{
				opacity: 0.9;
				transform: scale(1.2) translateY(35%);
			}
			80%{
			  opacity: 1;
			  transform: scale(0.89) translateY(0);
			}
			90%{
				opacity: 1;
				transform: scale(0.89) translateY(0);
			}
			100%{
			  opacity: 1;
			  transform: scale(1) translateY(0);
			}
		}

		.elementor-item:not(.elementor-item-active):hover:before,
		.elementor-item:not(.elementor-item-active):focus:before,
		.elementor-item:not(.elementor-item-active).highlighted:before {
			animation-name: nav-menu--pointer-bounce;
			animation-fill-mode: forwards;
			animation-duration: .5s;
		}
	}

	&.vamtam-has-custom-divider {
		.elementor-nav-menu--dropdown li {
			display: flex;
			justify-content: center;
			align-items: center;

			&:not(:last-child) {
				border-bottom: none;
				&:after {
					content: "";
					position: absolute;
					bottom: 0;
					width: 100%;
					height: 1px;
					z-index: 10;
					background-color: var(--vamtam-accent-color-1);
				}
			}
		}
	}

	// Bijoux-after.
	.elementor-menu-toggle {
		i.eicon-menu-bar::before {
			content: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="38" height="26" viewBox="0 0 38 26"><path d="M33,11 L29.702,16 L0,16 L3.298,11 L33,11 Z M38,0 L34.702,5 L5,5 L8.298,0 L38,0 Z" transform="translate(0 5)"/></svg>') !important;
		}

		&.elementor-active {
			:is(i.eicon-menu-bar, .elementor-menu-toggle__icon--close) {
				&::before {
					content: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="38" height="26" viewBox="0 0 38 26"><polygon points="6.535 0 12.935 6.756 19.335 0 25.87 0 16.203 10.206 25.87 20.411 19.335 20.411 12.935 13.655 6.535 20.411 .001 20.411 9.668 10.206 0 0 6.536 0" transform="translate(6 3)"/></svg>') !important;
				}
			}
		}
	}

	&:not(.vamtam-has-submenu-icon) {
		.elementor-nav-menu .sub-arrow {
			display: none;
		}
	}
}

// Testimonial-Carousel.
.elementor-widget-testimonial-carousel {
	.elementor-swiper-button {
		transition: color .3s ease;
	}

	// Make duplicates of slides that were hidden (inner anims, etc) visible.
	.swiper-slide-duplicate {
		.elementor-invisible {
			visibility: visible;
		}
	}

	// Fitness-only.
	// That's for constraining the slides from touching the nav arrows when sliding (grab/transition).
	&.vamtam-has-theme-arrows-style.elementor-element.elementor-arrows-yes .elementor-main-swiper {
		width: calc( 100% - 90px );
		.swiper-slide {
			padding-left: 0;
			padding-right: 0;
			> .elementor-testimonial > .elementor-testimonial__content > .elementor-testimonial__text {
				> [data-elementor-type="section"] > .elementor-section-wrap > .elementor-section {
					padding-left: 0;
					padding-right: 0;
				}
			}
		}
	}

	.mega-menu {
		> a:not([href]) {
			cursor: pointer;
		}
	}
}

// Section
.elementor-section {
	&.elementor-element {
		padding-left: 30px;
		padding-right: 30px;
	}
}

// Tabs widget.
.elementor-widget-tabs {
	.elementor-tab-desktop-title {
		padding: 20px;
	}

	.elementor-tabs-wrapper {
		padding: 20px;
	}

	// Title numbering mask.
	&.vamtam-has-numbering-bg {
		.elementor-tab-title {
			display: flex;
			align-items: center;

			.title-numbering {
				width: 35px;
				height: 36px;
				margin-right: 10px;
				display: flex;
				justify-content: center;
				align-items: center;
			}

			&.elementor-active .title-numbering {
				// Base64 version of vamtam-tabs-numbering-bg.
				background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNSAzNiI+PHBhdGggZmlsbD0iIzE2NzI4NyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAgNy4zYzQuMiA0LjMgMy44IDkuNiAzLjggMTUuMiAwIDUtMy4zIDguNS0zLjggOS0uNy44LTEuNiAxLjQtMi40IDJsLjEtLjJhNiA2IDAgMCAwIDIuNi0xLjkgMjEgMjEgMCAwIDAgMy41LTUuNmMuMS0uMS4zIDAgLjIuMWE5LjggOS44IDAgMCAxLTEuMyAzLjIgMjAuNyAyMC43IDAgMCAxLTIgMi43IDcuNCA3LjQgMCAwIDEtMi44IDIgMTkuNiAxOS42IDAgMCAxLTMuMiAxYy0xLjkuNy0zLjggMS01LjcgMS02LjctLjEtNy40LjUtMTMuMi00LjNBMTYuNyAxNi43IDAgMCAxIC41IDE1LjggMTMuMiAxMy4yIDAgMCAxIDMgMTAuNUM0IDkuMiA1IDggNi4yIDYuOGExOSAxOSAwIDAgMSA0LTNjMS41LS44IDMuMi0xLjQgNC44LTEuNiAxLjctLjMgMy40LS4yIDUgLjMuMyAwIC4yLjIgMCAuMi0xLjYtLjQtMy4zLS40LTQuOSAwLTEuNi4yLTMuMi44LTQuNiAxLjZsLS4zLjFjMi41LTEgNS4zLTEuNSA3LjYtMS43IDQuOC0uMyA4LjUgMSAxMi4yIDQuNnptLTMuMi0zLjlsLS4xLjItNS0zVi40YTExIDExIDAgMCAxIDUgM3oiLz48L3N2Zz4K');
				background-repeat: no-repeat;
				background-size: cover;
			}
		}
	}

	// Empty title button
	&.vamtam-has-empty-title-button {
		.elementor-tabs-wrapper {
			padding-left: 0;
			padding-right: 0;
			align-items: center;
		}

		&.vamtam-has-nav-over-content {
			.elementor-tabs-wrapper {
				position: absolute;
				top: 0;
				bottom: 0;
				z-index: 1;
			}
		}

		.elementor-tab-title {
			padding: 0 20px;
		}

		.vamtam-no-title {
			a {
				display: block;
				background-color: var(--vamtam-accent-color-4);
			}
			&.elementor-active {
				a {
					background-color: var(--vamtam-accent-color-3);
				}
			}
		}
	}

	// Disable default switch-tab js animation.
	&.vamtam-has-disable-def-anim {
		.elementor-tab-content.elementor-active {
			display: block !important;
		}
	}
}

// General Products.
.elementor-wc-products {
	// Theme-dependant.
	&.vamtam-has-theme-style {
		// WC Products
		ul.products li.product:not(.product-category) {
			display: flex;
			flex-direction: column;
			height: 100%;

			.woocommerce-loop-category__title,
			.woocommerce-loop-product__title {
				padding: 0;
			}

			.button:first-child {
				margin-top: 0;
			}

			& {
				overflow: hidden;
			}

			.woocommerce-loop-product__link {
				height: 100%;
				flex: 1;
			}

			@slide-up-val: 60px; // The amount of space the content will take from the thumbnail sliding upwards.
			> a, > a:hover {
				color: inherit;
			}

			> a img {
				margin: 0;
			}

			.vamtam-product-content {
				flex: 1;
				padding-left: 10px;
				padding-right: 10px;
				padding-bottom: 50px;
				background-color: var(--vamtam-accent-color-5);
			}

			> a img:not([class*="elementor-animation"]),
			.vamtam-product-content {
				transition: transform .5s ease !important;
			}

			.vamtam-add-to-cart-wrap {
				position: relative;

				a.button,
				a.added_to_cart {
					position: absolute;
					left: 0px;
					bottom: 0px;
					width: 100%;
					opacity: 0;
					transition: transform .5s ease, opacity .5s ease, color .3s ease-out, border .3s ease-out, background .3s ease-out, box-shadow .3s ease-out, text-decoration .4s ease !important; // !important necessary for RevSlider compatibility (>=5.1)
					will-change: transform;
					transform: translateY(60px);
				}
			}

			&:hover {
				.vamtam-product-content {
					transform: translateY((-@slide-up-val+6px));
				}

				.vamtam-add-to-cart-wrap {
					a.button, a.added_to_cart {
						opacity: 1;
						transform: translateY(0);
					}
				}

			}
			.woocommerce-loop-product__title,
			.woocommerce-product-details__short-description {
				padding: 10px 0;
			}
			.woocommerce-loop-product__title {
				padding-top: 30px;
			}
			.woocommerce-product-details__short-description {
				padding-bottom: 0;

				ul {
					margin: 0;
				}
			}
			a.button,
			a.added_to_cart {
				display: flex;
				justify-content: center;
				align-items: center;

				&.added {
					opacity: 0 !important;
					display: none;
				}

				&.loading:after {
					position: relative;
					height: 1em;
					overflow: hidden;
				}
			}

			.vamtam-product-content {
				> a {
					height: auto;
					flex: auto;
					overflow: auto;
				}
			}
		}

		// WC Products Categories
		ul.products li.product-category.product {
			overflow: hidden;
			@slide-up-val: 60px; // The amount of space the content will take from the thumbnail sliding upwards.
			> a, > a:hover {
				color: inherit;
			}

			> a img {
				margin: 0;
			}

			.vamtam-product-cat-content {
				padding-top: @slide-up-val;
				background-color: var(--vamtam-accent-color-5);

				> * {
					transform: translateY(-@slide-up-val);
				}
			}

			> a img,
			.vamtam-product-cat-content {
				transition: transform .5s ease !important;
				will-change: transform;
				&[loading="lazy"] {
					// TODO: !! Hotfix - Remove when fixed !! Chrome versions > 87 have a bug with will-change & lazy-loading in parents that have "overflow: hidden;".
					min-height: 1px;
				}
			}

			.vamtam-hover-wrap {
				width: 100%;
				height: 100%;
				position: absolute;
				left: 0;
				top: 0;
				z-index: 0;
				overflow: hidden;
				.vamtam-product-cat-btn {
					position: absolute;
					left: 0px;
					bottom: 0px;
					width: 100%;
					min-height: 60px;
					opacity: 0;
					transition: transform .5s ease, opacity .5s ease, color .3s ease-out, border .3s ease-out, background .3s ease-out, box-shadow .3s ease-out !important; // !important necessary for RevSlider compatibility (>=5.1)
					will-change: transform;
					transform: translateY(60px);
				}
			}

			&:hover {
				.vamtam-product-cat-content {
					transform: translateY(-@slide-up-val);
				}

				.vamtam-hover-wrap {
					.vamtam-product-cat-btn {
						opacity: 1;
						transform: translateY(0);
					}
				}

			}
			.vamtam-product-cat-content {
				padding-left: 50px;
				padding-right: 50px;
				margin-bottom: -15px;
			}
			.woocommerce-loop-category__title,
			.vamtam-product-cat-class-description {
				padding: 10px 0;
			}
			.woocommerce-loop-category__title {
				padding-top: 30px;
			}
			.vamtam-product-cat-class-description {
				padding-bottom: 0;
			}
		}

		// WC Products Categories
		ul.product-categories {
			li.current-cat {
				a {
					color: var( --vamtam-body-link-hover );
				}
			}
		}

		// Touch devices (and others with reduced pointer accuracy).
		@media (pointer:coarse) {
			// WC Products
			ul.products li.product:not(.product-category) {
				.vamtam-add-to-cart-wrap {
					a.button, a.added_to_cart {
						opacity: 1;
						position: relative;
						transform: translateY(0);
					}
				}

				&:hover {
					> a img:not([class*="elementor-animation"]),
					.vamtam-product-content,
					.vamtam-product-content > * {
						transform: translateY(0);
					}
				}
			}
			// WC Products Categories
			ul.products li.product-category.product {
				> a {
					display: flex;
					flex-direction: column;
					height: 100%;
				}

				.vamtam-hover-wrap {
					position: relative;
					height: auto;

					.vamtam-product-cat-btn {
						opacity: 1;
						position: relative;
						transform: translateY(0);
					}
				}
				.vamtam-product-cat-content {
					flex: 1;
					padding-top: 0;
					margin-bottom: 45px;

					&, > * {
						transform: translateY(0);
					}
				}

				&:hover {
					> a img,
					.vamtam-product-cat-content,
					.vamtam-product-cat-content > * {
						transform: translateY(0);
					}
				}
			}
		}
	}

	// Fitness-only.
	&.vamtam-has-product-image-theme-anim {
		.product {
			img {
				transition-duration: 1500ms;
				will-change: transform;
			}
			&:hover {
				img {
					transform: scale(1.2);
				}
			}
		}
	}
	// Fitness-only.
	&.vamtam-has-product-btn-theme-style {
		.product {
			.add_to_cart_button,
			.added_to_cart {
				.theme-btn-hover-underline();
			}
		}
	}
	// Fitness-only.
	ul.products li.product .woocommerce-loop-product__title {
		font-size: var(--e-global-typography-vamtam_h3-font-size);
	}
}

// Products archives.
.elementor-widget-wc-archive-products {
	> .elementor-widget-container {
		border-left-width: 0;
		border-right-width: 0;
	}
	.woocommerce-result-count,
	.woocommerce-ordering {
		margin: 20px 0;
	}
	.woocommerce-ordering select {
		margin-bottom: 0 !important;
		padding-right: 40px;
	}
	.woocommerce-result-count {
		padding-top: 15px;
		padding-bottom: 15px;
	}
	&.elementor-widget {
		// Products archives only.
		&.elementor-element.elementor-wc-products .navigation {
			.next:after,
			.prev:after {
				top: unset;
				vertical-align: middle;
			}
		}
	}
}

// Products.
.elementor-widget-woocommerce-products {
	&.vamtam-has-hide-price {
		.products .product span.price {
			display: none;
		}
	}

	&.vamtam-has-no-headers {
		.products.table-layout .vamtam-headers {
			display: none;
		}
	}

	// Table layout defaults.
	.table-layout {
		.product {
			.woocommerce-loop-product__title {
				font-size: 1em;
			}

			// Theme-dependant.
			.price {
				font-weight: 400;
				font-size: .857em;
			}

			.quantity input {
				width: 100%;

				// Theme dependant.
				border-width: 0 0 1px 0;
			}

			.vamtam-add-to-cart-wrap {
				> a.button,
				> .added_to_cart,
				> .add_to_cart {
					width: 100%;
				}
			}
		}
		.vamtam-headers {
			th {
				&:extend(.vamtam-font-h6);
			}
		}
		tr, th, td {
			border: solid var(--vamtam-default-line-color) 1px;
			padding: 0;
			margin: 0;
		}
	}
}

.elementor-widget-woocommerce-product-price p {
	margin: 0;
}

// Products Categories
.elementor-widget-wc-categories {
	&:not(.vamtam-no-count--yes) {
		.woocommerce-loop-category__title .count {
			display: none;
		}
	}

	&.vamtam-has-hide-title {
		.woocommerce-loop-category__title {
			display: none;
		}
	}
}

// Product Add To Cart.
.elementor-widget-woocommerce-product-add-to-cart {
	// Fitness-only.
	&.vamtam-has-theme-btn-style {
		button:is([name="add-to-cart"], .single_add_to_cart_button) {
			display: flex;
			justify-content: center;
			align-items: center;
			> i.vamtamtheme- {
				font-size: 34px;
				margin-right: 10px;
			}
			.vamtam-adc-text {
				text-decoration: underline solid transparent;
				text-underline-offset: 3px;
				transition: text-decoration .4s ease;
			}
			&:hover {
				.vamtam-adc-text {
					text-decoration: underline solid currentColor;
				}
			}
		}
		.elementor-tabs-content-wrapper .elementor-tab-content:not(.elementor-active) {
			pointer-events: none;
			z-index: -1;
		}
	}
	// Fitness-only.
	&.vamtam-has-theme-vc-btn-style {
		a.added_to_cart {
			.theme-btn-hover-underline();
		}
	}

	form.cart {
		.added_to_cart.wc-forward {
			display: none;
		}
	}

	&.elementor-add-to-cart--align-justify {
		.added_to_cart {
			flex-basis: 100%;
		}
	}

	.cart {
		&.variations_form {
			.variations {
				td {
					width: 100%;
					display: block;
					text-align: start;
				}
				th {
					width: 100%;
					display: block;
					text-align: start;
					margin-bottom: 5px;
				}

				input, textarea, select {
					width: 100%;
				}
			}

			.reset_variations {
				visibility: hidden !important;
				display: none !important;

			}

			.woocommerce-variation-price .price {
				color: inherit;
				display: flex;
				flex-direction: row;
				align-items: baseline;
			}
		}
	}

	.single-product .sold-individually &,
	.stock.last-one ~ .cart {
		.single_add_to_cart_button.button[type="submit"] {
			margin-left: 0;
		}
	}
}

// Product Meta.
.elementor-widget-woocommerce-product-meta {
	// Fitness-only.
	&.vamtam-has-theme-style {
		&:extend(.vamtam-font-primary-font);

		.product_meta {
			padding-top: 0;
			border-top: none;
		}
		.posted_in,
		.tagged_as {
			&.detail-container {
				display: flex;
				flex-direction: column;
				justify-content: center;

				.detail-label {
					&:extend(.vamtam-font-h5);
				}

				.detail-content {
					margin-top: 10px;
					color: var(--vamtam-accent-color-2);
					a {
						display: inline-block;
						margin-right: 20px;
						margin-bottom: 10px;
						text-transform: initial;
						.theme-btn-hover-underline();
					}
				}
			}
		}
	}
}

// Product Related.
.elementor-widget-woocommerce-product-related {
	// Fitness-only.
	&.vamtam-has-theme-style {
		.elementor-widget-container .related.products {
			border-top: none;
		}
	}
}

// Product Images.
.elementor-widget-woocommerce-product-images {
	&.vamtam-has-full-sized-gallery:not(.vamtam-mobile-gallery) {
		.woocommerce-product-gallery__wrapper,
		.woocommerce-product-gallery--vamtam__wrapper {
			display: grid;
			grid-template-columns: 1fr;
			justify-content: center;
			align-items: center;

			.woocommerce-product-gallery__image,
			.woocommerce-product-gallery--vamtam__image {
				width: 100% !important;
			}
		}
	}

	.woocommerce-product-gallery {
		&.vamtam-hide {
			opacity: 0 !important;
		}
	}
}
// Fitness-only.
.woocommerce .elementor-widget-woocommerce-product-images span.onsale {
	padding: 8px 20px;
}

// Menu cart widget.
// @import (reference) "../../../mixins.less";
// @import (reference) "../../../../buttons.less";
.elementor-widget-woocommerce-menu-cart {

	.elementor-menu-cart__container.elementor-menu-cart--shown {
		background-color: rgba(0,0,0,.80);
	}

	.elementor-menu-cart__container:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
		opacity: 1;
	}

	.elementor-menu-cart__container .elementor-menu-cart__main {
		width: 30%;
		// Bijoux-after.
		min-width: 500px;
		display: grid;
		grid-template-columns: 1fr;
		grid-template-rows: min-content auto;
		overflow-y: auto;
		@top-padding: 2%;
		padding: @top-padding 0 0 0; // put bottom padding in .widget_shopping_cart_content to negate how overflow: scroll works.
		font-size: 100%;

		// Ipad safari fix.
		body[data-elementor-device-mode="tablet"].e--ua-safari & {
			// On safari (Ipad) there seems to be an issue with applying the proper
			// intrinsic (1fr) parent height value.
			height: calc(100% - @top-padding);
		}

		.woocommerce-cart-form__contents {
			height: auto;
			max-height: unset;
			overflow: visible;
			overflow-x: hidden;
			grid-row: 1;
		}

		.product-thumbnail {
			max-width: 70px;
			max-height: fit-content;
			grid-row: 1/2;

			img {
				display: block;
			}
		}

		.product-remove {
			grid-column: 4;
			justify-self: flex-end;
			border: 0;
			width: auto;
			height: auto;
			position: relative;

			// Override some def Elementor styles.
			> a:not(.elementor_remove_from_cart_button) {
				display: inline;
				z-index: initial;
				overflow: hidden;
				opacity: 1;
				position: relative;
			}

			&::before,
			&::after {
				display: none;
			}
		}

		.product-price {
			grid-column: 3;
			align-self: flex-start;
			padding-left: 0;

			.quantity {
				display: flex;
				min-height: 30px;
				align-items: center;

				.vamtam-quantity {
					position: relative;
					margin-right: 15px;

					svg {
						fill: currentColor;
						stroke: currentColor;
						stroke-width: 0;
						width: 1em;
						height: 1em;
						position: absolute;
						top: calc(50% - .5em);
						left: 55%;
						right: 0;
						bottom: 0;
						font-weight: 500;
						font-size: 16px;
						pointer-events: none;
					}

					select {
						&:hover, &:focus {
							&:not(:disabled) {
								border-color: var( --vamtam-accent-color-1 );
							}
						}

						&:focus {
							outline: 0;
							box-shadow: none;
						}

						appearance: none;
						padding: 0 1rem 0 1.5rem !important;
						height: 2rem;
						min-width: 5rem;
						max-width: 100%;
						border: 1px solid var( --vamtam-default-line-color );
						transition: border .3s cubic-bezier(0.39,0.575,0.565,1);
						text-overflow: ellipsis;

						color: inherit;
						line-height: inherit;
						font-size: inherit;
						font-family: inherit;
						font: inherit;
						// Overrides
						background: none !important;
						margin: 0 !important;
						padding-bottom: 0 !important;
						// No border form menu cart/standard below-max (max standard overrides this)
						border: 0;
					}
				}

				.woocommerce-Price-amount {
					margin-left: auto;
				}
			}
		}

		.product-name {
			grid-column: 2 / 3;
			padding: .6em 25px 0 25px;

			> a {
				.vamtam-line-clamp-2();
			}
		}

		.cart_item {
			display: grid;
			grid-template-rows: auto auto;
			grid-template-columns: max-content 50% minmax(20%, auto) 40px;
			grid-row-gap: 20px;
			padding: 15px 0;
			background-color: var(--vamtam-accent-color-5);
			border: 0;

			&:not(:last-of-type),
			&:not(:first-of-type) {
				margin: 0;
				border: none;
			}
		}

		.vamtam-close {
			display: inline-block;
			width: 1em;
			height: 1em;
			transition: all .3s ease;
			stroke-width: 0;
			stroke: currentColor;
			fill: currentColor;
			vertical-align: middle;

			* {
				pointer-events: none;
			}
		}

		> .vamtam-elementor-menu-cart__header,
		> .widget_shopping_cart_content .cart_item,
		> .widget_shopping_cart_content > :not(.woocommerce-cart-form__contents) {
			padding-left: 7%; // Should also be replicated in Elementor selector (woocommerce-menu-cart.php->padding for footer btns).
			padding-right: 7%; // Should also be replicated in Elementor selector (woocommerce-menu-cart.php->padding for footer btns).
		}

		.widget_shopping_cart_content {
			display: grid;
			grid-template-columns: 1fr;
			grid-template-rows: 1fr min-content min-content;

			// Empty side cart
			.woocommerce-mini-cart__empty-message {
				position: absolute;
				top: 50%;
				left: 50%;
				transform: translate(-50%,-50%);

				&:before {
					content: "\e8e4";
					display: block;
					font-family: eicons;
					font-size: 10em;
					font-weight: 400;
					font-style: normal;
					font-variant: normal;
					line-height: 1;
					text-rendering: auto;
					-webkit-font-smoothing: antialiased;
					color: var(--vamtam-accent-color-6);
					margin-bottom: 20px;
				}
			}
		}

		.vamtam-elementor-menu-cart__header {
			display: flex;
			align-items: center;
			font-size: 16px;
			font-weight: bold;
			color: var(--vamtam-accent-color-6);
			padding-bottom: 20px;

			.elementor-menu-cart__close-button {
				margin: 0;
				margin-left: auto;
				align-self: center;
				width: auto;
				height: auto;
				display: flex;
				flex-direction: column;
				justify-items: center;

				&::before,
				&::after {
					display: none;
				}
			}

			.elementor-menu-cart__close-button-custom {
				margin-bottom: 0;
				margin-top: 0;
				align-self: center;
			}

			span.label {
				margin-right: 15px;
			}
		}

		.elementor-menu-cart__footer-buttons {
			padding-top: 20px;
			padding-bottom: 20px;
			grid-row: 3;

			.elementor-button--checkout {
				order: 1;
			}

			.elementor-button--view-cart {
				order: 2;
			}

			> a {
				line-height: 30px;
				height: 100%;
			}
		}

		.elementor-menu-cart__product,
		.elementor-menu-cart__products,
		.elementor-menu-cart__subtotal {
			border-color: var(--vamtam-accent-color-7);
		}

		//base style overrides so mobile styles are always used for menu cart.
		.product-name,
		.product-remove {
			display: flex;
			align-items: stretch;
			border: none;
			border-radius: 0;
		}

		.product-remove {
			grid-row: 1;
			grid-column: 3;
			bottom: 0;

			.vamtam-close.vamtam-trash {
				font-size: var(--remove-item-button-size, calc(1em - 3px));
			}

			a.remove_from_cart_button {
				display: flex;
				flex-wrap: nowrap;
			}
		}
		.product-price {
			grid-column: 1/4;
			color: inherit;

			&, .amount {
				font-weight: inherit;
			}
		}
		.product-name {
			flex-direction: column;
			padding-top: 0;
			padding-left: 20px;
			padding-right: 25px;
		}
		.product-name,
		.product-price {
			font-size: 100%;
		}
		.product-thumbnail {
			grid-row: 1/3;
			> a, > a > img {
				display: block;
			}
		}
		.cart_item {
			grid-template-rows: auto;
			grid-template-columns: ~"min(25%, 70px)" auto auto;
			padding-top: 20px;
			padding-bottom: 20px;
		}
	}

	.elementor-menu-cart__container {
		height: 100vh; // elementor pro 3.6 fix

		.elementor-menu-cart__subtotal {
			grid-row: 2;
			display: flex;
			padding:  30px 0;
			color: var(--vamtam-accent-color-6);
			font-size: 16px;

			.woocommerce-Price-amount {
				margin-left: auto;
			}
		}
		.elementor-menu-cart__main {
			.product-remove a {
				color: e("color( from var(--vamtam-accent-color-3) srgb r g b / .2 )");
				&:hover {
					color: var(--vamtam-accent-color-1);
				}
			}
		}
	}

	.elementor-menu-cart__toggle .elementor-button-icon-qty[data-counter] {
		letter-spacing: normal;
	}

	// This fixes an issue where the card icon flickers on page-load when the "Show Empty" option is used.
	&.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon-qty[data-counter="0"] {
		&, :before {
			display: none !important;
		}
	}

	// This fixes a bug where the "Show Empty" option is set to true but the empty cart is still getting hidden from js.
	&.hidden:not(.elementor-menu-cart--empty-indicator-hide) {
		display: block;
		visibility: visible;
	}
	// Above rule should not apply to sticky-header spacer el.
	.elementor-sticky__spacer &.hidden:not(.elementor-menu-cart--empty-indicator-hide) {
		display: none;
		visibility: hidden;
	}

	// Remove btn - Increased specificity.
	&:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove {
		display: none;
	}

	// Divider - Increased specificity.
	&.elementor-menu-cart--show-divider-yes .elementor-menu-cart__product:not(:last-of-type),
	&.elementor-menu-cart--show-divider-yes .elementor-menu-cart__products,
	&.elementor-menu-cart--show-divider-yes .elementor-menu-cart__subtotal {
		border-bottom-width: 1px;
		border-bottom-style: solid;
	}

	// Fitness-only.
	&.vamtam-has-theme-checkout-btn-style {
		.elementor-button.elementor-button--checkout {
			.theme-btn-hover-underline();
		}
	}
	// Fitness-only.
	&.vamtam-has-theme-vc-btn-style {
		.elementor-button.elementor-button--view-cart {
			.theme-btn-hover-underline();
		}
	}

	// This is so the global button hover styles are not overriding the local cart toggle styles (cart toggle does not have hover styles atm).
	.elementor-menu-cart__toggle .elementor-button:is(:hover, :focus) {
		border: var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91)
	}
	// This is to keep the items number vertically centered on the cart toggle (bubble).
	&.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon .elementor-button-icon-qty[data-counter] {
		line-height: 1;
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;
		text-decoration: none;
	}

	// This is to override the global button options (if set).
	.elementor-menu-cart__toggle .elementor-button:focus {
		background-color: var( --toggle-button-hover-background-color, transparent);
	}

	input.vamtam-quantity-input {
		text-align: center;
		outline: none;
		min-height: 30px;
	}
}
.woocommerce {
	&.woocommerce-cart,
	&.woocommerce-checkout {
		.elementor-widget-woocommerce-menu-cart {
			&.vamtam-has-hide-cart-checkout {
				display: none;
			}
		}
	}
}

// password reset
.elementor-widget-woocommerce-my-account {
	.e-my-account-tab:not(.e-my-account-tab__dashboard--custom) .woocommerce .woocommerce-ResetPassword .form-row-last {
		width: 100%;
	}
}

// Posts widget.
.elementor-widget-posts {
	.elementor-post {
		.elementor-post__thumbnail {
			.vamtam-shape {
				// Theme-dependant. Each theme should apply it's own post thumb (if supported).
				background-image: url('data:image/svg+xml,<svg fill="%23f4f1ea" width="100" height="26" xmlns="http://www.w3.org/2000/svg"><path d="M0 1C11.848.948 22.762 5.655 31.096 14.02c4.504 5.062 11.657 7.96 18.46 7.96a23.801 23.801 0 0 0 17.79-7.96C75.696 5.695 88.167 1 100 1v24.987H0V1z"/></svg>');

				position: absolute;
				background-repeat: repeat-x;
				left: 0;
				bottom: 0;
				width: 100%;
				height: 26px;
				z-index: 1000;
			}
		}
	}
}

// Posts // Archive Posts widget.
.elementor-widget-posts,
.elementor-widget-archive-posts {
	// Fitness-only.
	&.vamtam-has-image-theme-anim {
		.elementor-post {
			.elementor-post__thumbnail__link {
				overflow: hidden;
			}
			.elementor-post__thumbnail {
				transition-duration: 1500ms;
				will-change: transform;
			}
			&:hover {
				.elementor-post__thumbnail {
					transform: scale(1.2);
				}
			}
		}
	}

	// Fitness-only.
	&.vamtam-has-theme-content-style {
		.elementor-post {
			.elementor-post__title > a {
				text-decoration: underline solid transparent;
				text-underline-offset: 3px;
				transition: text-decoration .4s ease;
			}
			&:hover {
				.elementor-post__title > a {
					text-decoration: underline solid currentcolor;
				}
			}
		}
	}
}

.elementor-widget-archive-posts {
	// Fitness-only.
	&.vamtam-has-theme-content-style {
		&.elementor-posts--thumbnail-top {
			.elementor-post.elementor-grid-item {
				border: solid 1px var( --vamtam-accent-color-7 );
			}

			.elementor-post__text {
				padding: 40px;
			}
		}
	}
}

// Post Title.
.elementor-widget-theme-post-title {
	// Fitness-only.
	&.vamtam-has-theme-style {
		.elementor-heading-title {
			.theme-btn-hover-underline();
		}
	}
}

// Post Info.
.elementor-widget-post-info {
	// Fitness-only.
	&.vamtam-has-theme-text-style {
		.elementor-icon-list-items {
			a {
				.theme-btn-hover-underline();
			}
		}
	}
}

// Post Navigation.
.elementor-widget-post-navigation {
	// Fitness-only.
	&.vamtam-has-theme-label-style {
		.elementor-post-navigation__link > a {
			.elementor-post-navigation__link__ {
				&prev {
					.post-navigation__prev--label {
						text-decoration: underline solid transparent;
						text-underline-offset: 3px;
						transition: text-decoration .4s ease;
					}
				}
				&next {
					.post-navigation__next--label {
						text-decoration: underline solid transparent;
						text-underline-offset: 3px;
						transition: text-decoration .4s ease;
					}
				}
			}
			&:hover {
				.elementor-post-navigation__link__ {
					&prev {
						.post-navigation__prev--label {
							text-decoration: underline solid currentcolor;
						}
					}
					&next {
						.post-navigation__next--label {
							text-decoration: underline solid currentcolor;
						}
					}
				}
			}
		}
	}
}

// Social-Icons widget.
.elementor-widget-social-icons {
	&.vamtam-layout-vertical {
		.elementor-social-icons-wrapper {
			display: flex;
			flex-direction: column;
		}
	}

	.elementor-icon {
		&, i {
			transition-duration: .5s;
		}
	}
	// If exists, local option should override kit/global one.
	a.elementor-icon {
		font-size: var(--icon-size);
	}
}

// Call to action.
.elementor-widget-call-to-action {
	// This is to override possible global link text-decoration styles
	// cause of the way text-decoration works on descendants (only for whole box link).
	.elementor-widget-container > a {
		&, &:hover {
			text-decoration: unset;
		}
	}

	&.vamtam-elementor-cta-align-center {
		.elementor-cta__content .elementor-content-item {
			&.elementor-cta__title { grid-area: 1 / 1 / 2 / 4; }
		}
	}

	// Fitness-only.
	&.vamtam-has-theme-cta-style {
		.elementor-cta__content {
			display: grid;
			grid-template-columns: auto repeat(2, 1fr);
			grid-template-rows: repeat(3, auto);
			padding: 25px 0 0 0;
			backface-visibility: hidden;

			.elementor-content-item {
				&.elementor-cta__icon,
				&.elementor-cta__title {
					width: auto;
				}
				&.elementor-cta__icon {
					display: flex;
					margin-right: 10px;
					margin-left: 10px;
				}
				&.elementor-cta__icon,
				&.elementor-icon-wrapper,
				&.elementor-cta__image { grid-area: 1 / 4 / 4 / 4; }
				&.elementor-cta__title { grid-area: 1 / 2 / 2 / 4; }
				&.elementor-cta__description { grid-area: 2 / 1 / 3 / 4; }
				&.elementor-cta__button-wrapper { grid-area: 3 / 1 / 4 / 4; }
				&.elementor-cta__button-wrapper {
					position: relative;
					align-items: center;
					.vamtam-theme-arrow-right {
						position: absolute;
						right: 0;
						top: 50%;
  						transform: translateY(-50%);
					}
				}
			}
		}
		&.elementor-bg-transform .elementor-bg.elementor-cta__bg {
			outline: 1px solid transparent;
		}
	}

	// Team Member Skin.
	&[data-widget_type="call-to-action.team-member"] {
		.vamtam-tm-social-links-wrap {
			transition: all .4s ease;
			.vamtam-tm-social-links {
				list-style: none;
				margin: 0;
				padding: 0;
				line-height: 1;
				li {
					list-style: none;
					margin: 0;
					padding: 0;
					vertical-align: top;
				}
			}

			li,
			.vamtam-tm-social-icon,
			.vamtam-tm-divider {
				display: inline-block;
			}

			.vamtam-tm-social-icon-wrap {
				display: inline-flex;
			}
		}

		// Fitness-only.
		&.vamtam-has-theme-cta-social-icons-style {
			.vamtam-tm-social-links-wrap {
				pointer-events: none;
				z-index: 10;
				position: absolute;
				bottom: 0;
				left: 0;
				right: 0;
				padding: 5px 20px;
				background-color: var(--vamtam-accent-color-1);
				.vamtam-tm-social-icon-wrap {
					background-color: var(--vamtam-accent-color-1);
					color: var(--vamtam-accent-color-2);
				}
				.vamtam-tm-social-links > li {
					pointer-events: all;
				}
			}
			.vamtam-cta-link {
				display: block;
				width: 100%;
			}
			// Devices that can easily hover with the primary pointing device.
			@media (hover: hover) {
				.vamtam-tm-social-links-wrap {
					will-change: transform;
					transition: background-color .4s ease, transform .4s ease;
					transform: translateY(115%) scale(1.2);
				}
				&:hover {
					.vamtam-tm-social-links-wrap {
						transform: translateY(0) scale(1);
					}
				}
			}
		}
	}

	// Class Skin.
	&[data-widget_type="call-to-action.class"] {
		.vamtam-class-info-wrap {
			transition: all .4s ease;
			.vamtam-class-info {
				list-style: none;
				margin: 0;
				padding: 0;
				line-height: 1;
				li {
					list-style: none;
					margin: 0;
					padding: 0;
					vertical-align: top;
				}
			}

			li,
			.vamtam-class-info-icon,
			.vamtam-tm-divider {
				display: inline-block;
			}

			.vamtam-class-info-content-wrap {
				display: inline-flex;
				justify-content: center;
    			align-items: center;
				&, .vamtam-class-info-icon, .vamtam-class-info-text {
					transition: all .3s ease;
				}
			}
		}

		// Fitness-only.
		&.vamtam-has-theme-cta-class-info-style {
			.vamtam-class-info-wrap {
				pointer-events: none;
				z-index: 10;
				position: absolute;
				bottom: 0;
				left: 0;
				right: 0;
				padding: 5px 20px;
				background-color: var(--vamtam-accent-color-1);
				.vamtam-class-info-content-wrap {
					background-color: var(--vamtam-accent-color-1);
					color: var(--vamtam-accent-color-2);
				}
				.vamtam-class-info > li {
					pointer-events: all;
				}
				.vamtam-class-info-text {
					&:extend( .vamtam-font-h6 );
				}
			}
			// Devices that can easily hover with the primary pointing device.
			@media (hover: hover) {
				.vamtam-class-info-wrap {
					will-change: transform;
					transition: background-color .4s ease, transform .4s ease;
					transform: translateY(115%) scale(1.2);
				}
				&:hover {
					.vamtam-class-info-wrap {
						transform: translateY(0) scale(1);
					}
				}
			}
		}
	}

	// Fix for Safari border radius with overflow:hidden bug.
	body.e--ua-safari &.elementor-bg-transform .elementor-widget-container {
		-webkit-mask-image: -webkit-radial-gradient(white, black);
	}
}

// Search form
.elementor-widget-search-form {
	&.elementor-search-form--skin-full_screen .elementor-search-form__container {
		background-color: var(--vamtam-accent-color-1);
		opacity: .9;

		::-webkit-search-cancel-button {
			display: none;
		}

		input.elementor-search-form__input {
			font-size: 9em;
			line-height: 1.3em;
			&, &:focus {
				text-align: start;
				color: var(--vamtam-accent-color-2);
				border-color: var(--vamtam-accent-color-2);
				border-width: 0 0 3px 0;
				border-radius: 0;
				padding-left: 0;
				padding-right: 0;

				&::placeholder {
					color: inherit;
					opacity: .5;
				}
			}
		}

		.dialog-close-button {
			color: var(--vamtam-accent-color-2);
			font-size: 3em;
			right: .6em;
			top: .6em;
			margin-top: 0;
			padding: .2em;
		}
	}

	&.vamtam-has-theme-form-style {
		@normal-color: #D4D4D4;
		@focus-hover-color: var(--vamtam-accent-color-1);
		.elementor-search-form__container {
			background: transparent;
			border-bottom: 1px solid @normal-color;
			&:focus, &:hover {
				border-bottom-color: @focus-hover-color;
			}
		}
		.elementor-search-form__input {
			font-size: 50px;
			font-weight: bold;
			letter-spacing: 0;
			line-height: 60px;
			caret-color: @focus-hover-color;
			border: 0;
			padding: 20px 0 !important;
			&::-webkit-search-cancel-button {
				-webkit-appearance: none;
				display: none;
			}
			&[type="search"] {
				&, &:focus {
					color: @focus-hover-color;
					background-color: transparent;
				}
			}
			&::placeholder {
				color: @normal-color;
			}
			&:hover {
				~ .elementor-search-form__submit {
					color: @focus-hover-color;
				}
			}
		}
		.elementor-search-form__submit {
			font-size: 50px;
			background-color: transparent;
			color: @normal-color;
			border: 0;
			&:hover {
				background-color: transparent;
				color: @focus-hover-color;
			}
			i.vamtamtheme-.vamtam-theme-search {
				display: inline-block;
			}
		}
	}
}

// Vamtam Animated Headline.
.elementor-widget-vamtam-animated-headline {
	// Blurred letters anim.
	// Anim triggering is being handled from vamtam-animated-headline.js
	&.elementor-headline--style-blurred_letters {
		@keyframes vamtam-blurred-letters {
			0% {
				filter: blur(10px);
				opacity: 0;
			}
			20% {
				filter: blur(10px);
				opacity: 0;
			}
			100% {
				filter: blur(0);
				opacity: 1;
			}
		}
		.vamtam-word {
			position: relative;
			display: inline-flex;
			.vamtam-letter {
				opacity: 0;
			}
		}
	}

	.elementor-headline {
		margin: 0;
	}
}

// Form.
.elementor-widget-form {
	.elementor-field-type-acceptance {
		.elementor-field-option {
			display: flex;
			align-items: center;
		}
	}

	// Caridad-after.
	.elementor-field-type-checkbox {
		.elementor-field-subgroup.elementor-subgroup-inline {
			display: grid;
			grid-template-columns: repeat(3, 1fr);
			grid-auto-rows: 1fr;
			justify-content: center;
			align-items: flex-start;
			flex-wrap: nowrap;
		}
	}

	// Fitness-only.
	&.vamtam-has-theme-form-style {
		// Checkbox.
		form.elementor-form .elementor-field-option input[type="checkbox"] {
			position: absolute;
			opacity: 0;
			width: 20px;
			height: 20px;
			z-index: 10;
			+ label {
				display: flex;
				align-items: center;
				position: relative;
				cursor: pointer;
				padding-left: 0;
				line-height: normal;
				&::before {
					content: "";
					margin-right: 10px;
					display: inline-block;
					vertical-align: text-top;
					width: 20px;
					min-width: 20px;
					height: 20px;
				}
			}

			&:checked + label:after {
				content: "";
				position: absolute;
				left: 4px;
				top: calc(50% - 1px);
				background: black;
				width: 2px;
				height: 2px;
				box-shadow: 2px 0 0 black, 4px 0 0 black, 4px -2px 0 black, 4px -4px 0 black, 4px -6px 0 black, 4px -8px 0 black;
				transform: rotate(45deg) translateY(-50%);
			}
		}
		// Radio button.
		.elementor-field-option input[type="radio"] {
			&:checked,
			&:not(:checked) {
				position: absolute;
				opacity: 0;
				left: 50%;
				top: calc(100% - 20px);
			}
			&:checked + label,
			&:not(:checked) + label {
				cursor: pointer;
				position: relative;
				padding-left: 0;
				display: inline-block;
				color: var(--vamtam-accent-color-2);
			}
			&:checked + label,
			&:not(:checked) + label {
				&::before, &::after {
					content: '';
					position: absolute;
					left: 30px;
					top: 30px;
					width: 34px;
					height: 34px;
					border-radius: 50%;
				}
				&::before {
					border: 3px solid var(--vamtam-accent-color-2);
					background: white;
				}
				&::after {
					transform-origin: center;
					background: var(--vamtam-accent-color-2);
					transition: all 0.2s ease;
				}
			}
			&:not(:checked) + label:after {
				opacity: 0;
				transform: scale(0);
			}
			&:checked + label:after {
				opacity: 1;
				transform: scale(.5);
			}
		}
		// Radio button.
		.elementor-field-type-radio.elementor-field-group {
			> .elementor-field-subgroup.elementor-subgroup-inline {
				justify-content: center;
				flex-wrap: nowrap;
				> .elementor-field-option {
					padding-right: 20px;
				}
				> .elementor-field-option:last-of-type {
					padding-right: 0;
				}
			}
		}
		// Step Indicators.
		.e-form__indicators {
			display: flex;
			justify-content: center;
			align-items: center;
			.e-form__indicators__indicator__separator {
				max-width: 80px;
				margin-top: unset;
				opacity: .7;
			}
			.e-form__indicators__indicator__number.e-form__indicators__indicator--shape-circle {
				margin-bottom: unset;
			}
			.e-form__indicators__indicator__number {
				border-width: 2px;
			}
			.e-form__indicators__indicator__separator {
				opacity: .2;
				background-color: var(--vamtam-accent-color-6);
			}
		}
		// Date field.
		.elementor-field-type-date {
			position: relative;
			.elementor-date-field {
				cursor: pointer;
			}
			&::after {
				font-family: "Font Awesome 5 Free";
				content: "\f073";
				font-weight: 900;
				position: absolute;
				right: 20px;
				pointer-events: none;
			}
			.elementor-date-field::-webkit-calendar-picker-indicator {
				appearance: none;
				opacity: 0;
			}
		}
		.elementor-button,
		.e-form__buttons__wrapper.elementor-field-type-next {
			i.vamtamtheme-.vamtam-theme-arrow-right {
				font-size: 38px;
			}
		}
		// Step btns, inject theme right arrow icon.
		.e-form__buttons__wrapper.elementor-field-type-next {
			display: flex;
			flex-wrap: nowrap;
			&::before {
				margin-right: 10px;
				content: "\e902";
				font-size: 38px;
				display: inline-block;
				width: 1em;
				height: 1em;
				font-family: 'theme-icons' !important;
				speak: never;
				font-style: normal;
				font-weight: normal;
				font-variant: normal;
				text-transform: none;
				line-height: 1;
				-webkit-font-smoothing: antialiased;
				-moz-osx-font-smoothing: grayscale;
			}
		}
		.e-form__buttons__wrapper__button:not(.elementor-field-type-next):hover,
		.elementor-button[type="submit"] {
			.elementor-button-text {
				text-decoration: underline solid transparent;
				text-underline-offset: 3px;
				transition: text-decoration .4s ease;
			}
			&:hover {
				.elementor-button-text {
					text-decoration: underline solid currentColor;
				}
			}
		}
		.e-form__buttons__wrapper.elementor-field-type-next {
			.e-form__buttons__wrapper__button-next {
				text-decoration: underline solid transparent;
				text-underline-offset: 3px;
				transition: text-decoration .4s ease;
			}
			&:hover {
				.e-form__buttons__wrapper__button-next {
					text-decoration: underline solid currentColor;
				}
			}
		}
		.elementor-field-group.e-form__buttons__wrapper.elementor-field-type-previous {
			justify-self: flex-start;
			margin-right: auto;

			.elementor-button {
				text-decoration: underline solid var(--vamtam-accent-color-3);
				text-underline-offset: 3px;
				transition: text-decoration .4s ease;
				color: var(--vamtam-accent-color-3);
				&:hover {
					color: var(--vamtam-accent-color-2);
					text-decoration: underline solid currentColor;
				}
			}
		}
		.elementor-field-group.elementor-field-type-submit.e-form__buttons__wrapper {
			justify-self: flex-end;
			margin-left: auto;
		}
	}
}

// Slides.
.elementor-widget-slides {
	.elementor-swiper-button {
		transition: color .3s ease;
	}
	&.elementor-arrows-position-overlap {
		.elementor-swiper-button-prev {
			left: -.6em;
		}
		.elementor-swiper-button-next {
			right: -.6em;
		}
	}
	// Fitness-only.
	&.vamtam-has-theme-arrows-style {
		&.elementor-arrows-position-outside :is(.swiper-container, .swiper) {
			width: calc(100% - 120px);
		}
	}
}

// Testimonial-Carousel.
.elementor-widget-testimonial-carousel {
	.elementor-swiper-button {
			transition: color .3s ease;
	}

	// Make duplicates of slides that were hidden (inner anims, etc) visible.
	.swiper-slide-duplicate {
		.elementor-invisible {
			visibility: visible;
		}
	}
}

.elementor-post-navigation {
	.post-navigation__next--label,
	.post-navigation__next--title,
	.post-navigation__prev--label,
	.post-navigation__prev--title {
		white-space: normal;
		overflow: visible;
	}
}

/*
Fix for Elementor Pro v3.12.0 adding the editor's color-scheme to the page.
TODO: Remove when fixed.
*/
@media (prefers-color-scheme: dark) {
	:root {
		color-scheme: unset;
	}
}

.dialog-widget-content {
	background-color: #fff;
}

#sb_instagram {
	.sbi_photo_wrap .sbi_link {
		background: rgba(0,0,0,0.5) !important;
	}
	#sbi_images {
		padding: 0 !important;
	}
}

// iOS - Safari Disable Link Preview.
body.e--ua-isTouchDevice.e--ua-appleWebkit a {
	-webkit-tap-highlight-color: transparent;
	-webkit-touch-callout: none;
}

