@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
/* Scope wrapper to prevent layout breaking outside this block */
.ecb-wrapper {
font-family: 'Poppins', sans-serif;
background-color: #f8fafc;
padding: 2rem;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
}
.ecb-container {
max-width: 1300px;
width: 100%;
margin: 0 auto;
}
/* Grid Layouts (Desktop) */
.ecb-grid-top {
display: grid;
grid-template-columns: 7fr 3fr;
gap: 1.5rem;
margin-bottom: 1.5rem;
}
.ecb-grid-bottom {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
}
/* Base Card Styling */
.ecb-card {
position: relative;
border-radius: 20px;
overflow: hidden;
background-color: #fff;
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);
transition: all 0.5s ease;
}
.ecb-fashion-card { background-color: #fce7f3; }
.ecb-fruits-veg-card { background-color: #fef08a; }
.ecb-pharmacy-card { background-color: #d1fae5; }
.ecb-electronics-card { background-color: #e0f2fe; }
.ecb-card-hover:hover {
transform: translateY(-4px);
box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1);
}
/* Images - Force height for Elementor/WP global overrides */
.ecb-bg-img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100% !important;
max-height: 100% !important;
object-fit: cover !important;
transition: transform 0.7s ease;
z-index: 1;
}
.ecb-card-hover:hover .ecb-bg-img {
transform: scale(1.05);
}
/* Gradients (Desktop) */
.ecb-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100% !important;
z-index: 2;
}
.ecb-grad-slider { background: linear-gradient(90deg, #ffffff 0%, #ffffff 40%, rgba(255,255,255,0.8) 60%, transparent 100%); }
.ecb-grad-fashion { background: linear-gradient(180deg, #fce7f3 0%, #fce7f3 25%, rgba(252,231,243,0.85) 45%, transparent 100%); }
.ecb-grad-fruits { background: linear-gradient(90deg, #fef08a 0%, #fef08a 38%, rgba(254,240,138,0.8) 55%, transparent 100%); }
.ecb-grad-pharmacy { background: linear-gradient(90deg, #d1fae5 0%, #d1fae5 38%, rgba(209,250,229,0.8) 55%, transparent 100%); }
.ecb-grad-electronics { background: linear-gradient(90deg, #e0f2fe 0%, #e0f2fe 38%, rgba(224,242,254,0.8) 55%, transparent 100%); }
/* Content Placement */
.ecb-card-content {
position: relative;
z-index: 3;
height: 100%;
display: flex;
flex-direction: column;
padding: 2rem;
box-sizing: border-box;
}
.ecb-card-content-75 { width: 75%; }
/* Specific Adjustments */
.ecb-slider-card { height: 500px; }
.ecb-fashion-card { height: 500px; }
.ecb-small-card { height: 300px; }
.ecb-fruits-veg-card .ecb-bg-img,
.ecb-pharmacy-card .ecb-bg-img,
.ecb-electronics-card .ecb-bg-img {
width: 65% !important;
left: auto !important;
right: 0 !important;
object-fit: cover !important;
object-position: right center;
}
/* Typography */
.ecb-tag {
display: inline-block;
padding: 0.25rem 0.75rem;
background-color: #ffedd5;
color: #ea580c;
border-radius: 9999px;
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 1rem;
width: max-content;
}
.ecb-title-main { font-size: 3.375rem; font-weight: 700; color: #111827; line-height: 1.1; margin: 0 0 1rem 0; }
.ecb-title-main span { color: #f97316; }
.ecb-desc-main { color: #4b5563; font-size: 1rem; margin: 0 0 2rem 0; max-width: 28rem; }
.ecb-title-sub { font-size: 1.5rem; font-weight: 700; color: #111827; margin: 0 0 0.5rem 0; }
.ecb-desc-sub { color: #374151; font-size: 0.875rem; margin: 0 0 1rem 0; max-width: 200px; }
/* Buttons & Links */
.ecb-btn-primary {
background-color: #111827;
color: #ffffff !important;
padding: 0.875rem 2rem;
border-radius: 9999px;
text-decoration: none;
font-weight: 500;
transition: all 0.3s ease;
width: max-content;
display: inline-block;
}
.ecb-btn-primary:hover {
background-color: #f97316;
transform: translateY(-2px);
box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);
}
.ecb-link {
color: #111827;
font-weight: 600;
text-decoration: none;
display: flex;
align-items: center;
gap: 0.5rem;
margin-top: auto;
font-size: 0.875rem;
transition: color 0.3s ease;
width: max-content;
}
.ecb-link svg { width: 16px; height: 16px; transition: transform 0.3s ease; }
.ecb-link:hover { color: #ea580c; }
.ecb-link-pink:hover { color: #db2777; }
.ecb-link-emerald:hover { color: #059669; }
.ecb-link-yellow:hover { color: #ca8a04; }
.ecb-link-blue:hover { color: #0284c7; }
.ecb-link:hover svg { transform: translateX(4px); }
/* Glass Icon */
.ecb-glass-icon {
width: 3rem;
height: 3rem;
border-radius: 0.75rem;
background: rgba(255,255,255,0.4);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);
border: 1px solid rgba(255,255,255,0.5);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1.5rem;
}
/* Slider Specifics (Desktop) */
.ecb-slide { position: absolute; inset: 0; opacity: 0; z-index: 0; transition: opacity 0.7s ease-in-out; }
.ecb-slide.active { opacity: 1; z-index: 10; }
.ecb-slide-content { width: 65%; padding: 3rem; display: flex; flex-direction: column; justify-content: center; height: 100%; transform: translateY(1rem); opacity: 0; transition: all 0.7s ease; }
.ecb-slide.active .ecb-slide-content { transform: translateY(0); opacity: 1; transition-delay: 0.05s; }
/* Dots Navigation */
.ecb-slider-dots { position: absolute; bottom: 1.5rem; left: 3rem; display: flex; gap: 0.5rem; z-index: 30; }
.ecb-dot { width: 0.625rem; height: 0.625rem; border-radius: 9999px; background-color: #d1d5db; border: none; padding: 0; cursor: pointer; transition: all 0.3s ease; }
.ecb-dot.active { width: 2rem; background-color: #f97316; }
/* Hidden Mobile Helper */
.ecb-mobile-accordion { display: none; }
/* Responsive Design Logic */
@media (max-width: 1024px) {
.ecb-grid-top { grid-template-columns: 1fr; }
.ecb-slider-card, .ecb-fashion-card { height: 450px; }
.ecb-grid-bottom { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 768px) {
.ecb-wrapper { padding: 1rem 0; }
.ecb-container { padding: 0; }
/* Hide Desktop Grid */
.ecb-grid-top, .ecb-grid-bottom { display: none; }
/* --- THE DYNAMIC MOBILE ACCORDION --- */
.ecb-mobile-accordion {
display: flex;
gap: 0.5rem;
padding: 0 1rem;
height: 350px;
width: 100%;
box-sizing: border-box;
}
.ecb-acc-item {
position: relative;
flex: 0 0 38px;
border-radius: 16px;
overflow: hidden;
cursor: pointer;
background-color: #111827;
transition: flex 0.6s cubic-bezier(0.25, 1, 0.5, 1);
}
.ecb-acc-item.active {
flex: 1 1 0;
cursor: default;
}
.ecb-acc-item .ecb-bg-img {
width: 100% !important;
height: 100% !important;
object-fit: cover !important;
opacity: 0.5;
transition: opacity 0.6s ease;
}
.ecb-acc-item.active .ecb-bg-img {
opacity: 1;
}
.ecb-acc-overlay {
position: absolute;
inset: 0;
background: linear-gradient(180deg, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.85) 100%);
z-index: 2;
transition: opacity 0.3s;
}
.ecb-acc-item:not(.active) .ecb-acc-overlay {
background: rgba(0,0,0,0.6);
}
.ecb-acc-strip {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
z-index: 3;
transition: opacity 0.3s ease;
}
.ecb-acc-item.active .ecb-acc-strip {
opacity: 0;
pointer-events: none;
}
.ecb-acc-strip span {
writing-mode: vertical-rl;
transform: rotate(180deg);
color: #ffffff;
font-weight: 600;
font-size: 0.875rem;
letter-spacing: 2px;
text-transform: uppercase;
white-space: nowrap;
}
.ecb-acc-content {
position: absolute;
bottom: 0;
left: 0;
width: calc(100vw - 180px);
max-width: 240px;
padding: 1.5rem;
z-index: 4;
opacity: 0;
transform: translateX(-15px);
transition: all 0.5s ease;
pointer-events: none;
}
.ecb-acc-item.active .ecb-acc-content {
opacity: 1;
transform: translateX(0);
pointer-events: auto;
transition-delay: 0.2s;
}
.ecb-acc-content .ecb-tag {
background-color: rgba(255, 237, 213, 0.9);
color: #ea580c;
margin-bottom: 0.5rem;
}
.ecb-acc-content .ecb-title-main {
font-size: 1.5rem;
margin-bottom: 0.5rem;
color: #ffffff;
line-height: 1.2;
}
.ecb-acc-content .ecb-title-main span { color: #f97316; }
.ecb-acc-content .ecb-desc-main {
font-size: 0.875rem;
color: #d1d5db;
margin-bottom: 1rem;
line-height: 1.4;
}
.ecb-acc-content .ecb-btn-primary {
background-color: #f97316;
color: #fff !important;
padding: 0.6rem 1.25rem;
font-size: 0.875rem;
}
}
India to Africa
B2B Product Sourcing from India
Source FMCG, agro, healthcare, electronics, fashion, and general goods from verified Indian suppliers for African markets.
Request Quote
Verified Suppliers
Quality Products for African Businesses
We connect importers, wholesalers, retailers, distributors, and business buyers with trusted Indian suppliers and bulk supply options.
Send Inquiry
Export Support
From Indian Supplier to Africa Delivery
Supplier coordination, quality checks, export documentation, freight, customs support, and delivery coordination in one process.
Start Sourcing
Fashion & Apparel
Bulk clothing and lifestyle sourcing from India.
Send Inquiry
Electronics & Tech
Bulk gadgets and smart devices.
Send Inquiry
B2B Sourcing
India to Africa
B2B Sourcing
Source products from verified Indian suppliers.
Request Quote
Fashion
Apparel
Fashion Supply
Bulk apparel and lifestyle sourcing from India.
Send Inquiry
Agro Products
Agro
Agro Supply
Fresh, processed, and packaged agro products.
Request Supply
Healthcare
Wellness
Healthcare Supply
Hygiene, wellness, and healthcare product sourcing.
Request Quote
Electronics
Tech
Electronics Supply
Bulk gadgets, devices, and business electronics.
Send Inquiry
document.addEventListener("DOMContentLoaded", () => {
const container = document.getElementById('ecb-custom-hero');
if (!container) return;
// --- Desktop Slider Logic ---
const slides = container.querySelectorAll('.ecb-grid-top .ecb-slide');
const dots = container.querySelectorAll('.ecb-grid-top .ecb-dot');
if (slides.length > 0) {
let currentSlide = 0;
let slideInterval;
const slideDuration = 4500;
function showSlide(index) {
slides.forEach(slide => slide.classList.remove('active'));
slides[index].classList.add('active');
dots.forEach(dot => dot.classList.remove('active'));
if (dots[index]) dots[index].classList.add('active');
currentSlide = index;
}
function nextSlide() {
showSlide((currentSlide + 1) % slides.length);
}
slideInterval = setInterval(nextSlide, slideDuration);
dots.forEach((dot, index) => {
dot.addEventListener('click', () => {
clearInterval(slideInterval);
showSlide(index);
slideInterval = setInterval(nextSlide, slideDuration);
});
});
}
// --- Mobile Accordion Logic ---
const accItems = container.querySelectorAll('.ecb-acc-item');
if(accItems.length > 0) {
accItems.forEach(item => {
item.addEventListener('click', () => {
accItems.forEach(i => i.classList.remove('active'));
item.classList.add('active');
});
});
}
});