Viewport inset
--gutter
clamp(1.25rem, 4vw, 2.25rem)
Design · Space
The default card layout is an equal-track CSS grid (.tiles). Masonry is opt-in for uneven collections — the examples index, not maps, catalogs, or featured rows.
Rhythm
Use these tokens instead of raw rem. Steps 7 and 8 clamp with the viewport.
Frame
.frame centers the column. Interior pages add .page for block padding. Body copy stays inside --measure. Page shells and recipes are on the Structure page.
Viewport inset
--gutterclamp(1.25rem, 4vw, 2.25rem)
Centered column
--framemin(68rem, 100% − 2×gutter)
Reading width
--measure66ch
Measure · 66ch
Kina is a research language for typed tensor programs. The bootstrap compiler is written in OCaml and lowers typed programs to textual MLIR. This column is the reading width, not the frame.
Default
.tiles is the default. Columns are equal. Cards in a row share height. Use it for maps, catalogs, and featured examples.
What the compiler actually does today.
Companions beside the spec. They are tutorials, not the language contract.
Phase 0 calculus and later-phase contracts.
Accepted .kina files with MLIR goldens. Variable-height previews belong on masonry, not here.
Opt-in
.masonry packs uneven cards so short ones do not stretch to match a tall neighbor. It is for the examples index, where source previews vary. Do not use it as the site-wide card layout. These snippets are illustrative; they are not live source metadata.
[[1.0, 2.0], [3.0, 4.0]]
let x = token_embedding.gather(token_ids) in let q = x @ wq.broadcast([1, 4, 4]) in q
relu(x @ w1) @ w2
let q = x @ wq in let k = x @ wk in let v = x @ wv in let attn = softmax(q @ k.T) @ v in attn @ wo
Radius
Box
--radius-box0.9rem. Tiles, fences, panels, and figures.
Pill
--radius-pill999px. Actions, chips, and the skip link.