Card anatomy
Header · body · footer share one card surface
- Strength0.84
- Resistance0.12
- Cycles128
6 editable tokens. 3 depth levels. 1 card. 1 input. Every component derives from these — pick a token, the whole system responds.Spec lives in design.md.
Click any swatch to recolor live. Picks apply to the whole site and persist — the same engine behind the nav's preset swatches. Everything else on this page — borders, focus rings, destructive/success, on-* label colors — derives from these 6 automatically; see the invariants and derived tokens below.
Surface tokens (background · foreground · font) flip with mode — picks apply to thedark mode you're viewing. Brand tokens apply to both.
#1a1a1a#212121#ffffff#1d3a66#3d4451#324e32on-{primary,secondary,tertiary,destructive,success} · border · muted · pageEach preset picks all 6 tokens at once — brand tones, tinted background/foreground, and a signature pattern inked with the same accent the theme leads with, per the pairing rule below. Click a card to apply it site-wide; it persists the same way a hand-picked swatch does.
Page (L0) → card (L1) → content (L2). No 4th level. Sidebar = L1. Inputs = L2.
--color-page--color-background--color-foregroundHeader · body · footer share one card surface
Sidebar = L1 (card pinned to edge)
All inputs share one shape · L2 surface · 10px radius
6 variants. on-* labels auto-contrast.
One source: lucide-react. 1.5px stroke · round caps · token-driven color. Wrap with <Icon> or <IconBadge>.
Used in feature grids, list items, profile rows.
primarytertiarysecondaryneutralSizes — sm · md · lg
Inline icons. Inherit color from parent via currentColor.
sm · 14md · 16lg · 20xl · 24In context
Baked into components. Not editable. Snap to scale or polish breaks.
--radius-sm6px · chips--radius-md10px · buttons, inputs--radius-lg16px · cards--shadow-cardcards, popovers--shadow-popmenus, modals4 · 8 · 12 · 16 · 20 · 24 · 32 — every padding/gap lands here.
Pattern.astro — six subtle, tileable textures, all pure CSS/SVG with zero downloaded assets. Pass a tone and the pattern binds to a theme token with a calibrated opacity — pattern and palette can never disagree. Switch a preset in the nav and watch these repaint too.
pattern="dots" tone="primary"pattern="grid" tone="secondary"pattern="diagonal" tone="tertiary"pattern="crosshatch" tone="font"pattern="noise" tone="primary"pattern="hexagon" tone="primary"pattern="dots" tone="primary" fadeEvery surface owns an ink. Page and card surfaces take a brand tone; a card's texture takes its own accent; a solid brand fill takescontrast (the on-* label color). Attach the pattern to a role, never a raw color — recolor any swatch above and every pairing below still holds.
<Pattern pattern="dots" tone="primary" fade />pattern straight to Card and it inks with the accent<Card accent="secondary" pattern="grid">--color-primary<Pattern pattern="diagonal" tone="contrast" fade />One composable component, Card.astro. Feature grids, dashboards, team pages, and pricing tables all derive from one of these five shapes — rendered live below, not mocked. Add pattern and the texture inks itself with the card's accent.
variant="default"Icon chip, title, body copy, footer link — the shape behind the homepage's "what's in the box" grid.
variant="feature" pattern="dots"variant="stat" trend="up"Wrote the first algorithm intended for a machine. Reviews every PR before it merges.
variant="profile"variant="pricing"variant="pricing" featured pattern="grid"