/* ==========================================================================
   Best Choice Technologies Toolkit -- shared design tokens
   Brand colors match the existing bestchoiceerp invoice/PDF branding so the
   website and the client-facing documents feel like one company.
   ========================================================================== */
:root {
	--bct-navy: #112E88;
	--bct-navy-dark: #0C1F60;
	--bct-navy-light: #1E58A6;
	--bct-orange: #FB6F11;
	--bct-orange-dark: #D9560A;
	--bct-peach: #FFC79A;
	--bct-peach-tint: #FFF3E8;
	--bct-ink: #1e293b;
	--bct-muted: #64748b;
	--bct-border: #e2e8f0;
	--bct-radius: 14px;
	--bct-shadow: 0 20px 40px -20px rgba(17, 46, 136, 0.35);
	--bct-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

/* ---- Buttons -------------------------------------------------------- */
.bct-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 14px 28px;
	border-radius: 999px;
	font-weight: 600;
	font-size: 15px;
	text-decoration: none;
	transition: transform 0.25s var(--bct-ease), box-shadow 0.25s var(--bct-ease), background-color 0.25s var(--bct-ease), color 0.25s var(--bct-ease);
	white-space: nowrap;
	border: 2px solid transparent;
	cursor: pointer;
}
.bct-btn:hover { transform: translateY(-2px); }
.bct-btn--primary { background: var(--bct-orange); color: #fff; box-shadow: 0 12px 24px -10px rgba(251, 111, 17, 0.6); }
.bct-btn--primary:hover { background: var(--bct-orange-dark); color: #fff; }
.bct-btn--dark { background: var(--bct-navy); color: #fff; box-shadow: 0 12px 24px -10px rgba(17, 46, 136, 0.5); }
.bct-btn--dark:hover { background: var(--bct-navy-dark); color: #fff; }
.bct-btn--accent { background: #fff; color: var(--bct-navy); }
.bct-btn--accent:hover { background: var(--bct-peach-tint); color: var(--bct-navy); }
.bct-btn--ghost { border-color: rgba(255,255,255,0.65); color: #fff; background: transparent; }
.bct-btn--ghost:hover { background: rgba(255,255,255,0.12); color: #fff; }
.bct-btn--ghost-light { border-color: rgba(255,255,255,0.5); color: #fff; background: transparent; }
.bct-btn--ghost-light:hover { background: rgba(255,255,255,0.15); }

/* ==========================================================================
   Inner-page Hero -- photo background + navy gradient wash, used on every
   page except the homepage (which has the full slider instead).
   ========================================================================== */
.bct-page-hero {
	position: relative;
	background-size: cover;
	background-position: center;
}
.bct-page-hero::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(135deg, rgba(12,31,96,0.94) 0%, rgba(17,46,136,0.88) 50%, rgba(30,88,166,0.8) 100%);
}
.bct-page-hero > .elementor-container { position: relative; z-index: 1; }

/* ==========================================================================
   Hero Slider
   ========================================================================== */
.bct-hero-slider {
	position: relative;
	width: 100%;
	overflow: hidden;
	background: var(--bct-navy-dark);
}
.bct-hero-slider__track { position: relative; width: 100%; height: 100%; }

.bct-hero-slide {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
	opacity: 0;
	visibility: hidden;
	transition: opacity 1.1s var(--bct-ease);
	display: flex;
	align-items: center;
}
.bct-hero-slide.is-active { opacity: 1; visibility: visible; z-index: 2; }

/* Ken Burns zoom (only meaningfully visible while a slide is active) */
.bct-hero-slider[data-effect="zoom"] .bct-hero-slide { animation: bct-kenburns 12s linear forwards paused; }
.bct-hero-slider[data-effect="zoom"] .bct-hero-slide.is-active { animation-play-state: running; }
@keyframes bct-kenburns {
	from { background-size: 108%; }
	to { background-size: 122%; }
}

/* Slide transition (translate) */
.bct-hero-slider[data-effect="slide"] .bct-hero-slide {
	transition: opacity 0.9s var(--bct-ease), transform 0.9s var(--bct-ease);
	transform: translateX(30px);
}
.bct-hero-slider[data-effect="slide"] .bct-hero-slide.is-active { transform: translateX(0); }

/* ---- Abstract (no-photo) background -- the default look until real
   photography exists. Layered glow gradients drift slowly instead of the
   photo Ken Burns zoom (overridden below, same specificity as the zoom
   rule so it wins cleanly rather than needing !important). ------------- */
.bct-hero-slide--accent-0 { --glow-a: rgba(251,111,17,0.35); --glow-a-pos: 15% 20%; --glow-b: rgba(30,88,166,0.5); --glow-b-pos: 85% 80%; }
.bct-hero-slide--accent-1 { --glow-a: rgba(30,88,166,0.45); --glow-a-pos: 85% 15%; --glow-b: rgba(251,111,17,0.3); --glow-b-pos: 10% 85%; }
.bct-hero-slide--accent-2 { --glow-a: rgba(255,199,154,0.28); --glow-a-pos: 20% 80%; --glow-b: rgba(17,46,136,0.55); --glow-b-pos: 80% 20%; }
.bct-hero-slide--accent-3 { --glow-a: rgba(30,88,166,0.4); --glow-a-pos: 50% 8%; --glow-b: rgba(251,111,17,0.32); --glow-b-pos: 50% 92%; }

.bct-hero-slide--abstract {
	background-color: var(--bct-navy-dark);
	background-image:
		radial-gradient(680px circle at var(--glow-a-pos), var(--glow-a), transparent 60%),
		radial-gradient(620px circle at var(--glow-b-pos), var(--glow-b), transparent 60%),
		radial-gradient(rgba(255,255,255,0.07) 1px, transparent 1px),
		linear-gradient(135deg, #0C1F60 0%, #112E88 55%, #16389c 100%);
	background-size: 160% 160%, 160% 160%, 28px 28px, 100% 100%;
	background-position: 0% 0%, 100% 100%, 0 0, 0 0;
	animation: bct-abstract-drift 22s ease-in-out infinite alternate paused;
}
.bct-hero-slide--abstract.is-active { animation-play-state: running; }
.bct-hero-slider[data-effect="zoom"] .bct-hero-slide--abstract { animation: bct-abstract-drift 22s ease-in-out infinite alternate paused; }
.bct-hero-slider[data-effect="zoom"] .bct-hero-slide--abstract.is-active { animation-play-state: running; }
@keyframes bct-abstract-drift {
	from { background-position: 0% 0%, 100% 100%, 0 0, 0 0; }
	to { background-position: 14% 10%, 86% 90%, 0 0, 0 0; }
}
.bct-hero-slide--abstract .bct-hero-slide__overlay {
	background: linear-gradient(115deg, rgba(9,20,58,0.5) 0%, rgba(9,20,58,0.2) 55%, transparent 100%);
}

/* Decorative floating shapes -- fill the empty right-hand side with a
   tech/software motif (orbit rings, a code bracket watermark, drifting
   particles) rather than leaving it visually flat. */
.bct-hero-slide__shapes {
	position: absolute;
	inset: 0;
	z-index: 1;
	overflow: hidden;
	pointer-events: none;
}
.bct-hero-shape { position: absolute; }
.bct-hero-shape--ring {
	right: 6%; top: 12%;
	width: 380px; height: 380px;
	border: 1.5px solid rgba(255,255,255,0.14);
	border-radius: 50%;
	animation: bct-shape-rotate 50s linear infinite;
}
.bct-hero-shape--ring::before {
	content: '';
	position: absolute;
	top: -1.5px; left: 50%;
	width: 8px; height: 8px;
	margin-left: -4px;
	background: var(--bct-orange);
	border-radius: 50%;
	box-shadow: 0 0 14px 3px rgba(251,111,17,0.7);
}
.bct-hero-shape--ring-2 {
	right: 22%; bottom: 10%;
	width: 210px; height: 210px;
	border: 1.5px dashed rgba(30,88,166,0.4);
	border-radius: 50%;
	animation: bct-shape-rotate-reverse 40s linear infinite;
}
.bct-hero-shape--grid {
	right: 14%; top: 50%;
	width: 130px; height: 130px;
	background-image: radial-gradient(rgba(255,255,255,0.35) 1.5px, transparent 1.5px);
	background-size: 14px 14px;
	opacity: 0.3;
	animation: bct-shape-pulse 6s ease-in-out infinite;
}
.bct-hero-shape--bracket {
	right: 4%; top: 4%;
	font-family: 'Courier New', monospace;
	font-size: 15rem;
	font-weight: 800;
	line-height: 1;
	color: rgba(255,255,255,0.05);
	user-select: none;
}
.bct-hero-shape--dot {
	width: 10px; height: 10px;
	border-radius: 50%;
	background: var(--bct-peach);
	box-shadow: 0 0 16px 4px rgba(255,199,154,0.55);
	animation: bct-shape-float 5s ease-in-out infinite;
}
.bct-hero-shape--dot-1 { right: 32%; top: 24%; animation-delay: 0s; }
.bct-hero-shape--dot-2 { right: 10%; top: 62%; animation-delay: 1.4s; background: var(--bct-navy-light); box-shadow: 0 0 16px 4px rgba(30,88,166,0.55); }
.bct-hero-shape--dot-3 { right: 40%; bottom: 14%; animation-delay: 2.8s; }

@keyframes bct-shape-rotate { to { transform: rotate(360deg); } }
@keyframes bct-shape-rotate-reverse { to { transform: rotate(-360deg); } }
@keyframes bct-shape-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-18px); } }
@keyframes bct-shape-pulse { 0%, 100% { opacity: 0.18; } 50% { opacity: 0.4; } }

@media (max-width: 900px) {
	.bct-hero-shape--bracket { font-size: 9rem; }
	.bct-hero-shape--ring { width: 260px; height: 260px; }
	.bct-hero-shape--ring-2 { width: 150px; height: 150px; }
}
@media (max-width: 640px) {
	.bct-hero-slide__shapes { opacity: 0.6; }
}
@media (prefers-reduced-motion: reduce) {
	.bct-hero-slide--abstract { animation: none; }
	.bct-hero-shape { animation: none; }
}

.bct-hero-slide__overlay {
	position: absolute;
	inset: 0;
	background: rgba(9, 20, 58, 0.55);
	background: linear-gradient(115deg, rgba(9,20,58,0.78) 0%, rgba(9,20,58,0.45) 55%, rgba(9,20,58,0.25) 100%);
}

.bct-hero-slide__content {
	position: relative;
	z-index: 2;
	max-width: 720px;
	padding: 0 6vw;
	color: #fff;
}
@media (min-width: 1025px) {
	.bct-hero-slide__content { max-width: none; width: 70%; }
	.bct-hero-slide__content .bct-hero-slide__subheading,
	.bct-hero-slide__content .bct-hero-slide__heading { max-width: none; text-wrap: wrap; }
}
.bct-hero-slide__eyebrow,
.bct-hero-slide__heading,
.bct-hero-slide__subheading,
.bct-hero-slide__actions {
	opacity: 0;
	transform: translateY(24px);
	transition: opacity 0.7s var(--bct-ease), transform 0.7s var(--bct-ease);
}
.bct-hero-slide.is-active .bct-hero-slide__eyebrow { opacity: 1; transform: none; transition-delay: 0.25s; }
.bct-hero-slide.is-active .bct-hero-slide__heading { opacity: 1; transform: none; transition-delay: 0.4s; }
.bct-hero-slide.is-active .bct-hero-slide__subheading { opacity: 1; transform: none; transition-delay: 0.55s; }
.bct-hero-slide.is-active .bct-hero-slide__actions { opacity: 1; transform: none; transition-delay: 0.7s; }

.bct-hero-slide__eyebrow {
	display: inline-block;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--bct-peach);
	margin-bottom: 18px;
	padding: 6px 14px;
	border: 1px solid rgba(255,199,154,0.5);
	border-radius: 999px;
}
.bct-hero-slide__heading {
	font-size: clamp(2rem, 4.2vw, 3.4rem);
	line-height: 1.12;
	font-weight: 800;
	margin: 0 0 20px;
	text-wrap: balance;
}
.bct-hero-slide__subheading {
	font-size: clamp(1rem, 1.3vw, 1.2rem);
	line-height: 1.6;
	color: #DCE7F8;
	margin: 0 0 32px;
	max-width: 640px;
}
.bct-hero-slide__actions { display: flex; flex-wrap: wrap; gap: 16px; }

.bct-hero-slider__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 5;
	width: 48px;
	height: 48px;
	border-radius: 50%;
	border: 1px solid rgba(255,255,255,0.35);
	background: rgba(255,255,255,0.08);
	backdrop-filter: blur(6px);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background-color 0.25s ease, transform 0.25s ease;
}
.bct-hero-slider__arrow:hover { background: rgba(255,255,255,0.22); transform: translateY(-50%) scale(1.08); }
.bct-hero-slider__arrow--prev { left: 24px; }
.bct-hero-slider__arrow--next { right: 24px; }

.bct-hero-slider__dots {
	position: absolute;
	bottom: 28px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 5;
	display: flex;
	gap: 10px;
}
.bct-hero-slider__dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: rgba(255,255,255,0.4);
	border: none;
	cursor: pointer;
	transition: background-color 0.25s ease, transform 0.25s ease;
	padding: 0;
}
.bct-hero-slider__dot.is-active { background: var(--bct-orange); transform: scale(1.25); }

@media (max-width: 768px) {
	.bct-hero-slider__arrow { display: none; }
	.bct-hero-slide__content { padding: 0 24px; }
}

/* ==========================================================================
   Card Grid
   ========================================================================== */
.bct-card-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 28px;
}
.bct-card {
	background: #fff;
	border: 1px solid var(--bct-border);
	border-radius: var(--bct-radius);
	padding: 34px 28px;
	transition: transform 0.35s var(--bct-ease), box-shadow 0.35s var(--bct-ease), border-color 0.35s ease;
	opacity: 0;
	transform: translateY(28px);
}
.bct-card.bct-in-view {
	animation: bct-fade-up 0.7s var(--bct-ease) forwards;
	animation-delay: var(--bct-delay, 0ms);
}
.bct-card:hover {
	transform: translateY(-8px);
	box-shadow: var(--bct-shadow);
	border-color: transparent;
}
@keyframes bct-fade-up {
	to { opacity: 1; transform: translateY(0); }
}
.bct-card__icon {
	width: 60px;
	height: 60px;
	border-radius: 16px;
	background: var(--bct-peach-tint);
	color: var(--bct-orange);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 24px;
	margin-bottom: 20px;
	transition: transform 0.35s var(--bct-ease);
}
.bct-card:hover .bct-card__icon { transform: scale(1.08) rotate(-4deg); }

/* Photo variant -- a real image bleeds to the card's edges at the top
   instead of the icon badge, for cards backed by a real product/feature
   photo (e.g. products pulled from the Products admin screen). */
.bct-card--photo { padding: 0 28px 34px; overflow: hidden; }
.bct-card__photo {
	margin: 0 -28px 20px;
	height: 160px;
	overflow: hidden;
}
.bct-card__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.5s var(--bct-ease);
}
.bct-card--photo:hover .bct-card__photo img { transform: scale(1.08); }

.bct-card__title { font-size: 19px; font-weight: 700; color: var(--bct-navy); margin: 0 0 10px; }
.bct-card__description { font-size: 14.5px; color: var(--bct-muted); line-height: 1.65; margin: 0 0 18px; }
.bct-card__link { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; font-size: 14px; color: var(--bct-orange); text-decoration: none; }
.bct-card__link:hover { gap: 10px; }
.bct-card__link svg { transition: transform 0.25s ease; }

/* The whole card is the click target when it links somewhere -- an <a>
   wrapping everything, not just the "Learn More" text underneath it. */
.bct-card--clickable { display: block; color: inherit; text-decoration: none; cursor: pointer; }
.bct-card--clickable:hover { color: inherit; }
.bct-card--clickable:hover .bct-card__link { gap: 10px; }

@media (max-width: 1024px) { .bct-card-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .bct-card-grid { grid-template-columns: 1fr; } }

/* ---- "Colorful" card variant -- opt-in via the widget's _css_classes,
   used on the homepage's "What We Do" section. Each card gets its own
   brand-compatible accent color instead of one repeated orange, a colored
   top bar, and a richer multi-property hover transition. Scoped so every
   other place bct_service_grid is used (Services, Products overviews)
   keeps the plain single-accent look unless explicitly opted in. -------- */
.bct-service-grid--colorful .bct-card {
	position: relative;
	overflow: hidden;
	--card-accent: var(--bct-orange);
	--card-accent-dark: var(--bct-orange-dark);
	--card-accent-tint: var(--bct-peach-tint);
}
.bct-service-grid--colorful .bct-card::before {
	content: '';
	position: absolute;
	top: 0; left: 0; right: 0;
	height: 4px;
	background: linear-gradient(90deg, var(--card-accent), var(--card-accent-dark));
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.45s var(--bct-ease);
}
.bct-service-grid--colorful .bct-card:hover::before { transform: scaleX(1); }
.bct-service-grid--colorful .bct-card:nth-child(4n+2) { --card-accent: var(--bct-navy-light); --card-accent-dark: var(--bct-navy); --card-accent-tint: #E8F1FC; }
.bct-service-grid--colorful .bct-card:nth-child(4n+3) { --card-accent: #0EA5A4; --card-accent-dark: #0B7F7E; --card-accent-tint: #E3FBFA; }
.bct-service-grid--colorful .bct-card:nth-child(4n+4) { --card-accent: #7C3AED; --card-accent-dark: #5F27C4; --card-accent-tint: #F1EBFE; }
.bct-service-grid--colorful .bct-card__icon {
	background: var(--card-accent-tint);
	color: var(--card-accent);
	box-shadow: 0 0 0 0 transparent;
	transition: transform 0.45s var(--bct-ease), background 0.4s ease, color 0.35s ease, box-shadow 0.4s ease;
}
.bct-service-grid--colorful .bct-card:hover {
	transform: translateY(-10px);
	border-color: transparent;
	box-shadow: 0 24px 44px -18px color-mix(in srgb, var(--card-accent) 55%, transparent);
}
.bct-service-grid--colorful .bct-card:hover .bct-card__icon {
	transform: scale(1.1) rotate(-6deg);
	background: linear-gradient(135deg, var(--card-accent) 0%, var(--card-accent-dark) 100%);
	color: #fff;
	box-shadow: 0 10px 22px -6px color-mix(in srgb, var(--card-accent) 65%, transparent);
}
.bct-service-grid--colorful .bct-card__link { color: var(--card-accent); }
.bct-service-grid--colorful .bct-card:hover .bct-card__link { color: var(--card-accent-dark); }

/* Premium dotted-glow backdrop -- originally built for the homepage's "What
   We Do" section, generalized as ".bct-section-glow" so any section can opt
   into the same premium treatment (e.g. a product page's benefits strip). */
.bct-section-what-we-do,
.bct-section-glow {
	position: relative;
	overflow: hidden;
	background-color: #FBFCFF;
	background-image:
		radial-gradient(560px circle at 8% 12%, rgba(251,111,17,0.07), transparent 60%),
		radial-gradient(620px circle at 94% 88%, rgba(30,88,166,0.08), transparent 60%);
}
.bct-section-what-we-do::before,
.bct-section-glow::before {
	content: '';
	position: absolute;
	inset: 0;
	background-image: radial-gradient(rgba(17,46,136,0.05) 1px, transparent 1px);
	background-size: 28px 28px;
	mask-image: radial-gradient(ellipse at center, #000 0%, transparent 75%);
	pointer-events: none;
}
.bct-section-what-we-do > .elementor-container,
.bct-section-glow > .elementor-container { position: relative; z-index: 1; }

@media (prefers-reduced-motion: reduce) {
	.bct-service-grid--colorful .bct-card,
	.bct-service-grid--colorful .bct-card__icon,
	.bct-service-grid--colorful .bct-card::before { transition-duration: 0.01ms; }
}

/* ==========================================================================
   Card Slider (autoplay carousel)
   ========================================================================== */
.bct-card-slider {
	position: relative;
	padding: 0 56px;
}
.bct-card-slider__viewport { overflow: hidden; }
.bct-card-slider__track {
	display: flex;
	transition: transform 0.55s var(--bct-ease);
}
.bct-card-slider__slide {
	flex: 0 0 calc(100% / var(--bct-slides-desktop, 3));
	max-width: calc(100% / var(--bct-slides-desktop, 3));
	padding: 6px 14px;
	box-sizing: border-box;
}
.bct-card--slide { height: 100%; box-sizing: border-box; }

.bct-card-slider__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 44px; height: 44px;
	border-radius: 50%;
	border: 1.5px solid var(--bct-border);
	background: #fff;
	color: var(--bct-navy);
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: 0 10px 24px -12px rgba(17,46,136,0.25);
	transition: background-color 0.25s ease, color 0.25s ease, transform 0.25s ease;
	z-index: 2;
}
.bct-card-slider__arrow:hover { background: var(--bct-navy); color: #fff; }
.bct-card-slider__arrow--prev { left: 0; }
.bct-card-slider__arrow--next { right: 0; }

@media (max-width: 1024px) {
	.bct-card-slider__slide { flex-basis: calc(100% / var(--bct-slides-tablet, 2)); max-width: calc(100% / var(--bct-slides-tablet, 2)); }
}
@media (max-width: 640px) {
	.bct-card-slider { padding: 0 8px; }
	.bct-card-slider__slide { flex-basis: calc(100% / var(--bct-slides-mobile, 1)); max-width: calc(100% / var(--bct-slides-mobile, 1)); }
	.bct-card-slider__arrow { display: none; }
}

/* ---- "Other Products" sidebar on individual product pages -- sticks in
   view while scrolling the main column on desktop; on mobile/tablet it
   just falls in normal flow below the main content (no sticky, no benefit
   to it once columns stack). ------------------------------------------- */
.bct-product-aside {
	background: #F8FAFC;
	border: 1px solid var(--bct-border);
	border-radius: var(--bct-radius);
	padding: 28px 24px;
	position: relative;
	overflow: hidden;
}
.bct-product-aside::before {
	content: '';
	position: absolute;
	top: 0; left: 0; right: 0;
	height: 4px;
	background: linear-gradient(90deg, var(--bct-orange), var(--bct-navy-light));
}
.bct-product-aside__heading {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0 0 16px;
}
.bct-product-aside__heading-icon {
	width: 30px;
	height: 30px;
	border-radius: 9px;
	background: linear-gradient(135deg, var(--bct-orange), var(--bct-orange-dark));
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 13px;
	flex-shrink: 0;
}
.bct-product-aside__view-all {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	margin-top: 6px;
	padding: 12px 16px;
	border-radius: 999px;
	background: #fff;
	border: 1.5px solid var(--bct-border);
	color: var(--bct-navy);
	font-weight: 700;
	font-size: 14px;
	transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}
.bct-product-aside__view-all:hover { border-color: var(--bct-orange); color: var(--bct-orange); background: var(--bct-peach-tint); }
@media (min-width: 1025px) {
	/* Sticky, but deliberately NOT height-capped with an internal scroll --
	   that hid all but one card behind an easy-to-miss nested scrollbar.
	   Capping the item count to 4 (see class-products-generator.php) keeps
	   its natural height reasonable without needing to crop it. */
	.bct-product-aside { position: sticky; top: 100px; }
}

/* ==========================================================================
   Feature Showcase
   ========================================================================== */
.bct-showcase {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 64px;
	align-items: center;
}
.bct-showcase--image-left { direction: rtl; }
.bct-showcase--image-left > * { direction: ltr; }
.bct-showcase__media {
	opacity: 0;
	transform: translateY(30px) scale(0.97);
	transition: opacity 0.8s var(--bct-ease), transform 0.8s var(--bct-ease);
}
.bct-showcase__content {
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 0.8s var(--bct-ease) 0.15s, transform 0.8s var(--bct-ease) 0.15s;
}
.bct-showcase.bct-in-view .bct-showcase__media,
.bct-showcase.bct-in-view .bct-showcase__content {
	opacity: 1;
	transform: none;
}
.bct-showcase__media img {
	width: 100%;
	border-radius: var(--bct-radius);
	box-shadow: var(--bct-shadow);
	display: block;
}
.bct-eyebrow {
	display: inline-block;
	font-size: 12.5px;
	font-weight: 700;
	letter-spacing: 1.5px;
	text-transform: uppercase;
	color: var(--bct-orange);
	margin-bottom: 14px;
}
.bct-showcase__title { font-size: clamp(1.5rem, 2.4vw, 2.1rem); font-weight: 800; color: var(--bct-navy); margin: 0 0 16px; line-height: 1.25; }
.bct-showcase__description { font-size: 15.5px; color: var(--bct-muted); line-height: 1.7; margin: 0 0 24px; }
.bct-showcase__features { list-style: none; margin: 0 0 28px; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.bct-showcase__features li { display: flex; align-items: flex-start; gap: 12px; font-size: 15px; color: var(--bct-ink); }
.bct-showcase__features svg { flex-shrink: 0; color: var(--bct-orange); margin-top: 2px; }

@media (max-width: 900px) {
	.bct-showcase { grid-template-columns: 1fr; gap: 32px; }
	.bct-showcase--image-left { direction: ltr; }
}

/* ==========================================================================
   CTA Banner
   ========================================================================== */
.bct-cta-banner {
	position: relative;
	overflow: hidden;
	border-radius: 24px;
	background: linear-gradient(135deg, var(--bct-navy) 0%, var(--bct-navy-dark) 100%);
	padding: 64px 40px;
	text-align: center;
}
.bct-cta-banner__pattern {
	position: absolute;
	inset: 0;
	opacity: 0.5;
	background-image: repeating-linear-gradient(45deg, rgba(255,255,255,0.04) 0 2px, transparent 2px 40px);
}
.bct-cta-banner__content { position: relative; z-index: 1; max-width: 640px; margin: 0 auto; }
.bct-cta-banner__heading { font-size: clamp(1.6rem, 3vw, 2.4rem); font-weight: 800; color: #fff; margin: 0 0 16px; }
.bct-cta-banner__subheading { font-size: 16px; color: #DCE7F8; margin: 0 0 32px; }
.bct-cta-banner__actions { display: flex; flex-wrap: wrap; gap: 16px; justify-content: center; }

/* ==========================================================================
   Quote Request Form
   ========================================================================== */
.bct-quote-form-wrap {
	background: #fff;
	border-radius: var(--bct-radius);
	box-shadow: var(--bct-shadow);
	padding: 40px;
	border: 1px solid var(--bct-border);
}
.bct-quote-form__heading { font-size: 22px; font-weight: 800; color: var(--bct-navy); margin: 0 0 8px; }
.bct-quote-form__description { font-size: 14.5px; color: var(--bct-muted); margin: 0 0 26px; }
.bct-form-row { margin-bottom: 18px; display: flex; flex-direction: column; gap: 6px; }
.bct-form-row--split { flex-direction: row; gap: 18px; }
.bct-form-row--split > div { flex: 1; display: flex; flex-direction: column; gap: 6px; }
.bct-form-row label { font-size: 13.5px; font-weight: 600; color: var(--bct-ink); }
.bct-form-row input,
.bct-form-row select,
.bct-form-row textarea {
	padding: 12px 14px;
	border: 1.5px solid var(--bct-border);
	border-radius: 10px;
	font-size: 14.5px;
	font-family: inherit;
	color: var(--bct-ink);
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
	width: 100%;
	box-sizing: border-box;
}
.bct-form-row input:focus,
.bct-form-row select:focus,
.bct-form-row textarea:focus {
	outline: none;
	border-color: var(--bct-navy-light);
	box-shadow: 0 0 0 4px rgba(30, 88, 166, 0.12);
}
.bct-form-honeypot { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.bct-quote-form__submit { width: 100%; justify-content: center; position: relative; }
.bct-btn__spinner {
	display: none;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	border: 2px solid rgba(255,255,255,0.4);
	border-top-color: #fff;
	animation: bct-spin 0.7s linear infinite;
}
.bct-quote-form__submit.is-loading .bct-btn__spinner { display: inline-block; }
.bct-quote-form__submit.is-loading .bct-btn__label { opacity: 0.75; }
.bct-quote-form__submit:disabled { cursor: not-allowed; opacity: 0.85; }
@keyframes bct-spin { to { transform: rotate(360deg); } }

.bct-form-status { margin: 14px 0 0; font-size: 14px; font-weight: 600; min-height: 1.2em; }
.bct-form-status[data-state="success"] { color: #0a7d32; }
.bct-form-status[data-state="error"] { color: #b91c1c; }

@media (max-width: 600px) {
	.bct-quote-form-wrap { padding: 26px; }
	.bct-form-row--split { flex-direction: column; }
}

/* ==========================================================================
   Stats Bar
   ========================================================================== */
.bct-stats-bar {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 32px;
	text-align: center;
}
.bct-stat__number {
	font-size: clamp(2rem, 3.5vw, 3rem);
	font-weight: 800;
	color: var(--bct-orange);
	line-height: 1;
	margin-bottom: 10px;
}
.bct-stat__label { font-size: 14.5px; font-weight: 600; color: var(--bct-muted); letter-spacing: 0.3px; }
@media (max-width: 768px) { .bct-stats-bar { grid-template-columns: repeat(2, 1fr); gap: 28px; } }

/* ==========================================================================
   Reduced motion
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
	.bct-hero-slide,
	.bct-hero-slide__eyebrow,
	.bct-hero-slide__heading,
	.bct-hero-slide__subheading,
	.bct-hero-slide__actions,
	.bct-card,
	.bct-showcase__media,
	.bct-showcase__content {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
	}
}

/* ==========================================================================
   v2 -- Hero slider: masked word reveal, orbit visual, particles, tabs
   ========================================================================== */
.bct-hero-slider { background: #070F33; isolation: isolate; }
/* Fit the hero (tabs included) inside the first screen below the header. */
@media (min-width: 1025px) {
	.bct-hero-slider { max-height: calc(100vh - 150px); min-height: 600px; }
}

/* Photo layer: a real element (not the slide background) so the Ken Burns
   zoom runs on transform -- GPU-composited and smooth. */
.bct-hero-slide__bg {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
	transform: scale(1.14);
	will-change: transform;
}
.bct-hero-slide.is-active .bct-hero-slide__bg { animation: bct-kb-zoom 14s linear forwards; }
@keyframes bct-kb-zoom { from { transform: scale(1.14); } to { transform: scale(1.02); } }
.bct-hero-slider[data-effect="zoom"] .bct-hero-slide:not(.bct-hero-slide--abstract) { animation: none; }

.bct-hero-slide { transition: opacity 1.2s var(--bct-ease), visibility 1.2s; }
.bct-hero-slide.is-leaving { visibility: visible; z-index: 1; }

.bct-hero-slide__overlay {
	background:
		radial-gradient(900px circle at 0% 100%, rgba(251, 111, 17, 0.28), transparent 55%),
		linear-gradient(180deg, transparent 55%, rgba(7, 15, 51, 0.85) 100%),
		linear-gradient(100deg, rgba(7, 15, 51, 0.94) 0%, rgba(12, 31, 96, 0.8) 42%, rgba(12, 31, 96, 0.45) 72%, rgba(7, 15, 51, 0.6) 100%);
}

.bct-hero-slide__content {
	padding: 0 6vw 70px;
	translate: calc(var(--px, 0) * 8px) calc(var(--py, 0) * 6px);
}
@media (min-width: 1100px) {
	.bct-hero-slider.has-orbit .bct-hero-slide__content { width: 60%; max-width: 860px; }
}

/* Eyebrow: glass pill with the slide number. */
.bct-hero-slide__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 6px 16px 6px 6px;
	border: 1px solid rgba(255, 199, 154, 0.3);
	background: rgba(255, 255, 255, 0.06);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	font-size: 12px;
	letter-spacing: 2.4px;
	margin-bottom: 24px;
}
.bct-hero-slide__eyebrow-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 30px;
	height: 24px;
	padding: 0 8px;
	border-radius: 999px;
	background: linear-gradient(135deg, #FF8A3D, #FB6F11);
	color: #fff;
	font-size: 11px;
	letter-spacing: 0.5px;
	box-shadow: 0 6px 14px -6px rgba(251, 111, 17, 0.8);
}

/* Heading: every word rises out of its own mask. */
.bct-hero-slider .bct-hero-slide__heading {
	opacity: 1;
	transform: none;
	transition: none;
	font-size: clamp(2.3rem, 4.6vw, 4.3rem);
	line-height: 1.06;
	letter-spacing: -0.035em;
	margin: 0 0 24px;
	color: #fff;
}
.bct-w {
	display: inline-block;
	overflow: hidden;
	vertical-align: top;
	padding: 0.04em 0.02em 0.12em;
	margin: -0.04em -0.02em -0.12em;
}
.bct-w > span {
	display: inline-block;
	transform: translateY(110%) rotate(4deg);
	transform-origin: 0 100%;
	transition: transform 0.95s var(--bct-ease);
}
.bct-hero-slide.is-active .bct-w > span {
	transform: none;
	transition-delay: calc(var(--i) * 65ms + 0.3s);
}
.bct-w--accent > span {
	background: linear-gradient(95deg, #FF8A3D 0%, #FB6F11 40%, #FFC79A 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.bct-hero-slide__subheading { font-size: clamp(1rem, 1.25vw, 1.18rem); color: #C9D6F2; max-width: 600px; margin-bottom: 36px; }
.bct-hero-slide.is-active .bct-hero-slide__eyebrow { transition-delay: 0.15s; }
.bct-hero-slide.is-active .bct-hero-slide__subheading { transition-delay: 0.75s; }
.bct-hero-slide.is-active .bct-hero-slide__actions { transition-delay: 0.9s; }
.bct-hero-slide__actions .bct-btn { padding: 15px 28px; }

/* Particle network: faded out on the text side so copy stays crisp. */
.bct-hero-particles {
	position: absolute;
	inset: 0;
	z-index: 3;
	pointer-events: none;
	-webkit-mask-image: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.35) 40%, #000 70%);
	mask-image: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.35) 40%, #000 70%);
}

/* ---- Orbit visual: the logo's globe-and-orbit mark, animated ---------- */
.bct-hero-orbit {
	position: absolute;
	right: 6vw;
	top: 45%;
	width: min(34vw, 520px);
	aspect-ratio: 1;
	transform: translateY(-50%);
	z-index: 4;
	pointer-events: none;
	display: none;
}
@media (min-width: 1100px) { .bct-hero-orbit { display: block; } }
.bct-hero-orbit__inner {
	position: absolute;
	inset: 0;
	translate: calc(var(--px, 0) * -22px) calc(var(--py, 0) * -18px);
	animation: bct-orbit-in 1.4s var(--bct-ease) both 0.2s;
}
@keyframes bct-orbit-in { from { opacity: 0; transform: scale(0.85) rotate(-12deg); } to { opacity: 1; transform: none; } }
.bct-hero-orbit__glow {
	position: absolute;
	inset: 12%;
	border-radius: 50%;
	background: radial-gradient(circle at 35% 35%, rgba(91, 140, 255, 0.45), transparent 60%), radial-gradient(circle at 70% 75%, rgba(251, 111, 17, 0.35), transparent 55%);
	filter: blur(40px);
	animation: bct-breathe-glow 6s ease-in-out infinite;
}
@keyframes bct-breathe-glow { 0%, 100% { opacity: 0.75; transform: scale(1); } 50% { opacity: 1; transform: scale(1.08); } }
.bct-hero-orbit__ring { position: absolute; border-radius: 50%; }
.bct-hero-orbit__ring i {
	position: absolute;
	top: -6px;
	left: 50%;
	width: 12px;
	height: 12px;
	margin-left: -6px;
	border-radius: 50%;
	background: #FB6F11;
	box-shadow: 0 0 18px 4px rgba(251, 111, 17, 0.7);
}
.bct-hero-orbit__ring--1 { inset: 0; border: 1px solid rgba(255, 255, 255, 0.14); animation: bct-shape-rotate 38s linear infinite; }
.bct-hero-orbit__ring--2 { inset: 13%; border: 1.5px dashed rgba(141, 179, 255, 0.35); animation: bct-shape-rotate-reverse 26s linear infinite; }
.bct-hero-orbit__ring--2 i { background: #8DB3FF; box-shadow: 0 0 16px 4px rgba(141, 179, 255, 0.7); width: 9px; height: 9px; margin-left: -4.5px; top: -5px; }
.bct-hero-orbit__ring--2 i + i { top: auto; bottom: -5px; background: #FFC79A; box-shadow: 0 0 14px 3px rgba(255, 199, 154, 0.7); }
.bct-hero-orbit__ring--3 { inset: 25%; border: 1px solid rgba(255, 255, 255, 0.2); animation: bct-shape-rotate 16s linear infinite; }
.bct-hero-orbit__ring--3 i { width: 8px; height: 8px; margin-left: -4px; top: -4px; background: #fff; box-shadow: 0 0 12px 3px rgba(255, 255, 255, 0.6); }
/* The orange swoosh from the logo. */
.bct-hero-orbit__arc {
	position: absolute;
	inset: 6% 2% 10% 2%;
	border-radius: 50%;
	border: 5px solid transparent;
	border-bottom-color: #FB6F11;
	border-left-color: rgba(251, 111, 17, 0.6);
	transform: rotate(-28deg) scaleY(0.62);
	filter: drop-shadow(0 0 14px rgba(251, 111, 17, 0.55));
	animation: bct-arc-sway 9s ease-in-out infinite;
}
@keyframes bct-arc-sway { 0%, 100% { transform: rotate(-28deg) scaleY(0.62); } 50% { transform: rotate(-16deg) scaleY(0.66); } }
.bct-hero-orbit__core {
	position: absolute;
	inset: 34%;
	border-radius: 50%;
	background: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 9%;
	box-shadow: 0 0 0 10px rgba(255, 255, 255, 0.06), 0 0 0 22px rgba(255, 255, 255, 0.03), 0 30px 60px -10px rgba(0, 0, 0, 0.5), 0 0 80px rgba(91, 140, 255, 0.45);
	animation: bct-core-float 7s ease-in-out infinite;
}
.bct-hero-orbit__core img { width: 100%; height: 100%; object-fit: contain; }
.bct-hero-orbit__core b { font-family: var(--bct-font-heading); font-size: 2.4rem; color: #112E88; }
@keyframes bct-core-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }

/* Slide chips orbiting the core -- the active slide's chip lights up. */
.bct-hero-orbit__chip {
	position: absolute;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 16px;
	border-radius: 14px;
	background: rgba(255, 255, 255, 0.07);
	border: 1px solid rgba(255, 255, 255, 0.14);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	color: #DCE7F8;
	font-size: 13px;
	font-weight: 600;
	white-space: nowrap;
	cursor: pointer;
	pointer-events: auto;
	box-shadow: 0 16px 30px -18px rgba(0, 0, 0, 0.6);
	translate: calc(var(--px, 0) * -14px) calc(var(--py, 0) * -10px);
	transition: background 0.5s ease, color 0.4s ease, border-color 0.4s ease, box-shadow 0.5s ease, scale 0.5s var(--bct-ease);
	animation: bct-chip-float 6s ease-in-out infinite;
}
.bct-hero-orbit__chip em {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #8DB3FF;
	transition: background 0.4s ease, box-shadow 0.4s ease;
}
.bct-hero-orbit__chip:hover { border-color: rgba(255, 199, 154, 0.5); color: #fff; }
.bct-hero-orbit__chip.is-active {
	background: linear-gradient(135deg, rgba(255, 138, 61, 0.95), rgba(217, 86, 10, 0.95));
	border-color: rgba(255, 199, 154, 0.6);
	color: #fff;
	scale: 1.08;
	box-shadow: 0 18px 36px -14px rgba(251, 111, 17, 0.8);
}
.bct-hero-orbit__chip.is-active em { background: #fff; box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.25); }
.bct-hero-orbit__chip--0 { top: 6%; left: -4%; }
.bct-hero-orbit__chip--1 { top: 22%; right: -10%; animation-delay: -1.5s; }
.bct-hero-orbit__chip--2 { bottom: 18%; right: -6%; animation-delay: -3s; }
.bct-hero-orbit__chip--3 { bottom: 4%; left: 4%; animation-delay: -4.5s; }
@keyframes bct-chip-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }

/* ---- Slide tabs with autoplay progress ---------------------------------- */
.bct-hero-slider__dots {
	left: 0;
	right: 0;
	bottom: 0;
	transform: none;
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(0, 1fr);
	gap: 28px;
	padding: 0 6vw 30px;
	max-width: 1500px;
	margin: 0 auto;
}
.bct-hero-slider__dot,
.bct-hero-slider__dot.is-active {
	width: auto;
	height: auto;
	border-radius: 0;
	background: transparent;
	transform: none;
	display: grid;
	grid-template-columns: auto 1fr;
	align-items: baseline;
	gap: 4px 10px;
	padding: 12px 0 0;
	text-align: left;
	color: rgba(220, 231, 248, 0.5);
	font-family: inherit;
	transition: color 0.4s ease;
}
.bct-hero-slider__dot:hover,
.bct-hero-slider__dot.is-active { color: #fff; }
.bct-hero-tab__num { font-family: var(--bct-font-heading); font-weight: 700; font-size: 12px; color: inherit; }
.bct-hero-slider__dot.is-active .bct-hero-tab__num { color: #FF8A3D; }
.bct-hero-tab__label { font-size: 13.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bct-hero-tab__bar {
	grid-column: 1 / -1;
	grid-row: 1;
	height: 2px;
	border-radius: 2px;
	background: rgba(255, 255, 255, 0.16);
	overflow: hidden;
	margin-bottom: 8px;
}
.bct-hero-tab__num, .bct-hero-tab__label { grid-row: 2; }
.bct-hero-tab__fill {
	display: block;
	height: 100%;
	background: linear-gradient(90deg, #FB6F11, #FFC79A);
	transform-origin: 0 50%;
	transform: scaleX(var(--p, 0));
	box-shadow: 0 0 10px rgba(251, 111, 17, 0.8);
}

.bct-hero-slider__arrow {
	top: auto;
	bottom: 100px;
	transform: none;
	width: 52px;
	height: 52px;
	border-color: rgba(255, 255, 255, 0.22);
	background: rgba(255, 255, 255, 0.05);
	transition: background-color 0.3s ease, border-color 0.3s ease, transform 0.3s var(--bct-ease);
}
.bct-hero-slider__arrow:hover { background: #FB6F11; border-color: #FB6F11; transform: scale(1.06); }
.bct-hero-slider__arrow--prev { left: auto; right: calc(6vw + 64px); }
.bct-hero-slider__arrow--next { right: 6vw; }

/* Scroll cue */
.bct-hero-scroll {
	position: absolute;
	left: 50%;
	bottom: 104px;
	z-index: 5;
	margin-left: -13px;
	opacity: 0.7;
	transition: opacity 0.3s ease;
}
.bct-hero-scroll:hover { opacity: 1; }
.bct-hero-scroll__mouse { display: block; width: 26px; height: 40px; border: 2px solid rgba(255, 255, 255, 0.55); border-radius: 14px; position: relative; }
.bct-hero-scroll__mouse span {
	position: absolute;
	left: 50%;
	top: 7px;
	width: 4px;
	height: 8px;
	margin-left: -2px;
	border-radius: 2px;
	background: #FB6F11;
	animation: bct-scroll-wheel 1.8s var(--bct-ease) infinite;
}
@keyframes bct-scroll-wheel { 0% { opacity: 0; transform: translateY(-4px); } 30% { opacity: 1; } 100% { opacity: 0; transform: translateY(12px); } }

@media (max-width: 1099px) {
	.bct-hero-scroll { display: none; }
	.bct-hero-slider__arrow { bottom: 90px; }
}
@media (max-width: 768px) {
	.bct-hero-slide__content { padding: 0 22px 80px; }
	.bct-hero-slider .bct-hero-slide__heading { font-size: clamp(2rem, 8.4vw, 2.6rem); }
	.bct-hero-slider__dots { padding: 0 22px 24px; gap: 8px; }
	.bct-hero-tab__num, .bct-hero-tab__label { display: none; }
	.bct-hero-slider__dot, .bct-hero-slider__dot.is-active { padding: 10px 0; }
	.bct-hero-tab__bar { margin: 0; height: 3px; }
	.bct-hero-slide__actions .bct-btn { padding: 13px 22px; font-size: 14px; }
}
@media (max-width: 480px) {
	.bct-hero-slide__actions { flex-direction: column; align-items: stretch; }
	.bct-hero-slide__actions .bct-btn { justify-content: center; }
}

/* ==========================================================================
   v2 -- Marquee ticker
   ========================================================================== */
.bct-marquee {
	display: flex;
	overflow: hidden;
	user-select: none;
	padding: 26px 0;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
}
.bct-marquee__list {
	display: flex;
	align-items: center;
	flex-shrink: 0;
	min-width: max-content;
	gap: 44px;
	padding: 0 44px 0 0;
	margin: 0;
	list-style: none;
	animation: bct-marquee var(--bct-marquee-duration, 40s) linear infinite;
}
.bct-marquee--reverse .bct-marquee__list { animation-direction: reverse; }
.bct-marquee:hover .bct-marquee__list { animation-play-state: paused; }
@keyframes bct-marquee { to { transform: translateX(-100%); } }
.bct-marquee__item {
	display: inline-flex;
	align-items: center;
	gap: 44px;
	font-family: var(--bct-font-heading, 'Sora', sans-serif);
	font-size: clamp(1.15rem, 2vw, 1.6rem);
	font-weight: 700;
	letter-spacing: -0.01em;
	white-space: nowrap;
	color: #112E88;
	transition: color 0.3s ease;
}
.bct-marquee__item:hover { color: #FB6F11; }
.bct-marquee__star { color: #FB6F11; flex-shrink: 0; order: -1; animation: bct-shape-rotate 8s linear infinite; }

.bct-marquee--dark {
	background:
		radial-gradient(600px circle at 20% 50%, rgba(251, 111, 17, 0.18), transparent 60%),
		linear-gradient(90deg, #070F33, #112E88 50%, #070F33);
	-webkit-mask-image: none;
	mask-image: none;
}
.bct-marquee--dark .bct-marquee__item { color: #fff; }
.bct-marquee--dark .bct-marquee__item:hover { color: #FFC79A; }
.bct-marquee--outline .bct-marquee__item {
	color: transparent;
	-webkit-text-stroke: 1.5px rgba(17, 46, 136, 0.45);
	font-size: clamp(2rem, 4.4vw, 3.6rem);
	font-weight: 800;
}
.bct-marquee--outline .bct-marquee__item:hover { color: #112E88; -webkit-text-stroke-color: #112E88; }

/* ==========================================================================
   v2 -- Stats bar: tiles with gradient numbers
   ========================================================================== */
.bct-stats-bar { gap: 24px; }
.bct-stat {
	position: relative;
	padding: 34px 22px 30px;
	border-radius: 20px;
	background: #fff;
	border: 1px solid rgba(17, 46, 136, 0.08);
	box-shadow: 0 20px 40px -28px rgba(12, 31, 96, 0.4);
	overflow: hidden;
	transition: transform 0.5s var(--bct-ease), border-color 0.4s ease, background-color 0.4s ease;
}
.bct-stat:hover { transform: translateY(-8px); }
.bct-stat::before {
	content: '';
	position: absolute;
	left: 50%;
	top: 0;
	width: 44px;
	height: 3px;
	translate: -50% 0;
	border-radius: 0 0 4px 4px;
	background: linear-gradient(90deg, #FB6F11, #1E58A6);
	transition: width 0.5s var(--bct-ease);
}
.bct-stat:hover::before { width: 100%; }
.bct-stat__number {
	font-family: var(--bct-font-heading, 'Sora', sans-serif);
	font-size: clamp(2.6rem, 4.4vw, 3.8rem);
	letter-spacing: -0.04em;
	background: linear-gradient(135deg, #112E88, #1E58A6 50%, #FB6F11);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	font-variant-numeric: tabular-nums;
	margin-bottom: 12px;
}
.bct-stat__label { font-size: 14px; color: #64748b; line-height: 1.5; }

/* On dark sections the tiles turn to glass. */
.bct-section-dark .bct-stat {
	background: rgba(255, 255, 255, 0.05);
	border-color: rgba(255, 255, 255, 0.1);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	box-shadow: none;
}
.bct-section-dark .bct-stat:hover { background: rgba(255, 255, 255, 0.09); border-color: rgba(255, 199, 154, 0.35); }
.bct-section-dark .bct-stat__number { background: linear-gradient(135deg, #fff 30%, #FFC79A 70%, #FB6F11); -webkit-background-clip: text; background-clip: text; }
.bct-section-dark .bct-stat__label { color: #B8C8EC; }

/* A reusable dark navy section (opt-in via a section's CSS class). */
.bct-section-dark {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	background:
		radial-gradient(800px circle at 10% 10%, rgba(30, 88, 166, 0.5), transparent 55%),
		radial-gradient(700px circle at 95% 95%, rgba(251, 111, 17, 0.2), transparent 55%),
		#070F33 !important;
}
.bct-section-dark::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
	background-size: 52px 52px;
	-webkit-mask-image: radial-gradient(ellipse at center, #000 20%, transparent 75%);
	mask-image: radial-gradient(ellipse at center, #000 20%, transparent 75%);
}
.bct-section-dark .elementor-heading-title { color: #fff; }
.bct-section-dark h2.elementor-heading-title { color: #fff !important; }
.bct-section-dark .elementor-widget-text-editor { color: #B8C8EC; }

@media (prefers-reduced-motion: reduce) {
	.bct-marquee__list, .bct-marquee__star,
	.bct-hero-orbit__inner, .bct-hero-orbit__ring, .bct-hero-orbit__arc, .bct-hero-orbit__core, .bct-hero-orbit__chip, .bct-hero-orbit__glow,
	.bct-hero-slide.is-active .bct-hero-slide__bg { animation: none !important; }
	.bct-w > span { transform: none !important; }
}

/* ==========================================================================
   v2 -- Testimonials carousel
   ========================================================================== */
.bct-reviews { position: relative; }
.bct-reviews__viewport { overflow: hidden; margin: -24px -12px; padding: 24px 0 40px; }
.bct-reviews__track { display: flex; transition: transform 0.7s var(--bct-ease); }
.bct-review {
	position: relative;
	flex: 0 0 33.3333%;
	max-width: 33.3333%;
	margin: 0;
	padding: 0 12px;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	opacity: 0.35;
	transition: opacity 0.6s ease;
}
.bct-review.is-visible { opacity: 1; }
.bct-review > * { position: relative; z-index: 1; }
.bct-review::before {
	content: '';
	position: absolute;
	inset: 0 12px;
	z-index: 0;
	border-radius: 24px;
	background: #fff;
	border: 1px solid rgba(17, 46, 136, 0.08);
	box-shadow: 0 2px 4px rgba(12, 31, 96, 0.04), 0 24px 48px -30px rgba(12, 31, 96, 0.45);
	transition: transform 0.5s var(--bct-ease), box-shadow 0.5s var(--bct-ease), border-color 0.4s ease;
}
.bct-review:hover::before {
	transform: translateY(-8px);
	border-color: rgba(251, 111, 17, 0.3);
	box-shadow: 0 2px 4px rgba(12, 31, 96, 0.04), 0 36px 60px -30px rgba(12, 31, 96, 0.55);
}
.bct-review__top,
.bct-review__quote,
.bct-review__author,
.bct-review__tag { transition: transform 0.5s var(--bct-ease); }
.bct-review:hover .bct-review__top,
.bct-review:hover .bct-review__quote,
.bct-review:hover .bct-review__author,
.bct-review:hover .bct-review__tag { transform: translateY(-8px); }

.bct-review__top { display: flex; justify-content: space-between; align-items: flex-start; padding: 32px 32px 0; }
.bct-review__stars { display: inline-flex; gap: 3px; color: #E2E8F0; }
.bct-review__stars .is-on { color: #FB8A1E; filter: drop-shadow(0 2px 4px rgba(251, 111, 17, 0.35)); }
.bct-review__mark { color: rgba(251, 111, 17, 0.14); margin-top: -6px; }
.bct-review__quote { flex: 1; margin: 16px 0 0; padding: 0 32px; border: 0; }
.bct-review__quote p { margin: 0; font-size: 15.5px; line-height: 1.75; color: #33415c; }
.bct-review__author {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 26px 32px 0;
	padding-top: 22px;
	border-top: 1px dashed rgba(17, 46, 136, 0.14);
}
.bct-review__avatar {
	width: 50px;
	height: 50px;
	flex-shrink: 0;
	border-radius: 50%;
	object-fit: cover;
	box-shadow: 0 0 0 3px #fff, 0 0 0 5px rgba(251, 111, 17, 0.35);
}
.bct-review__avatar--initials {
	display: flex;
	align-items: center;
	justify-content: center;
	background: linear-gradient(135deg, #112E88, #1E58A6);
	color: #fff;
	font-family: var(--bct-font-heading, 'Sora', sans-serif);
	font-weight: 700;
	font-size: 16px;
	letter-spacing: 0.5px;
}
.bct-review:nth-child(3n+2) .bct-review__avatar--initials { background: linear-gradient(135deg, #FF8A3D, #D9560A); }
.bct-review:nth-child(3n+3) .bct-review__avatar--initials { background: linear-gradient(135deg, #0C1F60, #FB6F11); }
.bct-review__who { display: flex; flex-direction: column; min-width: 0; }
.bct-review__name { font-family: var(--bct-font-heading, 'Sora', sans-serif); font-size: 15.5px; color: #112E88; }
.bct-review__role { font-size: 13px; color: #64748b; }
.bct-review__tag {
	align-self: flex-start;
	margin: 18px 32px 32px;
	padding: 5px 12px;
	border-radius: 999px;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.4px;
	color: #D9560A;
	background: #FFF3E8;
	border: 1px solid rgba(251, 111, 17, 0.2);
}
.bct-review__author:last-child { margin-bottom: 32px; }

.bct-reviews__nav { display: flex; align-items: center; justify-content: center; gap: 18px; margin-top: 8px; }
.bct-reviews.is-static .bct-reviews__nav { display: none; }
.bct-reviews__arrow {
	width: 46px;
	height: 46px;
	border-radius: 50%;
	border: 1px solid rgba(17, 46, 136, 0.15);
	background: #fff;
	color: #112E88;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: 0 10px 22px -12px rgba(17, 46, 136, 0.4);
	transition: background 0.3s ease, color 0.3s ease, border-color 0.3s ease, transform 0.3s var(--bct-ease);
}
.bct-reviews__arrow:hover { background: #FB6F11; border-color: #FB6F11; color: #fff; transform: scale(1.06); }
.bct-reviews__dots { display: flex; gap: 8px; }
.bct-reviews__dot {
	width: 9px;
	height: 9px;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: rgba(17, 46, 136, 0.2);
	cursor: pointer;
	transition: width 0.4s var(--bct-ease), background 0.3s ease;
}
.bct-reviews__dot.is-active { width: 28px; background: linear-gradient(90deg, #FB6F11, #1E58A6); }

@media (max-width: 1024px) { .bct-review { flex-basis: 50%; max-width: 50%; } }
@media (max-width: 700px) {
	.bct-review { flex-basis: 100%; max-width: 100%; }
	.bct-review__top, .bct-review__quote { padding-left: 24px; padding-right: 24px; }
	.bct-review__author, .bct-review__tag { margin-left: 24px; margin-right: 24px; }
}

/* ==========================================================================
   v2 -- Social icons (theme header/footer)
   ========================================================================== */
.bct-social { list-style: none; margin: 0; padding: 0; display: flex; gap: 10px; }
.bct-social__link {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border-radius: 12px;
	color: #DCE7F8;
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(255, 255, 255, 0.1);
	transition: transform 0.35s var(--bct-ease-spring, ease), background 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}
.bct-social__link:hover { transform: translateY(-4px); color: #fff; border-color: transparent; }
.bct-social__link--facebook:hover { background: #1877F2; }
.bct-social__link--instagram:hover { background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fd5949 45%, #d6249f 60%, #285AEB 90%); }
.bct-social__link--youtube:hover { background: #FF0000; }
.bct-social__link--tiktok:hover { background: #000; box-shadow: -2px -2px 0 #25F4EE, 2px 2px 0 #FE2C55; }
.bct-social--footer { margin-top: 20px; }
.bct-social--topbar { gap: 4px; }
.bct-social--topbar .bct-social__link { width: 28px; height: 28px; border-radius: 8px; background: transparent; border-color: transparent; }
.bct-social--topbar svg { width: 14px; height: 14px; }

/* Testimonials: drag affordance */
.bct-reviews__viewport { touch-action: pan-y; cursor: grab; }
.bct-reviews.is-static .bct-reviews__viewport { cursor: default; }
.bct-reviews.is-dragging .bct-reviews__viewport { cursor: grabbing; }
.bct-reviews.is-dragging .bct-review { user-select: none; -webkit-user-select: none; }
.bct-reviews.is-dragging .bct-review::before,
.bct-reviews.is-dragging .bct-review > * { transform: none !important; }
.bct-reviews:focus-visible { outline: 2px solid #FB6F11; outline-offset: 8px; border-radius: 24px; }
.bct-review img { -webkit-user-drag: none; }
.bct-reviews__dots { flex-wrap: wrap; justify-content: center; max-width: 60vw; }
.bct-stat__word { display: inline-block; }

/* Testimonials: pause/play toggle */
.bct-reviews__toggle { width: 38px; height: 38px; }
.bct-reviews__toggle .bct-reviews__icon-play,
.bct-reviews__toggle.is-paused .bct-reviews__icon-pause { display: none; }
.bct-reviews__toggle.is-paused .bct-reviews__icon-play { display: block; }

/* Orbit chips: five positions (5-slide hero). */
.bct-hero-orbit__chip--0 { top: 4%; left: -2%; }
.bct-hero-orbit__chip--1 { top: 40%; left: -18%; right: auto; bottom: auto; animation-delay: -1.2s; }
.bct-hero-orbit__chip--2 { top: 18%; right: -12%; left: auto; bottom: auto; animation-delay: -2.4s; }
.bct-hero-orbit__chip--3 { bottom: 20%; right: -8%; top: auto; left: auto; animation-delay: -3.6s; }
.bct-hero-orbit__chip--4 { bottom: 2%; left: 6%; top: auto; right: auto; animation-delay: -4.8s; }

/* Hero: dimmed/softened background for busy photos (per-slide option). */
.bct-hero-slide--dim .bct-hero-slide__bg { filter: blur(5px) brightness(0.5) saturate(1.15); }
