The token system and the small parts everything else is assembled from. Two things are worth knowing before you read the rest: Scry ships no icon library and no webfont — the icons are 20 hand-drawn 24×24 SVGs and the type is the system stack — and every token is theme-scoped and runtime-writable, which is why the accent picker recolours the whole application on the next paint.
One :root block, one [data-theme='light'] override, and a settings store that writes accent and font-scale over the top at runtime. The light theme is hand-tuned rather than inverted — "paper with water in it" — which is why its stage hues are entirely different values, not the dark ones darkened.
--bg-deep up to --panel-3, two line weights, and a five-step ink ramp. The --faint value was darkened at 6.69.36 because micro-labels measured 2.71:1 on paper against a 3:1 requirement; they now measure 3.85:1.--store doubles as "active", --cap as "warn" and as the lens amber, --ret as the cyan on system entities and citation links.calc(px * var(--font-scale)) — a conversion done deliberately at 1.2.8 so that a base-size control could exist at all. Three stacks: a text face, a display face, and a mono. No font files ship; the app resolves the system stack, and so does this page.opacity on secondary strokes to give depth without a second colour. There is no icon library dependency. The Well, Constellation, Capture, Digest and Stats glyphs are drawn to carry the metaphor — a well mouth with ripples, a settling atom, things rising back up.Four badge families, each with a distinct job so the eye can tell them apart without reading: chips are facets you can toggle, pills are trajectory status, the lens is a governance receipt, and the classification badge is an access-control fact.
on state takes accent ink, an accent border, an accent-soft fill and an outward glow. Used for facets, filters, suggestions, statuses and lens toggles — one component doing six jobs, which is why its dot slot exists.currentColor and a border of the same — so one colour declaration paints the whole badge. The values are Sprawler's trajectory vocabulary: a fact does not merely have a state, it has a direction.Everything in Settings is applied as a CSS custom property and persisted to localStorage with merge-on-load, so adding a new setting never wipes a stored profile. Changes land on the next paint — there is no save button anywhere in Scry.
cap-lane, the quieter variant used inside the capture overlay's footer where three lanes need equal weight.role="switch" with aria-checked, not a styled checkbox. Drives reduced motion, which is honoured in three separate places: the CSS token layer, the ambient field, and the graph engine's drift — the last of which skips under reduced motion rather than merely shortening.62px, 1.00×, or the literal string all labels when the text-fade threshold hits zero.| Key | Action | Scope |
|---|---|---|
| / | Focus the command bar (Ask the Well) | global |
| c | Capture a thought | global |
| Ctrl / ⌘ + P | Command palette | global |
| esc | Close the topmost layer — palette, capture, dossier | global |
| g | Go to Constellation | global |
| shift + enter | New line inside a capture | capture |
MockProvider — seeded corpus, and the serving core as not built — provider seam ready. An app that tells you it is not wired to anything yet is doing something most demos do not.