next / remix / astro

KSN Swiss Editorial

Inspired by a numbered typeface-selection poster in the Swiss/Bauhaus editorial tradition, this kit pairs warm cream and vivid royal blue in alternating full-width surface bands with an overscaled grotesque heading system. Every screen section is its own surface color; there are no floating cards or shadows — only typography, hairline rules, and color. Roman-numeral indexes, alphabetic directory tables, and monospace footnotes are the structural language.

swiss
editorial
grotesque
poster
flat
no-border-radius
typographic
bauhaus
bold
monochrome-plus-one

ksnswisseditorial.com

KSN

TYPEFACE SELECTION

A curated index of contemporary grotesque and display typefaces for editorial and cultural projects.

VIEW SELECTIONTokens

ksnswisseditorial.com

KSN

TYPEFACE SELECTION

A curated index of contemporary grotesque and display typefaces for editorial and cultural projects.

VIEW SELECTIONTokens

Agent Prompt Surface

---
# Machine-readable tokens (the WHAT). The prose body gives the WHY + the rules.
colors:
  roles_light:
    background: "#FFF6E7"
    foreground: "#0A0A0A"
    card: "#F0E1B6"
    card-foreground: "#0A0A0A"
    popover: "#FFF6E7"
    popover-foreground: "#0A0A0A"
    primary: "#1B68D2"
    primary-foreground: "#FFFFFF"
    secondary: "#F0E1B6"
    secondary-foreground: "#0A0A0A"
    muted: "#EDE3C8"
    muted-foreground: "#2A2318"
    accent: "#1B68D2"
    accent-foreground: "#FFFFFF"
    destructive: "#6B1414"
    destructive-foreground: "#FFFFFF"
    border: "#CFC0A0"
    input: "#F0E1B6"
    ring: "#1B68D2"
    success: "#09381F"
    success-foreground: "#FFFFFF"
    warning: "#5C1D05"
    warning-foreground: "#FFFFFF"
    chart-1: "#1B68D2"
    chart-2: "#0A0A0A"
    chart-3: "#A69C7C"
    chart-4: "#6B1414"
    chart-5: "#BDD0DE"
  palette:
    - { name: "cream-warm", hex: "#fff6e7", role: "light-surface" }
    - { name: "royal-blue", hex: "#1b68d2", role: "primary" }
    - { name: "warm-sand", hex: "#f0e1b6", role: "sand-surface" }
    - { name: "pitch-black", hex: "#000000", role: "dark-surface" }
    - { name: "near-black-ink", hex: "#0a0a0a", role: "ink" }
    - { name: "white", hex: "#ffffff", role: "ink-on-blue" }
    - { name: "muted-stone", hex: "#a69c7c", role: "muted" }
    - { name: "sky-light", hex: "#bdd0de", role: "light-accent" }
    - { name: "deep-navy", hex: "#142444", role: "dark-vibrant" }
    - { name: "warm-muted-slate", hex: "#34384c", role: "dark-muted" }
    - { name: "warm-sand-alt", hex: "#efe0b5", role: "sand-surface-alt" }
    - { name: "near-white-cream", hex: "#fffff3", role: "highlight" }
    - { name: "light-extracted-cream", hex: "#f2e3b4", role: "sand-surface" }
    - { name: "blue-alt", hex: "#1c6ddb", role: "primary-alt" }
    - { name: "hairline-warm", hex: "#cfc0a0", role: "border" }
    - { name: "dark-ink-warm", hex: "#2a2318", role: "muted-foreground" }
    - { name: "deep-charcoal", hex: "#5a5242", role: "secondary-text" }
    - { name: "destructive-dark", hex: "#6b1414", role: "destructive-light" }
    - { name: "destructive-light", hex: "#f87171", role: "destructive-dark" }

shadcn CSS Variables

/* Generated by Identity Forge design kits */
@import url("https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;600;700&family=Hanken%20Grotesk:wght@400;500;600;700&family=Space%20Mono:wght@400;700&display=swap");

:root {
  --radius: 0rem;
  --font-heading: 'Barlow', sans-serif;
  --font-sans: 'Hanken Grotesk', sans-serif;
  --font-mono: 'Space Mono', monospace;
  --background: 38 100% 95%;
  --foreground: 0 0% 4%;
  --card: 44 66% 83%;
  --card-foreground: 0 0% 4%;
  --popover: 38 100% 95%;
  --popover-foreground: 0 0% 4%;
  --primary: 215 77% 46%;
  --primary-foreground: 0 0% 100%;
  --secondary: 44 66% 83%;
  --secondary-foreground: 0 0% 4%;
  --muted: 44 51% 86%;
  --muted-foreground: 37 27% 13%;
  --accent: 215 77% 46%;
  --accent-foreground: 0 0% 100%;
  --destructive: 0 69% 25%;
  --destructive-foreground: 0 0% 100%;
  --border: 41 33% 72%;
  --input: 44 66% 83%;
  --ring: 215 77% 46%;
  --success: 148 72% 13%;
  --success-foreground: 0 0% 100%;
  --warning: 17 90% 19%;
  --warning-foreground: 0 0% 100%;
  --chart-1: 215 77% 46%;
  --chart-2: 0 0% 4%;
  --chart-3: 46 19% 57%;
  --chart-4: 0 69% 25%;
  --chart-5: 205 33% 81%;
  --shadow-sm: none;
  --shadow-md: none;
  --shadow-lg: none;
  --shadow-xl: none;
  --gradient-hero: none;
  --gradient-brand: none;
  --gradient-subtle: linear-gradient(to bottom, #fff6e7, #f0e1b6);
  --duration: 120ms;
  --duration-slow: 240ms;
  --ease: cubic-bezier(0.4, 0, 0.2, 1);
  --tracking-tight: -0.01em;
  --tracking-normal: 0em;
  --font-weight-heading: 800;
  --font-weight-body: 400;
  --button-radius: 0rem;
  --card-radius: 0rem;
  --input-radius: 0rem;
  --badge-radius: 0rem;
  --border-width: 1px;
  --card-border-width: 1px;
  --input-border-width: 1px;
  --button-border-width: 1px;
  --badge-border-width: 1px;
  --heading-transform: uppercase;

Install Targets

Registry

/r/ksn-swiss-editorial.json

Tailwind v4

@theme inline {
  --font-heading: 'Barlow', sans-serif;
  --font-sans: 'Hanken Grotesk', sans-serif;
  --font-mono: 'Space Mono', monospace;
  --color-background: hsl(var(--background));
  --color-foreground: hsl(var(--foreground));
  --color-card: hsl(var(--card));
  --color-card-foreground: hsl(var(--card-foreground));
  --color-popover: hsl(var(--popover));
  --color-popover-foreground: hsl(var(--popover-foreground));
  --color-primary: hsl(var(--primary));
  --color-primary-foreground: hsl(var(--primary-foreground));
  --color-secondary: hsl(var(--secondary));
  --color-secondary-foreground: hsl(var(--secondary-foreground));
  --color-muted: hsl(var(--muted));
  --color-muted-foreground: hsl(var(--muted-foreground));
  --color-accent: hsl(var(--accent));
  --color-accent-foreground: hsl(var(--accent-foreground));
  --color-destructive: hsl(var(--destructive));
  --color-destructive-foreground: hsl(var(--destructive-foreground));
  --color-border: hsl(var(--border));
  --color-input: hsl(var(--input));
  --color-ring: hsl(var(--ring));
  --color-success: hsl(var(--success));
  --color-success-foreground: hsl(var(--success-foreground));
  --color-warning: hsl(var(--warning));
  --color-warning-foreground: hsl(var(--warning-foreground));
  --color-chart-1: hsl(var(--chart-1));
  --color-chart-2: hsl(var(--chart-2));
  --color-chart-3: hsl(var(--chart-3));
  --color-chart-4: hsl(var(--chart-4));
  --color-chart-5: hsl(var(--chart-5));
  --radius-sm: 0rem;
  --radius-md: 0rem;
  --radius-lg: 0rem;
  --radius-xl: 0rem;
  --radius-button: 0rem;
  --radius-card: 0rem;
  --radius-input: 0rem;
  --radius-badge: 0rem;
  --border-width: 1px;
  --card-border-width: 1px;
  --input-border-width: 1px;
  --button-border-width: 1px;
  --badge-border-width: 1px;
  --shadow-sm: none;
  --shadow-md: none;
  --shadow-lg: none;
  --shadow-xl: none;
  --tracking-tight: -0.01em;
  --tracking-normal: 0em;
  --ease-kit: cubic-bezier(0.4, 0, 0.2, 1);
  --duration-kit: 120ms;
  --duration-kit-slow: 240ms;
  --gradient-hero: none;
  --gradient-brand: none;
  --gradient-subtle: linear-gradient(to bottom, #fff6e7, #f0e1b6);
  --font-weight-heading: 800;
  --font-weight-body: 400;
}

Registry payload

{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "ksn-swiss-editorial",
  "type": "registry:theme",
  "title": "KSN Swiss Editorial",
  "description": "A Swiss International Typographic poster system translated into a UI kit: bold grotesque display type, alternating cream/blue/sand surface bands, zero radius, hairline rules, and a strict left-aligned grid.",
  "categories": [
    "swiss",
    "editorial",
    "grotesque",
    "poster",
    "flat",
    "no-border-radius",
    "typographic",
    "bauhaus",
    "bold",