/* 
Theme Name: Hello Elementor Child
Theme URI: https://github.com/elementor/hello-theme-child/
Description: Hello Elementor Child is a child theme of Hello Elementor, created by Elementor team
Author: Elementor Team
Author URI: https://elementor.com/
Template: hello-elementor
Version: 2.0.0
Text Domain: hello-elementor-child
License: GNU General Public License v3 or later.
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Tags: flexible-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, rtl-language-support, threaded-comments, translation-ready
*/

/* Add your custom styles here */

html {
	font-family: "General Sans", Arial, sans-serif;
	scroll-behavior: auto !important;
}
body {
	background-color: #fefefe;
	color: #272626;
}
html,
body {
	height: auto;
}

.lenis.lenis-smooth {
	scroll-behavior: auto;
}

.lenis.lenis-smooth [data-lenis-prevent] {
	scroll-behavior: contain;
}

.lenis.lenis-stopped {
	overflow: hidden;
}

.lenis.lenis-scrolling iframe {
	pointer-events: none;
}

:root {
	/* Theme colors */
	--theme-1: #0b6e6e;
	--theme-1-rgb: 11, 110, 110;
	--theme-1-rgba: rgba(11, 110, 110, 1);

	--theme-2: #0e8a8a;
	--theme-2-rgb: 14, 138, 138;
	--theme-2-rgba: rgba(14, 138, 138, 1);

	--color-orange: #f0872b;
	--color-orange-rgb: 240, 135, 43;
	--color-orange-rgba: rgba(240, 135, 43, 1);

	--color-off-white: #faf8f5;
	--color-off-white-rgb: 250, 248, 245;
	--color-off-white-rgba: rgba(250, 248, 245, 1);

	--color-warm-grey: #d8d3cc;
	--color-warm-grey-rgb: 216, 211, 204;
	--color-warm-grey-rgba: rgba(216, 211, 204, 1);

	--color-text: #2b2b2b;
	--color-text-rgb: 43, 43, 43;
	--color-text-rgba: rgba(43, 43, 43, 1);
}

p {
	line-height: 1.75rem !important;
}

.color-t span {
	color: var(--theme-1);
}

.masonry-item:nth-child(even) {
	margin-top: 3rem;
}
/* Optimized to allow SplitText total layout control without overlapping shifts */
.word,
.letter {
	will-change: transform, opacity;
}

header {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	z-index: 9999;
	background: rgba(255, 255, 255, 0.72);
	transition:
		transform 0.35s ease,
		background-color 0.3s ease;
}

header.header-hidden {
	transform: translateY(-100%);
}

header.scrolled {
	background: rgba(255, 255, 255, 0.92);
	backdrop-filter: blur(14px);
	-webkit-backdrop-filter: blur(14px);
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
}

header.scrolled .menu-line {
	background: #000;
}

.service-list {
	list-style: none;
	padding: 0;
	margin: 0;
}

.service-list li {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 14px;
	font-size: 16px;
}

.service-list li i {
	font-size: 20px;
	color: var(--theme-1); /* Change to your theme color */
	flex-shrink: 0;
}

@media (max-width: 767.98px) {
	.service-list li {
		display: flex;
		align-items: center;
		gap: 12px;
		margin-bottom: 10px;
		font-size: 15px;
	}
}

.fist-letter-color .char.first-char {
    color: var(--theme-1);
}

.fist-letter-color .word:nth-of-type(4) .first-char,
.fist-letter-color .word:nth-of-type(6) .first-char,
.fist-letter-color .word:nth-of-type(9) .first-char {
    color: #000 !important;
}

/* Initial hidden state for the project clip-path reveal wipe */
.project-slide img {
	/* clip-path: polygon(0 0, 0 0, 0 100%, 0% 100%); */
	will-change: clip-path, transform;
	transform: scale(1.15); /* Keep our slight scale-down feature */
}

/* Initial hidden clipped layout state for the asymmetric grid */
.project-second .project-live-img {
	clip-path: polygon(0 0, 100% 0, 100% 0, 0 0);
	transform: scale(1.02);
	will-change: clip-path, transform;
	transition: filter 0.4s cubic-bezier(0.25, 1, 0.5, 1);
	filter: brightness(0.9);
}

.project-second .project-live-img:hover {
	filter: brightness(1.05);
}

#project-slides-track {
	will-change: transform;
	transform: translateZ(0);
	backface-visibility: hidden;
}

.project-slide img {
	will-change: transform, clip-path;
	transform: translateZ(0);
}

.project-slide p,
.project-slide .pr-sub-title,
.project-slide .service-list li,
.project-slide .contact-btn {
	opacity: 0;
	transform: translateY(30px);
	will-change: transform, opacity;
}

#menu-toggle {
	position: relative;
	padding: 10px 10px 10px 90px;
	border: 1px solid;
	border-radius: 30px;
}

#menu-toggle:before {
	content: "Menu";
	color: #000;
	font-size: 15px;
	position: absolute;
	left: 10px;
	top: 50%;
	transform: translateY(-50%);
}

/*Navigation CSS*/
/* ==========================================================================
   FULL-SCREEN OVERLAY ACCORDION SUB-MENU
   ========================================================================== */


#header .sub-menu li a,
#full-menu .sub-menu li a,
.sub-menu a[style] {
    opacity: 1 !important;
    transform: none !important;
    translate: none !important;
    visibility: visible !important;
}


/* Parent menu item layout */
#full-menu .menu-item-has-children {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
}

/* Flex wrapper for the parent title link + arrow icon button */
#full-menu .menu-item-has-children > .menu-title-wrap {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
}

/* Arrow Toggle Button Styling */
#full-menu .submenu-toggle-btn {
    background: transparent;
    border: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.25rem;
    color: inherit;
    transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Rotate arrow when sub-menu is active/expanded */
#full-menu .menu-item-has-children.active > .menu-title-wrap .submenu-toggle-btn {
    transform: rotate(180deg);
}

/* Sub-menu accordion hide state */
#full-menu ul.sub-menu {
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    visibility: hidden;
    transition: max-height 0.4s ease-in-out, opacity 0.3s ease, margin-top 0.3s ease;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-top: 0;
    padding: 0;
    list-style: none;
}

#full-menu .sub-menu li {
    display: flex;
    justify-content: center;
}

/* Sub-menu accordion expanded state */
#full-menu .menu-item-has-children.active > ul.sub-menu {
    max-height: 500px; /* Expands to fit sub-items */
    opacity: 1;
    visibility: visible;
    margin-top: 1.5rem;
}

/* Styling sub-menu text smaller than main top-level items */
#full-menu ul.sub-menu li a {
    font-size: 1.5rem !important; /* Scaled down relative to 4xl/6xl top links */
    opacity: 1;
    line-height: 1.2 !important;
    display: inline-block !important;
    font-weight: 300;
    transition: opacity 0.2s ease, color 0.2s ease;
}

#full-menu ul.sub-menu li a:hover {
    opacity: 1;
    color: #000;
}

.icon-w img,
.icon-b img {
	width: 12px;
}

.contact-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.65rem 1.1rem;
	border-radius: 50px;
	background: #ffffff00;
	color: #000;
	text-decoration: none;
	border: 1px solid #000;
	transition: all 0.45s cubic-bezier(0.22, 0.61, 0.36, 1);
	overflow: hidden;
}

.contact-btn:hover {
	background: #000;
	color: #fff;
}

.btn-text {
	transition: transform 0.45s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.icon-wrap {
	position: relative;
	width: 18px;
	height: 18px;
	overflow: hidden;
}

.icon {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	transition:
		transform 0.45s cubic-bezier(0.22, 0.61, 0.36, 1),
		opacity 0.45s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.icon img {
	width: 12px;
}

.icon-black {
	transform: translateX(0);
	opacity: 1;
}

.icon-white {
	transform: translateX(-20px);
	opacity: 0;
}

/* Hover Animation */

.contact-btn:hover .btn-text {
	transform: translateX(4px);
}

.contact-btn:hover .icon-black {
	transform: translateX(20px);
	opacity: 0;
}

.contact-btn:hover .icon-white {
	transform: translateX(0);
	opacity: 1;
}
.project-bg-marquee span {
	display: inline-block;
	flex-shrink: 0;
}
.logo-carousel-item {
  flex-shrink: 0;
}

/* Responsive item math: 6 on Desktop, 4 on Tablet, 3 on Mobile */
.logo-carousel-item {
	flex-shrink: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	padding: 1rem !important;
	background: #ffffff !important;
	height: 120px !important;

	/* Mobile sizing default: 3 items viewport visible minus gaps */
	width: calc((100vw - (2 * 1.5rem)) / 3) !important;
}

@media (min-width: 768px) {
	.logo-carousel-item {
		/* Tablet sizing: 4 items visible */
		width: calc((100vw - (3 * 1.5rem)) / 4) !important;
	}
}

@media (min-width: 1024px) {
	.logo-carousel-item {
		/* Desktop sizing: 6 items visible */
		width: calc((100vw - (5 * 1.5rem)) / 6) !important;
	}
}

.logo-carousel-item img {
	max: 100% !important;
	max-height: 120px;
	object-fit: contain !important;
	opacity: 1 !important;
	transition:
		filter 0.3s ease,
		opacity 0.3s ease;
}

/* Premium gradient fade effect over edges */
.mask-edges {
	-webkit-mask-image: linear-gradient(to right, transparent 0%, black 15%, black 85%, transparent 100%);
	mask-image: linear-gradient(to right, transparent 0%, black 15%, black 85%, transparent 100%);
}

#interactive-pin-container {
	background-color: #0b6e6e;
}

#zoom-image-wrapper {
	will-change: width, height, border-radius;
}

#process-text h2 {
	text-shadow: 0 0 40px rgba(255, 255, 255, 0.15);
}

/* Fixes the line-height offset caused by the rotation point */

.op_left {
	position: absolute;
	left: -30px;
	top: 50%;
	transform: translateY(-50%);
	writing-mode: vertical-lr;
	white-space: nowrap;
}

.op_right {
	position: absolute;
	right: -30px;
	top: 50%;
	transform: translateY(-50%);
	writing-mode: vertical-lr;
	white-space: nowrap;
}

.op_top {
	top: -30px;
}

.op_bottom {
	bottom: -30px;
}

/* Responsive Slide Calculation sizing */
.testimonial-slide {
	width: 100%;
}

@media (min-width: 768px) {
	.testimonial-slide {
		width: 50%;
	}
}

@media (min-width: 1024px) {
	.testimonial-slide {
		width: 33.3333%;
	}
}

/* Pagination Dots Styling styling */
.testi-dot {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background-color: rgba(0, 0, 0, 0.2);
	cursor: pointer;
	transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

.testi-dot.active {
	background-color: #000000;
	transform: scale(1.1);
}

/* Responsive Slide Calculation Sizing */
.testimonial-slide {
	width: 100%;
	transition: z-index 0.3s ease;
}

@media (min-width: 768px) {
	.testimonial-slide {
		width: 50%;
	}
}

@media (min-width: 1024px) {
	.testimonial-slide {
		width: 33.3333%;
	}
}

/* Pagination Dots Sizing */
.testi-dot {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background-color: rgba(0, 0, 0, 0.2);
	cursor: pointer;
	transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

.testi-dot.active {
	background-color: #000000;
	transform: scale(1.2);
}

/* Advanced Text Clamping & Expansion Classes */
.testimonial-card-inner {
	height: 360px; /* Locked compact default height */
	background: rgba(246, 245, 242, 0.75); /* Slight transparency when collapsed */
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
	border: 1px solid rgba(0, 0, 0, 0.06);
	transition:
		background-color 0.3s ease,
		border-color 0.3s ease,
		box-shadow 0.3s ease;
	will-change: height;
}

.testimonial-text-p {
	display: -webkit-box;
	-webkit-line-clamp: 6; /* Clamps to exactly 4 lines initially */
	-webkit-box-orient: vertical;
	overflow: hidden;
	text-overflow: ellipsis;
	transition: color 0.3s ease;
}

/* State when expanded (On Hover / Mobile Tap) */
.testimonial-slide.expanded {
	z-index: 10;
}

.testimonial-slide.expanded .testimonial-card-inner {
	height: auto; /* Allows smooth expansion via GSAP */
	min-height: 360px;
	background: #ffffff !important;
	border-color: rgba(0, 0, 0, 0.12);
	box-shadow: 0 20px 40px -20px rgba(0, 0, 0, 0.12);
}

.testimonial-slide.expanded .testimonial-text-p {
	-webkit-line-clamp: unset; /* Removes text clamping entirely */
	overflow: visible;
}

/* MODERN FOOTER STYLING ARCHITECTURE */
.modern-footer {
	background-color: #024444 !important; /* Premium Custom Dark Teal Canvas Layer */
}

/* Fixed High-Performance Infinite Grid Line Engine */
.footer-grid-bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	overflow: hidden;
	background-color: #024444;
}

.animated-grid-lines {
	position: absolute;
	/* Extra spacing prevents edge clipping during matrix coordinate transformation translation loops */
	top: -100px;
	left: -100px;
	right: -100px;
	bottom: -100px;
	width: calc(100% + 200px);
	height: calc(100% + 200px);
	/* High-contrast crisp wireframe grid lines cutting through the custom base color */
	background-image: linear-gradient(rgba(255, 255, 255, 0.18) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.12) 1px, transparent 1px);
	background-size: 50px 50px;

	/* Hardware acceleration rules forcing rendering on the GPU */
	transform: translate3d(0, 0, 0);
	will-change: transform;
	animation: continuousGridPan 10s linear infinite;
}

/* Linear infinite hardware-accelerated translation loop */
@keyframes continuousGridPan {
	0% {
		transform: translate3d(0, 0, 0);
	}
	100% {
		transform: translate3d(50px, 50px, 0); /* Perfectly matches the 50px grid size for a seamless jump */
	}
}

/* Subtle architectural overlay gradient framing the typography layout */
.footer-grid-overlay {
	background: radial-gradient(circle at 50% 50%, #024444 70%, #02444400 90%);
}

/* Minimalist Social Link Rings Layer Blocks */
.social-circle-link {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, 0.1);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: rgba(255, 255, 255, 0.7);
	transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
	background: rgba(255, 255, 255, 0.02);
}
.social-circle-link:hover {
	color: #ffffff;
	border-color: rgba(255, 255, 255, 0.4);
	background: rgba(255, 255, 255, 0.08);
	transform: translateY(-1px);
}

/* Premium Navigation Link Underlines */
.link-underline::after {
	content: "";
	position: absolute;
	width: 100%;
	transform: scaleX(0);
	height: 1px;
	bottom: -2px;
	left: 0;
	background-color: rgba(255, 255, 255, 0.5);
	transform-origin: bottom right;
	transition: transform 0.25s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.link-underline:hover::after {
	transform: scaleX(1);
	transform-origin: bottom left;
}

/* SMOOTH LAYOUT PERSPECTIVE CRADLES */
.cta-scroll-wrapper {
	position: relative;
	width: 100%;
	/* Dark foundation context to bleed beautifully beneath the card space gap borders */
	background-color: #1f1715;
}

#dynamic-cta {
	will-change: transform;
}

.cta-image-card {
	will-change: width, height, padding, border-radius;
	transform-origin: center center;
}

.cta-bg-asset {
	will-change: transform;
}

.cta-content-matrix {
	will-change: opacity, transform;
	transition: pointer-events 0.1s ease;
}

/* Enables mouse interaction seamlessly once faded in */
.cta-content-matrix.active {
	pointer-events: auto;
}

.myshowcase-card {
	background-color: var(--color-off-white);
}

.myshowcase-card .myshowcase-content {
    height: 100%;
	background-color: var(--color-off-white);
	background-image: url("https://marswebsolution.com/vaibhavinterdecor/wp-content/uploads/2026/08/h1-bg05.png");
	background-position: left;
	background-size: cover;
	background-repeat: no-repeat;
}

/* Prevent layout shifts from the dynamic mobile address bar browser chrome */
@media (max-width: 1023px) {
	#projects-pin-container,
	#myshowcase-viewport,
	#interactive-pin-container,
	#dynamic-cta {
		/* fallback for browsers that don't support svh yet */
		height: 100vh;
		/* Safe modern viewport units that ignore address bar shifts */
		height: 100svh !important;
	}

	.myshowcase-card {
		height: 100svh !important;
	}
}

/* Project Showcase */

.project-showcase {
	position: relative;
	width: 100%;
	height: calc(100vh + (5 * 1200px));
}

.project-showcase-bg {
	position: fixed;
	top: 0;
	left: 0;
	width: 100vw;
	height: 100vh;
	z-index: 0;
	pointer-events: none;
	overflow: hidden;
}

.project-showcase-bg img {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: blur(80px) brightness(0.5);
	transform: scale(1.2);
	opacity: 0;
	transition: opacity 0.8s ease-out;
}

.project-showcase-bg img.active {
	opacity: 1;
}

.project-showcase-sticky {
	position: sticky;
	top: 0;
	width: 100%;
	height: 100vh;
	overflow: hidden;
	perspective: 1200px; /* 3D Camera Depth */
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 1;
}

.project-showcase-wrapper {
	position: relative;
	width: 100%;
	height: 100%;
	transform-style: preserve-3d;
}

/* Horizontal 16:9 Container */
.project-showcase-item {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 600px; /* Base horizontal width */
	max-width: 80vw;
	will-change: transform, opacity;
	opacity: 0;
	color: #ffffff;
}

/* Force 16:9 Ratio on Images */
.project-showcase-item img {
	width: 100%;
	aspect-ratio: 16 / 9; /* Standard widescreen horizontal ratio */
	object-fit: cover;
	border-radius: 8px;
	box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.7);
	margin-top: 0.5rem;
}

@media (max-width: 768px) {
	.project-showcase {
		height: auto !important; /* Unset huge desktop scroll height */
	}

	.project-showcase-sticky {
		position: relative !important;
		top: auto !important;
		height: auto !important;
		overflow: visible !important;
		perspective: none !important;
	}

	.project-showcase-wrapper {
		display: flex;
		flex-direction: column;
		align-items: center;
		gap: 80px; /* Space between vertical stacked items */
		transform-style: flat !important;
	}

	.project-showcase-item {
		position: relative !important;
		top: auto !important;
		left: auto !important;
		width: 100% !important;
		max-width: 100% !important;
		transform: none !important;
		opacity: 1 !important;
		display: flex !important;
		flex-direction: column;
		align-items: center;
		text-align: center;
		color: #000 !important;
	}

	.project-showcase-item img {
		width: 60%; /* Base starting size before GSAP scroll scale */
		margin: 1rem auto 0 auto;
		transition: width 0.1s linear;
	}

	.project-showcase-bg {
		display: none !important; /* Optional: hide background blur on mobile for smooth performance */
	}
}

/* Apply a 0.3s delay to all WOW.js elements */
.wow {
  animation-delay: 0.3s !important;
  -webkit-animation-delay: 0.3s !important;
}

@media(max-width: 767px){
    .mhidden{
	    display: none;
	}
}