:root {
	--bainer-motion-ease: cubic-bezier(0.16, 1, 0.3, 1);
	--bainer-motion-ease-alt: cubic-bezier(0.25, 1, 0.5, 1);
	--bainer-reveal-spring: cubic-bezier(0.22, 1.15, 0.36, 1);
	--bainer-reveal-distance: 1.25rem;
	--bainer-motion-duration: 500ms;
	--bainer-motion-duration-scroll: 600ms;
}

/* --- Scroll reveals (MBA-inspired, no GSAP) --- */
.bainer-reveal,
.premium-scroll-reveal {
	opacity: 0;
	transform: translate3d(0, var(--bainer-reveal-distance), 0) scale(0.98);
	transition: none;
	will-change: opacity, transform;
}

.bainer-reveal--from-end {
	transform: translate3d(calc(var(--bainer-reveal-distance) * 0.9), var(--bainer-reveal-distance), 0) scale(0.98);
}

.bainer-reveal--from-start {
	transform: translate3d(calc(var(--bainer-reveal-distance) * -0.9), var(--bainer-reveal-distance), 0) scale(0.98);
}

.bainer-reveal--scale {
	transform: scale(0.96);
}

.bainer-reveal--fade-only,
.bainer-reveal--fade-only.bainer-reveal--up,
.bainer-reveal--fade-only.bainer-reveal--from-start,
.bainer-reveal--fade-only.bainer-reveal--from-end {
	transform: none !important;
}

.bainer-reveal--fade-only.is-revealed {
	transform: none !important;
	transition: opacity 0.75s var(--bainer-motion-ease) !important;
	transition-delay: calc(var(--reveal-i, 0) * 80ms);
}

.bainer-reveal.is-revealed,
.premium-scroll-reveal.is-revealed {
	opacity: 1;
	transform: none;
	transition:
		opacity 0.9s var(--bainer-motion-ease),
		transform 1.05s var(--bainer-reveal-spring);
}

.bainer-reveal--chain.is-revealed {
	transition-delay: 0ms;
}

/* Hero load (scale settle — safe vs clip-path layout) */
.hero-con:not(.bainer-hero-ready) img {
	transform: scale(1.06);
}

.hero-con.bainer-hero-ready img {
	transform: scale(1);
	transition: transform 1.2s var(--bainer-motion-ease);
}

/* Elementor: fade widgets only — no section-level transform. */
.elementor-page .elementor-widget.bainer-reveal--fade-only {
	transform: none !important;
}

.elementor-page .elementor-widget.bainer-reveal--fade-only.is-revealed {
	transform: none !important;
}

/* AOS manual opt-in */
[data-aos="fade-up"]:not(.aos-animate) {
	transform: translate3d(0, 20px, 0);
}

[data-aos] {
	transition-timing-function: var(--bainer-motion-ease);
	transition-duration: var(--bainer-motion-duration-scroll);
}

/* No scroll motion in header / nav / footer. */
.elementor-location-header [data-aos],
.elementor-location-header .bainer-elementor-aos,
.elementor-location-footer .bainer-reveal,
.site-header [data-aos],
.site-header .bainer-fade-up,
.site-header .bainer-reveal,
.footer-container .bainer-reveal,
footer .bainer-reveal,
.bainer-credit-footer,
.bainer-credit-footer .bainer-reveal {
	opacity: 1 !important;
	transform: none !important;
	transition: none !important;
}

.project-post-item:not(.dummy-card) {
	position: relative;
	cursor: pointer;
}

.project-post-item__link {
	position: absolute;
	inset: 0;
	z-index: 2;
	border-radius: inherit;
}

.project-post-item:not(.dummy-card):hover .post-title {
	color: #2edbe8;
}

.project-post-item:not(.dummy-card):hover .project-post-button:not(.disabled) {
	color: #2edbe8 !important;
	border-color: #2edbe8 !important;
}

.project-post-item .post-thumbnail {
	border-radius: 40px 40px 32px 32px;
}

.project-post-item .post-thumbnail img.bainer-project-card,
.project-post-item .post-thumbnail img {
	border-radius: inherit;
}

/* Image hover — parents need overflow hidden. */
.hero-con,
.project-post-item .post-thumbnail,
.elementor-widget-image .elementor-widget-container,
.elementor-gallery-item,
.elementor-portfolio-item__img {
	overflow: hidden;
}

.hero-con img,
.project-post-item .post-thumbnail img,
.elementor-widget-image img,
.elementor-gallery-item img,
.elementor-portfolio-item__img img,
.elementor-widget-gallery .elementor-gallery-item__image {
	transition: transform var(--bainer-motion-duration) var(--bainer-motion-ease);
	will-change: transform;
}

.hero-con:hover img,
.project-post-item:hover .post-thumbnail img,
.elementor-widget-image:hover img,
.elementor-gallery-item:hover img,
.elementor-portfolio-item:hover .elementor-portfolio-item__img img,
.elementor-widget-gallery .elementor-gallery-item:hover .elementor-gallery-item__image {
	transform: scale(1.04);
}

.project-post-button {
	transition:
		transform 300ms var(--bainer-motion-ease),
		background-color 300ms var(--bainer-motion-ease),
		color 300ms var(--bainer-motion-ease),
		border-color 300ms var(--bainer-motion-ease);
}

.project-post-button:hover:not(.disabled) {
	transform: scale(1.01);
}

.project-post-item:not(.dummy-card):hover .project-post-button:not(.disabled) {
	transform: scale(1.01);
}

/* Forms — border + submit only; never margin on flex children. */
.cf2-form input:not([type="checkbox"]),
.cf2-form textarea,
.hts-contact-details form input:not([type="submit"]),
.hts-contact-details form textarea,
.contact-form input:not([type="submit"]),
.contact-form textarea,
.bainer-contact-form input:not([type="submit"]),
.bainer-contact-form textarea {
	transition: border-color 300ms var(--bainer-motion-ease);
}

.cf2-form input:focus,
.cf2-form textarea:focus,
.hts-contact-details form input:focus:not([type="submit"]),
.hts-contact-details form textarea:focus,
.contact-form input:focus,
.contact-form textarea:focus,
.bainer-contact-form input:focus,
.bainer-contact-form textarea:focus {
	border-color: #2edbe8;
	outline: none;
}

.cf2-form .submit-btn,
.hts-contact-details form input[type="submit"],
.contact-form .submit-btn,
.bainer-contact-form input[type="submit"],
.bainer-related-projects__back-link {
	transition:
		transform 300ms var(--bainer-motion-ease),
		background-color 300ms var(--bainer-motion-ease),
		color 300ms var(--bainer-motion-ease),
		border-color 300ms var(--bainer-motion-ease);
}

.cf2-form .submit-btn:hover,
.hts-contact-details form input[type="submit"]:hover,
.contact-form .submit-btn:hover,
.bainer-contact-form input[type="submit"]:hover,
.bainer-related-projects__back-link:hover {
	transform: scale(1.01);
}

@media (prefers-reduced-motion: reduce) {
	.bainer-reveal,
	.premium-scroll-reveal,
	.hero-con img {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}

	[data-aos] {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}

	.hero-con img,
	.project-post-item .post-thumbnail img,
	.bainer-project-gallery__item img,
	.elementor-widget-image img,
	.elementor-gallery-item img,
	.elementor-portfolio-item__img img,
	.elementor-widget-gallery .elementor-gallery-item__image,
	.project-post-button,
	.cf2-form .submit-btn,
	.hts-contact-details form input[type="submit"],
	.contact-form .submit-btn,
	.bainer-contact-form input[type="submit"] {
		transition: none !important;
		transform: none !important;
	}
}

.bainer-motion-off .bainer-reveal,
.bainer-motion-off .premium-scroll-reveal {
	opacity: 1 !important;
	transform: none !important;
	transition: none !important;
}
