/* ................................................... page banner animation ...................................................... */  
  
  /* Tile Animation Styles for WordPress Page Banner */
  .page_banner {
    position: relative;
    overflow: hidden;
  }

  .page_banner .banner-tile-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: grid;
    /* grid-template-columns: repeat(10, 1fr);
    grid-template-rows: repeat(6, 1fr); */
    /* grid-template-columns: repeat(20, 1fr);
    grid-template-rows: repeat(15, 1fr); */
    z-index: 1;
    pointer-events: none;
  }

  .page_banner .banner-tile {
    width: 100%;
    height: 100%;
    /* background-size: 1000% 600%;  */
    /* background-size: 1900% 1400%; */
    transform: scale(0);
    opacity: 0;
    background-repeat: no-repeat;
    background-attachment: scroll;
  }

  .page_banner .e-con-inner {
    position: relative;
    z-index: 2;
  }

    /* Text Animation Styles */
    .page_header,
    .page_subheader {
        opacity: 0;
        transform: scale(0);
        transition: transform 0.6s ease, opacity 0.6s ease;
    }

    .page_header.animate-text,
    .page_subheader.animate-text {
        animation: zoomInOut 1.2s ease forwards;
    }

    @keyframes zoomInOut {
        0% {
        opacity: 0;
        transform: scale(0);
        }
        50% {
        opacity: 1;
        transform: scale(1.2);
        }
        100% {
        opacity: 1;
        transform: scale(1);
        }
    }

    /* Section text animation styles */
    .section_sub_about,
    .section_main_about,
    .section_text {
        opacity: 0;
        transform: scale(0);
        transition: transform 0.6s ease, opacity 0.6s ease;
    }

    .section_sub_about.animate-text,
    .section_main_about.animate-text,
    .section_text.animate-text {
        animation: zoomInOut 1.2s ease forwards;
    }

    /* Section text animation styles for section_main1, section_sub1, and section_text1 */
    .section_main1,
    .section_sub1,
    .section_text1 {
        opacity: 0;
        transform: scale(0);
        /* transition: transform 0.6s ease, opacity 0.6s ease; */
		transition: transform 0.4s ease, opacity 0.4s ease;
    }

    .section_main1.animate-text,
    .section_sub1.animate-text,
    .section_text1.animate-text {
        /* animation: zoomInOut 1.2s ease forwards; */
		animation: zoomInOut 0.6s ease forwards;
    }


/* ..........................................................body images................................................................ */

.splitting.cells {
	width: 100%;
	max-width: 800px;
	height: auto;
}

/* .splitting.cells img {
	width: 100%;
	height: auto;
	display: block;
} */

@supports (display: grid) {
	.splitting.cells {
		position: relative;
		background-size: cover;
		visibility: hidden;
	}

	.splitting .cell-grid {
		background: inherit;
		position: absolute;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		display: grid;
		grid-template: repeat(var(--row-total), 1fr) / repeat(var(--col-total), 1fr);
	}

	.splitting .cell {
		background: inherit;
		position: relative;
		overflow: hidden;
		transition: 0.8s ease-in-out;
		/* Initial state - hidden, no animation on page load */
		opacity: 1;
		transform: translateY(0);
		clip-path: inset(100% 0 0 0); /* Start with content hidden from top */
		/* Animation removed - will be triggered on scroll */
	}
	
	/* Initial state for img-about - hidden on the right */
	.img-about .splitting-wrapper {
		opacity: 0;
		transform: translateX(100px);
		transition: opacity 0.8s ease, transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
	}
	
	/* Trigger animation when .animate-on-scroll class is added - slide from right */
	.img-about .splitting-wrapper.animate-on-scroll {
		opacity: 1;
		transform: translateX(0);
	}
	
	/* Initial state for video-thump-image - hidden on the right (same as img-about) */
	.video-thump-image .splitting-wrapper {
		opacity: 0;
		transform: translateX(100px);
		transition: opacity 0.8s ease, transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
		/* Preserve original design - no max-width constraint */
		max-width: none !important;
		width: 100% !important;
	}
	
	/* Trigger animation when .animate-on-scroll class is added - slide from right */
	.video-thump-image .splitting-wrapper.animate-on-scroll {
		opacity: 1;
		transform: translateX(0);
	}
	
	/* Ensure video-thump-image splitting cells don't constrain width */
	.video-thump-image .splitting.cells {
		max-width: none !important;
		width: 100% !important;
	}
	
	/* Preserve original image styling inside video-thump-image */
	.video-thump-image .splitting-wrapper img {
		width: 100% !important;
		height: auto !important;
		display: block !important;
		max-width: 100% !important;
	}

	/* Initial state for imgAnimate - hidden on the right (same as video-thump-image) */
	.splitting-wrapper.img-animate-wrapper {
		opacity: 0;
		transform: translateX(100px);
		transition: opacity 0.4s ease, transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
	}
	
	/* Trigger animation when .animate-on-scroll class is added - slide from right */
	.splitting-wrapper.img-animate-wrapper.animate-on-scroll {
		opacity: 1;
		transform: translateX(0);
	}
	
	.splitting-wrapper.animate-on-scroll .cell {
		animation: revealFromBottom 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
	}
	
	/* Reset cells when animate-on-scroll is removed to allow retriggering */
	.video-thump-image .splitting-wrapper:not(.animate-on-scroll) .cell,
	.splitting-wrapper.img-animate-wrapper:not(.animate-on-scroll) .cell,
	.step_post_img .splitting-wrapper:not(.animate-on-scroll) .cell,
	.splitting-wrapper.step-post-img-wrapper:not(.animate-on-scroll) .cell {
		clip-path: inset(100% 0 0 0);
		animation: none;
	}


    /* Hide grid lines/cell borders for video-thump-image - make cells overlap slightly to eliminate gaps */
	.video-thump-image .splitting .cell-grid {
		gap: 0 !important;
		border: none !important;
		row-gap: 0 !important;
		column-gap: 0 !important;
		grid-gap: 0 !important;
		overflow: hidden !important;
	}
	
	.video-thump-image .splitting .cell {
		border: none !important;
		outline: none !important;
		margin: -1px !important;
		padding: 0 !important;
		gap: 0 !important;
		box-shadow: none !important;
		background-clip: border-box !important;
		width: calc(100% + 2px) !important;
		height: calc(100% + 2px) !important;
		overflow: hidden !important;
	}
	
	.video-thump-image .splitting .cell-inner {
		border: none !important;
		outline: none !important;
		margin: 0 !important;
		padding: 0 !important;
		box-shadow: none !important;
		width: calc(100% * var(--col-total) + 4px) !important;
		height: calc(100% * var(--row-total) + 4px) !important;
		left: calc(-100% * var(--col-index) - 2px) !important;
		top: calc(-100% * var(--row-index) - 2px) !important;
	}
	
	/* Ensure no visible separations between cells */
	.video-thump-image .splitting.cells {
		border-collapse: collapse !important;
		overflow: hidden !important;
	}
	
	.video-thump-image .splitting-wrapper {
		overflow: hidden !important;
	}

        /* Hide grid lines/cell borders for video-thump-image - make cells overlap slightly to eliminate gaps */
	.post-img .splitting .cell-grid {
		gap: 0 !important;
		border: none !important;
		row-gap: 0 !important;
		column-gap: 0 !important;
		grid-gap: 0 !important;
		overflow: hidden !important;
	}
	
	.post-img .splitting .cell {
		border: none !important;
		outline: none !important;
		margin: -1px !important;
		padding: 0 !important;
		gap: 0 !important;
		box-shadow: none !important;
		background-clip: border-box !important;
		width: calc(100% + 2px) !important;
		height: calc(100% + 2px) !important;
		overflow: hidden !important;
	}
	
	.post-img .splitting .cell-inner {
		border: none !important;
		outline: none !important;
		margin: 0 !important;
		padding: 0 !important;
		box-shadow: none !important;
		width: calc(100% * var(--col-total) + 4px) !important;
		height: calc(100% * var(--row-total) + 4px) !important;
		left: calc(-100% * var(--col-index) - 2px) !important;
		top: calc(-100% * var(--row-index) - 2px) !important;
	}
	
	/* Ensure no visible separations between cells */
	.post-img .splitting.cells {
		border-collapse: collapse !important;
		overflow: hidden !important;
	}
	
	.post-img .splitting-wrapper {
		overflow: hidden !important;
	}

    /* Hide grid lines/cell borders for video-thump-image - make cells overlap slightly to eliminate gaps */
	.img-about .splitting .cell-grid {
		gap: 0 !important;
		border: none !important;
		row-gap: 0 !important;
		column-gap: 0 !important;
		grid-gap: 0 !important;
		overflow: hidden !important;
	}
	
	.img-about .splitting .cell {
		border: none !important;
		outline: none !important;
		margin: -1px !important;
		padding: 0 !important;
		gap: 0 !important;
		box-shadow: none !important;
		background-clip: border-box !important;
		width: calc(100% + 2px) !important;
		height: calc(100% + 2px) !important;
		overflow: hidden !important;
	}
	
	.img-about .splitting .cell-inner {
		border: none !important;
		outline: none !important;
		margin: 0 !important;
		padding: 0 !important;
		box-shadow: none !important;
		width: calc(100% * var(--col-total) + 4px) !important;
		height: calc(100% * var(--row-total) + 4px) !important;
		left: calc(-100% * var(--col-index) - 2px) !important;
		top: calc(-100% * var(--row-index) - 2px) !important;
	}
	
	/* Ensure no visible separations between cells */
	.img-about .splitting.cells {
		border-collapse: collapse !important;
		overflow: hidden !important;
	}
	
	.img-about .splitting-wrapper {
		overflow: hidden !important;
	}
	
	/* Counter about animation - slide in from left */
	.img-about .counter_about,
	.img-about .counter-about,
	.counter_about,
	.counter-about,
	.img-about [class*="counter"] {
		opacity: 0;
		transform: translateX(-100px);
		transition: opacity 0.3s ease, transform 0.3s cubic-bezier(.34, 1.56, .64, 1);
		will-change: opacity, transform;
	}
	
	.img-about .counter_about.counter-visible,
	.img-about .counter-about.counter-visible,
	.counter_about.counter-visible,
	.counter-about.counter-visible,
	.img-about [class*="counter"].counter-visible {
		opacity: 1;
		transform: translateX(0);
	}
	
	/* Stagger animation delays for bottom-to-top reveal - columns appear left to right */
	.splitting .cell:nth-child(1) {
		animation-delay: 0s; /* Leftmost column appears first */
	}
	.splitting .cell:nth-child(2) {
		animation-delay: 0.2s; /* Second column */
	}
	.splitting .cell:nth-child(3) {
		animation-delay: 0.4s; /* Third column */
	}
	.splitting .cell:nth-child(4) {
		animation-delay: 0.6s; /* Rightmost column appears last */
	}

	.splitting:hover .cell:nth-child(1) {
		transition: 0.3s ease-in-out;
		transition-delay: 0.1s;
		transform: translateY(10%) !important;
	}
	.splitting:hover .cell:nth-child(2) {
		transition: 0.4s ease-in-out;
		transition-delay: 0.1s;
		transform: translateY(-4%) !important;
	}
	.splitting:hover .cell:nth-child(3) {
		transition: 0.3s ease-in-out;
		transform: translateY(6%) !important;
	}
	.splitting:hover .cell:nth-child(4) {
		transition: 0.2s ease-in-out;
		transition-delay: 0.15s;
		transform: translateY(4%) !important;
	}
	.splitting:hover .cell:nth-child(5) {
		transition: 0.4s ease-in-out;
		transition-delay: 0.05s;
		transform: translateY(-10%) !important;
	}

	.splitting .cell-inner {
		background: inherit;
		position: absolute;
		visibility: visible;
		/* Size to fit the whole container size */
		width: calc(100% * var(--col-total));
		height: calc(100% * var(--row-total));
		/* Position properly */
		left: calc(-100% * var(--col-index));
		top: calc(-100% * var(--row-index));
	}

	/* Helper variables for advanced effects */
	.splitting .cell {
		--center-x: calc((var(--col-total) - 1) / 2);
		--center-y: calc((var(--row-total) - 1) / 2);

		/* Offset from center, positive & negative */
		--offset-x: calc(var(--col-index) - var(--center-x));
		--offset-y: calc(var(--row-index) - var(--center-y));

		/* Absolute distance from center, only positive */
		--distance-x: calc((var(--offset-x) * var(--offset-x)) / var(--center-x));

		/* Absolute distance from center, only positive */
		--distance-y: calc((var(--offset-y) * var(--offset-y)) / var(--center-y));
	}

	/* Animation for revealing cells from bottom to top - slices stay anchored at bottom */
	@keyframes revealFromBottom {
		0% {
			clip-path: inset(100% 0 0 0); /* Fully hidden from top */
		}
		100% {
			clip-path: inset(0 0 0 0); /* Fully revealed */
		}
	}
	
}

.splitting-wrapper {
	position: sticky;
	top: 0;
	z-index: 10;
}

/* ....................................................... chair ...................................................... */


.container {
    text-align: center;
    position: relative;
}

.animation-wrapper {
    position: relative;
    display: inline-block;
    background: transparent;
    border-radius: 20px;
    padding: 20px;
}

#wheelchair-animation {
    max-width: 100%;
    height: auto;
    display: block;
    image-rendering: crisp-edges;
    image-rendering: -webkit-optimize-contrast;
}

/* ..................................................... banner text .......................................... */

/* Force inline layout for letters */
.custom-icon div h1,
.wheel_class div h1,
.chair_class div h1 {
    display: inline-flex;
    align-items: center;
    overflow: hidden;
}

/* Impact wrapper */
.impact-wrap {
    display: inline-block;
    will-change: transform;
}

/* Letter pop animation */
.letter {
    display: inline-block;
    opacity: 0;
    transform: scale(0.5);
    animation: appearInPlace 0.3s cubic-bezier(.2,1,.3,1) forwards;
}

@keyframes appearInPlace {
    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* Impact shake */
.hit {
    animation: impact 0.45s ease-out;
}

@keyframes impact {
    0% { transform: translate(0,0); }
    30% { transform: translate(var(--x), var(--y)); }
    60% { transform: translate(calc(var(--x) * -0.6), calc(var(--y) * -0.6)); }
    100% { transform: translate(0,0); }
}

/* First letter crash animation */
.c-special {
    display: inline-block;
    transform: translateX(-120vw);
    animation: cCrash 0.45s cubic-bezier(.1,.9,.2,1) forwards;
}

@keyframes cCrash {
    70% { transform: translateX(14px); }
    85% { transform: translateX(-5px); }
    100% { transform: translateX(0); }
}


.custom-icon h1::before {
    opacity: 0;
    transform: scale(0.3);
    pointer-events: none;
    transition: opacity 0.5s ease, transform 0.5s ease;
}

.custom-icon h1.icon-show::before {
    opacity: 1;
    transform: scale(1);
}

/* ..................................................... ban-box animation .......................................... */

.ban-box-1,
.ban-box-2,
.ban-box-3 {
    opacity: 0;
    transform: scale(0.3);
    will-change: transform, opacity;
}

.ban-box-1.ban-box-animate,
.ban-box-2.ban-box-animate,
.ban-box-3.ban-box-animate {
    opacity: 1;
    animation: banBoxZoomIn 0.6s cubic-bezier(.34, 1.56, .64, 1) forwards;
}

@keyframes banBoxZoomIn {
    0% {
        opacity: 0;
        transform: scale(0.3);
    }
    60% {
        opacity: 1;
        transform: scale(1.15);
    }
    100% {
        opacity: 1;
        transform: scale(1);
    }
}

/* ..................................................... site logo animation .......................................... */

/* =================================================
   NO-ZOOM SMOOTH REVEAL (FIXED)
   ================================================= */

/* Loader */
.page-loader {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    pointer-events: none;
}

/* GIF */
.preloader-gif {
    max-width: 80%;
    max-height: 80%;
    will-change: transform, opacity;
    transition:
        transform 700ms cubic-bezier(0.22, 1, 0.36, 1),
        opacity 600ms ease;
}

/* -----------------------------------------
   INITIAL STATE (NO TRANSFORM → NO ZOOM)
------------------------------------------*/
body:not(.is-revealing) > *:not(.page-loader):not(.hero-logo-animated) {
    opacity: 0;
}

/* -----------------------------------------
   CONTENT REVEAL (PURE FADE — STABLE)
------------------------------------------*/
body.is-revealing > *:not(.page-loader):not(.hero-logo-animated) {
    opacity: 1;
    transition: opacity 1.1s ease;
}

/* Gentle stagger (visual polish, no layout shift) */
body.is-revealing header { transition-delay: 0.05s; }
body.is-revealing main   { transition-delay: 0.12s; }
body.is-revealing footer { transition-delay: 0.18s; }

/* -----------------------------------------
   FINAL CLEANUP
------------------------------------------*/
body.is-active .page-loader {
    display: none;
}

/* Logo always stable */
.hfe-site-logo-img {
    opacity: 1 !important;
    transform: none !important;
}

/* -----------------------------------------
   REAL LOGO REVEAL ANIMATION
------------------------------------------*/
.hfe-site-logo-img {
    opacity: 0;
    transform: scale(0.96);
    transition:
        opacity 420ms ease,
        transform 520ms cubic-bezier(0.22, 1, 0.36, 1);
}

/* When logo reveal starts */
body.logo-reveal .hfe-site-logo-img {
    opacity: 1;
    transform: scale(1);
}

/* -----------------------------------------
   GIF EXIT POLISH
------------------------------------------*/
.preloader-gif.exit {
    transition:
        transform 420ms cubic-bezier(0.22, 1, 0.36, 1),
        opacity 300ms ease;
    opacity: 0;
    transform: scale(0.92);
}


/* Frozen PNG replacement */
.preloader-freeze {
    position: fixed;
    will-change: transform, opacity;
    transform-origin: center center;
    z-index: 100000;
    opacity: 1;
    transition: none;
}

/* PNG exit (fade + tiny shrink) */
.preloader-freeze.exit {
    transition:
        transform 400ms cubic-bezier(0.22, 1, 0.36, 1),
        opacity 350ms ease;
    opacity: 0;
    transform: scale(0.94);
}

/* ///////////////////////////////////////////////// */
/* .hfe-site-logo-img {
	display: block;
	margin: 0 auto;
	max-width: 15%;
	height: auto;
	animation: zoomIn 2s ease-out forwards;
	transform-origin: center center;
}

@keyframes zoomIn {
	0% {
		transform: scale(15);
		opacity: 0;
	}
	100% {
		transform: scale(1);
		opacity: 1;
	}
} */

/* ..................................................... menu hover animation .......................................... */

.menu-item a.hfe-menu-item {
    position: relative;
    display: inline-block;
    transition: all 0.3s ease;
}

.menu-item a.hfe-menu-item::before,
.menu-item a.hfe-menu-item::after {
    content: '';
    position: absolute;
    width: 0;
    height: 3px;
    background-color: var(--e-global-color-primary);
    transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.menu-item a.hfe-menu-item::before {
    top: 10px;
    left: 0;
}

.menu-item a.hfe-menu-item::after {
    bottom: 10px;
    right: 0;
}

.menu-item a.hfe-menu-item:hover::before {
    width: 30%;
}

.menu-item a.hfe-menu-item:hover::after {
    width: 40%;
}

/* ..................................................... star_about animation .......................................... */

.elementor-element.star_about {
	opacity: 0;
	transform: translateX(100px);
	transition: opacity 0.3s ease, transform 0.3s cubic-bezier(.34, 1.56, .64, 1);
	will-change: opacity, transform;
}

.elementor-element.star_about.star-visible {
	opacity: 1;
	transform: translateX(0);
}

/* ..................................................... site_fav animation .......................................... */

.site_fav,
.site-fav {
	opacity: 0;
	transform: scale(0.3) rotate(-180deg);
	transition: opacity 0.6s ease, transform 0.6s cubic-bezier(.34, 1.56, .64, 1);
	will-change: opacity, transform;
	cursor: pointer;
}

.site_fav.site-fav-visible,
.site-fav.site-fav-visible {
	opacity: 1;
	transform: scale(1) rotate(0deg);
}

/* Hover animation for site_fav */
.site_fav:hover,
.site-fav:hover {
	transform: scale(1.1) rotate(5deg);
	transition: transform 0.3s cubic-bezier(.34, 1.56, .64, 1);
}

.site_fav.site-fav-visible:hover,
.site-fav.site-fav-visible:hover {
	transform: scale(1.1) rotate(5deg);
}

/* ..................................................... card-section animation .......................................... */

/* Card1 - slide from left */
.card-section .card1,
.card-section [class*="card1"],
.card-section [class*="card-1"],
.card-section > *:nth-child(1).card-slide-left {
	opacity: 0;
	transform: translateX(-100px);
	transition: opacity 0.8s ease, transform 0.8s cubic-bezier(.34, 1.56, .64, 1);
	will-change: opacity, transform;
}

.card-section .card1.card-slide-left,
.card-section [class*="card1"].card-slide-left,
.card-section [class*="card-1"].card-slide-left,
.card-section > *:nth-child(1).card-slide-left {
	opacity: 1;
	transform: translateX(0);
}

/* Card2 - slide from bottom */
.card-section .card2,
.card-section [class*="card2"],
.card-section [class*="card-2"],
.card-section > *:nth-child(2).card-slide-bottom {
	opacity: 0;
	transform: translateY(100px);
	transition: opacity 0.8s ease, transform 0.8s cubic-bezier(.34, 1.56, .64, 1);
	will-change: opacity, transform;
}

.card-section .card2.card-slide-bottom,
.card-section [class*="card2"].card-slide-bottom,
.card-section [class*="card-2"].card-slide-bottom,
.card-section > *:nth-child(2).card-slide-bottom {
	opacity: 1;
	transform: translateY(0);
}

/* Card3 - slide from right */
.card-section .card3,
.card-section [class*="card3"],
.card-section [class*="card-3"],
.card-section > *:nth-child(3).card-slide-right {
	opacity: 0;
	transform: translateX(100px);
	transition: opacity 0.8s ease, transform 0.8s cubic-bezier(.34, 1.56, .64, 1);
	will-change: opacity, transform;
}

.card-section .card3.card-slide-right,
.card-section [class*="card3"].card-slide-right,
.card-section [class*="card-3"].card-slide-right,
.card-section > *:nth-child(3).card-slide-right {
	opacity: 1;
	transform: translateX(0);
}

/* /////////////////////////////////////////////////////////////////////////// */

/* Hover Effects Animation - Expanding Overlay */
.hover-effects {
    position: relative;
    overflow: hidden;
}

.hover-effects::before {
    content: "";
    position: absolute;
    bottom: 5%;
    right: 1.5em;
    width: 3.5em;
    height: 3.5em;
    background: var(--e-global-color-primary);
    border-radius: 50%;
    transition: all 0.5s ease;
    z-index: 1;
    pointer-events: none;
    opacity: 0;
}

.hover-effects:hover::before {
    bottom: 0;
    right: 0;
    width: 100%;
    height: 100%;
    border-radius: 0;
    opacity: 1;
}

.hover-effects > * {
    position: relative;
    z-index: 2;
}

.hover-effects:hover img {
    filter: brightness(0) invert(1);
    transition: filter 0.5s ease;
}

.hover-effects:hover .elementor-heading-title {
    color: #fff !important;
    transition: color 0.5s ease;
}

.hover-effects:hover .elementor-widget-container {
    color: #fff;
    transition: color 0.5s ease;
}


/* h2-spans word reading animation styles */
.h2-spans h2 .word-span {
	display: inline-block;
	transition: color 0.3s ease-in-out;
	color: inherit; /* Default color - inherit from h2 */
}
.h2-spans h2 .word-span.highlighted {
	color: var(--e-global-color-primary);
}
/* ..................................................... home-main-banner scroll parallax effect .......................................... */

/* Underline animation for h2 */
.home_process .process_wrapper .process_block > h2::after{content: '';position: absolute;left: 0;bottom: -4px;width: 0;height: 2px;background-color: var(--e-global-color-primary);transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1);}
/* .home_process .process_wrapper .process_block.animate-underline > h2::after{width: 100%;} */
/* Faster retract speed when scrolling up */
/* .home_process.process-fast-retract .process_wrapper .process_block:not(.last)::after{
    transition-duration: 0.50s;
} */


.home_process  .process_wrapper::before{
    /* content: '';
    display: inline-block;
    width: 1px;
    left: 44px;
    top: 87px;
    bottom: 35px;
    border-right: 3px dashed #000;
    position: absolute; */
    /* Use CSS variable (0 to 1) to control visible length from TOP to BOTTOM */
    /* progress = 0   -> hide full line (bottom inset 100%) */
    /* progress = 1   -> show full line (bottom inset 0%)   */
    /* clip-path: inset(0 0 calc((1 - var(--process-progress, 0)) * 100%) 0);
    transition: clip-path 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94); */


    content: '';
    display: inline-block;
    width: 1px;
    left: 44px;
    top: 38px;
    bottom: 90px;
    border-right: 3px dashed #000;
    position: absolute;
    clip-path: inset(0 0 calc((1 - var(--process-progress, 0)) * 100%) 0);
    transition: clip-path 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94);

}

.process_wrapper.page_wrap::before{
    content: '';
    display: inline-block;
    width: 1px;
    left: 56px;
    top: 38px;
    bottom: 90px;
    border-right: 3px dashed #000;
    position: absolute;
    clip-path: inset(0 0 calc((1 - var(--process-progress, 0)) * 100%) 0);
    transition: clip-path 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94);

}

/* ..................................................... step_post_title & process_content word/marker animation .......................................... */

/* Base word state for titles & rich content (p, li, etc) */
.process_wrapper.page_wrap .step_post_title .word-span,
.process_wrapper.page_wrap .process_content .word-span {
    display: inline-block;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 0.2s ease-out, transform 0.2s ease-out;
}

/* When parent gets animate-words, reveal words */
.process_wrapper.page_wrap .step_post_title.animate-words .word-span,
.process_wrapper.page_wrap .process_content p.animate-words .word-span,
.process_wrapper.page_wrap .process_content li.animate-words .word-span {
    opacity: 1;
    transform: translateY(0);
}

/* Bullet marker animation for list items
   Hidden until AFTER the list text has animated in */
.process_wrapper.page_wrap .process_content ul li::marker {
    opacity: 0;
    transition: opacity 0.2s ease-out;
}

.process_wrapper.page_wrap .process_content ul li.marker-animated::marker {
    opacity: 1;
}

/* ///////////////////////////// slider ///////////////////////////// */


/* .silvercare_features-list .owl-stage-outer {
    overflow: visible;
}

.silvercare_features-list .owl-item {
    transform-origin: center center;
    will-change: transform, opacity;
} */


.silvercare_features-list .owl-stage-outer {
    overflow: visible;
}

.silvercare_features-list .owl-item {
    transform-origin: center center;
    will-change: transform, opacity;
    backface-visibility: hidden;
}


/* ..................................................... process_img1 & process_img2 slide animations .......................................... */

/* Base state: hidden & offset */
.process_img1,
.process_img2 {
    opacity: 0;
    transition: opacity 0.8s ease, transform 0.8s cubic-bezier(.34, 1.56, .64, 1);
    will-change: opacity, transform;
}

/* process_img1 - slide from top (up) */
.process_img1 {
    transform: translateY(-100px);
}

/* process_img2 - slide from bottom */
.process_img2 {
    transform: translateY(100px);
}

/* When animated class is added on scroll, both settle into place */
.process_img1.img-slide-animated,
.process_img2.img-slide-animated {
    opacity: 1;
    transform: translateY(0);
}

/* ............................................. img-splinting ............................................. */

	/* Initial state for step_post_img - hidden on the right (same as imgAnimate) */
	.step_post_img .splitting-wrapper,
	.splitting-wrapper.step-post-img-wrapper {
		opacity: 0;
		transform: translateX(100px);
		transition: opacity 0.4s ease, transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
	}
	
	/* Trigger animation when .animate-on-scroll class is added - slide from right */
	.step_post_img .splitting-wrapper.animate-on-scroll,
	.splitting-wrapper.step-post-img-wrapper.animate-on-scroll {
		opacity: 1;
		transform: translateX(0);
	}
	
/* .........................Hide grid lines/cell borders for video-thump-image - make cells overlap slightly to eliminate gaps..................... */
	.step_post_img .splitting .cell-grid {
		gap: 0 !important;
		border: none !important;
		row-gap: 0 !important;
		column-gap: 0 !important;
		grid-gap: 0 !important;
		overflow: hidden !important;
	}
	
	.step_post_img .splitting .cell {
		border: none !important;
		outline: none !important;
		margin: -1px !important;
		padding: 0 !important;
		gap: 0 !important;
		box-shadow: none !important;
		background-clip: border-box !important;
		width: calc(100% + 2px) !important;
		height: calc(100% + 2px) !important;
		overflow: hidden !important;
	}
	
	.step_post_img .splitting .cell-inner {
		border: none !important;
		outline: none !important;
		margin: 0 !important;
		padding: 0 !important;
		box-shadow: none !important;
		width: calc(100% * var(--col-total) + 4px) !important;
		height: calc(100% * var(--row-total) + 4px) !important;
		left: calc(-100% * var(--col-index) - 2px) !important;
		top: calc(-100% * var(--row-index) - 2px) !important;
	}
	
	/* Ensure no visible separations between cells */
	.step_post_img .splitting.cells {
		border-collapse: collapse !important;
		overflow: hidden !important;
	}
	
	.step_post_img .splitting-wrapper {
		overflow: hidden !important;
	}


    /* Base hidden state */
.team_block .video_block,
.team_block .team_img,
.team_block h3,
.team_block p {
    opacity: 0;
    transform: translateY(40px) scale(0.96);
    transition: all 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Visible state */
.team_block.animate .video_block,
.team_block.animate .team_img {
    opacity: 1;
    transform: translateY(0) scale(1);
}

/* Title animation */
.team_block.animate h3 {
    opacity: 1;
    transform: translateY(0);
    transition-delay: 0.15s;
}

/* Paragraph animation */
.team_block.animate p {
    opacity: 1;
    transform: translateY(0);
    transition-delay: 0.3s;
}

/* Performance boost */
.team_block {
    will-change: transform, opacity;
}


/* ///cursor// */

.custom-cursor {
    position: fixed;
    top: 0;
    left: 0;
    width: 20px;
    height: 20px;
    background: #6d011ec4;
    border: 2px solid var(--e-global-color-primary);
    border-radius: 50%;
    pointer-events: none;
    transform: translate(-50%, -50%);
    z-index: 10000;
    transition:
        width 0.2s ease,
        height 0.2s ease,
        background 0.2s ease,
        transform 0.15s ease;
    will-change: transform;
}

/* body {
    cursor: none;
} */

.custom-cursor.cursor-hover {
    transform: translate(-50%, -50%) scale(1.6);
    background: rgba(243, 96, 21, 0.25);
}


/* ..................................................... process_img1 & process_img2 slide animations .......................................... */

/* Base state: hidden & offset */
.process_img1,
.process_img2 {
    opacity: 0;
    transition: opacity 0.8s ease, transform 0.8s cubic-bezier(.34, 1.56, .64, 1);
    will-change: opacity, transform;
}

/* process_img1 - slide from top (up) */
.process_img1 {
    transform: translateY(-100px);
}

/* process_img2 - slide from bottom */
.process_img2 {
    transform: translateY(100px);
}

/* When animated class is added on scroll, both settle into place */
.process_img1.img-slide-animated,
.process_img2.img-slide-animated {
    opacity: 1;
    transform: translateY(0);
}

/* ..................................................... button_animation unique animation .......................................... */

/* Initial state - hidden with transform */
.button_animation {
    position: relative;
    opacity: 0;
    transform: scale(0.5) rotate(-15deg) translateY(30px);
    transition: opacity 0.6s ease, transform 0.6s cubic-bezier(.34, 1.56, .64, 1);
    will-change: opacity, transform;
    overflow: hidden;
}

/* Animated state - reveal with bounce effect on scroll */
.button_animation.animate-button {
    opacity: 1;
    animation: buttonReveal 0.8s cubic-bezier(.34, 1.56, .64, 1) forwards;
}

/* Unique reveal animation with bounce and rotation */
@keyframes buttonReveal {
    0% {
        opacity: 0;
        transform: scale(0.5) rotate(-15deg) translateY(30px);
    }
    40% {
        opacity: 0.8;
        transform: scale(1.15) rotate(5deg) translateY(-5px);
    }
    65% {
        transform: scale(0.95) rotate(-2deg) translateY(2px);
    }
    85% {
        transform: scale(1.05) rotate(1deg) translateY(-1px);
    }
    100% {
        opacity: 1;
        transform: scale(1) rotate(0deg) translateY(0);
    }
}

/* Shimmer/glow effect overlay - enhanced glow */
.button_animation::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.6), transparent);
    transition: left 0.6s ease, opacity 0.3s ease;
    z-index: 1;
    pointer-events: none;
    opacity: 0;
}

/* Trigger shimmer on hover - enhanced shine effect */
.button_animation:hover::before {
    left: 100%;
    opacity: 1;
}

/* Hover effect - enhanced lift and glow */
.button_animation:hover {
    transform: translateY(-3px) scale(1.02);
    /* box-shadow: 0 15px 40px rgba(0, 0, 0, 0.25), 0 0 20px rgba(255, 255, 255, 0.3); */
    transition: transform 0.3s cubic-bezier(.34, 1.56, .64, 1), box-shadow 0.3s ease;
    filter: brightness(1.1);
}

/* Active state - press down effect */
.button_animation:active {
    transform: translateY(1px) scale(0.98);
    transition: transform 0.1s ease;
}

/* Pulse effect (optional - can be toggled with class) */
.button_animation.button-pulse {
    animation: buttonReveal 0.8s cubic-bezier(.34, 1.56, .64, 1) forwards,
               buttonPulse 2s ease-in-out infinite 0.8s;
}

@keyframes buttonPulse {
    0%, 100% {
        box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.2);
    }
    50% {
        box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
    }
}