Card
Light surface with an icon tile.
SKYBANANAS · v–
Every colour, size and component SKYBANANAS uses, in one place.
The values below are read from tokens/tokens.json — the same file that styles the website.
Workflow
One file holds every value. Edit it, rebuild, and both this page and the website update together.
Change a value in tokens/tokens.json.
Run python3 tokens/build.py. It writes web/tokens.css and web/design-system/tokens.js.
Check this page and the homepage in the browser.
python3 tokens/build.py --check must pass before you commit.
tokens/tokens.json.
Components → web/components.css (shared by the site and this page).
Page layout → web/styles.css.
Logo geometry → source/ (see the logo package README).
Logo
Uppercase S and B in Inter Tight Black, interlocked with B on top, followed by a yellow period. The gap between the letters is a real cut-out, so the mark sits cleanly on any background.
Colour
Mostly Ink and Paper, with yellow kept for the period and small accents. In code, use the semantic tokens; brand and neutral tokens are the palette they point to. Click any token to copy its variable.
Typography
One family across the site, the same one the logo is drawn from. Headings are Black and tightly tracked;
body text stays Regular. Use the .text-* classes rather than setting sizes by hand.
Spacing
The token name times 4 is the size in pixels: --space-8 = 32px.
Radius
Layout
Motion
Motion only gives feedback, such as a 2px lift on hover. Nothing moves on its own, and everything respects prefers-reduced-motion.
Components
These are live: they use the same components.css as the website.
.kicker .eyebrow > .dot .badge .badge-live
<h2 class="text-h2">Small steps<span class="period">.</span></h2>
Light surface with an icon tile.
For projects on dark sections.
Numbered process item.
.card > .card-icon .tile .tile-empty .step > .step-num
Voice
The site is in American English for now. Sound like a small team that ships, not an agency selling.