Design
The palette, type and shared components this site itself is built from — a reference, not something to reverse-engineer from the CSS.
Warm paper, near-black ink, one deep-green accent — decided once, early, and never redecided per page. Every color below is a @kirigami/canva conf token: a CSS custom property, so this whole page (and the whole site) repaints correctly in dark mode with nothing hand-toggled. Try the switch in the header.
None of these eight names are this site's invention — they're conf's own token set ($bg, $surface, $ink, $accent, …), the same eight every Kirigami project starts from and overrides through @forward "@kirigami/canva/conf" with (...). This page is what that override looks like once it's actually been used — Design system → tokens has the full option list, including the dark-palette counterparts ($dark-bg, $dark-ink, …) this site's own dark mode is built from.
Palette
--bg
Page background
--surface
Cards, code blocks
--surface-2
A step up — nav, pills, table stripes
--border
Hairlines, outlines
--ink
Body text, headings
--ink-muted
Secondary text, captions
--accent
Links, the one brand color
--accent-soft
Accent's own quiet background
Type
Three roles, three families, all embedded locally (no Google Fonts request): Quicksand for headings, Roboto Flex for body copy, JetBrains Mono for labels, nav numbers and code. All three are declared once, in _conf.scss's $fonts map — `conf` handles the @font-face (variable-font ranges included) and the two role variables (--font-heading / --font-body); --font-mono is this site's own third role, since `conf` only ships the first two.
Heading · Quicksand
Fold PHP into flat HTML
Body · Roboto Flex
A static site generator that turns PHP into fast, dependency-free HTML — no server required.
Mono · JetBrains Mono
kiri build && kiri export
Imagery
Kirigami means cut and folded paper, and the images say so.
- The origami elephant is the mascot of the home page: a real elephant folded from green paper, cut out on a transparent background. It stands on a soft shadow drawn in CSS, so the same file works on the light and the dark palette.
- Screenshots are taken in the dark theme, at the size they will be shown, with the cursor out of the frame, and cropped to 16:9 (or 2:1 for a card). They sit on a paper sheet: slightly rounded corners and a lifted shadow, nothing else. No device frames, no browser chrome.
- Illustrations stay flat: folded paper, the one green accent and a touch of amber, and no gradients.
- Sizes go through the image autogenerator. A card picture is 800 by 500 (or 1000 by 500 for a 2:1 screenshot), a plugin thumbnail 800 by 450, and a wide screenshot 1200 pixels. The originals live in
assets/images/and are never served.
The design system page documents the tokens, the dark theme and the components these pictures sit in.
Shared components
Five small, generic patterns that kept turning up identically across Kirigami sites — lifted into @kirigami/canva's styles/main so nobody has to re-implement them. Opt-in: @use "@kirigami/canva/main"; — every one of them is conf tokens underneath, so light/dark comes for free. Each is used for real elsewhere on this site (linked below its demo), not just shown here in isolation.
Breadcrumb
A trail of links plus the current page — pairs with FS::getBreadcrumb(), which walks a page's real position in the file tree instead of a hand-maintained array. Every Docs sub-page uses exactly this.
Quick-jump list
An inline list of anchor links for a long reference page — see the top of PHP class library or CLI for the real thing, one link per `##` heading.
Table & badges
A generic data table (wrap in .table-wrap to scroll horizontally instead of widening the page) plus a small status/license tag — Ecosystem uses both for the real package/version/license grid.
| Package | Version | License |
|---|---|---|
@kirigami/kirigami |
v3.0.0 | GPL-3.0-or-later |
@kirigami/php-wasm |
v8.5.10-5 | GPL-2.0-or-later |
Palette swatches
Live — IMG::palette() run against this page's own source photo, not hard-coded. `colors()` (the Sass function version, for a value baked in at build time rather than fetched in PHP) does the same median-cut extraction; see Docs → PHP → IMG.