KahuLogic

kahulogic.com · brand kit · developer handover

Everything the website is built from

Logo files, colour tokens, type scale, buttons, cards, the Kahu orb and the grain gradients. Values here are the exact ones used across every page in this project; copy them as-is.

02 · Colour

White ground, ink type, one coral accent

Pages are white with warm paper sections for rhythm. Coral is the only accent and is reserved for primary buttons, eyebrow labels, links on hover and live indicators. The brand spectrum appears only in the gradient mark, the growth gradient and the orb, never as flat UI colour.

Core tokens

Ink#16161dHeadings, body, footer ground, dark bands.
Ink dim#5c5c66Lead and secondary copy.
Ink faint#9a9aa3Mono captions, disabled, placeholders.
White#ffffffPage ground, cards, product UI.
Paper#f6f5f1Alternate section ground, chips.
Paper light#faf9f6Soft hero fades, inner panels.
Paper 2#f3f2eeChat bubbles, quiet fills.
Off-white#f7f6f2Text on ink (footer copy).
Coral#FF4D00Primary buttons, live dots, focus rings.
Coral deep#d94100Eyebrow labels and coral text on white.
Coral tint#FFF1EAIcon chips, coral highlights.
Live OK#2fcf6aConnected / success indicators only.

Brand spectrum · gradient mark, orb, growth gradient only

Blue · #0048ffAzure · #00a4ffCyan · #00ffffCream · #ffe8b4Gold · #ffc43aCoral · #ff6c36Violet · #3a61fe
--brand-grad: linear-gradient(105deg,#0048ff 0%,#00a4ff 22%,#00ffff 38%,#ffe8b4 52%,#ffc43a 66%,#ff6c36 82%,#3a61fe 100%)

Soft tints · mega-menu promos, icon chips

Peach#ffdfd2Platform promo tile.
Sky#d8ecfeSolutions promo, info chips.
Butter#ffeecaResources promo tile.
Lilac#e9e2ffConversation chips.
Hero glows

Product heroes carry one soft radial glow in the top-left, never a full gradient background.

radial-gradient(ellipse 42% 55% at 18% 22%, rgba(0,164,255,.22), rgba(0,164,255,0) 70%) radial-gradient(ellipse 42% 55% at 12% 18%, rgba(255,77,0,.16), rgba(255,77,0,0) 70%)
Contrast

Body text is #16161d or #5c5c66 on white or paper (both above 4.5:1). #9a9aa3 is for mono captions only, never body copy. White text on coral #FF4D00 is for buttons at 16px 600 and above; use #d94100 for coral text on white.

03 · Typography

Three families from Google Fonts

Space Grotesk for headings and buttons, Hanken Grotesk for everything you read, Space Mono for small labels and code. Headings use tight negative tracking; body never does.

Ag
Space Grotesk

Display · weights 500, 600, 700. Headings, buttons, card titles, big numbers.

Ag
Hanken Grotesk

Body · weights 400, 500, 600. Paragraphs, nav links, form fields, UI copy.

Ag
Space Mono

Labels · weights 400, 700. Eyebrows, captions, timestamps, code.

https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Hanken+Grotesk:wght@400;500;600&family=Space+Mono:wght@400;700&display=swap
Page title
H1font:600 clamp(38px,5.4vw,72px)/1 'Space Grotesk'; letter-spacing:-0.035em; text-wrap:balance
Section heading
H2font:600 clamp(30px,3.6vw,48px)/1.05 'Space Grotesk'; letter-spacing:-0.03em
Card title and FAQ question
H3font:600 19px 'Space Grotesk' · card titles 16–20px, letter-spacing:-0.02em
Lead paragraph under a heading, 62–64 characters wide at most.
Leadfont-size:clamp(17px,1.4vw,20px); line-height:1.5; color:#5c5c66; max-width:64ch
Body copy in lists, cards and legal pages. Ink on white.
Bodyfont-size:15px (14–18px); line-height:1.5; color:#16161d or #5c5c66
Eyebrow label
Eyebrowfont:400 12px 'Space Mono'; letter-spacing:.14em; text-transform:uppercase; color:#d94100
caption · 11px mono · timestamps, footnotes
Captionfont:400 11–12.5px 'Space Mono'; letter-spacing:.06em; color:#9a9aa3

04 · Buttons, pills, cards

Soft corners, hairline borders, no drop shadows on rest

One coral primary per view. Secondary actions are ghost buttons. Cards are white with a 1px ink hairline; shadow appears only on hover or when a card floats over a photo.

Primary font:600 16px 'Space Grotesk'; background:#FF4D00; color:#fff; padding:15px 26px; border-radius:14px hover: translateY(-2px) + 0 10px 24px -10px rgba(0,0,0,.11) Ghost background:#fff; color:#16161d; border:1px solid rgba(22,22,29,.12); same padding/radius hover: background:#16161d; color:#fff Nav CTA 14.5px; padding:12px 22px Small: 15px; padding:12px 22px; radius 100px (pill variant)
On ink primary flips to white/ink; ghost border rgba(255,255,255,.35), hover fills white Glass rgba(255,255,255,.14) + 1px rgba(255,255,255,.35); backdrop-filter:blur(6px); radius 999px Ink card background:#16161d; text #fff; dim text rgba(247,246,242,.6); hairline rgba(247,246,242,.12)
Link cardCross-links between products and solutions.Open page →background:#fff; border:1px solid rgba(22,22,29,.1); border-radius:16px; padding:24px hover: translateY(-2px); box-shadow:0 24px 48px -32px rgba(22,22,29,.14)
Tag
Media card

Image or gradient inset 10px, radius 12 inside 18.

outer radius 18px, padding 10px; media radius 12px; white tag pill 12px 600

Accordion question

Answer copy at 15px, dim ink.

Second question

+

Hidden until opened.

FAQ rows: border-top 1px rgba(22,22,29,.12); padding 20px 0; H3 19px; first item open
Radii8–9px chips · 12px inner media · 14px buttons, small cards · 16–18px cards · 24px hero frames · 28px feature wraps · 999px pills
Hairlinesrgba(22,22,29,.08) card edge · .10 dividers · .12 inputs, buttons · on ink rgba(247,246,242,.12)
Shadowshover 0 24px 48px -32px rgba(22,22,29,.14) · floating over photo 0 30px 60px -28px rgba(22,22,29,.55) · hero frame 0 40px 80px -40px
Inputsborder 1px rgba(22,22,29,.12); radius 9–12px; padding 9–12px 14px; focus border #FF4D00; label 10.5px mono #9a9aa3

05 · Layout & motion

1320 wide, sections that breathe

Every page is the same shell: fixed nav, white main, ink footer. Sections alternate white and paper. Motion is slow and eased; nothing bounces.

Container.wrap max-width:1320px; margin:0 auto; padding:0 24px (16px under 600px) nav-inner padding 18px 36px; nav height ~73–89px
Section rhythmpadding: clamp(56px,7vw,88px) 0 hero: 64–72px top heading → content gap: 36–40px grid gap: 16px cards · 48px two-column text
Breakpoints1160px mega-menu tightens 980px 3-col → 2-col, 2-col text stacks 940px nav collapses to burger 600px everything single column, 16px gutters
Easing--ease cubic-bezier(.22,1,.36,1) --ease-out cubic-bezier(.16,1,.3,1) hover .3–.35s · reveals .6–.8s · gradient drift 22s
Section grounds
#fff · #faf9f6 · #f6f5f1 · #16161d (footer, dark feature bands)
Product UI ruleDashboard recreations always sit on white or paper, inside a 24px frame with a 1px hairline. No gradients, photos or tints behind tables, forms or the workspace.

06 · Kahu orb

The assistant has one face

A particle sphere in the brand spectrum with a coral glow. It stands for Kahu wherever the assistant speaks, drafts or acts: composers, chat bubbles, "sent by Kahu" pills, the mega-menu promo. Four states, rendered live by kahu-orb.js.

idle

Resting in the composer. Slow breathe.

listening

User typing or speaking. Soft squash.

thinking

Kahu is working. The swarm churns.

shipped

Done. Particles settle into the Kahu mark.

On white · theme="light"

Sent by KahuDrafting a reply…
Sizes in use: 18–22px inside pills and bubbles, 44px beside headings, 96–120px as a hero object.
<script src="./kahu-orb.js"></script>

<kahu-orb state="idle" theme="auto" size="96"></kahu-orb>

state  idle | listening | thinking | shipped
theme  auto | dark | light   (auto samples the background)
size   px, square

// JS
el.state = 'thinking';
el.theme = 'light';

07 · Grain gradients

Colour fields with film grain

The ground for placeholders, announcement tiles and index cards, wherever there is no product screen or photo to show. Six palettes built from the brand colours, one recipe, rendered live so the grain stays crisp at any size.

KahuLogicSEPTEMBER 2026

Introducing Kahu Flow: one brief, a week of content

Read the announcement

Six palettes

Built from colours the brand already owns

Soft, dusty versions of the brand hues, never the saturated colours themselves. Each palette pairs a ground with four or five field colours and white text, so tiles read calm next to the white product UI.

ember
Embertext · white
Announcements, Kahu Reach, anything "launch".
#d9a58f#f08a62#ffd9a3#f7a98a#8d6b7d#c97a5c
tide
Tidetext · white
Kahu Sites, data, calm product surfaces.
#7f9fc0#6f8ee6#8fc4ea#c8f0f4#ffe8b4#5c74b8
dusk
Dusktext · white
Kahu Creative, Brand Kit, editorial moments.
#b9a7d6#8ea2ff#ff6c36#ffc43a#d98c9a#c9d6ff
kelp
Kelptext · white
Company, people and place, Canterbury light.
#8fa383#6f8a5e#a9b56a#d9c27a#e8b98a#9fb6cf#c9d6c5
paper
Papertext · ink
Light placeholders inside white layouts.
#efe9dc#ffe8b4#b9c9bd#c9d6ff#ffd4c2
night
Nighttext · white
Dark cards, Kahu Assist, Approvals.
#5d5f7a#7d8fe0#6a7cc9#8fc4ea#4a4b63#c9c3ff

The recipe

Four layers, always in this order

Blobs are placed, not random, a seed only mirrors the field. Grain is monochrome noise blended over the top and must be visible at 100%. Lines are optional and never on more than one tile per view.

01 · BaseOne ground colour. Deep for dark palettes, warm off-white for paper.
02 · Colour fieldFour to six radial blobs at 50–110% of the frame, overlapping so no edge survives.
03 · GrainFractal noise, desaturated, overlay at .45–.65. This is the signature.
04 · Contour linesOptional 1px white S-curves (waves) or a two-way mesh, soft-light.

In use

Around the product, never inside it

Dashboard recreations stay on white. Gradients carry the surfaces beside them: index cards, changelog tiles, photo placeholders, dark assistant cards.

What time can we check in?Check-in is from 2 PM. Landing at 1? Drop your bags and we’ll text when the room is ready.Sent by Rewa

WhatsApp Inbox

Kahu drafts from your Brand Kit. A person always presses send.

May 2026
Kahu Reach

One brief, four channels, one budget.

drop the team photo
placeholder · paper palette

Kahu Assist

“What did we sell last week?”

Answered from Kahu CRM and Bookings.

Icon tiles: 12px radius, no lines, one palette per product.

Gradient rules

01One gradient per card; never several palettes side by side in one component.
02Text is white (ink on paper) at 4.5:1 or better against the darkest region behind it; add a light scrim when in doubt.
03Live UI sits on top as white or glass: rgba(255,255,255,.14) with a 1px white border at .35.
04Corners follow the container, 18–24px on cards, 10–12px inside polaroid frames.
05Never behind dashboard recreations, tables or forms. The product stays on white.
06Motion only on heroes: a 3% drift over 22 seconds. Static everywhere else.
07Never flatten to a JPEG, grain is rendered live so it stays crisp at any size.

Usage

<script src="./kahu-grain.js"></script>

<kahu-grain palette="tide" lines="waves" seed="1"
  style="border-radius:18px;height:220px"></kahu-grain>

<!-- as a placeholder ground -->
<div style="position:relative;aspect-ratio:4/3;overflow:hidden">
  <kahu-grain palette="kelp" style="position:absolute;inset:0"></kahu-grain>
  <image-slot id="team-photo" style="position:absolute;inset:0;color:#fff"></image-slot>
</div>

Full spec in brand/gradients.md. Component: kahu-grain.js. Attributes: palette, lines (none · waves · mesh), seed 0–3, grain 0–1, animate.

08 · Icons

Lucide for UI, official marks for partners

Interface icons are Lucide at 1.5px stroke, 18–22px, in the current text colour. Partner and channel logos are the official marks, unchanged, kept in icons/. No emoji anywhere on the site.

building-2message-squareuserschart-columnlayout-gridsliders-horizontalcalendarsparklesglobesend
https://cdn.jsdelivr.net/npm/lucide-static@latest/icons/{name}.svg chip: 30–44px, radius 9–12px, background #f6f5f1 or a soft tint (#FFF1EA coral · #d8ecfe azure · #e9e2ff violet · #ffeeca gold)
googlemetafacebookinstagramtiktoklinkedinwhatsappgmailxero
icons/brand-google · brand-meta · brand-facebook · brand-instagram · brand-tiktok · brand-linkedin · brand-whatsapp · brand-gmail · brand-xero Also: icons/direct-url.svg, icons/wa-read.svg (WhatsApp read ticks)

09 · Files

Where everything lives

Paths are relative to the project root. Shared components are built once and imported by every page; edit them in one place.

Logo
brand/kahulogic-logo.pngcolour
brand/kahulogic-logo-white.pngon ink
brand/kahulogic-mark.svgvector mark
brand/kahulogic-mark.pngraster mark
Components
kahu-orb.jsassistant orb
kahu-grain.jsgrain gradients
kahu-magnet.jsbutton magnet hover
kahu-director.jshero demo sequencing
image-slot.jsphoto placeholder
Site chrome
SiteNav.dc.htmlnav + mega menu
SiteFooter.dc.htmlfooter
site-chrome.cssnav/footer tokens
site-chrome.jsnav behaviour
Page sections
Showcase.dc.htmlbusiness carousel
TabWorkspace.dc.htmltabbed feature demo
FeatureCards.dc.htmlphoto cards
IndustryDay.dc.htmlsolutions day timeline
WhyStatement.dc.html"why" list
Imagery & icons
img/photography (Wix-licensed under img/wix)
icons/partner marks
og/social share cards, 1200×630
brand/demo/demo customer logos
Content & SEO
blog-posts.js · articles/blog data
sitemap.xml · robots.txt · llms.txtcrawl files
brand/gradients.mdgradient spec
Index.dc.htmlpage map