project-bifrost-platform/design
2026-04-18 16:57:56 +02:00
..
assets chore: update logos to correct white variants 2026-04-18 16:57:56 +02:00
fonts wip: scaffold and index before style-guide 2026-04-18 16:09:49 +02:00
preview wip: scaffold and index before style-guide 2026-04-18 16:09:49 +02:00
screenshots wip: scaffold and index before style-guide 2026-04-18 16:09:49 +02:00
ui_kits/product wip: scaffold and index before style-guide 2026-04-18 16:09:49 +02:00
uploads wip: scaffold and index before style-guide 2026-04-18 16:09:49 +02:00
colors_and_type.css wip: scaffold and index before style-guide 2026-04-18 16:09:49 +02:00
ICONOGRAPHY.md wip: scaffold and index before style-guide 2026-04-18 16:09:49 +02:00
README.md wip: scaffold and index before style-guide 2026-04-18 16:09:49 +02:00
SKILL.md wip: scaffold and index before style-guide 2026-04-18 16:09:49 +02:00

Fenja AI — Nordic Editorial Design System

The Digital Archivist. An interface that breathes. A design system that treats data like a high-end research publication and an interface like a piece of minimalist Danish furniture.


1. Brand Context

Fenja AI is an AI product whose brand rejects the frantic, neon-soaked tropes of "Deep Tech" AI in favor of a timeless, academic, and human-centric aesthetic. The name Fenja comes from Norse myth — Fenja and Menja are the giantesses of the mill Grótti, grinders of gold and salt. The logo is a single spear (Norse iconography), rendered in warm charcoal #383831.

The goal of every surface: authoritative quietude. Move beyond the "template" look by using intentional asymmetry, oversized editorial margins, tonal surface shifts (no hairline dividers), and a radical commitment to negative space.

Sources in this project

Source What it contained
uploads/fenja icon black.svg Primary spear icon (charcoal)
uploads/fenja icon white.svg Spear icon (on dark)
uploads/fenja black(1).svg Full wordmark lockup: spear + "Fenja AI" in Manrope Medium
uploads/fenja white(1).svg Wordmark lockup (on dark)
uploads/Manrope-*.ttf 7 weights of Manrope — the functional sans
uploads/Newsreader_36pt-*.ttf 5 cuts of Newsreader — the editorial serif
Pasted spec "Nordic Editorial" design principles: surfaces, pigments, "no-line" rule, ghost borders, tonal layering, runic iconography

No codebase or Figma file was attached. UI kit screens in this system are derived from the written spec alone and should be treated as reference implementations, not pixel ports of a shipping product.


2. Content Fundamentals

Voice: the quiet expert. Fenja doesn't shout. It speaks the way a good research librarian does — precise, unhurried, generous with context. The tone is academic but warm, not clinical.

Tone rules

Do Don't
"A study in stillness." "🚀 Blazingly fast AI!"
"Archive of 4,812 documents." "4.8K+ files uploaded 🔥"
"We found a pattern." "AI magic unlocked "
Serif subheads paired with crisp sans body All-caps marketing shouts

Casing & grammar

  • Sentence case everywhere. Buttons, headlines, menu items. No Title Case marketing jargon.
  • Oxford comma, always.
  • Full stops on standalone sentences, none on single-phrase labels or buttons.
  • Numerals for data (12 results), spelled for prose (twelve years of research).
  • Prefer "you" for user-facing prose; "we" is used sparingly and only for Fenja itself (e.g. "We found a pattern."). Avoid "our" marketing padding.

The Definitive Emphasis — headline syntax

A strict grammatical and visual rhythm, to reinforce the Archivist persona. Applies to every product-level headline (hero H1, section H2, card H3, ask-pane titles).

Rule Detail
Terminal keyword placement The core capability or subject of the headline must always sit at the end of the sentence.
Styling That final keyword or phrase is rendered in Newsreader Bold Italic. Everything before it stays in the standard serif weight.
The absolute period Every headline concludes with a period — even in contexts where headlines are conventionally left open. The period is a visual anchor and a signal of finality.

Examples:

  • "A quiet place to keep what you are reading."
  • "Recently filed."
  • "Reading alongside you, Fenja."
  • "Ask the archive."

Apply this rule only to product-authored headlines — do not rewrite user-generated content (document titles, note headings) into the syntax.

Emoji & glyph policy

  • No emoji. Anywhere. Not in UI, not in empty states, not in marketing.
  • Unicode glyphs are acceptable as typographic devices only: em-dashes (—), en-dashes (), interpuncts (·), section marks (§), pilcrow (¶).
  • For state markers, use the Archival Pigment accent colors applied to runic geometry, not colored emoji.

Copy examples

Context Copy
Empty state "Nothing here yet. Drop a document to begin."
Loading "Reading…" (not "Loading…", never "Please wait")
Error "Could not reach the archive. Retry?"
Success "Filed." or "Saved to your archive."
CTA "Begin" / "Open archive" / "Read the study"
Destructive confirm "Remove this forever?" (full stop, honest)

Microcopy rhythm

Fenja microcopy often uses a period where other brands use an exclamation point. Confidence comes from restraint.

"A thinking tool. Built slowly." "Search your own library. Quietly." "Ask the archive."


3. Visual Foundations

Surface philosophy — the "no-line" rule

Borders are forbidden for structural sectioning. Define boundaries through background color shifts between surface tiers only. Treat the UI as stacked sheets of fine cotton paper.

surface-container-lowest  #fffcf7   ← floating search, topmost elevation (unbleached paper — the only near-white)
surface / background      #faf6ee   ← primary canvas
surface-container-low     #f6f2e8   ← first tonal nest
surface-container         #efeadc   ← inset sections, sidebars
surface-container-high    #e7e1d0   ← deeper insets
surface-container-highest #ddd6c3   ← recessed / pressed button fill

A surface-container-lowest card sits on a surface-container-low section on a surface page with zero dividers.

Archival Pigment accent palette

Flat, matte inks — extracted from historical manuscripts. Never gradient, never glossy. For overlapping data areas, apply at 2040% opacity so the paper texture bleeds through.

Swatch Hex Use
Faded Terracotta #b96b58 Warnings, critical alerts, destructive
Oxidized Copper #6d8c7c Success, growth, positive trends
Raw Ochre #c29d59 Cautions, tertiary accents
Faded Indigo #5a6d83 Info, neutral data (the only "blue")
Dusty Heather #8d7a85 Categorical, supporting iconography

No "tech blue." Ever. The only permissible blue is the heavily desaturated #5a6d83.

Typography

  • Headlines (Newsreader serif)display and headline scales. At display-lg use letter-spacing -0.02em for a locked-in editorial feel.
  • Body & labels (Manrope sans)title, body, label scales. Body line-height 1.6 against the warm background.
  • Hierarchy rule: always lead with the serif for intent, follow with sans for execution.
  • Labels are all-caps, tracked +0.08em, in --on-surface-variant.

Headlines are always left-aligned. No centered text in hero sections. A strong vertical axis is non-negotiable.

Spacing — the editorial margin

Desktop lateral padding is --space-20 (7rem / 112px). Hero cards use --space-8 (44px) padding. Between list items use --space-6 (32px). Generous whitespace is the system's primary visual tool.

Backgrounds & imagery

  • No full-bleed photography in chrome. Imagery lives in contained frames, always.
  • Preferred imagery vibe: warm, matte, desaturated — think museum-catalog reproductions. Film grain is welcome; high saturation is not.
  • Hand-drawn graphite illustrations are the primary iconography: 11.5px stroke in --on-surface #383831, clean but slightly organic. One Archival Pigment accent per icon, used on a single conceptual element (Oxidized Copper for a positive trend line, Faded Terracotta for a warning mark).
  • Data & connectivity is drawn as topographic currents — smooth, parallel, hand-drawn contour lines that wrap around figures and interface elements. Never nodes-and-links. Never solid dots.
  • Data grids (axes, rules) use the Ghost Border at 1530% opacity. No solid axis lines.
  • No patterns, no gradients on chrome. Primary CTA is a flat fill — no gradient, no shadow.

Elevation & depth

Depth comes from tonal layering, not shadow. Stack surface tiers. When a floating effect is truly needed:

  • Blur 3264px, opacity 46%, color --on-surface (not pure black — keeps the shadow warm).
  • --shadow-ambient for cards, --shadow-float for popovers, --shadow-modal for overlays.

Borders

Forbidden for layout. If accessibility requires a border (focus ring, form field bottom edge): use the Ghost Border--outline-variant at 15% opacity. Never a solid 100% border. Focus rings use a 2px outset in --secondary at 40% opacity.

Corner radii

  • --radius-md 0.75rem (12px) — the default. Buttons, cards, inputs.
  • --radius-lg 1.25rem (20px) — hero cards, modals.
  • --radius-sm 0.375rem (6px) — dense UI, tags, chips.
  • No fully-rounded pills except for runic state dots and avatars (--radius-full).

Cards

  • --radius-md, no border, no solid shadow — tonal lift only. Place a lighter tier card (surface-container-lowest) on a darker tier section (surface-container-low).
  • Hero cards: --space-8 (44px) padding, generous.
  • Standard cards: --space-5 to --space-6 padding.
  • If elevation is needed, use --shadow-ambient — a whisper.

Transparency & blur (Glass)

Reserved for floating overlays only: command palettes, toasts, floating search, dropdowns over scrollable content. Apply backdrop-filter: blur(1220px) to a surface token at 80% opacity. Do not use glass on chrome, cards, or hero sections.

Hover, press, focus

State Treatment
Hover (primary button) fill darkens #785f53#6b5348; no scale
Hover (secondary) fill darkens one tonal tier
Hover (tertiary) fill deepens, arrow slides 4px right
Hover (link) border-bottom from 30% opacity → 100%
Press 1px translateY down, no scale-shrink
Focus 2px --secondary ring at 40% opacity, 3px offset
Disabled 40% opacity, no cursor change on hover

No bounce. No elastic. No "playful" overshoots. The whole system has one easing: cubic-bezier(0.2, 0.0, 0, 1) and one speed: 240ms. Fades and tonal shifts only.

Animation

  • Transitions: 140ms (fast micro), 240ms (default), 420ms (layout).
  • No bounces, no springs, no overshoots.
  • Loading state uses interactive outline typography (drifting Newsreader letterforms behind hand-drawn human illustrations) paired with topographic currents. No spinners, no progress circles, no runic rotations.
  • Page entrances: fade + 4px translate-up. Never scale. Never slide from off-screen.

Layout rules

  • Desktop content max-width 72rem (1152px), reading measure max 42rem (672px).
  • Lateral margin --space-20 (7rem) on desktop; --space-5 (24px) on mobile.
  • Fixed header (if present) uses glass surface; never a solid fill.
  • Asymmetry is encouraged. Illustrations and runic accents may bleed off-center or overlap container edges.

4. Components

Buttons

Variant Spec
Primary #785f53 flat fill · white text · radius-md (12px) · no shadow · hover darkens to #6b5348
Secondary surface-container-highest #ddd6c3 fill · --on-surface text · reads like a subtle indentation in the page
Tertiary Warm-wheat #d9c9a8 fill · dark-walnut text · italic serif arrow that slides right on hover. Kept as a distinct colored button — no underline, no ghost states.

Cards & lists

  • The rule of no dividers. Forbid horizontal lines between list items. Separate with --space-6 (2rem) of whitespace, or alternate background tints between surface and surface-container.
  • Cards: --radius-md (12px). Generous padding — --space-8 (2.75rem) for hero cards to maintain the editorial feel; --space-5 to --space-6 for standard cards.
  • No borders. Elevation is tonal — place a lighter tier card on a darker tier section.

Input fields

  • Forgo the box. surface-variant (#e7e1d0) background with a bottom-only Ghost Border (--outline-variant at 30% opacity). No side borders, no rounded box.
  • Labels: label-sm size, all-caps, tracked +0.08em, in --secondary-fixed-dim (#9a8679) — muted, sophisticated.
  • Focus: bottom border thickens to --secondary (#785f53).

Iconography

See ICONOGRAPHY.md for full detail.

  • Hand-drawn, thin stroke (1px or 1.5px) in --on-surface #383831. Clean but slightly organic — intentional micro-asymmetry.
  • Pigment accents: one Archival Pigment per icon, applied to a single conceptual element (Oxidized Copper trend line, Faded Terracotta warning flame).
  • No filled Material icons. No emoji. No cartoon illustration.

Signature components

  • Interactive outline typography (loader). Replaces all spinners and runic geometry. Outlined Newsreader letterforms drift, rotate and morph behind hand-drawn human illustrations — the meeting point of human expression and advanced technology. See preview/outline-type-loader.html.
  • Topographic currents (data & connectivity). Parallel, hand-drawn contour lines that wrap around figures and interface elements like elevation rings. Replaces all node-and-link visualizations. See preview/topographic-currents.html.

5. Font substitutions

No substitutions required — all font files were provided.

  • Manrope (supplied, 7 weights: 200, 300, 400, 500, 600, 700, 800) — self-hosted from fonts/.
  • Newsreader (supplied, 5 cuts: Regular, Italic, Bold, BoldItalic, ExtraBold) — self-hosted from fonts/.

Missing from the upload but referenced in the system:

  • No monospace was provided. We default to JetBrains Mono / system mono stack. If a specific mono is desired, flag it and we'll swap it in.

6. Index — files in this project

Root

  • README.md — this file
  • ICONOGRAPHY.md — icon approach, library choice, usage rules
  • colors_and_type.css — all CSS variables + semantic base styles (import this everywhere)
  • SKILL.md — agent-skill manifest
  • fonts/ — Manrope + Newsreader TTFs (self-hosted)
  • assets/ — logos (icon + wordmark, black + white variants)

Preview cards

  • preview/ — individual HTML cards that populate the Design System review tab (one card per sub-concept)

UI kits

  • ui_kits/product/ — hi-fi recreation of the Fenja AI product surface (chat-with-archive)
    • index.html — interactive demo
    • *.jsx — component files

Slides

  • Not included. No slide template was attached.

7. Known limitations / asks

  • No codebase or Figma was attached. UI kit screens are designed from the written spec and should be treated as a reference implementation.
  • Custom iconography does not yet exist. We use Lucide at 1.5px stroke weight as a stand-in. A bespoke set matching the "runic + graphite" description is the biggest open gap.
  • Illustration assets are not yet produced. Where illustrations are called for, we ship labelled placeholders.
  • Product scope unclear. The system as written points toward a research/knowledge product — we modeled a single surface ("Archive") accordingly. Please confirm whether there's a marketing site, a docs site, or other surfaces we should cover.