41×
return on spend, first quarter
The level of performance in such a short time was impressive. Implementation was fast, and support has been good throughout.
Amina Mushi
Head of Marketing, Galacha
The anatomy of a product page. A landing page is a sequence of chapters, each carrying one idea: a headline, a sentence, and a picture that does the work. These components fix the rhythm — the measure of a headline, the space between chapters, the shape a picture takes — so every product page in a family reads as one company rather than one designer’s afternoon.
One idea, centred, with room around it. An eyebrow names the subject,
the title is capped at twenty characters of measure so it always
breaks well, and the lede is one sentence at reading width.
.b-chapter--tight halves the vertical room;
.b-chapter--start aligns the whole chapter to the
reading edge.
Barua Mail
Professional email on the domain you own — set up in an afternoon, paid for in shillings.
The first chapter, with the product beneath it.
.b-hero opens the top spacing and enlarges the title;
.b-hero__media holds the picture at the distance the
headline needs to breathe. Show the product, not an abstraction of it.
The three marks that sit around a headline on almost every product page: the news above it, the credibility under it, and the ground it all stands on. Each is small enough that every team rebuilds it slightly differently, which is exactly why they belong here.
One line of news above the title — a release, a launch, a price
change. It is a link, so it is an <a>. The arrow is
a text mark rather than an icon and steps forward on hover, the way a
link should suggest travel.
Borrowed credibility, stated plainly: five marks and who is vouching.
A star that was not earned carries .is-empty rather than
being left out, so the row is always five wide and reads as a score
instead of a count. Put the real number in the
aria-label — five shapes mean nothing to a screen reader.
The companies already here. Every mark sits at the same height
whatever its proportions — --b-logo-h — which is the only
thing that makes a row of logos look deliberate rather than pasted.
Inline SVG on currentColor is the intended form: it
inherits the wall's ink and therefore survives the dark theme. A
raster logo is greyed instead, because a PNG cannot follow the text
colour.
The ground a hero stands on. A flat page makes a centred headline look
like it is floating in milk; this is the quietest possible answer —
three checkerboards at different scales, each barely there, masked so
the pattern dissolves before it reaches the words. It is drawn
entirely from gradients, so it costs no image and no element per
square, and it re-tints with the theme.
--b-tile is the cell size.
It is positioned absolute, so whatever holds it carries
.b-has-tiles — positioned and clipping, so no page has to
remember. Everything after it is lifted above it automatically.
The squares stop before they reach this sentence.
Three shapes a product page reaches for once it has something to show: a row of names too long to stand still, a case study, and a card that sends somebody off to read.
For a line of marks that will not fit standing still. The track holds
the list twice and travels exactly half its width,
which is what makes the loop seamless; with one copy it visibly snaps.
It pauses under the pointer so a name can be read, and for anyone who
asked for less motion it stops and becomes an ordinary scrolling row.
--b-marquee-time is the pace.
The list goes in twice, each copy in its own
.b-marquee__group, and the track travels half its width
so group two lands where group one started. The group is not
decoration: half the track is one group, so the loop only closes if a
group is at least as wide as the rail. Five short names in a wide row
leave the second copy ending early and a hole travelling along behind
it. Each group is floored at the rail's own width and spaces its
contents out to fill it, so the belt is solid at any width with any
number of names; when the list is genuinely wider than the rail,
max-content wins and nothing changes.
A group almost always carries a row class as well, usually
.b-logo-wall, and those are defined later in this layer,
so the three properties that make a marquee a marquee are pinned at a
specificity a row cannot reach: it is not a row's business whether a
belt wraps or how its copies fill the rail. The rhythm still is. Set
--b-marquee-gap and the end padding follows it
automatically, at exactly half, which is what keeps the space across
the seam equal to every other space in the belt.
The shape a case study takes. The figure leads because it is what gets remembered, the sentence earns it, and the name is what makes either believable. It sits on the accent, because this is the one card on a page meant to interrupt.
41×
return on spend, first quarter
The level of performance in such a short time was impressive. Implementation was fast, and support has been good throughout.
Amina Mushi
Head of Marketing, Galacha
A picture, what kind of thing it is, and enough of the first line to decide. The whole card is the link, and the plate stands in when there is no picture, so a row of three never has a hole in it.
A picture is furniture, so it has a shape:
.b-figure__frame clips it to the large radius, lifts it
on the elevation scale, and fills any gap with a surface rather than
white. .b-figure--bleed lets it run to the edges of the
page, which is how a chapter ends when the image is the argument.
.b-figure--fade dissolves the bottom of the frame into
the page instead of ending it, which is what a product shot under a
hero wants: a window into the thing rather than a photograph with an
edge. --b-fade-from is where the fade begins.
Picture beside prose, alternating down the page.
.b-feature-row--flip swaps the sides so consecutive rows
do not march; below md both stack with the picture
first. Actions inside a row align with the prose, never centre.
Threads, labels, and search that reads the whole message — one keystroke away.
Tiles of unequal weight in one grid — the rest of a platform at a
glance. .b-bento__tile--wide takes two columns so the
grid has a rhythm instead of a checkerboard; on a phone every tile is
full width.
Mailboxes on your domain, shared inboxes for the team, and IMAP for the app you already use.
Files beside the mailbox they belong to.
Four numbers, evenly spaced, with the claim underneath each. Use tabular numerals so the row stays even, and keep the labels honest — a figure with a footnote is worth more than a figure without one.
Everything above is the quiet version of a product page, and the restraint that makes a toolbar good makes a front page forgettable. A landing page is not an application: the type has to be readable from across a room, the ground has to change between chapters so the page has floors, and the accent has to be used at full strength rather than apologetically. These are the pieces that do that.
The one phrase in a headline that carries the sentence, on a block of
accent. .b-mark sits behind the letters rather than
around them: the bleed comes from a box-shadow spread instead of
inline padding, which would break the line's rhythm, and
box-decoration-break keeps it whole when the phrase
wraps. Set --b-mark-ground for a different colour.
.b-chapter--tint puts a chapter on a wash of the accent.
Alternating it with the plain ground is what gives a long page floors
you can feel without a single rule or border, and because the wash is
mixed from the accent it follows a brand colour. It is deliberately
weaker than --b-color-accent-soft, which is a
component's fill, not a room's paint.
.b-marketing-nav--lg is the same bar at the height, type
size and spacing a front page needs, with the action on the right as
a filled pill rather than a link. The base
.b-marketing-nav is right above an application, where
the chrome should get out of the way; on a front page it reads as a
browser toolbar somebody forgot to style.
A screenshot dropped on white reads as a document. Inside
.b-showcase, a large rounded panel of colour, it reads as
a product: the panel gives it an edge and a shadow to sit against, and
the page gets one block of brand at the point a visitor is deciding
whether to keep reading. Put the picture in
.b-showcase__shot. Wide, the panel becomes a stage and a
second child, usually a .b-stat-card, takes the column
beside it, which is the whole reason the panel is bigger than the
picture it holds.
A bare row of wordmarks reads as text.
.b-logo-wall--cards puts each one on its own white
plate, where they read as the companies they stand for, which is the
whole point of showing them. Same wall, one modifier, and it works
inside .b-marquee.
.b-accordion--plain drops the card around a group of
questions. The boxed version belongs in an application, where a group
needs an edge to separate it from the rest of the screen; on a
marketing page the questions are the only thing in their column, so
the chrome is noise. Hairlines between rows, a circled mark on the
right that becomes a minus when open.
A page reads as a sequence of arguments rather than a stack of
announcements when each chapter puts its headline on the left and the
substance next to it. .b-feature-row--top aligns the two
columns to the same line, which centring does not: centred is right
when the row is a picture beside prose, and wrong when it is a
headline beside a list of ten things, where the headline drifts to
the middle of a tall column and stops looking like the title of what
is next to it. .b-feature-row__title--lg gives that
headline the chapter's weight.
Product pages alternate light and dark full-bleed sections so the
page has chapters you can feel while scrolling.
.b-chapter--dark flips color-scheme rather
than hardcoding colours, so every token inside resolves for the dark
ground and any component dropped in keeps working. It is one of the
three selectors the token block is declared on, alongside
:root and [data-theme] — a chapter that
inverts is a themed subtree, and flipping the scheme without
re-declaring the tokens leaves them resolved against the page around
it, which reads as a dark band that came out light.
Barua for business
The same chapter, on the other ground.
Storage
Files shared with a link that expires.
Domains
Buy the name, records written for you.
Hosting
A site with nothing to look after.
.b-chapter__media is what a chapter shows under its
words — a rail, a grid, a picture. It takes the same standoff as
.b-chapter__actions, so a chapter with cards and a
chapter with buttons breathe alike, and it sets the text back to
start alignment because cards are not headlines.
A row you push sideways, snapping card to card — for a set of features that reads better as a sequence than a grid. Every figure in a rail is forced to one aspect so the captions line up; photographs arrive at whatever shape they were taken.

sales@ and support@ belong to the team.

Storage sits beside the mailbox.

Mobile money or card, one balance.
A hero can move. Put a <video> in the figure frame
with autoplay muted loop playsinline — muted because a
page that makes noise is a page people close, and
playsinline so phones do not take it fullscreen. Keep it
short, keep it small, and give it a poster so something is there
before it loads.
One offer, full width, in its own colour — the band near the end of a product page that carries the ask. It sets a dark scheme so the controls inside it come out right.
TZS 10,000 a mailbox each month, no setup fee and no contract.
The small print a claim earns. Numbered, caption-sized and tertiary,
sitting between the last chapter and the footer — with
<sup> markers on the claims themselves. A figure
with a footnote is worth more than a figure without one.