back to gallery
design language·pennant

Pennant

A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.

Download DESIGN.md

Portable DESIGN.md source of truth for most agents and apps.

the spec

specification

philosophy
summary
A kinetic banner / signage-system language that turns the strung bunting and the rigid directional pennant-flag of a festival ground into a wayfinding and live-schedule UI. The ownable idea is the strung bunting line: a 2px taut string from which triangular pennant-tags hang as labels, chips, filters, and active-state markers — a structural connector and a motion system, not an accent edge. Distinct from sibling wind languages: Pennant owns the flat triangular flag-shape and the strung garland as a repeatable structural module. It serves a sprawling outdoor Children's Day festival's wayfinding and what's-on-now board across five stages. Bright, airy early-summer Kodomo no Hi pushed into confident graphic signage — sleek and grown-up, never childish, with vivid almost-neon highlighter accents on a clean white-led ground.
values
The bunting string and the triangular pennant tag are real components, not decorationStrung garland as a structural connector and a gentle motion systemBright white-sky ground with three neon flag-colours used like highlightersStrong horizontal banding — read the page left to right like a row of flagsSleek and grown-up festival signage: composed placement of bright accent, never muddy
anti-values
×Desaturated or muted accents — the neon highlighter IS the brief×Borders or single accent edges on cards×Childish, toy-like, or cluttered treatments×Heavy table rules or boxed-in navigation×The generic SaaS hero (eyebrow tag, primary+secondary pair, stat trio, serif-italic flip)
tokens
colors17 items
bg
#ffffff
surface
#ffffff
surface-2
#f3f6f9
text
#0c1014
muted
#46525e
border
#dbe2ea
hairline
#dbe2ea
accent
#1f8fff
on-accent
#ffffff
accent-2
#2ee65f
on-accent-2
#06210f
accent-3
#ff2e7e
on-accent-3
#ffffff
success
#2ee65f
warning
#ff2e7e
error
#ff2e7e
info
#1f8fff
typography8 items
base size
17px
body font
Inter
heading font
Space Grotesk
mono font
Spline Sans Mono
heading weight
700
heading transform
none
letter spacing
-0.02em
google fonts url
https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Space+Grotesk:wght@500;600;700&family=Spline+Sans+Mono:wght@400;500;600&display=swap
radii5 items
base
0px
card
16px
lg
24px
pill
9999px
scale
0, 16, 24, 9999
shadows2 items
sm
0 1px 0 rgba(12,16,20,.05)
md
0 18px 46px rgba(31,143,255,.08)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96
surfaces4 items
ground
#ffffff
panel
#ffffff
recessed
#f3f6f9
bunting
2px ink string with hung triangular neon pennant-tags above each panel title
borders3 items
none
0
hairline
1px solid #dbe2ea
header-only
inset 0 -1px 0 #dbe2ea on the table header row only
motion2 items
reveal
settled by default; inline script gates a translateY+fade reveal behind .pe, gives the strung bunting a gentle breathing sway and the happening-now pennant a soft pink pulse; respects prefers-reduced-motion
duration
0.55s–0.85s cubic-bezier(.2,0,.1,1)
rules
composition
A bunting-strung horizontal-rhythm grid, 1320px cap, 24px gutters; sections are anchored along implied strings with pennant-chips hung at regular intervals (a left-to-right festive cadence); content panels sit below the strings in a clean modular grid. Strong horizontal banding, generous vertical air, titles padded under their bunting line.
hierarchy
Built from type size, position, and the pennant chip — not coloured edges. Sky-blue marks wayfinding, the primary pennant, and the active tag; festival-green marks now-playing, go, and success; pennant-pink is the single hero CTA and the happening-now pulse, plus warning.
density

Comfortable-but-lively; padding always above titles; deliberate vertical air between horizontal bands.

signature
The triangular pennant and the strung bunting-string are the mechanic as real components. A 2px string strung between anchors hangs triangular pennant-tags as labels, chips, filters, and active markers (clipped neon triangles, white label). The primary button is a pennant — a 9999 pill with one triangular swallowtail notch cut from its right end, solid neon-blue; secondary keeps the rectangle, drops the notch, goes to a thin outline. Cards are board panels — white, no border, with a single strung-bunting line of tiny neon triangles above the title inside its padding. Forms are rows of pennant-tabs; inputs carry a triangular neon caret-marker. Tables are stage schedules — the now-playing row flagged with a green pennant chip at its left, a hairline under the header only. Nav is a strung garland of word-tags, no box, the active tag a filled pennant triangle. Mapped to role vars so it recolours on palette swap.
layout
grid

Bunting-strung horizontal-rhythm grid, 24px gutter, 1320px cap; children use minmax(0,1fr) + min-width:0 so they shrink instead of overflowing.

whitespace

White-sky led; horizontal bands with generous vertical air; full-bleed top bunting-string and hero only on the landing.

density

Comfortable-but-lively

responsive
Collapses to a single column on mobile; chips collapse into a single horizontally scrollable garland row (no horizontal page overflow); schedules become scroll strips; hides non-essential nav tags; caps and centres contained content on ultra-wide; full-bleed bunting-string and hero span 100vw.
breakpoints
mobile
390px
tablet
640px
wide
900px
ultra
1320px
guidance
do
  • Give every board panel the strung-bunting line of tiny neon triangles above its title
  • Cut the primary button as a pennant (a notched swallowtail pill); fly the single hero CTA in pink
  • Flag the now-playing schedule row with a green pennant chip at its left
  • Keep the three neon accents at full strength on the chips and markers — never desaturate
  • Let the nav breathe as a strung garland of word-tags; the active tag is a filled pennant triangle
avoid
  • Don't give a card a border or a single accent edge
  • Don't mute the neons to tasteful greys — bright highlighter colour is the brief
  • Don't trap nav in a pill bar or float it in a rounded card
  • Don't make it childish, toy-like, or cluttered
  • Don't build the generic SaaS hero (eyebrow tag, button pair, stat trio, serif-italic flip)
imagery
pairs with

knockout

summary
Bright, airy flat cut-paper festival-poster scenes carried by clear early-summer light, in a knockout poster sensibility. A strung garland of triangular pennant bunting in vivid almost-neon sky-blue, festival-green, and a few hot-pink flags runs edge to edge across the top, like bright flags against a white sky; below sits a calm flat cut-paper riverbank festival ground — a curving river, fresh-green banks, simple geometric trees, low tents and a distant stage, with koinobori carp streamers riding high on poles. Atmospheric and bright, not flat-loud: the neon lives in the strung pennants and a few accent shapes while the rest is calm bright cut-paper on a white-led ground, with generous open sky for a headline overlay.
subjects
a strung neon-bunting garland of triangular pennant flags across the top, edge to edgea flat cut-paper riverbank festival ground with a curving river and fresh-green bankskoinobori carp streamers riding high on poles over the parklow festival tents and a distant simple stage silhouette under a bright white sky
usage
Hero = a full-bleed bright cut-paper festival-ground scene crowned by a strung neon-bunting garland, with generous open white sky in the upper-left and centre for the headline overlay (a pink pop on one word). Cards and avatars reuse the triangular pennant tag as a flat neon token on white grounds.
katagami spec
# Pennant

## Philosophy

A kinetic banner / signage-system language that turns the strung bunting and the rigid directional pennant-flag of a festival ground into a wayfinding and live-schedule UI. The ownable idea is the strung bunting line: a 2px taut string from which triangular pennant-tags hang as labels, chips, filters, and active-state markers — a structural connector and a motion system, not an accent edge. Distinct from sibling wind languages: Pennant owns the flat triangular flag-shape and the strung garland as a repeatable structural module. It serves a sprawling outdoor Children's Day festival's wayfinding and what's-on-now board across five stages. Bright, airy early-summer Kodomo no Hi pushed into confident graphic signage — sleek and grown-up, never childish, with vivid almost-neon highlighter accents on a clean white-led ground.

### Values

- The bunting string and the triangular pennant tag are real components, not decoration
- Strung garland as a structural connector and a gentle motion system
- Bright white-sky ground with three neon flag-colours used like highlighters
- Strong horizontal banding — read the page left to right like a row of flags
- Sleek and grown-up festival signage: composed placement of bright accent, never muddy

### Anti-Values

- Desaturated or muted accents — the neon highlighter IS the brief
- Borders or single accent edges on cards
- Childish, toy-like, or cluttered treatments
- Heavy table rules or boxed-in navigation
- The generic SaaS hero (eyebrow tag, primary+secondary pair, stat trio, serif-italic flip)

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#ffffff` |
| surface | `#ffffff` |
| surface-2 | `#f3f6f9` |
| text | `#0c1014` |
| muted | `#46525e` |
| border | `#dbe2ea` |
| hairline | `#dbe2ea` |
| accent | `#1f8fff` |
| on-accent | `#ffffff` |
| accent-2 | `#2ee65f` |
| on-accent-2 | `#06210f` |
| accent-3 | `#ff2e7e` |
| on-accent-3 | `#ffffff` |
| success | `#2ee65f` |
| warning | `#ff2e7e` |
| error | `#ff2e7e` |
| info | `#1f8fff` |

### Typography

- **Base Size**: 17px
- **Body Font**: Inter
- **Heading Font**: Space Grotesk
- **Mono Font**: Spline Sans Mono
- **Heading Weight**: 700
- **Heading Transform**: none
- **Letter Spacing**: -0.02em
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Space+Grotesk:wght@500;600;700&family=Spline+Sans+Mono:wght@400;500;600&display=swap

### Radii

- **Base**: 0px
- **Card**: 16px
- **Lg**: 24px
- **Pill**: 9999px
- **Scale**: [0,16,24,9999]

### Shadows

- **Sm**: 0 1px 0 rgba(12,16,20,.05)
- **Md**: 0 18px 46px rgba(31,143,255,.08)

### Spacing

- **Base**: 8px
- **Scale**: [4,8,12,16,24,32,48,64,96]

### Surfaces

- **Ground**: #ffffff
- **Panel**: #ffffff
- **Recessed**: #f3f6f9
- **Bunting**: 2px ink string with hung triangular neon pennant-tags above each panel title

### Borders

- **None**: 0
- **Hairline**: 1px solid #dbe2ea
- **Header-Only**: inset 0 -1px 0 #dbe2ea on the table header row only

### Motion

- **Reveal**: settled by default; inline script gates a translateY+fade reveal behind .pe, gives the strung bunting a gentle breathing sway and the happening-now pennant a soft pink pulse; respects prefers-reduced-motion
- **Duration**: 0.55s–0.85s cubic-bezier(.2,0,.1,1)

## Rules

### Composition

A bunting-strung horizontal-rhythm grid, 1320px cap, 24px gutters; sections are anchored along implied strings with pennant-chips hung at regular intervals (a left-to-right festive cadence); content panels sit below the strings in a clean modular grid. Strong horizontal banding, generous vertical air, titles padded under their bunting line.

### Hierarchy

Built from type size, position, and the pennant chip — not coloured edges. Sky-blue marks wayfinding, the primary pennant, and the active tag; festival-green marks now-playing, go, and success; pennant-pink is the single hero CTA and the happening-now pulse, plus warning.

### Density

Comfortable-but-lively; padding always above titles; deliberate vertical air between horizontal bands.

### Signature

The triangular pennant and the strung bunting-string are the mechanic as real components. A 2px string strung between anchors hangs triangular pennant-tags as labels, chips, filters, and active markers (clipped neon triangles, white label). The primary button is a pennant — a 9999 pill with one triangular swallowtail notch cut from its right end, solid neon-blue; secondary keeps the rectangle, drops the notch, goes to a thin outline. Cards are board panels — white, no border, with a single strung-bunting line of tiny neon triangles above the title inside its padding. Forms are rows of pennant-tabs; inputs carry a triangular neon caret-marker. Tables are stage schedules — the now-playing row flagged with a green pennant chip at its left, a hairline under the header only. Nav is a strung garland of word-tags, no box, the active tag a filled pennant triangle. Mapped to role vars so it recolours on palette swap.

## Layout

### Grid

Bunting-strung horizontal-rhythm grid, 24px gutter, 1320px cap; children use minmax(0,1fr) + min-width:0 so they shrink instead of overflowing.

### Whitespace

White-sky led; horizontal bands with generous vertical air; full-bleed top bunting-string and hero only on the landing.

### Density

Comfortable-but-lively

### Responsive

Collapses to a single column on mobile; chips collapse into a single horizontally scrollable garland row (no horizontal page overflow); schedules become scroll strips; hides non-essential nav tags; caps and centres contained content on ultra-wide; full-bleed bunting-string and hero span 100vw.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 640px
- **Wide**: 900px
- **Ultra**: 1320px

## Guidance

### Do

- Give every board panel the strung-bunting line of tiny neon triangles above its title
- Cut the primary button as a pennant (a notched swallowtail pill); fly the single hero CTA in pink
- Flag the now-playing schedule row with a green pennant chip at its left
- Keep the three neon accents at full strength on the chips and markers — never desaturate
- Let the nav breathe as a strung garland of word-tags; the active tag is a filled pennant triangle

### Don't

- Don't give a card a border or a single accent edge
- Don't mute the neons to tasteful greys — bright highlighter colour is the brief
- Don't trap nav in a pill bar or float it in a rounded card
- Don't make it childish, toy-like, or cluttered
- Don't build the generic SaaS hero (eyebrow tag, button pair, stat trio, serif-italic flip)

### Accessibility

Ink on white and white-on-neon clear WCAG AA; focus is a 2px sky-blue ring; the settled page renders with no JavaScript; honours prefers-reduced-motion.

## Imagery Direction

### Pairs With

knockout

### Summary

Bright, airy flat cut-paper festival-poster scenes carried by clear early-summer light, in a knockout poster sensibility. A strung garland of triangular pennant bunting in vivid almost-neon sky-blue, festival-green, and a few hot-pink flags runs edge to edge across the top, like bright flags against a white sky; below sits a calm flat cut-paper riverbank festival ground — a curving river, fresh-green banks, simple geometric trees, low tents and a distant stage, with koinobori carp streamers riding high on poles. Atmospheric and bright, not flat-loud: the neon lives in the strung pennants and a few accent shapes while the rest is calm bright cut-paper on a white-led ground, with generous open sky for a headline overlay.

### Subjects

- a strung neon-bunting garland of triangular pennant flags across the top, edge to edge
- a flat cut-paper riverbank festival ground with a curving river and fresh-green banks
- koinobori carp streamers riding high on poles over the park
- low festival tents and a distant simple stage silhouette under a bright white sky

### Usage

Hero = a full-bleed bright cut-paper festival-ground scene crowned by a strung neon-bunting garland, with generous open white sky in the upper-left and centre for the headline overlay (a pink pop on one word). Cards and avatars reuse the triangular pennant tag as a flat neon token on white grounds.
DESIGN.md
---
version: "alpha"
name: "Pennant"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  bg: "#ffffff"
  surface: "#ffffff"
  surface-2: "#f3f6f9"
  text: "#0c1014"
  muted: "#46525e"
  border: "#dbe2ea"
  hairline: "#dbe2ea"
  accent: "#1f8fff"
  on-accent: "#ffffff"
  accent-2: "#2ee65f"
  on-accent-2: "#06210f"
  accent-3: "#ff2e7e"
  on-accent-3: "#ffffff"
  success: "#2ee65f"
  warning: "#ff2e7e"
  error: "#ff2e7e"
  info: "#1f8fff"
typography:
  headline-lg:
    fontFamily: "Space Grotesk"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Space Grotesk"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "Inter"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "Spline Sans Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  base: "0px"
  card: "16px"
  lg: "24px"
  pill: "9999px"
  scale: "0px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
  step-8: "96px"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface-2:
    backgroundColor: "{colors.surface-2}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-hairline:
    backgroundColor: "{colors.hairline}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-on-accent:
    backgroundColor: "{colors.on-accent}"
  color-reference-accent-2:
    backgroundColor: "{colors.accent-2}"
  color-reference-on-accent-2:
    backgroundColor: "{colors.on-accent-2}"
  color-reference-accent-3:
    backgroundColor: "{colors.accent-3}"
  color-reference-on-accent-3:
    backgroundColor: "{colors.on-accent-3}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  button-primary:
    backgroundColor: "{colors.accent}"
    textColor: "#000000"
    typography: "{typography.label-md}"
    rounded: "{rounded.lg}"
    padding: "{spacing.md}"
  card-surface:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.lg}"
    padding: "{spacing.md}"
  input-default:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.lg}"
    height: "44px"
---

# Pennant

## Overview

A kinetic banner / signage-system language that turns the strung bunting and the rigid directional pennant-flag of a festival ground into a wayfinding and live-schedule UI. The ownable idea is the strung bunting line: a 2px taut string from which triangular pennant-tags hang as labels, chips, filters, and active-state markers — a structural connector and a motion system, not an accent edge. Distinct from sibling wind languages: Pennant owns the flat triangular flag-shape and the strung garland as a repeatable structural module. It serves a sprawling outdoor Children's Day festival's wayfinding and what's-on-now board across five stages. Bright, airy early-summer Kodomo no Hi pushed into confident graphic signage — sleek and grown-up, never childish, with vivid almost-neon highlighter accents on a clean white-led ground.

### Values

- The bunting string and the triangular pennant tag are real components, not decoration
- Strung garland as a structural connector and a gentle motion system
- Bright white-sky ground with three neon flag-colours used like highlighters
- Strong horizontal banding — read the page left to right like a row of flags
- Sleek and grown-up festival signage: composed placement of bright accent, never muddy

### Anti-Values

- Desaturated or muted accents — the neon highlighter IS the brief
- Borders or single accent edges on cards
- Childish, toy-like, or cluttered treatments
- Heavy table rules or boxed-in navigation
- The generic SaaS hero (eyebrow tag, primary+secondary pair, stat trio, serif-italic flip)

## Colors

Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.

| Token | Value |
|-------|-------|
| bg | `#ffffff` |
| surface | `#ffffff` |
| surface-2 | `#f3f6f9` |
| text | `#0c1014` |
| muted | `#46525e` |
| border | `#dbe2ea` |
| hairline | `#dbe2ea` |
| accent | `#1f8fff` |
| on-accent | `#ffffff` |
| accent-2 | `#2ee65f` |
| on-accent-2 | `#06210f` |
| accent-3 | `#ff2e7e` |
| on-accent-3 | `#ffffff` |
| success | `#2ee65f` |
| warning | `#ff2e7e` |
| error | `#ff2e7e` |
| info | `#1f8fff` |

## Typography

- **Headline-Lg**: Space Grotesk, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Space Grotesk, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, 17px, weight 400, line-height 1.5.
- **Label-Md**: Spline Sans Mono, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`

### Grid

Bunting-strung horizontal-rhythm grid, 24px gutter, 1320px cap; children use minmax(0,1fr) + min-width:0 so they shrink instead of overflowing.

### Whitespace

White-sky led; horizontal bands with generous vertical air; full-bleed top bunting-string and hero only on the landing.

### Density

Comfortable-but-lively

### Responsive

Collapses to a single column on mobile; chips collapse into a single horizontally scrollable garland row (no horizontal page overflow); schedules become scroll strips; hides non-essential nav tags; caps and centres contained content on ultra-wide; full-bleed bunting-string and hero span 100vw.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 640px
- **Wide**: 900px
- **Ultra**: 1320px

## Elevation & Depth

### Shadows

- **Sm**: 0 1px 0 rgba(12,16,20,.05)
- **Md**: 0 18px 46px rgba(31,143,255,.08)

## Shapes

### Rounded

- **Base**: `0px`
- **Card**: `16px`
- **Lg**: `24px`
- **Pill**: `9999px`
- **Scale**: `0px`

### Surfaces

- **Ground**: #ffffff
- **Panel**: #ffffff
- **Recessed**: #f3f6f9
- **Bunting**: 2px ink string with hung triangular neon pennant-tags above each panel title

### Borders

- **None**: 0
- **Hairline**: 1px solid #dbe2ea
- **Header-Only**: inset 0 -1px 0 #dbe2ea on the table header row only

## Components

### Composition

A bunting-strung horizontal-rhythm grid, 1320px cap, 24px gutters; sections are anchored along implied strings with pennant-chips hung at regular intervals (a left-to-right festive cadence); content panels sit below the strings in a clean modular grid. Strong horizontal banding, generous vertical air, titles padded under their bunting line.

### Hierarchy

Built from type size, position, and the pennant chip — not coloured edges. Sky-blue marks wayfinding, the primary pennant, and the active tag; festival-green marks now-playing, go, and success; pennant-pink is the single hero CTA and the happening-now pulse, plus warning.

### Density

Comfortable-but-lively; padding always above titles; deliberate vertical air between horizontal bands.

### Signature

The triangular pennant and the strung bunting-string are the mechanic as real components. A 2px string strung between anchors hangs triangular pennant-tags as labels, chips, filters, and active markers (clipped neon triangles, white label). The primary button is a pennant — a 9999 pill with one triangular swallowtail notch cut from its right end, solid neon-blue; secondary keeps the rectangle, drops the notch, goes to a thin outline. Cards are board panels — white, no border, with a single strung-bunting line of tiny neon triangles above the title inside its padding. Forms are rows of pennant-tabs; inputs carry a triangular neon caret-marker. Tables are stage schedules — the now-playing row flagged with a green pennant chip at its left, a hairline under the header only. Nav is a strung garland of word-tags, no box, the active tag a filled pennant triangle. Mapped to role vars so it recolours on palette swap.

## shadcn/ui Usage

When the target app uses shadcn/ui, copy DESIGN.md with shadcn instead of the plain DESIGN.md. It contains the same Katagami design-language source plus the shadcn/ui primitives, imports, theme variables, component recipes, and preview-shot guidance.

DESIGN.md with shadcn: `/language/en-019efb75-029c-7380-8e8f-5fe119e12392/DESIGN.with-shadcn.md`.

The shadcn page also exposes optional machine-readable files for automation, but the human-facing handoff is DESIGN.md with shadcn.

Install recommended primitives with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.

Use these primitives in shadcn apps:
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table

Implementation rule for agents: import shadcn primitives from `@/components/ui/*`, apply the generated CSS variables first, then compose the language-specific recipes from the companion MD. Katagami remains the source of truth; shadcn names are the implementation surface.

## Do's and Don'ts

- Do Give every board panel the strung-bunting line of tiny neon triangles above its title
- Do Cut the primary button as a pennant (a notched swallowtail pill); fly the single hero CTA in pink
- Do Flag the now-playing schedule row with a green pennant chip at its left
- Do Keep the three neon accents at full strength on the chips and markers — never desaturate
- Do Let the nav breathe as a strung garland of word-tags; the active tag is a filled pennant triangle
- Don't Don't give a card a border or a single accent edge
- Don't Don't mute the neons to tasteful greys — bright highlighter colour is the brief
- Don't Don't trap nav in a pill bar or float it in a rounded card
- Don't Don't make it childish, toy-like, or cluttered
- Don't Don't build the generic SaaS hero (eyebrow tag, button pair, stat trio, serif-italic flip)

### Accessibility

Ink on white and white-on-neon clear WCAG AA; focus is a 2px sky-blue ring; the settled page renders with no JavaScript; honours prefers-reduced-motion.

## Imagery Direction

### Pairs With

knockout

### Summary

Bright, airy flat cut-paper festival-poster scenes carried by clear early-summer light, in a knockout poster sensibility. A strung garland of triangular pennant bunting in vivid almost-neon sky-blue, festival-green, and a few hot-pink flags runs edge to edge across the top, like bright flags against a white sky; below sits a calm flat cut-paper riverbank festival ground — a curving river, fresh-green banks, simple geometric trees, low tents and a distant stage, with koinobori carp streamers riding high on poles. Atmospheric and bright, not flat-loud: the neon lives in the strung pennants and a few accent shapes while the rest is calm bright cut-paper on a white-led ground, with generous open sky for a headline overlay.

### Subjects

- a strung neon-bunting garland of triangular pennant flags across the top, edge to edge
- a flat cut-paper riverbank festival ground with a curving river and fresh-green banks
- koinobori carp streamers riding high on poles over the park
- low festival tents and a distant simple stage silhouette under a bright white sky

### Usage

Hero = a full-bleed bright cut-paper festival-ground scene crowned by a strung neon-bunting garland, with generous open white sky in the upper-left and centre for the headline overlay (a pink pop on one word). Cards and avatars reuse the triangular pennant tag as a flat neon token on white grounds.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "pennant",
  "type": "registry:theme",
  "title": "Pennant shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#ffffff",
      "foreground": "#0c1014",
      "card": "#ffffff",
      "card-foreground": "#0c1014",
      "popover": "#ffffff",
      "popover-foreground": "#0c1014",
      "primary": "#0c1014",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#46525e",
      "muted-foreground": "#0c1014",
      "accent": "#1f8fff",
      "accent-foreground": "#ffffff",
      "destructive": "#ff2e7e",
      "border": "#dbe2ea",
      "input": "#dbe2ea",
      "ring": "#1f8fff",
      "chart-1": "#0c1014",
      "chart-2": "#f4f4f5",
      "chart-3": "#1f8fff",
      "chart-4": "#2ee65f",
      "chart-5": "#ff2e7e",
      "sidebar": "#ffffff",
      "sidebar-foreground": "#0c1014",
      "sidebar-primary": "#0c1014",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#1f8fff",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#dbe2ea",
      "sidebar-ring": "#1f8fff",
      "radius": "24px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#0c1014",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#1f8fff",
      "accent-foreground": "#ffffff",
      "destructive": "#ff2e7e",
      "border": "#303642",
      "input": "#303642",
      "ring": "#1f8fff",
      "chart-1": "#0c1014",
      "chart-2": "#f4f4f5",
      "chart-3": "#1f8fff",
      "chart-4": "#2ee65f",
      "chart-5": "#ff2e7e",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#0c1014",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#1f8fff",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#1f8fff",
      "radius": "24px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019efb75-029c-7380-8e8f-5fe119e12392",
    "slug": "pennant",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "colors": [
        "accent",
        "accent-2",
        "accent-3",
        "bg",
        "border",
        "error",
        "hairline",
        "info",
        "muted",
        "on-accent",
        "on-accent-2",
        "on-accent-3",
        "success",
        "surface",
        "surface-2",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "mono_font"
      ],
      "radii": [
        "base",
        "card",
        "lg",
        "pill",
        "scale"
      ],
      "shadows": [
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bunting",
        "ground",
        "panel",
        "recessed"
      ],
      "borders": [
        "hairline",
        "header-only",
        "none"
      ],
      "motion": [
        "duration",
        "reveal"
      ]
    }
  }
}
```
in the wild

embodiments

bespoke marketing landingopen full page ↗
landing · pennant
DESIGN.md

at a glance

Typography

headline-lgSpace Grotesk · 33px · 700

The quick brown fox jumps

headline-mdSpace Grotesk · 27px · 600

The quick brown fox jumps

body-mdInter · 17px · 400

The quick brown fox jumps

label-mdSpline Sans Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with

Agent-generated

produced by claude-opus-4-8 · sourced by claude-opus-4-8 · images by gpt-image-2

remix lane

try a remix

Keep Pennantand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.

UI language · fixed
Pennant
Palette
Art style
Landing Page
live preview · recolored + filled
lineage

Family

1 descendant
related

More like this