mirror of
https://github.com/zoo-apps/zoolabs.io.git
synced 2026-10-30 14:56:27 +00:00
2.5 KiB
2.5 KiB
zoolabs.io
Org: zoo-apps · Ecosystem: zoo · Path: /Users/a/work/zoo/zoo-apps/zoolabs.io
Origin: https://github.com/zoo-apps/zoolabs.io.git
Discovery
This file (LLM.md) is the canonical agent-facing readme, and the one that is committed; CLAUDE.md, AGENTS.md and GEMINI.md are local symlinks to it.
Where to look first
README.md— human-facing overview (if present)package.json/Cargo.toml/pyproject.toml/go.mod— language & deps.github/workflows/— CI surfacedocs/— extended docs (if present)
Sibling repos
See the org-level LLM.md at /Users/a/work/zoo/zoo-apps/LLM.md for the full inventory of sibling repos and inter-repo dependencies.
zoo.ngo is the surface to read before changing type here: same stack, and it
already publishes the Zoo public-site register (--type-scale 8/7, --type-ratio
0.84, --tracking-display −0.035em) and the rule that a page says what a thing IS
while globals.css says what it looks like.
Type and appearance
- Zen reaches the page through ONE binding:
styles/globals.csssets--font-sansfrom@hanzo/font's published--font-zen-sans. No component spells a face.@hanzo/design/tokens/fonts.cssis deliberately not imported — it would be a second copy of the faces. - Sizes are RUNGS, never numbers:
--text-*in CSS,$nin gui (gui's--f-size-nreadsvar(--text-*)). A literal px is a place the reader's own setting cannot reach. - Colours live in
styles/globals.css;lib/brand.tsnames them byvar()for gui props. A hex in TypeScript is invisible to@hanzo/appearance. components/Look.tsxmounts the appearance panel bottom LEFT — bottom right is Ask Blue — andpages/_document.tsxinlinesbootScript()in<head>so the first paint is already the reader's.
Two traps, both measured
@import … layer(base)is dead here. webpack emits it as@media layer(base){…}, which matches nothing, so@hanzo/design's wholebase.csssilently did not apply: body fell back to Times New Roman at 16px and every research link kept the UA underline. The file opens its own@layer base, so import it BARE.- gui's atomic sheet outranks a site class. gui injects
:root ._ls-…{…}into the body at render, so a:root .my-classrule ties on specificity and loses on order. Anything gui draws answers to the fleet's tokens; state display type on the ELEMENT and draw it with a plain<h1>/<a>.