/* ==========================================================================
   AJAY BILLA — DESIGN TOKENS + PRIMITIVES
   ==========================================================================
   `.ab-root` is added to <body> by the child theme, so these tokens are
   available to the PHP header/footer AND to everything Elementor renders.

   >>> CHANGE BRAND COLOURS HERE AND NOWHERE ELSE <<<

   These same values are mirrored into Elementor's Global Colors by
   elementor/build-home.php, so the colour picker in the editor matches.
   ========================================================================== */

.ab-root {
	/* ---- BRAND COLOURS ---- */
	--ab-accent:     #4A4EF8;   /* buttons, links, highlights     */
	--ab-accent-ink: #FFFFFF;   /* text on top of accent          */
	--ab-ink:        #0C1424;   /* headings / strong text         */
	--ab-ink-soft:   #667A95;   /* body copy, muted text          */
	--ab-dark:       #0C1424;   /* dark section background        */
	--ab-dark-ink:   #FFFFFF;   /* text on dark sections          */
	--ab-bg:         #FFFFFF;   /* page background                */
	--ab-bg-alt:     #F5F7FB;   /* alternating section background */
	--ab-line:       #E3E8F0;   /* borders & dividers             */
	--ab-card:       #FFFFFF;   /* card background                */

	/* ---- TYPE + RHYTHM ---- */
	--ab-font:      'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
	--ab-serif:     'Instrument Serif', Georgia, serif;
	--ab-radius:    16px;
	--ab-radius-lg: 24px;
	--ab-max:       1200px;
	--ab-pad:       clamp(20px, 5vw, 40px);
	--ab-section:   clamp(64px, 9vw, 120px);
	--ab-header-h:  74px;
}

/* ---------- base ---------- */
*,
*::before,
*::after {
	box-sizing: border-box;
}

/* NOTE: deliberately no `overflow-x:hidden` on body — it turns body into a
   scroll container and silently kills the sticky header. Overflow is clipped
   per-section instead (see .ab-band / .ab-hero). */
body.ab-root {
	font-family: var(--ab-font);
	color: var(--ab-ink);
	background: var(--ab-bg);
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	margin: 0;
}

.ab-root img {
	max-width: 100%;
	height: auto;
}

/* ---------- layout helpers ---------- */
.ab-wrap {
	max-width: var(--ab-max);
	margin-inline: auto;
	padding-inline: var(--ab-pad);
	width: 100%;
}

.ab-alt { background: var(--ab-bg-alt); }

/* ---------- type scale ----------
   Applied to Elementor Heading/Text widgets via the "CSS Classes" field. */
.ab-root .ab-h1,
.ab-root .ab-h1 .elementor-heading-title {
	font-size: clamp(2.4rem, 5.6vw, 4.4rem);
	line-height: 1.04;
	letter-spacing: -0.035em;
	font-weight: 700;
	color: var(--ab-ink);
	margin: 0;
}

.ab-root .ab-h2,
.ab-root .ab-h2 .elementor-heading-title {
	font-size: clamp(1.9rem, 3.6vw, 3rem);
	line-height: 1.08;
	letter-spacing: -0.03em;
	font-weight: 700;
	color: var(--ab-ink);
	margin: 0;
}

.ab-root .ab-h3,
.ab-root .ab-h3 .elementor-heading-title {
	font-size: clamp(1.1rem, 1.6vw, 1.35rem);
	line-height: 1.25;
	letter-spacing: -0.015em;
	font-weight: 600;
	color: var(--ab-ink);
	margin: 0;
}

.ab-root .ab-lead,
.ab-root .ab-lead p:last-child {
	font-size: clamp(1.02rem, 1.35vw, 1.18rem);
	color: var(--ab-ink-soft);
	margin-bottom: 0;
}

.ab-root .ab-lead p { color: var(--ab-ink-soft); }

/* The serif italic accent used inside headlines. Wrap words in
   <em class="ab-em">…</em> inside any Heading widget. */
.ab-root .ab-em,
.ab-root em.ab-em {
	font-family: var(--ab-serif);
	font-style: italic;
	font-weight: 400;
	letter-spacing: -0.01em;
}

/* ---------- eyebrow ---------- */
.ab-root .ab-eyebrow,
.ab-root .ab-eyebrow .elementor-heading-title {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ab-ink-soft);
	line-height: 1.4;
	margin: 0;
}

.ab-root .ab-eyebrow .elementor-heading-title::before,
.ab-root .ab-eyebrow.ab-eyebrow--plain::before {
	content: "";
	width: 22px;
	height: 1px;
	background: currentColor;
	opacity: 0.6;
	flex: 0 0 22px;
}

/* ---------- buttons ----------
   Applied to Elementor Button widgets. `.elementor-button` is the anchor. */
.ab-root .ab-btn .elementor-button,
.ab-root a.ab-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: 14px 26px;
	border-radius: 999px;
	font-weight: 600;
	font-size: 0.95rem;
	line-height: 1.2;
	text-decoration: none;
	white-space: nowrap;
	border: 0;
	transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}

.ab-root .ab-btn .elementor-button:focus-visible,
.ab-root a.ab-btn:focus-visible {
	outline: 2px solid var(--ab-accent);
	outline-offset: 3px;
}

/* primary */
.ab-root .ab-btn--primary .elementor-button,
.ab-root a.ab-btn--primary {
	background: var(--ab-accent);
	color: var(--ab-accent-ink);
	box-shadow: 0 8px 24px -10px color-mix(in srgb, var(--ab-accent) 70%, transparent);
}
.ab-root .ab-btn--primary .elementor-button:hover,
.ab-root a.ab-btn--primary:hover {
	transform: translateY(-2px);
	color: var(--ab-accent-ink);
	box-shadow: 0 14px 30px -10px color-mix(in srgb, var(--ab-accent) 75%, transparent);
}

/* dark */
.ab-root .ab-btn--dark .elementor-button,
.ab-root a.ab-btn--dark {
	background: var(--ab-ink);
	color: #fff;
}
.ab-root .ab-btn--dark .elementor-button:hover,
.ab-root a.ab-btn--dark:hover { transform: translateY(-2px); color: #fff; }

/* ghost */
.ab-root .ab-btn--ghost .elementor-button,
.ab-root a.ab-btn--ghost {
	border: 1px solid var(--ab-line);
	background: transparent;
	color: var(--ab-ink);
}
.ab-root .ab-btn--ghost .elementor-button:hover,
.ab-root a.ab-btn--ghost:hover { border-color: var(--ab-ink); transform: translateY(-2px); color: var(--ab-ink); }

/* light — for use on dark backgrounds */
.ab-root .ab-btn--light .elementor-button,
.ab-root a.ab-btn--light {
	background: #fff;
	color: var(--ab-ink);
}
.ab-root .ab-btn--light .elementor-button:hover,
.ab-root a.ab-btn--light:hover { transform: translateY(-2px); color: var(--ab-ink); }

/* outline-light — for use on dark backgrounds */
.ab-root .ab-btn--outline-light .elementor-button,
.ab-root a.ab-btn--outline-light {
	border: 1px solid rgba(255, 255, 255, 0.28);
	background: transparent;
	color: #fff;
}
.ab-root .ab-btn--outline-light .elementor-button:hover,
.ab-root a.ab-btn--outline-light:hover { border-color: #fff; transform: translateY(-2px); color: #fff; }

/* Keep button widgets inline-sized instead of stretching their flex row. */
.ab-root .ab-btn {
	display: inline-flex;
	width: auto;
	flex: 0 0 auto;
}

/* ---------- scroll reveal ---------- */
.ab-reveal {
	opacity: 0;
	transform: translateY(22px);
	transition: opacity 0.6s cubic-bezier(0.22, 0.61, 0.36, 1), transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.ab-reveal.is-in { opacity: 1; transform: none; }

/* Never hide content from the Elementor editor or from no-JS visitors. */
.elementor-editor-active .ab-reveal,
.elementor-editor-preview .ab-reveal,
.no-js .ab-reveal { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
	.ab-root *,
	.ab-root *::before,
	.ab-root *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
	.ab-reveal { opacity: 1; transform: none; }
}

/* ---------- accessibility ---------- */
.ab-root .skip-link:focus {
	position: fixed;
	top: 12px;
	left: 12px;
	z-index: 999;
	background: var(--ab-ink);
	color: #fff;
	padding: 12px 18px;
	border-radius: 8px;
	width: auto;
	height: auto;
	clip: auto;
	clip-path: none;
}
