Next.js / Remix / Astro

Norvale Editorial

A refined editorial design system anchored on warm parchment surfaces and dramatic thick-thin serif typography. The design transposes analog print quality into digital UI: cream fields, near-black ink, oversized italic display headings (Fraunces), and painterly full-bleed East Asian landscape imagery. Dusty sage teal is the sole chromatic accent, used sparingly. Numbered index labels, hanging quotation marks, and '+' spatial markers form a distinctive visual grammar lifted directly from the source.

editorial
serif
parchment
literary
warm
minimal
high-contrast
ink
organic
East-Asian

norvaleeditorial.com

norvale

Unlock More

A story about direction, clarity, and the platform that slowly changed everything.

Unlock Access +Tokens

norvaleeditorial.com

norvale

Unlock More

A story about direction, clarity, and the platform that slowly changed everything.

Unlock Access +Tokens

Agent Prompt Surface

---
# Machine-readable tokens (the WHAT). The prose body gives the WHY + the rules.
colors:
  roles_light:
    background: "#EFE8D6"
    foreground: "#141210"
    card: "#E6DFC8"
    card-foreground: "#141210"
    popover: "#F2EBDA"
    popover-foreground: "#141210"
    primary: "#141210"
    primary-foreground: "#EFE8D6"
    secondary: "#D6CCA3"
    secondary-foreground: "#3A3628"
    muted: "#E0D9C4"
    muted-foreground: "#5E5948"
    accent: "#708E83"
    accent-foreground: "#141210"
    destructive: "#B83333"
    destructive-foreground: "#FFFFFF"
    border: "#C8C0A4"
    input: "#E8E1CB"
    ring: "#141210"
    success: "#3E6655"
    success-foreground: "#FFFFFF"
    warning: "#BC8464"
    warning-foreground: "#141210"
    chart-1: "#BC8464"
    chart-2: "#708E83"
    chart-3: "#4C4A1C"
    chart-4: "#8BA08B"
    chart-5: "#5C442C"
  palette:
    - { name: "near-black", hex: "#101010", role: "surface-dark" }
    - { name: "parchment", hex: "#efe8d6", role: "surface-light" }
    - { name: "parchment-alt", hex: "#ece5d3", role: "surface-light-alt" }
    - { name: "warm-tan", hex: "#d6cca3", role: "neutral" }
    - { name: "light-muted-cream", hex: "#d4cba5", role: "neutral-muted" }
    - { name: "terracotta", hex: "#bc8464", role: "accent-warm" }
    - { name: "dark-olive", hex: "#645d20", role: "accent-dark" }
    - { name: "light-vibrant-cream", hex: "#fbf4cd", role: "highlight" }
    - { name: "muted-gold", hex: "#a49c64", role: "neutral-mid" }
    - { name: "dark-muted-brown", hex: "#5c442c", role: "shadow-warm" }
    - { name: "scored-olive", hex: "#4c4a1c", role: "accent-dark" }
    - { name: "near-black-warm", hex: "#0d1313", role: "ink-dark" }
    - { name: "sage-green", hex: "#8ba08b", role: "accent-nature" }
    - { name: "dusty-teal", hex: "#708e83", role: "accent-primary" }
    - { name: "warm-mid-grey", hex: "#7a7768", role: "neutral-mid" }
    - { name: "surface-variant", hex: "#e7e3d1", role: "surface-light" }
    - { name: "card-cream", hex: "#e6dfc8", role: "surface-card" }
    - { name: "ink-near-black", hex: "#141210", role: "ink" }
    - { name: "inverted-card-dark", hex: "#1a1a14", role: "surface-dark-card" }

shadcn CSS Variables

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

:root {
  --radius: 0.75rem;
  --font-heading: 'Fraunces', serif;
  --font-sans: 'Plus Jakarta Sans', sans-serif;
  --font-mono: 'Space Mono', monospace;
  --background: 43 44% 89%;
  --foreground: 30 11% 7%;
  --card: 46 37% 84%;
  --card-foreground: 30 11% 7%;
  --popover: 42 48% 90%;
  --popover-foreground: 30 11% 7%;
  --primary: 30 11% 7%;
  --primary-foreground: 43 44% 89%;
  --secondary: 48 38% 74%;
  --secondary-foreground: 47 18% 19%;
  --muted: 45 31% 82%;
  --muted-foreground: 46 13% 33%;
  --accent: 158 12% 50%;
  --accent-foreground: 30 11% 7%;
  --destructive: 0 57% 46%;
  --destructive-foreground: 0 0% 100%;
  --border: 47 25% 71%;
  --input: 46 39% 85%;
  --ring: 30 11% 7%;
  --success: 155 24% 32%;
  --success-foreground: 0 0% 100%;
  --warning: 22 40% 56%;
  --warning-foreground: 30 11% 7%;
  --chart-1: 22 40% 56%;
  --chart-2: 158 12% 50%;
  --chart-3: 58 46% 20%;
  --chart-4: 120 10% 59%;
  --chart-5: 30 35% 27%;
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.06);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.08);
  --shadow-lg: 0 8px 24px rgba(0,0,0,0.10);
  --shadow-xl: 0 16px 48px rgba(0,0,0,0.14);
  --gradient-hero: linear-gradient(180deg, #efe8d6 0%, #d6cca3 100%);
  --gradient-brand: linear-gradient(135deg, #efe8d6 0%, #c8c0a4 100%);
  --gradient-subtle: linear-gradient(180deg, #f4eee0 0%, #e6dfc8 100%);
  --duration: 250ms;
  --duration-slow: 500ms;
  --ease: cubic-bezier(0.25, 0.1, 0.25, 1);
  --tracking-tight: -0.02em;
  --tracking-normal: 0em;
  --font-weight-heading: 700;
  --font-weight-body: 400;
  --button-radius: 0.25rem;
  --card-radius: 0.75rem;
  --input-radius: 0.25rem;
  --badge-radius: 9999px;
  --border-width: 1px;
  --card-border-width: 1px;
  --input-border-width: 1px;
  --button-border-width: 0;
  --badge-border-width: 1px;
  --heading-transform: uppercase;

Install Targets

Registry

/r/norvale-editorial.json

Tailwind v4

@theme inline {
  --font-heading: 'Fraunces', serif;
  --font-sans: 'Plus Jakarta Sans', 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: 0.125rem;
  --radius-md: 0.375rem;
  --radius-lg: 0.75rem;
  --radius-xl: 1rem;
  --radius-button: 0.25rem;
  --radius-card: 0.75rem;
  --radius-input: 0.25rem;
  --radius-badge: 9999px;
  --border-width: 1px;
  --card-border-width: 1px;
  --input-border-width: 1px;
  --button-border-width: 0;
  --badge-border-width: 1px;
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.06);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.08);
  --shadow-lg: 0 8px 24px rgba(0,0,0,0.10);
  --shadow-xl: 0 16px 48px rgba(0,0,0,0.14);
  --tracking-tight: -0.02em;
  --tracking-normal: 0em;
  --ease-kit: cubic-bezier(0.25, 0.1, 0.25, 1);
  --duration-kit: 250ms;
  --duration-kit-slow: 500ms;
  --gradient-hero: linear-gradient(180deg, #efe8d6 0%, #d6cca3 100%);
  --gradient-brand: linear-gradient(135deg, #efe8d6 0%, #c8c0a4 100%);
  --gradient-subtle: linear-gradient(180deg, #f4eee0 0%, #e6dfc8 100%);
  --font-weight-heading: 700;
  --font-weight-body: 400;
}

Registry payload

{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "norvale-editorial",
  "type": "registry:theme",
  "title": "Norvale Editorial",
  "description": "Warm parchment editorial system with oversized high-contrast italic serif, near-black accents, and dusty sage teal — a literary, analog-digital design world.",
  "categories": [
    "editorial",
    "serif",
    "parchment",
    "literary",
    "warm",
    "minimal",
    "high-contrast",
    "ink",
    "organic",