/* ============================================================
   BizSensei Motion 1.4.4 — motion language for bizsensei.co.in
   Brand: monochrome base (#0b0b0b / #fff / grays) +
   poppy accents in small doses (never the highlight):
     --bs-pop1 #FF4D00 vivid orange
     --bs-pop2 #2456E6 electric blue
     --bs-pop3 #E91E8C hot pink
     --bs-pop4 #FFC700 bright yellow (dark backgrounds / dots only)
   Everything is prefixed bs- to avoid theme collisions.
   ============================================================ */

/* ---------- 0. Pop accent utilities ---------- */
.bs-pop-1 { --bs-pop: #FF4D00; }
.bs-pop-2 { --bs-pop: #2456E6; }
.bs-pop-3 { --bs-pop: #E91E8C; }
.bs-pop-4 { --bs-pop: #FFC700; }
/* small uppercase kicker label in the accent color */
.bs-kicker {
	color: var(--bs-pop, #FF4D00);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .14em;
	font-size: 13px;
}

/* ---------- 1. Intro wipe ---------- */
#bs-intro {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #111;
	transition: transform .8s cubic-bezier(.76, 0, .24, 1);
}
#bs-intro.bs-done { transform: translateY(-101%); }
#bs-intro .bs-intro-word {
	color: #fff;
	font-weight: 800;
	font-size: clamp(28px, 5vw, 54px);
	letter-spacing: -0.02em;
	opacity: 0;
	animation: bsIntroIn .6s ease .1s forwards;
}
#bs-intro .bs-intro-word span { color: #FF4D00; }
@keyframes bsIntroIn {
	from { opacity: 0; transform: translateY(18px); }
	to   { opacity: 1; transform: none; }
}

/* ---------- 2. Scroll reveals ---------- */
.bs-reveal {
	opacity: 0;
	transform: translateY(34px);
	transition:
		opacity .7s ease,
		transform .7s cubic-bezier(.22, .61, .36, 1);
	transition-delay: var(--bs-d, 0s);
	will-change: opacity, transform;
}
.bs-reveal.bs-in { opacity: 1; transform: none; }

/* ---------- 3. Rotating hero word ---------- */
.bs-rotator {
	display: inline-block;
	position: relative;
	color: var(--bs-pop, #FF4D00);
	transition: opacity .32s ease, transform .32s ease, color .32s ease;
}
.bs-rotator.bs-rot-out { opacity: 0; transform: translateY(-14px); }
.bs-rotator.bs-rot-in  { animation: bsRotIn .42s cubic-bezier(.22, .61, .36, 1); }
@keyframes bsRotIn {
	from { opacity: 0; transform: translateY(14px); }
	to   { opacity: 1; transform: none; }
}

/* ---------- 4. Marquee tickers ---------- */
.bs-marquee {
	overflow: hidden;
	white-space: nowrap;
	padding: 18px 0;
	user-select: none;
}
.bs-marquee-track {
	display: inline-flex;
	align-items: center;
	gap: 3.2rem;
	padding-right: 3.2rem;
	animation: bsMarquee 26s linear infinite;
	will-change: transform;
}
.bs-marquee-track span {
	font-weight: 800;
	text-transform: uppercase;
	font-size: clamp(34px, 6vw, 84px);
	letter-spacing: -0.02em;
	line-height: 1;
}
.bs-marquee-dark { background: #0b0b0b; color: #fff; }
.bs-marquee-pop { background: #FF4D00; color: #0b0b0b; }
/* separators (✦) pick up alternating pop colors on the dark ticker */
.bs-marquee-dark .bs-marquee-track span:nth-child(4n+2) { color: #FF4D00; }
.bs-marquee-dark .bs-marquee-track span:nth-child(4n+4) { color: #2456E6; }
.bs-marquee-outline .bs-marquee-track span {
	color: transparent;
	-webkit-text-stroke: 1.5px #111;
}
@keyframes bsMarquee { to { transform: translateX(-50%); } }

/* ---------- 5. Cards (product showcase) ---------- */
.bs-card {
	transition: transform .45s cubic-bezier(.22, .61, .36, 1), box-shadow .45s ease;
	border-radius: 6px;
}
.bs-card:hover { transform: translateY(-8px); }
.bs-card h3 { position: relative; display: inline-block; }
.bs-card h3::before {
	content: "";
	position: absolute;
	left: -18px;
	top: 50%;
	width: 9px;
	height: 9px;
	margin-top: -4px;
	border-radius: 50%;
	background: var(--bs-pop, #FF4D00);
	transform: scale(0);
	transition: transform .3s cubic-bezier(.34, 1.56, .64, 1);
}
.bs-card:hover h3::before { transform: scale(1); }

/* ---------- 6. Custom cursor badge over cards ---------- */
.bs-cursor {
	position: fixed;
	left: 0; top: 0;
	width: 92px; height: 92px;
	margin: -46px 0 0 -46px;
	border-radius: 50%;
	background: #fff;
	color: #111;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	pointer-events: none;
	z-index: 99990;
	opacity: 0;
	transform: scale(.4);
	transition: opacity .25s ease, transform .25s cubic-bezier(.34, 1.56, .64, 1);
	box-shadow: 0 10px 30px rgba(0,0,0,.18);
}
.bs-cursor.bs-on { opacity: 1; transform: scale(1); }
@media (pointer: coarse) { .bs-cursor { display: none; } }
.bs-card, .bs-card a { cursor: pointer; }

/* ---------- 7. hellomonday-style fullscreen menu ---------- */
.vlt-navbar.vlt-navbar--main {
	position: fixed !important;
	top: 0; left: 0; right: 0;
	height: auto;
	background: transparent !important;
	box-shadow: none !important;
	z-index: 300;
	animation: none !important;
	transition: none;
}
body.admin-bar .vlt-navbar.vlt-navbar--main { top: 32px; }
@media screen and (max-width: 782px) {
	body.admin-bar .vlt-navbar.vlt-navbar--main { top: 46px; }
}
.vlt-navbar.vlt-navbar--main .vlt-navbar-inner {
	height: auto;
	min-height: 0;
	padding-top: 22px;
}
/* hide every trace of the theme's own navigation */
.vlt-nav--default { display: none !important; }
.vlt-menu-burger { display: none !important; }
.vlt-nav--default .sf-menu ul.sub-menu { display: none !important; }
/* burger: fixed top-right, three thin lines, bottom one shorter */
.bs-burger {
	position: fixed;
	top: 22px; right: max(20px, 3vw);
	width: 44px; height: 44px;
	display: flex; flex-direction: column;
	justify-content: center; align-items: flex-end;
	gap: 4px;
	background: none; border: none; cursor: pointer;
	padding: 0;
	z-index: 700;
}
body.admin-bar .bs-burger { top: 54px; }
@media screen and (max-width: 782px) {
	body.admin-bar .bs-burger { top: 68px; }
}
.bs-burger span {
	display: block;
	height: 2px;
	background: #0b0b0b;
	transition: transform .45s cubic-bezier(.76, 0, .24, 1), opacity .3s ease, width .45s cubic-bezier(.76, 0, .24, 1), background-color .3s ease;
}
.bs-burger span:nth-child(1) { width: 24px; }
.bs-burger span:nth-child(2) { width: 24px; }
.bs-burger span:nth-child(3) { width: 15px; }
.bs-burger.open span { background: #fff; }
.bs-burger.open span:nth-child(1) { width: 26px; transform: translateY(6px) rotate(45deg); }
.bs-burger.open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.bs-burger.open span:nth-child(3) { width: 26px; transform: translateY(-6px) rotate(-45deg); }
/* fullscreen overlay */
.bs-fullmenu {
	position: fixed; inset: 0;
	z-index: 600;
	background: #0b0b0b;
	visibility: hidden;
	clip-path: circle(0px at calc(100% - 42px) 44px);
	transition: clip-path .8s cubic-bezier(.76, 0, .24, 1), visibility 0s linear .8s;
}
body.admin-bar .bs-fullmenu { clip-path: circle(0px at calc(100% - 42px) 76px); }
.bs-fullmenu.open {
	visibility: visible;
	clip-path: circle(142% at calc(100% - 42px) 44px);
	transition: clip-path .8s cubic-bezier(.76, 0, .24, 1), visibility 0s;
}
body.admin-bar .bs-fullmenu.open { clip-path: circle(142% at calc(100% - 42px) 76px); }
.bs-fmlogo {
	position: absolute;
	top: 24px; left: 32px;
}
body.admin-bar .bs-fmlogo { top: 56px; }
.bs-fmlogo img {
	height: 40px; width: auto;
	filter: invert(1);
}
/* big links, right-center, staggered entrance */
.bs-fmlinks {
	position: absolute;
	left: 56%; top: 50%;
	transform: translateY(-50%);
	display: flex; flex-direction: column;
	gap: 6px;
	max-height: 76vh;
	overflow-y: auto;
	padding-right: 40px;
}
.bs-fmrow {
	opacity: 0;
	transform: translateY(28px);
	transition: opacity .55s ease, transform .55s cubic-bezier(.22, .61, .36, 1);
	transition-delay: 0s;
}
.bs-fullmenu.open .bs-fmrow {
	opacity: 1;
	transform: none;
	transition-delay: var(--d, 0s);
}
.bs-fmlink {
	position: relative;
	display: inline-block;
	font-size: clamp(40px, 5.4vw, 72px);
	font-weight: 800;
	line-height: 1.12;
	letter-spacing: -0.015em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
	transition: color .25s ease;
}
.bs-fmlink::before {
	content: "";
	position: absolute;
	left: -30px; top: 50%;
	width: 11px; height: 11px;
	border-radius: 50%;
	background: #fff;
	transform: translateY(-50%) scale(0);
	transition: transform .3s cubic-bezier(.34, 1.56, .64, 1);
}
.bs-fmlink:hover::before { transform: translateY(-50%) scale(1); }
.bs-fmlink:hover { color: #FF4D00; }
.bs-fmsubs {
	display: flex; flex-wrap: wrap;
	gap: 6px 18px;
	margin: 8px 0 10px 4px;
	max-width: 420px;
}
.bs-fmsubs a {
	font-size: 13px; font-weight: 600;
	text-transform: uppercase; letter-spacing: .06em;
	color: #8f8f8f; text-decoration: none;
	transition: color .25s ease;
	white-space: nowrap;
}
.bs-fmsubs a:hover { color: #fff; }
/* footer strip inside the menu */
.bs-fmfoot {
	position: absolute;
	left: 32px; right: 32px; bottom: 38px;
	display: flex; gap: 30px;
	opacity: 0;
	transition: opacity .5s ease .45s;
}
.bs-fullmenu.open .bs-fmfoot { opacity: 1; }
.bs-fmfoot a {
	font-size: 14px; font-weight: 600;
	letter-spacing: .04em;
	color: #8f8f8f; text-decoration: none;
	transition: color .25s ease;
}
.bs-fmfoot a:hover { color: #fff; }
body.bs-menulock { overflow: hidden; }
@media (max-width: 768px) {
	.bs-fmlinks {
		left: 0; right: 0;
		align-items: center;
		text-align: center;
		padding: 0 24px;
	}
	.bs-fmlink { font-size: 35px; }
	.bs-fmlink::before { display: none; }
	.bs-fmsubs { justify-content: center; margin-left: 0; }
	.bs-fmfoot { justify-content: center; left: 24px; right: 24px; }
	.bs-fmlogo { left: 24px; }
}

/* ---------- 8. Back to top ---------- */
#bs-top {
	position: fixed;
	right: 26px; bottom: 26px;
	width: 52px; height: 52px;
	border-radius: 50%;
	border: none;
	background: #111;
	color: #fff;
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
	z-index: 99980;
	opacity: 0;
	transform: translateY(16px);
	transition: opacity .35s ease, transform .35s ease, background .25s ease;
	box-shadow: 0 8px 24px rgba(0,0,0,.22);
}
#bs-top.bs-show { opacity: 1; transform: none; }
#bs-top:hover { background: #FF4D00; }

/* ---------- 9. Scroll cue (hero) ---------- */
.bs-scroll-cue {
	width: 26px; height: 46px;
	border: 2px solid #111;
	border-radius: 14px;
	position: relative;
	margin: 26px auto 0;
	opacity: .75;
}
.bs-scroll-cue::after {
	content: "";
	position: absolute;
	left: 50%; top: 8px;
	width: 6px; height: 6px;
	margin-left: -3px;
	border-radius: 50%;
	background: var(--bs-pop, #FF4D00);
	animation: bsCue 1.8s cubic-bezier(.45, 0, .55, 1) infinite;
}
@keyframes bsCue {
	0%   { transform: translateY(0); opacity: 1; }
	70%  { transform: translateY(18px); opacity: 0; }
	100% { transform: translateY(0); opacity: 0; }
}

/* ---------- 10. Click-to-copy email hint ---------- */
a[href^="mailto:"].bs-copy { position: relative; }
.bs-copy-tip {
	position: absolute;
	left: 50%; bottom: calc(100% + 8px);
	transform: translateX(-50%) translateY(4px);
	background: #111;
	color: #fff;
	font-size: 12px;
	font-weight: 600;
	padding: 6px 12px;
	border-radius: 20px;
	white-space: nowrap;
	opacity: 0;
	pointer-events: none;
	transition: opacity .25s ease, transform .25s ease;
	z-index: 50;
}
.bs-copy-tip.bs-show { opacity: 1; transform: translateX(-50%); }

/* ---------- 11. Buttons: subtle lift ---------- */
.elementor-button, .wp-block-button__link, button[type="submit"] {
	transition: transform .3s cubic-bezier(.22, .61, .36, 1), box-shadow .3s ease, background-color .3s ease !important;
}
.elementor-button:hover, .wp-block-button__link:hover { transform: translateY(-2px); }

/* ---------- 12. Hero staged entrance ---------- */
[data-entrance] {
	opacity: 0;
	transform: translateY(38px);
	transition: opacity .8s ease, transform .95s cubic-bezier(.22, .61, .36, 1);
	transition-delay: var(--ed, 0s);
}
[data-entrance].bs-in { opacity: 1; transform: none; }

/* ---------- 13. Clip reveal for artwork ---------- */
.bs-clip {
	clip-path: inset(10% 8% 10% 8% round 14px);
	transition: clip-path 1.1s cubic-bezier(.22, .61, .36, 1);
}
.bs-clip.bs-in { clip-path: inset(0 0 0 0 round 14px); }

/* ---------- 14. Word-split heading reveal ---------- */
.bs-w { display: inline-block; overflow: hidden; vertical-align: bottom; padding-bottom: .09em; margin-bottom: -.09em; }
.bs-wi {
	display: inline-block;
	transform: translateY(115%);
	transition: transform .85s cubic-bezier(.22, .61, .36, 1);
	transition-delay: var(--wd, 0s);
	will-change: transform;
}
.bs-split-in .bs-wi { transform: none; }

/* ---------- 15. (retired: theme nav replaced by fullscreen menu) ---------- */

/* ---------- 16. Selection ---------- */
::selection { background: #FF4D00; color: #fff; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
	#bs-intro { display: none; }
	.bs-reveal { opacity: 1; transform: none; transition: none; }
	[data-entrance] { opacity: 1; transform: none; transition: none; }
	.bs-clip { clip-path: none; transition: none; }
	.bs-wi { transform: none; transition: none; }
	.bs-marquee-track { animation: none; }
	.bs-scroll-cue::after { animation: none; }
	.bs-fullmenu { clip-path: none; transition: opacity .3s ease, visibility .3s; opacity: 0; }
	.bs-fullmenu.open { opacity: 1; visibility: visible; }
	.bs-fmrow { opacity: 1; transform: none; transition: none; }
}

/* ---------- 17. Page transition wipe ---------- */
#bs-pagewipe {
	position: fixed; inset: 0;
	z-index: 99990;
	background: #0b0b0b;
	transform: translateY(101%);
	transition: transform .62s cubic-bezier(.76, 0, .24, 1);
	pointer-events: none;
}
#bs-pagewipe.bs-go { transform: none; pointer-events: all; }

/* ---------- 18. Blur-rise heading reveals ---------- */
.bs-blur {
	opacity: 0;
	filter: blur(14px);
	transform: translateY(28px);
	transition:
		opacity .9s ease,
		filter .9s ease,
		transform .9s cubic-bezier(.22, .61, .36, 1);
	transition-delay: var(--bs-d, 0s);
	will-change: opacity, filter, transform;
}
.bs-blur.bs-in { opacity: 1; filter: blur(0); transform: none; }

/* ---------- 19. Hero aura ---------- */
.bs-hero { position: relative; overflow: hidden; }
.bs-hero::before {
	content: "";
	position: absolute; inset: -20%;
	background:
		radial-gradient(42% 42% at 28% 32%, rgba(255,77,0,.10), transparent 70%),
		radial-gradient(42% 42% at 72% 62%, rgba(36,86,230,.10), transparent 70%),
		radial-gradient(30% 30% at 55% 20%, rgba(233,30,140,.07), transparent 70%);
	filter: blur(50px);
	pointer-events: none;
	animation: bsAura 14s ease-in-out infinite alternate;
}
@keyframes bsAura {
	from { transform: translate(-4%, -2%) scale(1); }
	to   { transform: translate(4%, 3%) scale(1.08); }
}
.bs-hero > * { position: relative; z-index: 1; }

/* ---------- 20. Spotlight cards ---------- */
.bs-card, .bs-product, .bs-service, .bs-price-card { position: relative; }
.bs-spot {
	position: absolute; inset: 0;
	border-radius: inherit;
	pointer-events: none;
	opacity: 0;
	transition: opacity .45s ease;
	background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 50%), color-mix(in srgb, var(--bs-pop, #FF4D00) 14%, transparent), transparent 65%);
	z-index: 2;
}
.bs-card:hover .bs-spot, .bs-product:hover .bs-spot,
.bs-service:hover .bs-spot, .bs-price-card:hover .bs-spot { opacity: 1; }

/* ---------- 21. Button sheen ---------- */
.bs-btn { position: relative; overflow: hidden; }
.bs-btn::after {
	content: "";
	position: absolute; top: 0; left: -80%;
	width: 45%; height: 100%;
	background: linear-gradient(100deg, transparent, rgba(255,255,255,.38), transparent);
	transform: skewX(-20deg);
	transition: left .65s ease;
	pointer-events: none;
}
.bs-btn:hover::after { left: 135%; }

/* ---------- 22. Film grain ---------- */
body::after {
	content: "";
	position: fixed; inset: 0;
	z-index: 1500;
	pointer-events: none;
	opacity: .05;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
}

/* ---------- 23. Custom scrollbar ---------- */
::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-track { background: #ececec; }
::-webkit-scrollbar-thumb { background: #0b0b0b; border-radius: 8px; border: 2px solid #ececec; }
::-webkit-scrollbar-thumb:hover { background: #FF4D00; }

/* aura on inner page heroes too */
.bs-pagehero { position: relative; overflow: hidden; }
.bs-pagehero::before {
	content: "";
	position: absolute; inset: -20%;
	background:
		radial-gradient(42% 42% at 28% 32%, rgba(255,77,0,.08), transparent 70%),
		radial-gradient(42% 42% at 72% 62%, rgba(36,86,230,.08), transparent 70%);
	filter: blur(50px);
	pointer-events: none;
	animation: bsAura 16s ease-in-out infinite alternate;
}
.bs-pagehero > * { position: relative; z-index: 1; }

/* ---------- 24. Scroll backlight (glow reveal) ---------- */
.bs-hl {
	text-shadow: 0 0 0 rgba(255,77,0,0);
	transition: text-shadow 1.2s ease;
}
.bs-hl.bs-in {
	text-shadow: 0 0 14px rgba(255,77,0,.26), 0 0 42px rgba(255,77,0,.10);
}
.bs-services .bs-hl.bs-in, .bs-cta .bs-hl.bs-in {
	text-shadow: 0 0 10px rgba(255,255,255,.32), 0 0 34px rgba(255,77,0,.20);
}
