287 lines
6.4 KiB
CSS
287 lines
6.4 KiB
CSS
/* ============================================================
|
|
HERO COMPONENT
|
|
Full-width split hero with headline, sub, CTA, and badge
|
|
============================================================ */
|
|
|
|
.hero {
|
|
background-color: var(--hero-bg);
|
|
background-image: var(--hero-gradient);
|
|
padding: 7rem 0 6rem;
|
|
position: relative;
|
|
overflow: hidden;
|
|
transition: background-color 0.4s ease;
|
|
}
|
|
|
|
/* ── Decorative grid lines ─────────────────────────────── */
|
|
.hero::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
background-image:
|
|
linear-gradient(var(--color-border) 1px, transparent 1px),
|
|
linear-gradient(90deg, var(--color-border) 1px, transparent 1px);
|
|
background-size: 60px 60px;
|
|
opacity: 0.25;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.hero-inner {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 4rem;
|
|
align-items: center;
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
/* ── Left: content ─────────────────────────────────────── */
|
|
.hero-content {
|
|
max-width: 560px;
|
|
}
|
|
|
|
.hero-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
padding: 0.4rem 0.9rem;
|
|
background-color: var(--color-primary-soft);
|
|
border: 1px solid var(--color-primary);
|
|
border-radius: 99px;
|
|
font-size: 0.8rem;
|
|
font-weight: 600;
|
|
color: var(--color-primary);
|
|
letter-spacing: 0.04em;
|
|
margin-bottom: 1.75rem;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.hero-badge-dot {
|
|
width: 6px;
|
|
height: 6px;
|
|
border-radius: 50%;
|
|
background-color: var(--color-primary);
|
|
animation: pulse-dot 2s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes pulse-dot {
|
|
0%, 100% { opacity: 1; transform: scale(1); }
|
|
50% { opacity: 0.5; transform: scale(0.8); }
|
|
}
|
|
|
|
.hero-title {
|
|
font-family: var(--font-heading);
|
|
font-size: clamp(2.6rem, 5vw, 3.8rem);
|
|
font-weight: 900;
|
|
line-height: 1.08;
|
|
color: var(--color-heading);
|
|
letter-spacing: -0.03em;
|
|
margin-bottom: 1.25rem;
|
|
}
|
|
|
|
.hero-title em {
|
|
font-style: normal;
|
|
color: var(--color-primary);
|
|
}
|
|
|
|
.hero-subtitle {
|
|
font-size: 1.15rem;
|
|
color: var(--color-text-muted);
|
|
line-height: 1.75;
|
|
margin-bottom: 2.25rem;
|
|
max-width: 480px;
|
|
}
|
|
|
|
.hero-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
flex-wrap: wrap;
|
|
margin-bottom: 2.5rem;
|
|
}
|
|
|
|
.hero-social-proof {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.hero-avatars {
|
|
display: flex;
|
|
}
|
|
|
|
.hero-avatars span {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 34px;
|
|
height: 34px;
|
|
border-radius: 50%;
|
|
border: 2px solid var(--color-bg);
|
|
background-color: var(--color-surface-2);
|
|
font-size: 0.7rem;
|
|
font-weight: 700;
|
|
color: var(--color-text);
|
|
margin-right: -10px;
|
|
transition: background-color 0.3s ease, border-color 0.3s ease;
|
|
}
|
|
|
|
.hero-proof-text {
|
|
font-size: 0.85rem;
|
|
color: var(--color-text-muted);
|
|
padding-left: 18px;
|
|
}
|
|
|
|
.hero-proof-text strong {
|
|
color: var(--color-heading);
|
|
font-weight: 700;
|
|
}
|
|
|
|
/* ── Right: visual card ────────────────────────────────── */
|
|
.hero-visual {
|
|
position: relative;
|
|
}
|
|
|
|
.hero-card {
|
|
background-color: var(--card-bg);
|
|
border: 1px solid var(--card-border);
|
|
border-radius: var(--radius-xl);
|
|
padding: 2rem;
|
|
box-shadow: var(--color-card-shadow), var(--color-glow);
|
|
transition: all 0.4s ease;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.hero-card::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0; left: 0; right: 0;
|
|
height: 2px;
|
|
background: linear-gradient(90deg, var(--color-primary), var(--color-accent));
|
|
opacity: 0.8;
|
|
}
|
|
|
|
.hero-card-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.hero-card-dot {
|
|
width: 10px; height: 10px; border-radius: 50%;
|
|
}
|
|
|
|
.hero-card-dot:nth-child(1) { background: #ff5f57; }
|
|
.hero-card-dot:nth-child(2) { background: #ffbd2e; }
|
|
.hero-card-dot:nth-child(3) { background: #28ca41; }
|
|
|
|
.hero-stat-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 1rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.hero-stat {
|
|
background-color: var(--color-surface);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-md);
|
|
padding: 1rem;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.hero-stat-value {
|
|
font-family: var(--font-heading);
|
|
font-size: 1.6rem;
|
|
font-weight: 900;
|
|
color: var(--color-primary);
|
|
line-height: 1;
|
|
margin-bottom: 0.3rem;
|
|
}
|
|
|
|
.hero-stat-label {
|
|
font-size: 0.78rem;
|
|
color: var(--color-text-muted);
|
|
font-weight: 500;
|
|
}
|
|
|
|
.hero-chart-bar {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
gap: 6px;
|
|
height: 80px;
|
|
}
|
|
|
|
.hero-chart-bar span {
|
|
flex: 1;
|
|
background-color: var(--color-primary-soft);
|
|
border-radius: var(--radius-sm) var(--radius-sm) 0 0;
|
|
transition: background-color 0.3s ease;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.hero-chart-bar span::after {
|
|
content: '';
|
|
position: absolute;
|
|
bottom: 0; left: 0; right: 0;
|
|
background-color: var(--color-primary);
|
|
border-radius: inherit;
|
|
transition: height 0.8s ease;
|
|
}
|
|
|
|
.hero-chart-bar span:nth-child(1)::after { height: 40%; }
|
|
.hero-chart-bar span:nth-child(2)::after { height: 65%; }
|
|
.hero-chart-bar span:nth-child(3)::after { height: 50%; }
|
|
.hero-chart-bar span:nth-child(4)::after { height: 80%; }
|
|
.hero-chart-bar span:nth-child(5)::after { height: 60%; }
|
|
.hero-chart-bar span:nth-child(6)::after { height: 90%; }
|
|
.hero-chart-bar span:nth-child(7)::after { height: 75%; }
|
|
|
|
/* ── Floating badge ──────────────────────────────────── */
|
|
.hero-float-badge {
|
|
position: absolute;
|
|
bottom: -1rem;
|
|
right: -1rem;
|
|
background-color: var(--color-primary);
|
|
color: var(--color-btn-text);
|
|
border-radius: var(--radius-lg);
|
|
padding: 0.75rem 1.25rem;
|
|
font-size: 0.8rem;
|
|
font-weight: 700;
|
|
box-shadow: 0 8px 24px var(--color-shadow);
|
|
animation: float-badge 4s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes float-badge {
|
|
0%, 100% { transform: translateY(0); }
|
|
50% { transform: translateY(-6px); }
|
|
}
|
|
|
|
/* ── Responsive ─────────────────────────────────────────── */
|
|
@media (max-width: 900px) {
|
|
.hero-inner {
|
|
grid-template-columns: 1fr;
|
|
gap: 3rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.hero-content {
|
|
max-width: 100%;
|
|
}
|
|
|
|
.hero-actions {
|
|
justify-content: center;
|
|
}
|
|
|
|
.hero-social-proof {
|
|
justify-content: center;
|
|
}
|
|
|
|
.hero-subtitle {
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
}
|