This document is the reusable visual system for Balaur. It is written for LLM agents and implementers who need to create Balaur UI, marketing pages, docs, social assets, or app surfaces that feel consistent.
Product: Balaur — your personal wise companion: a self-hosted, FOSS AI assistant that helps you, remembers what matters, grows with you, and keeps your data and information your own.
Core metaphor: a wise companion with the patience and loyalty of a balaur (the many-headed guardian dragon of Romanian fairy tales). It counsels and helps you day to day, and quietly protects what it knows about you. Lead with wise companion; protection is the quiet second beat — never lean on chest / hoard / “vault” clichés, and don’t lead with “dragon” (the name carries it).
Growth metaphor: every approved skill is a new head of the balaur. It grows by learning reviewable procedures; each head watches one domain while serving the same person. Use this for self-evolution, skill cards, roadmap states, and illustrations. Avoid plugin-marketplace metaphors.
Design language name: Basm (Romanian for fairy tale).
Design idea: a pixel-art, 16-bit design system rooted in Romanian fairy tales (basme) and the balaur — woven, tactile, storybook, hand-built. The interface should feel constructed, crafted, local, and trustworthy — not glossy SaaS, not generic AI gradientware. (The folklore heritage lives here, in the design layer; product marketing leads with the universal “wise companion,” not an ethnic-folk label.)
Keywords: wise, companion, grows-with-you, helpful, trustworthy · pixel-art, 16-bit, woven, tactile, storybook, balaur, basm · local-first, private, open-source, self-hosted.
Emotional tone: wise, warm, calm, helpful, handmade, a little mythic.
Woven, not rendered
Prefer visible structure: borders, dashed stitches, hard shadows, pixel motifs, square marks, folk bands.
Craft over gloss
Avoid glassmorphism, soft SaaS gradients, excessive blur, rounded blobs, stock illustrations, and generic AI sparkle effects.
Sovereign by construction
UI should look robust and self-hostable: readable, inspectable, low-dependency, no dark-pattern polish.
Dark-first dragon domain
Dark mode is the default identity. Light mode exists but should still feel earthy and woven, not sterile.
Pixel-hard interactions
Use crisp edges, 2px borders, small radii, hard offset shadows, tiny square notches, and minimal motion.
Folk accenting
Use madder red, ochre/gold, dragon teal, indigo, and embroidery-like bands as accents, not decoration overload.
New skill, new head
When showing growth, depict a new approved procedure as another Balaur head — not as a generic plugin, extension tile, or SaaS automation. The head appears after human approval.
:root {
--bg: #0e1613;
--surface: #15201c;
--surface-2: #1b2924;
--surface-3: #22332c;
--on-bg: #eee8da;
--on-surface: #f4efe4;
--muted: #9db0a5;
--primary: #ff8a4c;
--primary-strong: #c2410c;
--on-primary: #1a0e07;
--gold: #e9c267;
--teal: #76d5dc;
--folkred: #e0563b;
--indigo: #a8c0f0;
--outline: #36473f;
--outline-2: #212d27;
--good: #7fcf6a;
}
:root.theme-light {
--bg: #f5f1e8;
--surface: #fffdf7;
--surface-2: #ece6d7;
--surface-3: #e3dcc9;
--on-bg: #1a2a23;
--on-surface: #13201a;
--muted: #5c6e63;
--primary: #c2410c;
--primary-strong: #9a3410;
--on-primary: #fff8f3;
--gold: #8a6d12;
--teal: #00656b;
--folkred: #983f20;
--indigo: #1e3a8a;
--outline: #cdc5b3;
--outline-2: #ded6c4;
--good: #3f6f2f;
}
--bg: page background.--surface: cards, top bar, framed areas.--surface-2: tags, icon boxes, code backgrounds.--on-bg: main body text and strong borders.--on-surface: headings and foreground text on cards.--muted: secondary copy, metadata, descriptions.--primary: main call-to-action, links, active states, emphasis.--primary-strong: hard shadows and deep orange-red accents.--gold: folk accent, small square notches, kicker text.--teal: secondary accent, folk stripes, technical/sovereign accents.--folkred: heritage/embroidery accent.--indigo: optional folk palette accent.--good: status indicator for “building”, “done”, “healthy”.Preferred web fonts from Google Fonts:
--font-display: 'Pixelify Sans', system-ui, sans-serif;
--font-pixel: 'Silkscreen', monospace;
--font-body: 'Work Sans', system-ui, sans-serif;
--font-mono: 'JetBrains Mono', monospace;
Pixelify Sans, bold or semi-bold. Large, compressed line-height, mythic pixel character.Silkscreen. Use sparingly for short labels, kickers, numbers, brand marks.Work Sans. Clear, warm, readable.JetBrains Mono.body: 17px / 1.6 Work Sans;
hero h1: clamp(58px, 12vw, 104px), line-height .86;
hero lead: clamp(20px, 3vw, 26px), line-height 1.25;
h2: clamp(28px, 4.4vw, 40px), line-height 1.05;
lede: clamp(20px, 3vw, 27px), line-height 1.3;
card h3: 19px;
card body: 14.5px / 1.55;
nav/button/tag: 11–13px JetBrains Mono uppercase;
--radius: 3px;
--maxw: 1080px;
--margin: 6vw;
max-width: 1080px; margin: 0 auto; padding: 0 6vw;.54px 0 vertical padding.1.05fr .95fr, 48px gap; collapse to one column under 860px.A horizontal Romanian-carpet stripe used to divide major page sections.
.folk-band {
height: 16px;
width: 100%;
background: repeating-linear-gradient(
135deg,
var(--folkred) 0 8px,
var(--gold) 8px 16px,
var(--teal) 16px 24px,
var(--primary-strong) 24px 32px
);
border-top: 2px solid var(--on-bg);
border-bottom: 2px solid var(--on-bg);
image-rendering: pixelated;
}
Use between large narrative blocks. Do not overuse inside dense app UI.
.stitch {
height: 2px;
background-image: linear-gradient(to right, var(--outline) 50%, transparent 50%);
background-size: 8px 2px;
background-repeat: repeat-x;
}
Use for separators, footers, empty states, and subtle construction texture.
Small 4–8px square accents in corners. Use gold, teal, or folkred.
Example: top-right gold square on cards; four corner notches on crest frames.
Dark background may use very subtle radial accents only:
background-image:
radial-gradient(circle at 12% -10%, rgba(118,213,220,.06), transparent 40%),
radial-gradient(circle at 90% 0%, rgba(255,138,76,.07), transparent 42%);
Keep gradients faint and atmospheric, never glossy.
34px, 2px border.Buttons are squared, uppercase, mono, with 2px border and hard pixel shadow.
.btn {
display: inline-flex;
align-items: center;
gap: 9px;
font-family: var(--font-mono);
font-weight: 500;
font-size: 13px;
text-transform: uppercase;
letter-spacing: .06em;
padding: 13px 20px;
border-radius: var(--radius);
border: 2px solid var(--on-bg);
transition: transform .08s, box-shadow .08s;
}
.btn-primary {
background: var(--primary);
color: var(--on-primary);
box-shadow: 5px 5px 0 var(--primary-strong);
}
.btn-ghost {
background: var(--surface);
color: var(--on-surface);
box-shadow: 5px 5px 0 var(--outline);
}
.btn:hover { transform: translate(1px, 1px); }
.btn:active { transform: translate(5px, 5px); box-shadow: 0 0 0; }
Silkscreen, gold, short all-caps phrase with stars or separators.Pixelify Sans, cream text, hard orange-red text shadow.Hero title style:
h1.title {
font-family: var(--font-display);
font-weight: 700;
font-size: clamp(58px, 12vw, 104px);
line-height: .86;
color: var(--on-surface);
text-shadow: 4px 4px 0 var(--primary-strong);
}
▪.--on-surface, rest muted.--good--primary--teal--goldThe central image is a pixel-art balaur: a many-headed guardian dragon holding a glowing data-orb. It should feel like a storybook woodcut crossed with retro pixel-art.
For self-evolution visuals, each added skill can appear as a small new dragon head, head badge, or domain watcher connected to the same body/vault. Keep it readable: a few symbolic heads are better than visual clutter.
Use with:
image-rendering: pixelated;
image-rendering: crisp-edges;
Use simple glyphs or pixel-style symbols, not detailed line icons. Existing examples:
⌂ home / own box✉ messaging◇ standards / open protocols⛨ guard / privacy⟳ reproducible/self-host⌥ open core / toolsIcons sit inside square bordered boxes.
@media (prefers-reduced-motion: reduce) {
* { transition: none !important; scroll-behavior: auto; }
}
translateY(-2px) and change border to primary.Use warm, wise, plain-spoken language. Lead with the companion; let privacy be the quiet second beat.
Good phrases:
Avoid:
--primary or --teal.When creating a new Balaur visual surface, ensure it has:
:root {
--bg:#0e1613; --surface:#15201c; --surface-2:#1b2924;
--on-bg:#eee8da; --on-surface:#f4efe4; --muted:#9db0a5;
--primary:#ff8a4c; --primary-strong:#c2410c; --on-primary:#1a0e07;
--gold:#e9c267; --teal:#76d5dc; --folkred:#e0563b;
--outline:#36473f; --outline-2:#212d27; --good:#7fcf6a;
--font-display:'Pixelify Sans',system-ui,sans-serif;
--font-pixel:'Silkscreen',monospace;
--font-body:'Work Sans',system-ui,sans-serif;
--font-mono:'JetBrains Mono',monospace;
--radius:3px; --maxw:1080px; --margin:6vw;
}
body {
margin: 0;
background: var(--bg);
color: var(--on-bg);
font-family: var(--font-body);
font-size: 17px;
line-height: 1.6;
}
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 var(--margin); }
h1, h2, h3 { font-family: var(--font-display); color: var(--on-surface); }
a { color: var(--primary); text-decoration: none; }
.pixel { image-rendering: pixelated; image-rendering: crisp-edges; }
.card {
position: relative;
background: var(--surface);
border: 2px solid var(--outline);
border-radius: var(--radius);
padding: 22px 20px;
}
.card::after {
content: '';
position: absolute;
top: 0;
right: 0;
width: 7px;
height: 7px;
background: var(--gold);
}