Eldur Studio Design System Living style guide · source of truth: styles.css

01 — Brand

Eldur is Icelandic for fire.

A hot orange-on-black system for a B2B agency that installs AI agents. Confident, warm, technical. The wordmark is set in Kamura; everything else is Basier Circle. Orange (--orange) is the single accent — used sparingly against deep black and clean light-gray surfaces.

Wordmark on black
Eldur Studio
Wordmark on light
Eldur Studio

02 — Color

Palette & tokens

Every color is a CSS variable in :root. Reach for the token, never a raw hex. The flame gradient is reserved for the loudest moments (hero install, key CTAs, the timeline spine).

--gradient (flame)

03 — Typography

Type scale

Two families: Kamura (serif display — wordmark only) and Basier Circle (everything else, weights 400–700). Headlines run tight (-0.03em); body is a comfortable 1.65.

Hero headline
Basier 700
clamp 38–62px
Put an AI agent to work this week
Section title
Basier 700
clamp 28–42px
Agents that earn their seat
Lead
Basier 400
18px / 1.6
We design, build, and install custom agents into your stack — monitored, qualified, and reporting from day one.
Body
Basier 400
16px / 1.65
The workhorse paragraph size. Used in cards, FAQ answers, and long-form copy across the site. Readable, unhurried, never cramped.

04 — Spacing & Radii

Rhythm & corners

Generous vertical rhythm — sections breathe at 96px (64px compact). Three corner radii cover everything; the pill is now reserved for tags only.

Corner radii
12px
default
20px
cards
100px
tags only
TokenValueUse
--radius12pxButtons, inputs, install CTA, callouts
--radius-lg20pxCards, panels, modals
--max-w1160pxPage container
.section96pxVertical section padding (64px compact)

05 — Buttons

Buttons · updated

The pill is retired. Buttons are now a confident 12px rounded rectangle — bigger (16/30 padding, 17px → wait 16px/700), they lift 2px on hover with a flame glow, and a trailing icon nudges right. New .btn--gradient for flame moments.

Before → after
Schedule a call
Old · 100px pill
Schedule a call
New · 12px · lifts
Nav button (compact)
ClassUse
.btn--primaryMain action — orange fill, flame glow on hover
.btn--gradientLoud moments — flame orange→red (new)
.btn--ghostSecondary on dark (e.g. “View packages”)
.btn--outline-whiteTertiary on dark
.btn--whiteOn orange / CTA blocks
.btn--navCompact nav CTA (keeps small size)

Wrap a trailing icon in <span class="btn__ico"> so it nudges on hover.

06 — Install Agent

Install Agent CTA · new

The hero call-to-action. A bot with personality plus a built-in install animation: the flame gradient sweeps left→right, a percentage counts up, then it settles into “Agent installed ✓” and the bot bounces. Click a button below to play it.

Hero pairing — primary + secondary
View packages

Direction B (default .ia2--dark): black button, flame gradient fill.

Variants
States (driven via the JS API)

idle · installing (frozen mid-sweep) · done

StateMainSub
idleInstall agentSelf-service guided setup
installingInstalling…Provisioning your agent
doneAgent installedSetup complete
<!-- Hero: opens Stripe on click (no animation) --> <a class="ia2 ia2--dark" data-install-agent data-href href="…stripe…">…</a> // Setup page (post-payment): drive it from your code EldurInstallAgent.setState(el, 'installing'); // provisioning EldurInstallAgent.setState(el, 'done'); // guided setup complete

Real flow: hero = Stripe link → checkout → on success route to the setup page, which renders the controlled button and calls setState('installing') then setState('done'). A plain <button data-install-agent> with no data-href/data-controlled self-demos on click. Honors prefers-reduced-motion.

07 — Cards

Cards

Calm at rest. White (or --dark on black sections) with a hairline border and 20px radius. On hover the border turns orange; link cards now also lift.

outline · dark

Outline card. The default content surface — hairline border, white fill, generous 32px padding.

Dark card

For black sections. Muted body, yellow emphasis when needed.

08 — Agent Cards

Agent cards · updated

The icon tile now does the agent-bot wiggle on hover and the card lifts — the one sanctioned bit of personality, carried over from the Install Agent bot. Hover a card.

hover state (pinned)

Pinned hover

Orange border + soft orange shadow + 3px lift. The icon wiggle plays only on a real pointer hover.

09 — Packages

Pricing tiers

Package cards live on black. The featured tier swaps to an orange border over a warm tint.

01

Single Agent

2–3 weeks
  • One agent, fully installed
  • Monitored + reporting
  • 30-day tuning window

10 — Chips · Highlight

Small components

Chip (with left accent)
Auditable. Every decision the agent makes is logged.
Installed. Runs in your stack, not a dashboard.
Highlight callout
Agents don’t replace your team — they take the work no one had time for.

11 — Timeline

Process timeline

Week 1
Map
We find the highest-leverage agent for your funnel.
Week 2–3
Build
Designed, built, and tested against your real data.
Week 4
Install
Live in your stack, monitored and reporting.

12 — FAQ

FAQ (native accordion)

How long until an agent is live?

Most single agents are installed within 2–3 weeks, including a tuning window against your real data.

Does it run in our stack?

Yes — agents are installed into your tools and workflows, not a separate dashboard you have to babysit.