/* ============================================================ 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; } }