Skip to content

Meadow

Big serif headlines on sunlit cream, black pill buttons, and sage leaves growing around your product.

  • Light by default
  • 35 colours · 14 type steps
  • Inspired by evergreen.so
Use Meadow
localhost:3000

The same generated app in every design. Scroll inside the window to see the whole page.

What it is

Meadow sets your product on a sunlit cream page and writes it in black ink. Headlines are a heavy serif at editorial size, and everything else is a round, friendly sans with airy leading. Every control is a pill: black for the main action, a thin ink outline for the rest. Nothing casts a shadow: white paper sits on cream with a charcoal line, and sage leaves drawn by hand grow from behind the product picture. At night the page turns olive black and the leaves are drawn in mint.

Maintained by @agentic-studio in the open registry.

Best for

Team and people tools, wellbeing and climate products, community apps, newsletters and small studios that want to feel warm, human and calm. It suits products that lead with a clear promise in words more than with dense data.

Trade-offs

  • The serif only shines big. Kit titles, labels and dialog titles are set in Rubik, so a product that wants a serif on every heading will fight the system.
  • With no shadows, the ink line carries every edge. Strip the outlines from cards, fields and menus and white paper vanishes into the cream.
  • The leaves are a sweet, strong signature. A bank or a developer tool may find them too soft. They live in four hooks and come out cleanly.

Tokens

Generated from this design’s design.yaml, and shipped as CSS variables plus a Tailwind theme. Templates may use these names and nothing else.

Colours

Every colour token in design.yaml, grouped the way the system documents them. These are the light palette's values. The dark palette uses the same names with its own values, and tokens.css ships both.

Brand and accent

  • accent

    #2e6b3c

  • accent-1

    #2e6b3c

  • accent-2

    #3b6fb5

  • accent-3

    #b8770f

  • accent-4

    #7c4a9e

  • accent-5

    #c8452c

  • accent-6

    #7a5a3a

  • accent-hover

    #235530

  • accent-soft

    #beedc0

  • primary

    #000000

Surface

  • canvas

    #fffff3

  • hairline

    rgb(0 0 0 / 0.15)

  • surface-card

    #f6f6ea

  • surface-dark

    #000000

  • surface-dark-elevated

    #1f1f1b

  • surface-soft

    #edede2

  • surface-solid

    #ffffff

  • surface-strong

    #e2e2d4

Text

  • body

    #333333

  • body-strong

    #1c1c18

  • ink

    #000000

  • muted

    #5a5b4f

  • muted-soft

    #86877a

  • on-accent

    #ffffff

  • on-dark

    #fffff3

  • on-primary

    #ffffff

Semantic

  • error

    #b42318

  • success

    #1d6b45

  • warning

    #8a5300

Other

  • danger

    #b42318

  • danger-soft

    #fde8e3

  • error-soft

    #fde8e3

  • primary-hover

    #2b2b26

  • success-soft

    #dcf1e3

  • warning-soft

    #fbefd3

Type scale

Each token rendered at its real size, weight, line height and tracking. Specimens fall back to this site's typeface when the design's own face is not installed locally, so read the numbers, not the letterforms.

  • Ship faster

    Token
    display-xl
    Values
    4.625rem · 74px · 650 · lh 1.1 · ls -0.035em
  • Ship faster

    Token
    display-lg
    Values
    3.75rem · 60px · 650 · lh 1.1 · ls -0.03em
  • Ship faster

    Token
    display-md
    Values
    2.75rem · 44px · 600 · lh 1.15 · ls -0.025em
  • Ship faster

    Token
    display-sm
    Values
    2.25rem · 36px · 600 · lh 1.2 · ls -0.02em
  • Ship faster

    Token
    title-lg
    Values
    1.4375rem · 23px · 600 · lh 1.35 · ls -0.01em
  • Ship faster

    Token
    body-lg
    Values
    1.1875rem · 19px · 400 · lh 1.9 · ls 0
  • Ship faster

    Token
    title-md
    Values
    1.1875rem · 19px · 600 · lh 1.45 · ls -0.005em
  • Ship faster

    Token
    body-md
    Values
    1.0625rem · 17px · 400 · lh 1.75 · ls 0
  • Ship faster

    Token
    nav-link
    Values
    1.0625rem · 17px · 400 · lh 1.5 · ls 0
  • Ship faster

    Token
    title-sm
    Values
    1.0625rem · 17px · 600 · lh 1.45 · ls 0
  • Ship faster

    Token
    button
    Values
    1rem · 16px · 500 · lh 1 · ls 0
  • Ship faster

    Token
    body-sm
    Values
    0.875rem · 14px · 400 · lh 1.6 · ls 0
  • Ship faster

    Token
    caption
    Values
    0.8125rem · 13px · 400 · lh 1.5 · ls 0
  • SHIP FASTER

    Token
    caption-uppercase
    Values
    0.75rem · 12px · 500 · lh 1.4 · ls 0.08em

Typefaces

The families the generated Tailwind theme points at. A licensed face is named here even when the substitute below is what actually renders.

  • DisplayPlayfair Display, ui-serif, Georgia, Cambria, "Times New Roman", serif
  • BodyRubik, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif
  • MonoRed Hat Mono, ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace

Spacing scale

Drawn at true size. These are the only gaps and paddings a generated repo is allowed to use.

  • xxs0.25rem · 4px
  • xs0.5rem · 8px
  • sm0.75rem · 12px
  • md1rem · 16px
  • lg1.5rem · 24px
  • xl2rem · 32px
  • xxl3.5rem · 56px
  • section5rem · 80px

Radius scale

Sample shapes at true corner radius. Buttons and inputs sit at the small end of this scale, feature cards at the large end.

  • xs0.3125rem · 5px
  • sm0.4375rem · 7px
  • md0.625rem · 10px
  • lg0.875rem · 14px
  • xl1.5rem · 24px
  • full9999px
  • pill9999px

Elevation

Shadow tokens on a neutral card, at true blur and spread.

  • inset0 0 #0000
  • lift0 0 #0000
  • overlay0 0 #0000
  • ring0 0 0 3px #beedc0
  • soft0 0 #0000
  • xs0 0 #0000

DESIGN.md

Ships in your repo as DESIGN.md. The designer agent reads it before it may introduce a new visual pattern. This is the briefing, not a page about the briefing.

Meadow is a sunlit greenhouse on cream paper. Heavy Playfair Display headlines in black ink name every page, and round Rubik does all the reading and clicking. Every control is a pill, nothing casts a shadow, and sage leaves drawn by hand grow from behind the product picture. Dark mode is the same greenhouse at night: olive black paper, a bone pill and leaves drawn in mint.

Read this before you add a screen, a component or a colour. The tokens live in src/app/globals.css, the faces in src/app/fonts.ts, the kit in src/components/ui/.

At a glance

ThemeLight first, on a sunlit bone canvas (#fffff3). Dark is olive black (#131410) with bone ink.
TypePlayfair Display 600 to 650 for headlines from 36px up. Rubik for everything else. Red Hat Mono for code, keys and ids.
ColourBlack ink and a black pill, white paper, linen bands, fern (#2e6b3c) for links and focus, sage (#beedc0) as a wash only.
ShapeA pill for every control. 10px cards and menus, 14px dialogs and textareas, 24px showcase stages and CTA panel.
DepthFlat. White paper on cream drawn with a charcoal ink line. The only shadow is the 3px sage focus halo.
SignatureHand-drawn sage leaves behind the hero picture, a black announcement pill with a sprout, and a leaf before every eyebrow.

Principles

  1. The serif names things. Rubik does the reading and the clicking.
  2. Every control is a pill: black for the one main action, an ink outline for the rest.
  3. No shadows. White paper sits on cream, drawn with an ink line.
  4. Sage is a wash, never an action and never a band.
  5. Leaves grow in four fixed spots and never sit behind text.

Colour

Palette

TokenLightDarkRole
canvas (--background)#fffff3#131410The page floor
surface-soft#edede2#1a1b16Section bands, sidebars, table heads
surface-card (--muted)#f6f6ea#181914Tinted fills: inactive tabs, hover rows, code
surface-strong#e2e2d4#2c2d26Pressed fills, progress tracks
surface-solid (--popover)#ffffff#20221cMenus, selects, toasts: always opaque
card#ffffff#1c1d18The card fill
surface-dark#000000#070806The inverted panel
hairline (--border)rgb(0 0 0 / 0.15)rgb(247 246 231 / 0.13)Every border and divider
ink (--foreground)#000000#f7f6e7Headings and primary text
body-strong#1c1c18#ebeadbEmphasised body text
body#333333#d3d2c2Running text
muted (--muted-foreground)#5a5b4f#a7a898Secondary text, captions
muted-soft#86877a#7e7f71Placeholders, disabled text, icons at rest
primary#000000#f7f6e7The action colour
accent (--accent-fill)#2e6b3c#beedc0The saturated accent: links, the accent badge
accent-soft#beedc0#203626The tint an accent label sits on
danger (--destructive)#b42318#f08a74Destructive actions and errors

success, warning and error each come with a -soft tint for the back of a badge or an alert: #1d6b45, #8a5300 and #b42318 in light, #8fdba5, #efc063 and #f08a74 in dark.

Meadow's own variables, read by the landing hooks and the kit: --leaf (#beedc0 light, #22402b dark), --leaf-line (#0f2414 light, #beedc0 dark).

How colour is used

  • The page is sunlit bone (#fffff3). White (#ffffff) is paper on the page, never the page itself. Linen (#edede2) makes the bands.
  • Black ink (#000000) sets headlines and fills the main pill. Body copy is charcoal (#333333) and secondary text is olive grey (#5a5b4f).
  • Fern (#2e6b3c) is the only coloured text besides the status colours: link underlines, focus outlines, eyebrow leaves and check marks.
  • Sage (#beedc0) is a wash: accent badges, selection, avatar and icon halos, the focus halo and the checked box.
  • At night the canvas is olive black (#131410), ink and the pill turn bone (#f7f6e7), fern turns mint (#beedc0) and sage turns moss (#203626).

Charts

accent-1 to accent-6 (also chart-1 to chart-6) are six series colours ordered so neighbours stay distinguishable. The six series are meadow flowers: fern, cornflower, marigold, heather, poppy and bark. Neighbours differ in hue and in lightness, and every light series clears 3.6:1 on the canvas. Assign them in order; never let colour be the only way to tell two series apart.

Dark mode

The palette is declared twice in src/app/globals.css: light on :root, dark under @media (prefers-color-scheme: dark) and again on .dark, where the class wins in both directions. @theme inline points every utility at those variables, so bg-canvas is one class that follows the mode. src/lib/design.ts sets the theme a first visit opens in: light here, because Meadow is drawn in light first. The theme menu in the header offers light, dark and system and remembers the choice.

Type

Faces

  • Playfair Display (font-display): headings and display type (with italics).
  • Rubik (font-body): running text and interface copy.
  • Red Hat Mono (font-mono): code, ids and tabular labels.

Playfair Display is a high-contrast serif that stays crisp and heavy at 74px, so a headline reads like a magazine cover. Rubik's round corners and big x-height are the friendly counterweight, and Red Hat Mono is round and open like Rubik, so a key or an id sits calmly in a sentence.

Every face loads through next/font/google in src/app/fonts.ts: downloaded at build time and served from this app. Change a face there and here, together.

Scale

TokenSizeLineTrackingWeightUse
text-display-xl74px1.1-0.035em650The hero headline, desktop
text-display-lg60px1.1-0.03em650The hero headline, tablet
text-display-md44px1.15-0.025em600Section headlines, the hero on phones
text-display-sm36px1.2-0.02em600Section headlines on phones, big numbers
text-title-lg23px1.35-0.01em600Page titles in the app
text-title-md19px1.45-0.005em600Card titles
text-title-sm17px1.450600Small headings, table titles
text-body-lg19px1.90400Lead paragraphs
text-body-md17px1.750400Running text
text-body-sm14px1.60400Interface copy, table cells
text-caption13px1.50400Metadata, helper text
text-caption-uppercase12px1.40.08em500Eyebrows above headings
text-button16px10500Buttons
text-nav-link17px1.50400Header and footer links

Rules: one h1 per page. Display sizes are for marketing pages; the app tops out at text-title-lg. Playfair Display at 650 for the hero (74px) and 600 for sections (44px, 54px on desktop), tracked -0.035em to -0.02em, always with lining figures. Rubik 400 at 1.75 to 1.9 leading for text, 500 for buttons and labels, 600 for titles. Sentence case everywhere; caps only on the uppercase badge.

Space and layout

  • Spacing tokens: xxs 4px, xs 8px, sm 12px, md 16px, lg 24px, xl 32px, xxl 56px, section 80px (the gap between landing sections).
  • Content sits in max-w-content (1280px) with px-md on phones and px-lg from sm up. Reading text stops at max-w-measure (672px).
  • Airy. Sections pad 80px top and bottom on desktop, with no rules between them.
  • Controls are 36px, 44px and 56px tall. Cards pad 20px and dialogs 28px.
  • Body text leads at 1.75 to 1.9 and holds a 38rem to 40rem measure.
  • The only bands are the linen how-it-works section, the linen footer and the ink CTA panel.

Shape and depth

TokenValueWhere
rounded-xs5pxBreadcrumb, Checkbox, Kbd
rounded-sm7pxAccordion, Tabs, Tooltip, the landing page
rounded-md10pxAlert, Card, DropdownMenu, Popover, Select, Skeleton, Toaster, the landing page
rounded-lg14pxAlertDialog, Dialog, Input, the landing page
rounded-xl24pxThe landing page
rounded-pill9999pxBadge, Button, DropdownMenu, Input, Progress, Select, Switch, Tabs, Toaster, the landing page
rounded-full9999pxAccordion, Avatar, Dialog, RadioGroup, Sheet, Switch

Pills for buttons, fields, badges, tabs, switches, menu items, pagination and avatars. 5px checkboxes and keys, 7px tooltips, 10px cards, menus, toasts and the product frame, 14px dialogs and textareas, 24px showcase stages and the CTA panel. There are no shadows: a 1px charcoal ink line draws paper, a 1.5px full ink line draws what you press, and a hairline divides.

Components

Every component lives in src/components/ui/ and is written against the tokens above. Import from there; never restyle a kit component inline to make a one-off.

ComponentIn Meadow
ButtonA Rubik pill in sentence case. Primary is black with a white label (a bone pill at night), outline is a 1.5px ink line, secondary is linen and draws the ink line on hover, ghost is charcoal text, link is ink with a fern underline. Sizes are 36px, 44px and 56px, icon is a 44px circle, and focus is a 2px fern outline.
BadgeA 24px pill with a 1px border, so sizes never jump. Neutral is white paper with the ink line, accent is sage with ink text, and status badges use their soft fill. Uppercase is 12px caps, used sparingly.
CardWhite paper on cream with a 1px ink line, 10px corners and no shadow. Soft is linen, strong is deep linen, outline is the ink line alone, dark is ink. Titles are Rubik 600 at 19px, never the serif.
Input, Textarea, SelectPill fields 44px tall, white paper with the ink line. Hover darkens the line to ink and focus adds a fern line inside a 3px sage halo. Textareas keep 14px corners. Select content is white paper with pill items that highlight in sage.
Checkbox, RadioGroup, SwitchCheckboxes are 20px with 5px corners; checked is a sage fill with an ink check. Radios fill sage around an 8px ink dot. A switch is a pill: linen when off, black with a sage thumb when on.
TabsA linen pill track with pill triggers; the active trigger is white paper with the ink line. The line variant uses a hairline and a 2px ink bar.
AccordionRows split by the hairline, with 20px of padding and Rubik 500 triggers. The chevron sits in a 28px ink circle that fills ink when its row opens.
Dialog, AlertDialog, SheetAn ink scrim at 40% with a light blur. Panels are white paper with 14px corners and the ink line, no shadow, 28px padding and Rubik 600 titles at 23px. The close button is a 36px ghost circle. Sheets pad 24px and keep the line and the corners on the inner edge only.
DropdownMenu, Popover, Select content, TooltipWhite paper, 10px corners, the ink line and no shadow. Menu items are pills that highlight in sage, with shortcuts in Red Hat Mono. Tooltips are ink with bone text and 7px corners, in both modes.
TableA linen head row in sentence case, 14px by 16px cells, hairlines between rows and tabular numbers. Rows hover in faint cream and select in sage. Set ids and hashes in Red Hat Mono and align numbers right.
Alert10px corners and no border. Info is sage with a fern icon; success, warning and danger use their soft fills with the icon in the status colour.
Avatar, Progress, Skeleton, Spinner, Separator, Kbd, Breadcrumb, Pagination, Field, Label, ToasterAvatars are circles on sage with a 1.5px ink ring. Progress is an 8px deep linen pill with an ink fill, skeletons pulse in deep linen, and separators are the hairline. Kbd is Red Hat Mono on white paper with a 2px bottom edge. Pagination marks the current page with the black pill. Labels are Rubik 500 in ink, and toasts are white paper with the ink line.

The landing page

The landing page is the same in every design; the design decides how it looks. Its sections carry data-slot hooks (listed at the top of src/components/marketing/section-heading.tsx) that globals.css may style. Meadow styles these:

  • hero-backdrop: no wash and no grid; the cream is the light.
  • hero-eyebrow: a black announcement pill with bone text and an underlined label, with a two-leaf sage sprout growing out of its top edge.
  • hero-title, hero-subtitle, hero-actions, hero-note: a balanced serif headline up to 62rem, an ink subtitle, more air above the buttons, and a bold Rubik proof line in ink under them.
  • hero-visual: two clusters of sage leaves drawn in forest ink rise from behind the picture's top corners and bleed into the cream. They rest below 40rem.
  • product-preview, product-preview-bar: white paper with a 1.5px ink line, 10px corners and no shadow, a linen title bar, outlined window dots (the first one sage) and a white pill address field.
  • section-eyebrow: sentence case Rubik 600 in ink after a small fern leaf. Not a pill, not caps.
  • section-heading, section-title, section-description: balanced serif titles that grow to 54px from 64rem, charcoal descriptions, and showcase titles kept in the serif.
  • feature-grid, feature-card, feature-icon: open columns with no box or border, centred from 40rem. Each icon sits on a 56px sage halo drawn in ink.
  • showcase-visual: a linen stage with 24px corners and a small leaf cluster growing from behind its outer top corner, switching sides with the rows.
  • section (how-it-works), step, step-marker: the one linen band. Numbers are black stadiums with a bone serif numeral, joined by a 1.5px ink line.
  • stat-grid, stat, stat-value: separate white stadiums drawn in ink, each with a 44px serif number in lining figures.
  • testimonial: quotes at 19px in ink on white kit cards.
  • faq: ruled in ink like a notebook, questions in 19px Rubik 500. The chevron sits in an ink circle that fills black when its answer opens.
  • cta-panel: flat ink with 24px corners and a fine bone edge, a bone serif headline, and moss leaves with mint lines reaching in from two corners.
  • site-header, site-nav: a 72px header with ink nav links that underline on hover, a 2px fern underline on the current page, and outline pills that fill black on hover.
  • brand, brand-mark: the name in Playfair 650 and a small sage stadium drawn in ink with a serif initial.
  • site-footer: a quiet linen band with Rubik 600 sentence case titles in ink and charcoal links that underline on hover.
  • logo-cloud, logo: a bold Rubik title in ink, then customer names as heavy serif wordmarks in olive grey, or greyscale images at 70%.

Everything else is type, space and the kit.

Signed-in screens

The dashboard and settings sit on the bone canvas with a linen sidebar, white cards drawn in ink, Playfair page titles and serif lining numbers on stat tiles. Sign-in is one white card centred on bone with a serif title, pill fields with the sage focus halo, a full width black pill and no leaves.

Do and don't

Do

  • Put every page on the sunlit bone canvas and lift content onto white paper drawn with a 1px ink line.
  • Set headlines in Playfair Display from 36px up: 650 for the hero, 600 for sections.
  • Set everything else in Rubik: 400 for text at 1.75 to 1.9 leading, 500 for buttons and labels, 600 for titles.
  • Make every control a pill: buttons, fields, badges, tabs, switches, menu items and pagination.
  • Keep black for the one main action in a view. The second action is the ink outline pill.
  • Use sage as a wash only: accent badges, selection, halos, the focus halo and the checked box.
  • Keep leaves in their four spots: behind the hero picture, the eyebrow sprout, one corner of each showcase stage and two corners of the CTA panel.
  • Set numbers in lining figures, and add tabular-nums where columns line up.

Don't

  • Don't add shadows. Elevation is paper colour plus the ink line.
  • Don't set kit titles, labels or body copy in the serif.
  • Don't fill a button, a link or a wide band with sage.
  • Don't add a second accent hue or a gradient.
  • Don't use square or small-radius controls. Only textareas and checkboxes are not pills.
  • Don't use pure white as the page. White is paper on the page.
  • Don't use dashed lines, or grey text lighter than muted for anything a reader needs.
  • Don't scatter leaves as a pattern or put them behind text.

Working in this design

Pasting from shadcn/ui. The token layer carries shadcn's variable names, so most snippets render unmodified. Two utility names mean something else here: bg-muted becomes bg-surface-card, and bg-accent / text-accent-foreground (a hover surface upstream) become bg-surface-card / text-ink. Here muted is a text colour and accent is the saturated accent.

Adding a token. Add it to all three palette blocks in globals.css (light, the dark media query, .dark), map it in @theme inline, and document it in the palette table above. Check contrast in both modes.

Adding a component. Check the kit first: most needs are a variant of Button, Card or Badge, or a composition on the page. A new component gets its own file in src/components/ui/, token classes only, a data-slot, and a row in the Components table here. The designer subagent owns this.

Build a repo in Meadow

The builder opens with Meadow picked. Pick your batteries and the design is applied to every template before the zip is built.