Diamond
A fine grid turned through forty-five degrees, two accent lights under it.
Small crosses at every intersection, a registration grid, with five of them lit and breathing.
“Copy the hero” is the styles and the SVG, carrying the colours and speed you set above. “Copy as a section” adds the wrapper a hero actually needs: the SVG absolute behind the copy, inert to the pointer, and a scrim so the heading holds. The Free licence asks for one visible credit per page: Animation by Pulsar, linked to Pulsar. Licence
Set any of these on the section, or on any ancestor, and the hero follows. Nothing else in the file needs editing.
<!-- Pulsar by Business Nebula · "hero-lattice-cross" · https://pulsaricons.com | Licence: https://pulsaricons.com/legal/licence | Free-licence credit: Animation by Pulsar, linked to https://pulsaricons.com | Business Nebula: https://businessnebula.com.au -->
<style>
.hero {
position: relative;
isolation: isolate;
overflow: hidden;
min-height: 70vh;
display: flex;
align-items: center;
padding: 5rem 5%;
color: #ffffff;
background: #0b0a16;
}
.hero > .pulsar-hero {
position: absolute;
inset: 0;
z-index: 0;
pointer-events: none;
}
/* A scrim under the copy, heavier on the side the text sits on. */
.hero-scrim {
position: absolute;
inset: 0;
z-index: 1;
pointer-events: none;
background: linear-gradient(100deg, #0b0a16 0%, color-mix(in oklab, #0b0a16 78%, transparent) 40%, transparent 68%);
}
.hero-copy {
position: relative;
z-index: 2;
max-width: 40rem;
}
.hero-eyebrow {
font-size: 0.75rem;
letter-spacing: 0.18em;
text-transform: uppercase;
opacity: 0.8;
}
/* Generated by scripts/hero-lattice.mjs from heroes/hero-lattice-cross/params.json.
Consumers set four custom properties on any ancestor:
--pulsar-hero-bg the ground (default #0b0a16)
--pulsar-hero-ink the grid (default #ffffff)
--pulsar-accent the glows and nodes (default #8a7df7)
--pulsar-hero-speed a rate; 2 is twice as fast, 0.5 half speed */
.pulsar-hero-lattice-cross {
display: block;
width: 100%;
height: 100%;
color: var(--pulsar-hero-ink, #ffffff);
}
.pulsar-hero-lattice-cross .hero-lattice-cross-ground {
fill: var(--pulsar-hero-bg, #0b0a16);
}
.pulsar-hero-lattice-cross .hero-lattice-cross-accent-stop {
stop-color: var(--pulsar-accent, #8a7df7);
}
.pulsar-hero-lattice-cross .hero-lattice-cross-ground-stop {
stop-color: var(--pulsar-hero-bg, #0b0a16);
}
.pulsar-hero-lattice-cross .hero-lattice-cross-band {
transform-box: view-box;
will-change: transform;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
.pulsar-hero-lattice-cross .hero-lattice-cross-glow-1 {
transform-origin: 1300px 500px;
animation-name: hero-lattice-cross-glow-1;
animation-duration: calc(21s / var(--pulsar-hero-speed, 1));
}
.pulsar-hero-lattice-cross .hero-lattice-cross-nodes {
animation-name: hero-lattice-cross-nodes;
animation-duration: calc(7s / var(--pulsar-hero-speed, 1));
}
@keyframes hero-lattice-cross-glow-1 {
from {
transform: translate(-80px, -30px) scale(0.94);
}
to {
transform: translate(80px, 30px) scale(1.06);
}
}
@keyframes hero-lattice-cross-nodes {
from {
opacity: 0.35;
}
to {
opacity: 1;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-hero-lattice-cross .hero-lattice-cross-glow-1,
.pulsar-hero-lattice-cross .hero-lattice-cross-nodes {
animation: none;
}
}
</style>
<section class="hero">
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="pulsar pulsar-hero pulsar-hero-lattice-cross" data-pulsar="hero-lattice-cross" preserveAspectRatio="xMidYMid slice" viewBox="0 0 1600 900"><metadata><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><rdf:Description><dc:title>hero-lattice-cross</dc:title><dc:creator>Pulsar by Business Nebula</dc:creator><dc:publisher>Business Nebula</dc:publisher><dc:source>https://pulsaricons.com/icons</dc:source><dc:relation>https://businessnebula.com.au</dc:relation><dc:rights>Pulsar licence, https://pulsaricons.com/legal/licence</dc:rights></rdf:Description></rdf:RDF></metadata><defs><radialGradient id="hero-lattice-cross-glow-1"><stop class="hero-lattice-cross-accent-stop" offset="0" stop-opacity=".45"></stop><stop class="hero-lattice-cross-accent-stop" offset=".5" stop-opacity=".19"></stop><stop class="hero-lattice-cross-accent-stop" offset="1" stop-opacity="0"></stop></radialGradient><radialGradient id="hero-lattice-cross-node"><stop class="hero-lattice-cross-accent-stop" offset="0" stop-opacity=".95"></stop><stop class="hero-lattice-cross-accent-stop" offset=".35" stop-opacity=".6"></stop><stop class="hero-lattice-cross-accent-stop" offset="1" stop-opacity="0"></stop></radialGradient><linearGradient id="hero-lattice-cross-veil" x1="0" x2="1600" y1="0" y2="0" gradientUnits="userSpaceOnUse"><stop class="hero-lattice-cross-ground-stop" offset="0" stop-opacity=".92"></stop><stop class="hero-lattice-cross-ground-stop" offset=".3" stop-opacity=".6"></stop><stop class="hero-lattice-cross-ground-stop" offset=".62" stop-opacity=".15"></stop><stop class="hero-lattice-cross-ground-stop" offset="1" stop-opacity="0"></stop></linearGradient><pattern id="hero-lattice-cross-tile" width="64" height="64" patternUnits="userSpaceOnUse"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.2" d="M24 32h16m-8-8v16"></path></pattern></defs><rect width="1600" height="900" class="hero-lattice-cross-ground"></rect><g class="hero-lattice-cross-band hero-lattice-cross-glow hero-lattice-cross-glow-1"><ellipse cx="1300" cy="500" fill="url(#hero-lattice-cross-glow-1)" rx="480" ry="360"></ellipse></g><rect width="1600" height="900" fill="url(#hero-lattice-cross-tile)" class="hero-lattice-cross-field" opacity=".4"></rect><g class="hero-lattice-cross-band hero-lattice-cross-nodes"><circle cx="1312" cy="288" r="20" fill="url(#hero-lattice-cross-node)"></circle><circle cx="1056" cy="544" r="20" fill="url(#hero-lattice-cross-node)"></circle><circle cx="1568" cy="416" r="20" fill="url(#hero-lattice-cross-node)"></circle><circle cx="1184" cy="736" r="20" fill="url(#hero-lattice-cross-node)"></circle><circle cx="1440" cy="224" r="20" fill="url(#hero-lattice-cross-node)"></circle></g><rect width="1600" height="900" fill="url(#hero-lattice-cross-veil)" class="hero-lattice-cross-veil"></rect></svg>
<div class="hero-scrim" aria-hidden="true"></div>
<div class="hero-copy">
<h1>Your heading</h1>
<p>Your supporting sentence.</p>
<a href="#">Your call to action</a>
</div>
</section>
/* Generated by scripts/hero-lattice.mjs from heroes/hero-lattice-cross/params.json.
Consumers set four custom properties on any ancestor:
--pulsar-hero-bg the ground (default #0b0a16)
--pulsar-hero-ink the grid (default #ffffff)
--pulsar-accent the glows and nodes (default #8a7df7)
--pulsar-hero-speed a rate; 2 is twice as fast, 0.5 half speed */
.pulsar-hero-lattice-cross {
display: block;
width: 100%;
height: 100%;
color: var(--pulsar-hero-ink, #ffffff);
}
.pulsar-hero-lattice-cross .hero-lattice-cross-ground {
fill: var(--pulsar-hero-bg, #0b0a16);
}
.pulsar-hero-lattice-cross .hero-lattice-cross-accent-stop {
stop-color: var(--pulsar-accent, #8a7df7);
}
.pulsar-hero-lattice-cross .hero-lattice-cross-ground-stop {
stop-color: var(--pulsar-hero-bg, #0b0a16);
}
.pulsar-hero-lattice-cross .hero-lattice-cross-band {
transform-box: view-box;
will-change: transform;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
.pulsar-hero-lattice-cross .hero-lattice-cross-glow-1 {
transform-origin: 1300px 500px;
animation-name: hero-lattice-cross-glow-1;
animation-duration: calc(21s / var(--pulsar-hero-speed, 1));
}
.pulsar-hero-lattice-cross .hero-lattice-cross-nodes {
animation-name: hero-lattice-cross-nodes;
animation-duration: calc(7s / var(--pulsar-hero-speed, 1));
}
@keyframes hero-lattice-cross-glow-1 {
from {
transform: translate(-80px, -30px) scale(0.94);
}
to {
transform: translate(80px, 30px) scale(1.06);
}
}
@keyframes hero-lattice-cross-nodes {
from {
opacity: 0.35;
}
to {
opacity: 1;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-hero-lattice-cross .hero-lattice-cross-glow-1,
.pulsar-hero-lattice-cross .hero-lattice-cross-nodes {
animation: none;
}
}
A fine grid turned through forty-five degrees, two accent lights under it.
A fine dot grid with one accent light moving slowly beneath it.
A perspective floor receding to a horizon, with the horizon itself glowing and breathing.
Fine graph paper, the busiest grid of the series, with three lights under it at three rates.
A dense dot field with one round accent light and six lit dots around it, pulsing.
A honeycomb of thin hexagons with an accent light and an ink shadow moving under it.
Wide ruled squares, a sheet of graph paper, with an accent light and a shadow of ink drifting under it.
An isometric lattice, the grid of a technical drawing, lit from one moving point.
The floor turned over: a ceiling of lines converging above the copy, sparse, with one light at the far end.