Skip to content

Hero Sections

Home Hero

The flagship hero section communicates the brand’s core proposition in a single view.

┌────────────────────────────────────────────────────────────────┐
│ ▓▓▓▓▓▓▓▓▓▓ │
│ ▓ PHOTO ▓ BRETT JOHNSON │
│ ▓ HIGH ▓ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ ▓ CONT ▓ THE ORIGINAL INTERNET GODFATHER │
│ ▓▓▓▓▓▓▓▓▓▓ ───────────────────────────────────── │
│ Named by the U.S. Secret Service │
│ Founder of ShadowCrew. 39 Felonies. Most Wanted.│
│ The man who built modern cybercrime — │
│ now helps Fortune 500s fight it. │
│ │
│ [ BOOK A SPEAKING ENGAGEMENT ] [ DOWNLOAD MEDIA KIT ] │
└────────────────────────────────────────────────────────────────┘

Grid Structure

<section className="relative min-h-[90vh] bg-brand-dark">
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 py-24 lg:py-32">
<div className="grid grid-cols-1 gap-12 lg:grid-cols-[2fr_3fr] items-center">
<HeroPhoto />
<HeroCopy />
</div>
</div>
</section>

Copy Hierarchy

<div className="space-y-6">
{/* Eyebrow */}
<span className="text-xs font-mono uppercase tracking-widest text-brand-red">
The Original Internet Godfather
</span>
{/* Primary heading */}
<h1 className="text-5xl lg:text-6xl font-bold tracking-tight text-white leading-none">
Brett Johnson
</h1>
{/* Divider */}
<div className="w-20 h-px bg-brand-red" />
{/* Sub-heading */}
<p className="text-xl text-white/70 max-w-xl leading-relaxed">
Named by the U.S. Secret Service as the most dangerous cybercriminal
in the world. Now he helps Fortune 500s and federal agencies stop the
criminals they can't catch.
</p>
{/* CTAs */}
<div className="flex flex-wrap gap-4 pt-2">
<Button variant="primary" size="lg">Book a Speaking Engagement</Button>
<Button variant="secondary" size="lg">Download Media Kit</Button>
</div>
</div>

Photo Treatment

<div className="relative aspect-[4/5] rounded-sm overflow-hidden border border-brand-gray">
<Image
src="/brett-hero.webp"
alt="Brett Johnson — cybersecurity keynote speaker"
fill
className="object-cover object-top"
priority
/>
{/* Dark vignette on sides */}
<div className="absolute inset-0 bg-gradient-to-r from-brand-dark/40 via-transparent to-brand-dark/40" />
</div>

Entrance Animation

const heroVariants = {
hidden: { opacity: 0, y: 32 },
visible: { opacity: 1, y: 0 },
};
<motion.div
variants={heroVariants}
initial="hidden"
animate="visible"
transition={{ duration: 0.6, ease: [0, 0, 0.2, 1], delay: 0.1 }}
>
{/* copy */}
</motion.div>

Photo fades in simultaneously at delay: 0. Copy stagger: delay: 0.15, delay: 0.25 for each child element.

Inner Page Heroes

Interior pages use a stripped-back hero — no photo, just headline and breadcrumb:

<div className="border-b border-brand-gray bg-brand-charcoal">
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 py-16">
<span className="text-xs font-mono uppercase tracking-widest text-brand-red">
{section}
</span>
<h1 className="mt-3 text-4xl font-bold text-white">{title}</h1>
{description && (
<p className="mt-4 max-w-2xl text-lg text-white/60">{description}</p>
)}
</div>
</div>