# 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 **20–40% 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: 1–1.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 15–30% 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 **32–64px**, opacity **4–6%**, 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(12–20px)` 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`](./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.