<!-- ===========================
HERO SECTION
=========================== -->
🔥 COMBO E-LEARNING - TIẾT KIỆM 1.5 TRIỆU+
AI Data Analytics
E-Learning Series
4 khóa học online linh hoạt - Từ nền tảng tư duy đến thành thạo Data Visualization với AI Excel,
SQL & Python.
1,200+
Học viên
50h
Thời lượng
4
Khóa học
%
Tiết kiệm
<!-- ===========================
TRUST BAR
=========================== -->
Học trọn đời - Truy cập vĩnh viễn
Community 2000+ thành viên
Update miễn phí nội dung mới
<!-- ===========================
STYLES
=========================== -->
/* ===========================
CRITICAL CSS - Reset & Variables
=========================== */
.combo-hero-section, .combo-hero-section *, .combo-trust-bar, .combo-trust-bar *, .et-db.et-db.et-db #et-boc .et-l /* ===========================
CRITICAL CSS - Reset & Variables
=========================== */
.combo-hero-section, .et-db.et-db.et-db #et-boc .et-l .combo-hero-section *, .et-db.et-db.et-db #et-boc .et-l .combo-trust-bar, .et-db.et-db.et-db #et-boc .et-l .combo-trust-bar *{
box-sizing: border-box !important;
font-family: 'League Spartan', sans-serif !important;
}
/* ===========================
COMBO TOKENS (scoped off :root onto section wrappers)
=========================== */
.combo-hero-section, .combo-trust-bar, .et-db.et-db.et-db #et-boc .et-l /* ===========================
COMBO TOKENS (scoped off :root onto section wrappers)
=========================== */
.combo-hero-section, .et-db.et-db.et-db #et-boc .et-l .combo-trust-bar{
/* COMBO - Premium Blue Gradient */
--combo-primary: #2563EB;
--combo-primary-dark: #1E40AF;
--combo-primary-light: #3B82F6;
--combo-secondary: #60A5FA;
--combo-accent: #DBEAFE;
--combo-sale-gradient: linear-gradient(135deg, #FF4500 0%, #FF6347 100%);
/* Neutrals */
--dark: #0F172A;
--dark-800: #1E293B;
--gray: #64748B;
--gray-light: #F1F5F9;
--white: #FFFFFF;
/* Gradients */
--combo-gradient-1: linear-gradient(135deg, #2563EB 0%, #1E40AF 100%);
--combo-gradient-2: linear-gradient(135deg, #3B82F6 0%, #2563EB 100%);
--combo-gradient-animated: linear-gradient(270deg, #2563EB, #3B82F6, #60A5FA, #2563EB);
/* Shadows */
--shadow-sm: 0 2px 8px rgba(37, 99, 235, 0.08);
--shadow-md: 0 4px 20px rgba(37, 99, 235, 0.15);
--shadow-lg: 0 10px 40px rgba(37, 99, 235, 0.25);
}
/* ===========================
HERO SECTION - Premium Blue
=========================== */
.combo-hero-section, .et-db.et-db.et-db #et-boc .et-l /* ===========================
HERO SECTION - Premium Blue
=========================== */
.combo-hero-section{
background: linear-gradient(180deg, #FFFFFF 0%, #EFF6FF 50%, #FFFFFF 100%);
padding: clamp(44px, 6vw, 56px) 0;
position: relative;
overflow: hidden;
opacity: 0;
animation: fadeInHero 0.8s ease-out 0.2s forwards;
}
@keyframes fadeInHero {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* ===========================
ANIMATED GRADIENT ORBS
=========================== */
.combo-hero-gradient-orb, .et-db.et-db.et-db #et-boc .et-l /* ===========================
ANIMATED GRADIENT ORBS
=========================== */
.combo-hero-gradient-orb{
position: absolute;
border-radius: 50%;
filter: blur(80px);
opacity: 0.4;
animation: floatOrb 20s ease-in-out infinite;
}
.combo-hero-gradient-orb-1, .et-db.et-db.et-db #et-boc .et-l .combo-hero-gradient-orb-1{
width: 600px;
height: 600px;
background: radial-gradient(circle, rgba(37, 99, 235, 0.3) 0%, transparent 70%);
top: -200px;
right: -200px;
animation-delay: 0s;
}
.combo-hero-gradient-orb-2, .et-db.et-db.et-db #et-boc .et-l .combo-hero-gradient-orb-2{
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(59, 130, 246, 0.25) 0%, transparent 70%);
bottom: -150px;
left: -150px;
animation-delay: 5s;
}
@keyframes floatOrb {
0%,
100% {
transform: translate(0, 0) scale(1);
}
33% {
transform: translate(50px, -50px) scale(1.1);
}
66% {
transform: translate(-30px, 30px) scale(0.95);
}
}
/* ===========================
BACKGROUND PATTERN
=========================== */
.combo-hero-bg-pattern, .et-db.et-db.et-db #et-boc .et-l /* ===========================
BACKGROUND PATTERN
=========================== */
.combo-hero-bg-pattern{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url('data:image/svg+xml,%3Csvg width=%2760%27 height=%2760%27 viewBox=%270 0 60 60%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cg fill=%27none%27 fill-rule=%27evenodd%27%3E%3Cg fill=%27%232563EB%27 fill-opacity=%270.03%27%3E%3Cpath d=%27M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z%27/%3E%3C/g%3E%3C/g%3E%3C/svg%3E');
pointer-events: none;
z-index: 1;
}
/* ===========================
CONTAINER
=========================== */
.combo-hero-container, .et-db.et-db.et-db #et-boc .et-l /* ===========================
CONTAINER
=========================== */
.combo-hero-container{
width: 85%;
margin: 0 auto;
padding: 0 24px;
position: relative;
z-index: 2;
}
.combo-hero-content, .et-db.et-db.et-db #et-boc .et-l .combo-hero-content{
display: grid;
grid-template-columns: 1fr 1fr;
gap: 60px;
align-items: center;
}
/* ===========================
LEFT CONTENT
=========================== */
.combo-hero-left, .et-db.et-db.et-db #et-boc .et-l /* ===========================
LEFT CONTENT
=========================== */
.combo-hero-left{
opacity: 0;
animation: fadeInLeft 0.8s ease-out 0.4s forwards;
}
@keyframes fadeInLeft {
from {
opacity: 0;
transform: translateX(-30px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* ===========================
BADGE WITH PULSE ANIMATION
=========================== */
.combo-hero-badge{
display: inline-block;
background: linear-gradient(135deg, rgba(37, 99, 235, 0.15) 0%, rgba(59, 130, 246, 0.15) 100%);
padding: 10px 20px;
border-radius: 24px;
font-size: 14px;
font-weight: 700;
color: var(--combo-primary-dark);
margin-bottom: 24px;
border: 2px solid rgba(37, 99, 235, 0.3);
animation: badgePulse 2s ease-in-out infinite;
}.et-db.et-db.et-db #et-boc .et-l /* ===========================
BADGE WITH PULSE ANIMATION
=========================== */
.combo-hero-badge{
display: inline-block;
background: linear-gradient(135deg, rgba(37, 99, 235, 0.15) 0%, rgba(59, 130, 246, 0.15) 100%);
padding: 10px 20px;
border-radius: 24px;
font-size: 14px;
font-weight: 700;
color: var(--combo-primary-dark) !important;
margin-bottom: 24px;
border: 2px solid rgba(37, 99, 235, 0.3);
animation: badgePulse 2s ease-in-out infinite;
}
@keyframes badgePulse {
0%,
100% {
box-shadow: 0 0 0 0 rgba(37, 99, 235, 0.4);
}
50% {
box-shadow: 0 0 0 8px rgba(37, 99, 235, 0);
}
}
/* ===========================
TITLE WITH ANIMATED GRADIENT
=========================== */
.combo-hero-title{
font-size: 56px !important;
font-weight: 800 !important;
color: var(--dark);
line-height: 1.2;
margin: 0 0 24px 0;
}.et-db.et-db.et-db #et-boc .et-l /* ===========================
TITLE WITH ANIMATED GRADIENT
=========================== */
.combo-hero-title{
font-size: 56px !important;
font-weight: 800 !important;
color: var(--dark) !important;
line-height: 1.2;
margin: 0 0 24px 0;
}
.combo-hero-highlight, .et-db.et-db.et-db #et-boc .et-l .combo-hero-highlight{
background: var(--combo-gradient-animated);
background-size: 300% 300%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
animation: gradientShift 8s ease infinite;
}
@keyframes gradientShift {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
/* ===========================
SUBTITLE
=========================== */
.combo-hero-subtitle{
font-size: 20px;
color: var(--gray);
line-height: 1.8;
margin: 0 0 32px 0;
}.et-db.et-db.et-db #et-boc .et-l /* ===========================
SUBTITLE
=========================== */
.combo-hero-subtitle{
font-size: 20px;
color: var(--gray) !important;
line-height: 1.8;
margin: 0 0 32px 0;
}
/* ===========================
CTA BUTTONS
=========================== */
.cta-wrapper, .et-db.et-db.et-db #et-boc .et-l /* ===========================
CTA BUTTONS
=========================== */
.cta-wrapper{
display: flex;
flex-direction: column;
align-items: flex-start;
}
.hero-cta-buttons, .et-db.et-db.et-db #et-boc .et-l .hero-cta-buttons{
display: flex;
gap: 16px;
margin-bottom: 40px;
flex-direction: row;
align-items: stretch;
/* THAY ĐỔI: từ flex-start thành stretch */
width: fit-content;
/* THÊM: giới hạn width theo nội dung */
min-width: max-content;
/* THÊM: đảm bảo rộng bằng button dài nhất */
}
/* Badge giảm giá*/
.sale-badge, .et-db.et-db.et-db #et-boc .et-l /* Badge giảm giá*/
.sale-badge{
display: inline-block;
background: var(--combo-sale-gradient);
color: white !important;
font-size: 14px;
font-weight: 800;
padding: 8px 18px;
border-radius: 24px;
margin-bottom: 16px;
box-shadow: 0 4px 16px rgba(255, 69, 0, 0.4);
animation: pySalePulse 2s ease-in-out infinite;
}
.btn-primary, .btn-secondary, .et-db.et-db.et-db #et-boc .et-l .btn-primary, .et-db.et-db.et-db #et-boc .et-l .btn-secondary{
padding: 16px 32px;
font-size: 18px;
font-weight: 700;
border-radius: 12px;
text-decoration: none;
transition: all 0.3s ease;
font-family: 'League Spartan', sans-serif;
width: 100%;
/* THÊM: cả hai button đều chiếm 100% width của container cha */
display: flex;
/* THÊM cho btn-secondary */
justify-content: center;
/* THÊM: căn giữa nội dung */
align-items: center;
/* THÊM: căn giữa theo chiều dọc */
}
.btn-primary, .et-db.et-db.et-db #et-boc .et-l .btn-primary{
background: linear-gradient(135deg, var(--combo-primary) 0%, var(--combo-primary-dark) 100%);
color: white !important;
flex-direction: column;
/* GIỮ NGUYÊN: hiển thị 2 dòng text */
gap: 4px;
box-shadow: 0 4px 16px rgba(37, 99, 235, 0.3);
position: relative;
overflow: hidden;
}
/* Định dạng text bên trong nút */
.cta-main-text, .et-db.et-db.et-db #et-boc .et-l /* Định dạng text bên trong nút */
.cta-main-text{
font-size: 18px;
font-weight: 700;
}
.price-line, .et-db.et-db.et-db #et-boc .et-l .price-line{
display: flex;
align-items: center;
gap: 10px;
}
.price-original, .et-db.et-db.et-db #et-boc .et-l .price-original{
text-decoration: line-through;
opacity: 0.8;
font-weight: 500;
font-size: 14px;
}
.price-sale, .et-db.et-db.et-db #et-boc .et-l .price-sale{
font-size: 19px;
font-weight: 800;
}
/* PRIMARY BUTTON - Gradient with Shine Effect */
.btn-primary::before, .et-db.et-db.et-db #et-boc .et-l /* PRIMARY BUTTON - Gradient with Shine Effect */
.btn-primary::before{
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
transition: left 0.5s;
}
.btn-primary:hover::before, .et-db.et-db.et-db #et-boc .et-l .btn-primary:hover::before{
left: 100%;
}
.btn-primary:hover, .et-db.et-db.et-db #et-boc .et-l .btn-primary:hover{
transform: translateY(-3px);
box-shadow: 0 8px 24px rgba(37, 99, 235, 0.4);
}
/* SECONDARY BUTTON */
.btn-secondary, .et-db.et-db.et-db #et-boc .et-l /* SECONDARY BUTTON */
.btn-secondary{
background: white;
color: var(--combo-primary-dark) !important;
border: 2px solid var(--combo-primary);
}
.btn-secondary:hover, .et-db.et-db.et-db #et-boc .et-l .btn-secondary:hover{
background: var(--combo-accent);
transform: translateY(-3px);
}
/* ===========================
HERO STATS
=========================== */
.combo-hero-stats, .et-db.et-db.et-db #et-boc .et-l /* ===========================
HERO STATS
=========================== */
.combo-hero-stats{
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 24px;
padding-top: 24px;
border-top: 2px solid #E2E8F0;
}
.combo-stat-item, .et-db.et-db.et-db #et-boc .et-l .combo-stat-item{
display: flex;
flex-direction: column;
}
.combo-stat-number{
font-size: 32px;
font-weight: 800;
color: var(--combo-primary);
display: block;
}.et-db.et-db.et-db #et-boc .et-l .combo-stat-number{
font-size: 32px;
font-weight: 800;
color: var(--combo-primary) !important;
display: block;
}
.combo-stat-label{
font-size: 14px;
font-weight: 600;
color: var(--gray);
}.et-db.et-db.et-db #et-boc .et-l .combo-stat-label{
font-size: 14px;
font-weight: 600;
color: var(--gray) !important;
}
/* ===========================
RIGHT CONTENT - IMAGE
=========================== */
.combo-hero-right, .et-db.et-db.et-db #et-boc .et-l /* ===========================
RIGHT CONTENT - IMAGE
=========================== */
.combo-hero-right{
opacity: 0;
animation: fadeInRight 0.8s ease-out 0.6s forwards;
}
@keyframes fadeInRight {
from {
opacity: 0;
transform: translateX(30px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
.combo-hero-image, .et-db.et-db.et-db #et-boc .et-l .combo-hero-image{
width: 100%;
height: auto;
border-radius: 24px;
box-shadow: 0 20px 60px rgba(37, 99, 235, 0.2);
border: 3px solid rgba(37, 99, 235, 0.1);
}
/* ===========================
TRUST BAR
=========================== */
.combo-trust-bar, .et-db.et-db.et-db #et-boc .et-l /* ===========================
TRUST BAR
=========================== */
.combo-trust-bar{
background: white;
padding: 32px 0;
border-top: 2px solid #F1F5F9;
border-bottom: 2px solid #F1F5F9;
opacity: 0;
animation: fadeInHero 0.8s ease-out 0.8s forwards;
}
.combo-trust-container, .et-db.et-db.et-db #et-boc .et-l .combo-trust-container{
width: 90%;
margin: 0 auto;
padding: 0 24px;
}
.combo-trust-items, .et-db.et-db.et-db #et-boc .et-l .combo-trust-items{
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 40px;
}
.combo-trust-item, .et-db.et-db.et-db #et-boc .et-l .combo-trust-item{
display: flex;
align-items: center;
gap: 12px;
justify-content: center;
}
/* ===========================
ICON STYLING (SVG)
=========================== */
.combo-icon, .et-db.et-db.et-db #et-boc .et-l /* ===========================
ICON STYLING (SVG)
=========================== */
.combo-icon{
width: 40px;
height: 40px;
background: var(--combo-gradient-1);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.combo-icon svg{
width: 20px;
height: 20px;
color: white;
fill: white;
}.et-db.et-db.et-db #et-boc .et-l .combo-icon svg{
width: 20px;
height: 20px;
color: white !important;
fill: white;
}
.combo-trust-item span{
font-size: 16px;
font-weight: 600;
color: var(--dark-800);
}.et-db.et-db.et-db #et-boc .et-l .combo-trust-item span{
font-size: 16px;
font-weight: 600;
color: var(--dark-800) !important;
}
/* ===========================
SCROLL REVEAL
=========================== */
.combo-hero-section.cmb-js .cmb-reveal, .combo-trust-bar.cmb-js .cmb-reveal, .et-db.et-db.et-db #et-boc .et-l /* ===========================
SCROLL REVEAL
=========================== */
.combo-hero-section.cmb-js .cmb-reveal, .et-db.et-db.et-db #et-boc .et-l .combo-trust-bar.cmb-js .cmb-reveal{
opacity: 0;
transform: translateY(22px);
transition: opacity 0.8s cubic-bezier(0.165, 0.84, 0.44, 1), transform 0.8s cubic-bezier(0.165, 0.84, 0.44, 1);
}
.combo-hero-section.cmb-js .cmb-reveal.cmb-in, .combo-trust-bar.cmb-js .cmb-reveal.cmb-in, .et-db.et-db.et-db #et-boc .et-l .combo-hero-section.cmb-js .cmb-reveal.cmb-in, .et-db.et-db.et-db #et-boc .et-l .combo-trust-bar.cmb-js .cmb-reveal.cmb-in{
opacity: 1;
transform: none;
}
/* ===========================
RESPONSIVE - TABLET
=========================== */
@media (max-width: 1024px), .et-db.et-db.et-db #et-boc .et-l /* ===========================
RESPONSIVE - TABLET
=========================== */
@media (max-width: 1024px){
.combo-hero-section {
padding: 100px 0 60px;
}
.combo-hero-container {
width: 90%;
}
.combo-trust-container {
width: 90%;
}
.combo-hero-title {
font-size: 40px !important;
}
.combo-hero-content {
gap: 40px;
}
.combo-hero-stats {
grid-template-columns: repeat(2, 1fr);
}
}
/* ===========================
RESPONSIVE - MOBILE
=========================== */
@media (max-width: 768px), .et-db.et-db.et-db #et-boc .et-l /* ===========================
RESPONSIVE - MOBILE
=========================== */
@media (max-width: 768px){
.combo-hero-section {
padding: 80px 0 60px;
}
.combo-hero-container {
width: 90%;
}
.combo-trust-container {
width: 90%;
}
.combo-hero-content {
grid-template-columns: 1fr;
gap: 40px;
}
.combo-hero-right {
display: none;
}
.combo-hero-title {
font-size: 36px !important;
}
.combo-hero-subtitle {
font-size: 18px !important;
}
.hero-cta-buttons {
flex-direction: column;
}
.btn-primary {
width: 100%;
}
,
.btn-secondary {
width: 100%;
text-align: center;
}
.combo-hero-stats {
grid-template-columns: repeat(2, 1fr);
gap: 20px;
}
.combo-trust-items {
grid-template-columns: 1fr;
gap: 20px;
}
.combo-trust-item {
justify-content: flex-start;
}
}
/* ===========================
RESPONSIVE - SMALL MOBILE
=========================== */
@media (max-width: 480px), .et-db.et-db.et-db #et-boc .et-l /* ===========================
RESPONSIVE - SMALL MOBILE
=========================== */
@media (max-width: 480px){
.combo-hero-section {
padding: 60px 0 40px;
}
.combo-hero-container {
width: 90%;
}
.combo-trust-container {
width: 90%;
}
.combo-hero-badge {
font-size: 12px;
padding: 8px 16px;
}
.combo-hero-title {
font-size: 28px !important;
}
.combo-hero-subtitle {
font-size: 16px !important;
}
.btn-primary,
.btn-secondary {
padding: 14px 24px;
font-size: 16px !important;
}
.combo-stat-number {
font-size: 24px !important;
}
.combo-stat-label {
font-size: 12px !important;
}
.combo-icon {
width: 36px;
height: 36px;
}
.combo-icon svg {
width: 18px;
height: 18px;
}
.combo-trust-item span {
font-size: 14px !important;
}
}
<!-- ===========================
JAVASCRIPT
=========================== -->
// Smooth Scroll for CTA Buttons
(function () {
'use strict';
document.addEventListener('DOMContentLoaded', function () {
const ctaButtons = document.querySelectorAll('.combo-btn-primary, .combo-btn-secondary');
ctaButtons.forEach(function (button) {
button.addEventListener('click', function (e) {
const href = this.getAttribute('href');
if (href && href.startsWith('#')) {
e.preventDefault();
const targetElement = document.querySelector(href);
if (targetElement) {
window.scrollTo({
top: targetElement.offsetTop - 80,
behavior: 'smooth'
});
}
}
});
});
});
})();
(function () {
var secs = [].slice.call(document.querySelectorAll('.combo-hero-section, .combo-trust-bar'));
if (!secs.length) return;
var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
if (reduce || !('IntersectionObserver' in window)) return;
var io = new IntersectionObserver(function (entries) {
entries.forEach(function (en) { if (en.isIntersecting) { en.target.classList.add('cmb-in'); io.unobserve(en.target); } });
}, { threshold: 0.12, rootMargin: '0px 0px -70px 0px' });
secs.forEach(function (sec) {
sec.classList.add('cmb-js');
[].slice.call(sec.querySelectorAll('.cmb-reveal')).forEach(function (el) { io.observe(el); });
});
})();