back to gallery
design language·nobori

Nobori

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 bright civic design language for Kodomo no Hi programs: large fields of white air, heavy black editorial type, and three vivid highlighter accents that rise through a composition the way koinobori climb on an early-summer wind. Its one ownable idea is the wind-lift — type, marks, and panels are staged so the eye reads upward — for the teams that coordinate a real public celebration.
values
confident poster scalecivic clarityvisible liftbright and clean, never muddygrown-up, not childish
anti-values
×childish mascot graphics×pastel softness×muddy seasonal washes×generic startup claims×borders and grey rules
tokens
colors14 items
bg
#ffffff
surface
#f6faf7
surface_strong
#eef6f0
text
#000000
muted
#48524b
border
#dfe9e2
accent
#00a6ff
accent_2
#46f04f
accent_3
#ff3f7a
on_accent
#000000
success
#46f04f
warning
#ff3f7a
error
#ff3f7a
info
#00a6ff
typography9 items
base size
17px
body font
Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif
heading font
'Arial Black', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', system-ui, sans-serif
mono font
ui-monospace, SFMono-Regular, Menlo, monospace
jp font
'Noto Sans JP', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', system-ui, sans-serif
heading weight
900
heading transform
none
letter spacing
-0.02em
google fonts url
https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800;900&family=Noto+Sans+JP:wght@700;900&display=swap
radii4 items
none
0
sm
16px
lg
24px
pill
9999px
shadows2 items
media
0 30px 80px rgba(0,0,0,.16)
panel
0 16px 60px rgba(0,0,0,.07)
spacing2 items
base
1rem
scale
0.25rem, 0.5rem, 0.75rem, 1rem, 1.5rem, 2rem, 3rem, 4.5rem, 6rem
surfaces4 items
ground
#ffffff
quiet
#f6faf7
strong
#eef6f0
ink
#000000
borders2 items
policy
no visible borders; hierarchy by tone, scale, and space
border token use
focus math and exported themes only
motion3 items
principle
lift and reveal — content settles in by moving a short distance upward
reduced motion
transforms removed, content always visible
control height
48px
rules
composition
Full-bleed hero from the wind-lift signature (never the SaaS-hero template); below it, rich full-width sections separated by white bands and tone, never borders.
hierarchy

Heavy black display type at poster scale; one dominant sky-blue primary action; quieter tonal secondaries; accents used like highlighters.

density

Generous white air around decisions; data bands and tables stay dense but breathe with tonal rows.

signature

The wind-lift: rising accent streamer-bars, green capacity fills that rise, coral exceptions; mapped onto semantic roles so they recolour on palette swap.

layout
grid

Capped, centred content (max ~1320px) on a white ground; the full-bleed hero spans 100vw.

whitespace

Generous; titles always padded above; large sections separated by white bands.

density

Comfortable on landing, dense-but-legible on dashboard (14.5px+ table rows).

responsive

Single column on mobile; non-essential nav and optional table columns hide; never overflow horizontally; ultra-wide caps and centres.

breakpoints
mobile
max-width:540px
tablet
max-width:1080px
desktop
1320px container
ultrawide
2560px+
guidance
do
  • Keep the three accents at full brightness, used sparingly like highlighters on white.
  • Stage the page so the eye reads upward — use the wind-lift bars and rising fills.
  • Separate hierarchy with tone, scale, and space; never with borders.
  • Style every control on the one 48px height with a visible sky-blue focus ring.
avoid
  • Don't desaturate the neon to tasteful greys, or wash the ground in pastel.
  • Don't give a card a single accent edge, or trap the nav in a pill bar.
  • Don't use the SaaS-hero template (eyebrow tag, button pair, stat row) or a serif/italic headline swap.
  • Don't use childish mascot graphics or emoji on buttons.
imagery
pairs with

riso-poster-illustration

summary
Bright editorial illustration with crisp flat shapes and a subtle silkscreen/risograph print texture; bright and clean, never muddy or low-poly. One full-bleed hero swappable via background-image.
subjects
koinobori streamers rising over a riversidecivic festival programs and crowdsopen early-summer sky and fresh greenery
usage

Landing hero and dashboard command panel use the paired Riso Poster Illustration style; the hero is driven by background-image: var(--hero-image).

katagami spec
# Nobori

## Philosophy

A bright civic design language for Kodomo no Hi programs: large fields of white air, heavy black editorial type, and three vivid highlighter accents that rise through a composition the way koinobori climb on an early-summer wind. Its one ownable idea is the wind-lift — type, marks, and panels are staged so the eye reads upward — for the teams that coordinate a real public celebration.

### Values

- confident poster scale
- civic clarity
- visible lift
- bright and clean, never muddy
- grown-up, not childish

### Anti-Values

- childish mascot graphics
- pastel softness
- muddy seasonal washes
- generic startup claims
- borders and grey rules

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#ffffff` |
| surface | `#f6faf7` |
| surface_strong | `#eef6f0` |
| text | `#000000` |
| muted | `#48524b` |
| border | `#dfe9e2` |
| accent | `#00a6ff` |
| accent_2 | `#46f04f` |
| accent_3 | `#ff3f7a` |
| on_accent | `#000000` |
| success | `#46f04f` |
| warning | `#ff3f7a` |
| error | `#ff3f7a` |
| info | `#00a6ff` |

### Typography

- **Base Size**: 17px
- **Body Font**: Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif
- **Heading Font**: 'Arial Black', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', system-ui, sans-serif
- **Mono Font**: ui-monospace, SFMono-Regular, Menlo, monospace
- **Jp Font**: 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', system-ui, sans-serif
- **Heading Weight**: 900
- **Heading Transform**: none
- **Letter Spacing**: -0.02em
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800;900&family=Noto+Sans+JP:wght@700;900&display=swap

### Radii

- **None**: 0
- **Sm**: 16px
- **Lg**: 24px
- **Pill**: 9999px

### Shadows

- **Media**: 0 30px 80px rgba(0,0,0,.16)
- **Panel**: 0 16px 60px rgba(0,0,0,.07)

### Spacing

- **Base**: 1rem
- **Scale**: ["0.25rem","0.5rem","0.75rem","1rem","1.5rem","2rem","3rem","4.5rem","6rem"]

### Surfaces

- **Ground**: #ffffff
- **Quiet**: #f6faf7
- **Strong**: #eef6f0
- **Ink**: #000000

### Borders

- **Policy**: no visible borders; hierarchy by tone, scale, and space
- **Border Token Use**: focus math and exported themes only

### Motion

- **Principle**: lift and reveal — content settles in by moving a short distance upward
- **Reduced Motion**: transforms removed, content always visible
- **Control Height**: 48px

## Rules

### Composition

Full-bleed hero from the wind-lift signature (never the SaaS-hero template); below it, rich full-width sections separated by white bands and tone, never borders.

### Hierarchy

Heavy black display type at poster scale; one dominant sky-blue primary action; quieter tonal secondaries; accents used like highlighters.

### Density

Generous white air around decisions; data bands and tables stay dense but breathe with tonal rows.

### Signature

The wind-lift: rising accent streamer-bars, green capacity fills that rise, coral exceptions; mapped onto semantic roles so they recolour on palette swap.

## Layout

### Grid

Capped, centred content (max ~1320px) on a white ground; the full-bleed hero spans 100vw.

### Whitespace

Generous; titles always padded above; large sections separated by white bands.

### Density

Comfortable on landing, dense-but-legible on dashboard (14.5px+ table rows).

### Responsive

Single column on mobile; non-essential nav and optional table columns hide; never overflow horizontally; ultra-wide caps and centres.

### Breakpoints

- **Mobile**: max-width:540px
- **Tablet**: max-width:1080px
- **Desktop**: 1320px container
- **Ultrawide**: 2560px+

## Guidance

### Do

- Keep the three accents at full brightness, used sparingly like highlighters on white.
- Stage the page so the eye reads upward — use the wind-lift bars and rising fills.
- Separate hierarchy with tone, scale, and space; never with borders.
- Style every control on the one 48px height with a visible sky-blue focus ring.

### Don't

- Don't desaturate the neon to tasteful greys, or wash the ground in pastel.
- Don't give a card a single accent edge, or trap the nav in a pill bar.
- Don't use the SaaS-hero template (eyebrow tag, button pair, stat row) or a serif/italic headline swap.
- Don't use childish mascot graphics or emoji on buttons.

### Accessibility

Black body text on white or high-opacity white; never light text over light sky; visible consistent focus rings; controls keep shape and height across states; columns collapse before any horizontal overflow; motion respects prefers-reduced-motion.

## Imagery Direction

### Pairs With

riso-poster-illustration

### Summary

Bright editorial illustration with crisp flat shapes and a subtle silkscreen/risograph print texture; bright and clean, never muddy or low-poly. One full-bleed hero swappable via background-image.

### Subjects

- koinobori streamers rising over a riverside
- civic festival programs and crowds
- open early-summer sky and fresh greenery

### Usage

Landing hero and dashboard command panel use the paired Riso Poster Illustration style; the hero is driven by background-image: var(--hero-image).
DESIGN.md
---
version: "alpha"
name: "Nobori"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  bg: "#ffffff"
  surface: "#f6faf7"
  surface_strong: "#eef6f0"
  text: "#000000"
  muted: "#48524b"
  border: "#dfe9e2"
  accent: "#00a6ff"
  accent_2: "#46f04f"
  accent_3: "#ff3f7a"
  on_accent: "#000000"
  success: "#46f04f"
  warning: "#ff3f7a"
  error: "#ff3f7a"
  info: "#00a6ff"
typography:
  headline-lg:
    fontFamily: "'Arial Black', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', system-ui, sans-serif"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "'Arial Black', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', system-ui, sans-serif"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  sm: "16px"
  lg: "24px"
  pill: "9999px"
spacing:
  base: "1rem"
  xs: "0.25rem"
  sm: "0.5rem"
  md: "0.75rem"
  lg: "1rem"
  xl: "1.5rem"
  2xl: "2rem"
  3xl: "3rem"
  4xl: "4.5rem"
  step-8: "6rem"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface_strong:
    backgroundColor: "{colors.surface_strong}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-accent_2:
    backgroundColor: "{colors.accent_2}"
  color-reference-accent_3:
    backgroundColor: "{colors.accent_3}"
  color-reference-on_accent:
    backgroundColor: "{colors.on_accent}"
  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"
---

# Nobori

## Overview

A bright civic design language for Kodomo no Hi programs: large fields of white air, heavy black editorial type, and three vivid highlighter accents that rise through a composition the way koinobori climb on an early-summer wind. Its one ownable idea is the wind-lift — type, marks, and panels are staged so the eye reads upward — for the teams that coordinate a real public celebration.

### Values

- confident poster scale
- civic clarity
- visible lift
- bright and clean, never muddy
- grown-up, not childish

### Anti-Values

- childish mascot graphics
- pastel softness
- muddy seasonal washes
- generic startup claims
- borders and grey rules

## 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 | `#f6faf7` |
| surface_strong | `#eef6f0` |
| text | `#000000` |
| muted | `#48524b` |
| border | `#dfe9e2` |
| accent | `#00a6ff` |
| accent_2 | `#46f04f` |
| accent_3 | `#ff3f7a` |
| on_accent | `#000000` |
| success | `#46f04f` |
| warning | `#ff3f7a` |
| error | `#ff3f7a` |
| info | `#00a6ff` |

## Typography

- **Headline-Lg**: 'Arial Black', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', system-ui, sans-serif, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: 'Arial Black', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', system-ui, sans-serif, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif, 17px, weight 400, line-height 1.5.
- **Label-Md**: ui-monospace, SFMono-Regular, Menlo, monospace, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `1rem`
- **Xs**: `0.25rem`
- **Sm**: `0.5rem`
- **Md**: `0.75rem`
- **Lg**: `1rem`
- **Xl**: `1.5rem`
- **2xl**: `2rem`
- **3xl**: `3rem`
- **4xl**: `4.5rem`
- **Step-8**: `6rem`

### Grid

Capped, centred content (max ~1320px) on a white ground; the full-bleed hero spans 100vw.

### Whitespace

Generous; titles always padded above; large sections separated by white bands.

### Density

Comfortable on landing, dense-but-legible on dashboard (14.5px+ table rows).

### Responsive

Single column on mobile; non-essential nav and optional table columns hide; never overflow horizontally; ultra-wide caps and centres.

### Breakpoints

- **Mobile**: max-width:540px
- **Tablet**: max-width:1080px
- **Desktop**: 1320px container
- **Ultrawide**: 2560px+

## Elevation & Depth

### Shadows

- **Media**: 0 30px 80px rgba(0,0,0,.16)
- **Panel**: 0 16px 60px rgba(0,0,0,.07)

## Shapes

### Rounded

- **None**: `0px`
- **Sm**: `16px`
- **Lg**: `24px`
- **Pill**: `9999px`

### Surfaces

- **Ground**: #ffffff
- **Quiet**: #f6faf7
- **Strong**: #eef6f0
- **Ink**: #000000

### Borders

- **Policy**: no visible borders; hierarchy by tone, scale, and space
- **Border Token Use**: focus math and exported themes only

## Components

### Composition

Full-bleed hero from the wind-lift signature (never the SaaS-hero template); below it, rich full-width sections separated by white bands and tone, never borders.

### Hierarchy

Heavy black display type at poster scale; one dominant sky-blue primary action; quieter tonal secondaries; accents used like highlighters.

### Density

Generous white air around decisions; data bands and tables stay dense but breathe with tonal rows.

### Signature

The wind-lift: rising accent streamer-bars, green capacity fills that rise, coral exceptions; mapped onto semantic roles so they recolour 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-019efb7a-8c7f-7cd2-a5bb-705e4fd2f5b5/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 Keep the three accents at full brightness, used sparingly like highlighters on white.
- Do Stage the page so the eye reads upward — use the wind-lift bars and rising fills.
- Do Separate hierarchy with tone, scale, and space; never with borders.
- Do Style every control on the one 48px height with a visible sky-blue focus ring.
- Don't Don't desaturate the neon to tasteful greys, or wash the ground in pastel.
- Don't Don't give a card a single accent edge, or trap the nav in a pill bar.
- Don't Don't use the SaaS-hero template (eyebrow tag, button pair, stat row) or a serif/italic headline swap.
- Don't Don't use childish mascot graphics or emoji on buttons.

### Accessibility

Black body text on white or high-opacity white; never light text over light sky; visible consistent focus rings; controls keep shape and height across states; columns collapse before any horizontal overflow; motion respects prefers-reduced-motion.

## Imagery Direction

### Pairs With

riso-poster-illustration

### Summary

Bright editorial illustration with crisp flat shapes and a subtle silkscreen/risograph print texture; bright and clean, never muddy or low-poly. One full-bleed hero swappable via background-image.

### Subjects

- koinobori streamers rising over a riverside
- civic festival programs and crowds
- open early-summer sky and fresh greenery

### Usage

Landing hero and dashboard command panel use the paired Riso Poster Illustration style; the hero is driven by background-image: var(--hero-image).
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "nobori",
  "type": "registry:theme",
  "title": "Nobori shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#ffffff",
      "foreground": "#000000",
      "card": "#f6faf7",
      "card-foreground": "#000000",
      "popover": "#f6faf7",
      "popover-foreground": "#000000",
      "primary": "#000000",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#48524b",
      "muted-foreground": "#000000",
      "accent": "#00a6ff",
      "accent-foreground": "#ffffff",
      "destructive": "#ff3f7a",
      "border": "#dfe9e2",
      "input": "#dfe9e2",
      "ring": "#00a6ff",
      "chart-1": "#000000",
      "chart-2": "#f4f4f5",
      "chart-3": "#00a6ff",
      "chart-4": "#46f04f",
      "chart-5": "#ff3f7a",
      "sidebar": "#f6faf7",
      "sidebar-foreground": "#000000",
      "sidebar-primary": "#000000",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#00a6ff",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#dfe9e2",
      "sidebar-ring": "#00a6ff",
      "radius": "24px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#000000",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#00a6ff",
      "accent-foreground": "#ffffff",
      "destructive": "#ff3f7a",
      "border": "#303642",
      "input": "#303642",
      "ring": "#00a6ff",
      "chart-1": "#000000",
      "chart-2": "#f4f4f5",
      "chart-3": "#00a6ff",
      "chart-4": "#46f04f",
      "chart-5": "#ff3f7a",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#000000",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#00a6ff",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#00a6ff",
      "radius": "24px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019efb7a-8c7f-7cd2-a5bb-705e4fd2f5b5",
    "slug": "nobori",
    "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",
        "info",
        "muted",
        "on_accent",
        "success",
        "surface",
        "surface_strong",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "jp_font",
        "letter_spacing",
        "mono_font"
      ],
      "radii": [
        "lg",
        "none",
        "pill",
        "sm"
      ],
      "shadows": [
        "media",
        "panel"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "ground",
        "ink",
        "quiet",
        "strong"
      ],
      "borders": [
        "border_token_use",
        "policy"
      ],
      "motion": [
        "control_height",
        "principle",
        "reduced_motion"
      ]
    }
  }
}
```
in the wild

embodiments

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

at a glance

Typography

headline-lgArial Black · 33px · 700

The quick brown fox jumps

headline-mdArial Black · 27px · 600

The quick brown fox jumps

body-mdInter · 17px · 400

The quick brown fox jumps

label-mdsystem · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with

Agent-generated

produced by gpt-5 (bake-off import) · sourced by gpt-5 · images by gpt-image-2

remix lane

try a remix

Keep Noboriand 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
Nobori
Palette
Art style
Landing Page
live preview · recolored + filled
related

More like this