Wordmark with ghost · primary

The lockup the nav uses. Use this one unless there is a reason not to.

RG Digital wordmark with ghost — dark field dark field
RG Digital wordmark with ghost — light field light field / print

Wordmark with lime dot · legacy / secondary

The earlier lockup. Still valid where the ghost would be too small to read, but not for new work.

RG Digital wordmark with lime dot — dark field dark field
RG Digital wordmark with lime dot — light field light field

Ghost mark

RG Digital ghost mark — filled lime

Ghost — filled

avatar / primary mark / merch

RG Digital ghost mark — outline

Ghost — outline

inline UI / next to code

RG Digital app icon — ghost on lime tile

App icon

favicon / PWA / social profile

RG monogram

Monogram

legacy / secondary mark


Favicon sizes

48px
32px
16px

Asset downloads


Colour palette

Every colour is a light-dark() pair: the site follows the visitor’s OS theme, the toggle in the nav pins it. Neutrals are true greys; lime is the only hue. Click a value to copy it.

Token Light Dark

Grounds

--bg The page
--surface Cards, the raised band
--surface-2 Inside a card, inputs
--border Hairlines
--border-strong Secondary button, hover

Text

--text Headings and body
Aa
Aa
--text-secondary Leads, card text
Aa
Aa
--text-muted Eyebrows, tags, meta
Aa
Aa

Accent

--accent Accent text, icons, rules: olive on light, lime on dark
Aa
Aa
--accent-wash Chips, icon tiles
--lime Fills only: buttons, highlights, the ghost
--on-lime Text on a lime fill
Aa
Aa

Ink

--ink Primary button fill
--on-ink Text on ink
Aa
Aa

Inverse bands

--inverse-bg Near-black on a light page, lifted grey on a dark one
--inverse-surface A card in an inverse band
--inverse-surface-2 Inside that card
--inverse-border Hairlines in the band

Feasibility pills

--pill-good-bg / -text Goed, in the Quickscan report
Goed
Goed
--pill-limited-bg / -text Beperkt, in the Quickscan report
Beperkt
Beperkt
--pill-unsure-bg / -text Onzeker, in the Quickscan report
Onzeker
Onzeker

Three grounds

Every section sits on one of three grounds, and no two neighbours share one. The closing CTA and footer form one inverse end block. These are live: switch the theme in the nav to see the other side.

Base

Klaar voor stap 1?

Antwoord binnen 24 uur.

the page

Raised

Klaar voor stap 1?

Antwoord binnen 24 uur.

.band--surface

Inverse

Klaar voor stap 1?

Antwoord binnen 24 uur.

.theme-inverse

CSS custom properties

The token block of src/styles/global.css, as it stands. .theme-inverse re-declares the colour tokens with their dark values.

/* ── Design tokens ───────────────────────────────────────── */
:root {
  /* Brand */
  --lime:    #ccff00;   /* fills only: buttons, highlights, the ghost */
  --on-lime: #0b0b0b;

  /* Surfaces */
  --bg:            light-dark(#f6f6f6, #0b0b0b);
  --surface:       light-dark(#ffffff, #151515);
  --surface-2:     light-dark(#eeeeee, #1f1f1f);
  --border:        light-dark(#e0e0e0, #2b2b2b);
  --border-strong: light-dark(#c6c6c6, #3a3a3a);
  /* Inverse bands: near-black on a light page; lifted above page and raised
     bands on a dark one, with a faint edge so the step reads. */
  --inverse-bg:        light-dark(#0b0b0b, #242424);
  --inverse-surface:   light-dark(#151515, #2e2e2e);
  --inverse-surface-2: light-dark(#1f1f1f, #383838);
  --inverse-border:    light-dark(#2b2b2b, #404040);
  --inverse-edge:      light-dark(transparent, #3a3a3a);

  /* Text */
  --text:           light-dark(#111111, #fafafa);
  --text-secondary: light-dark(#5c5c5c, #a6a6a6);
  --text-muted:     light-dark(#6b6b6b, #8c8c8c);  /* AA on --bg and --surface in both themes */

  /* Accent: readable lime-family colour for text, icons and rules */
  --accent:        light-dark(#4b5f00, #ccff00);
  --accent-wash:   light-dark(#eef6c8, rgba(204, 255, 0, .10));
  --accent-border: light-dark(#cfe07e, rgba(204, 255, 0, .22));

  /* Inverted fill for primary buttons and highlighted markers */
  --ink:    light-dark(#111111, #fafafa);
  --on-ink: light-dark(#fafafa, #111111);
  --ink-accent: light-dark(#ccff00, #111111);  /* accent detail on --ink (button arrows, step numbers) */

  /* Feedback */
  --danger:      light-dark(#c0341d, #ff5050);
  --danger-text: light-dark(#b3301b, #ff6464);
  --warn:        light-dark(#8a4b00, #ffa03c);

  --focus-ring: var(--accent);

  /* Highlighter under key words in headings: a lime marker on light, lime text on dark */
  --mark-fill: light-dark(#ccff00, transparent);
  --mark-text: light-dark(#111111, #ccff00);

  /* Feasibility pills (Quickscan report): Goed / Beperkt / Onzeker / n.v.t. */
  --pill-good-bg:     light-dark(#e3f2c0, rgba(204, 255, 0, .14));
  --pill-good-text:   light-dark(#33430a, #d9ff66);
  --pill-limited-bg:  light-dark(#fbead3, rgba(255, 160, 60, .16));
  --pill-limited-text:light-dark(#7a4300, #ffbe7a);
  --pill-unsure-bg:   light-dark(#f6dcd8, rgba(255, 90, 70, .16));
  --pill-unsure-text: light-dark(#8a2a1c, #ff9a8a);

  /* Typography — three roles, three faces.
     Archivo is wide and sturdy at hero weight; Geist stays quiet underneath it;
     Martian Mono is broad, so labels carry far less tracking than a narrow mono
     would need (see --track-label / --track-loose below). */
  --font-display: var(--font-archivo);
  --font:         var(--font-geist);
  --font-mono:    var(--font-martian);

  /* Font weights */
  --fw-regular:   400;
  --fw-medium:    500;
  --fw-semibold:  600;
  --fw-bold:      700;
  --fw-extrabold: 800;

  /* Type scale — rem, so text follows the visitor's browser font size */
  /* The mock-ups these came from were only ever looked at zoomed out on a
     design canvas, where 60px reads as a comfortable heading; at 1:1 on a real
     screen the same numbers shout. The whole display end came down roughly a
     quarter, against an unchanged 16px body. */
  --fs-hero:       clamp(2.125rem, 1.7562rem + 1.529vw, 2.875rem);  /* 34 → 46px, home only */
  --fs-title:      clamp(1.875rem, 1.6rem + 1.15vw, 2.5rem);        /* 30 → 40px, every other page's h1 */
  --fs-section:    clamp(1.75rem, 1.5916rem + 0.634vw, 2.125rem);   /* 28 → 34px */
  --fs-heading:    1.5rem;                                          /* 24px, headings inside a page */
  --fs-step:       clamp(1.375rem, 1.2556rem + 0.493vw, 1.625rem);  /* 22 → 26px, one big feature card or row per section */
  /* Card titles: two sizes only. Small = a compact card in a dense list or a
     sidebar; large = a card in a 2- or 3-column grid. Use .h-card / .h-card-lg. */
  --fs-card:       clamp(1.0625rem, 1.025rem + 0.125vw, 1.125rem);  /* 17 → 18px */
  --fs-card-lg:    clamp(1.25rem, 1.15rem + 0.4vw, 1.5rem);          /* 20 → 24px */
  --fs-lead:       clamp(0.9375rem, 0.9062rem + 0.125vw, 1rem);     /* 15 → 16px */
  --fs-subheading: 0.9375rem;
  --fs-body:       0.9375rem;
  --fs-body-sm:    0.8125rem;
  --fs-label:      0.75rem;
  --fs-meta:       0.6875rem;

  /* Line heights */
  --lh-tight:   1.05;
  --lh-heading: 1.2;
  --lh-body:    1.6;
  --lh-relaxed: 1.75;

  /* Letter spacing */
  --track-tight:   -0.035em;
  --track-display: -0.03em;
  --track-label:    0.01em;   /* Martian Mono is wide enough on its own */
  --track-loose:    0.02em;

  /* Spacing scale */
  --space-1:  4px;
  --space-2:  8px;
  --space-3:  12px;
  --space-4:  16px;
  --space-5:  20px;
  --space-6:  24px;
  --space-8:  32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-14: 56px;
  --space-16: 64px;

  /* Layout */
  --pad:   clamp(20px, 8.33vw, 120px);
  /* Includes --pad, so the content is this minus two 120px gutters: 1200px on
     a wide screen, which is the column the mock-ups were drawn on. Narrowing
     it made the page feel tighter rather than calmer — the type is what was
     too large, not the column. */
  --max-w: 1440px;
  --nav-h: 72px;
  --band-y: clamp(72px, 10vw, 140px);  /* vertical padding of a page section */
  --page-top: clamp(40px, 5vw, 64px);  /* space above and below a page header (<PageHeader>) */

  /* Radii */
  --radius-sm:   6px;
  --radius-md:   8px;
  --radius-lg:   12px;
  --radius-xl:   16px;
  --radius-full: 9999px;
  /* Roles — use these, not raw px: a card or panel that sits in a section,
     anything inside it (a tab, an inner card, a list row), and form controls,
     square chips and icon tiles. */
  --radius-card:    18px;
  --radius-control: 10px;
  /* Speech bubbles are 16px with one 4px corner, the tail, pointing at the ghost. */

  /* Card padding: a card in a grid or list, and the one big panel a section
     is built around. */
  --pad-card:  clamp(20px, 2.2vw, 28px);
  --pad-panel: clamp(24px, 3vw, 40px);

  /* Shadows — soft on light, deep on dark */
  --shadow-card-hover: 0 8px 32px light-dark(rgba(17, 17, 17, .08), rgba(0, 0, 0, .45));
  --shadow-nav:        0 1px 0 var(--border), 0 8px 32px light-dark(rgba(17, 17, 17, .06), rgba(0, 0, 0, .6));
  --shadow-swatch:     0 4px 16px light-dark(rgba(17, 17, 17, .10), rgba(0, 0, 0, .5));
  --shadow-float:      0 16px 40px light-dark(rgba(17, 17, 17, .10), rgba(0, 0, 0, .5));
  --ring-accent:       0 0 0 1px var(--accent-border);

  /* Motion */
  --dur-fast:  0.15s;
  --dur-base:  0.2s;
  --dur-slow:  0.3s;
  --dur-enter: 0.65s;
  --ease-out:   cubic-bezier(0.22, 1, 0.36, 1);
  --ease-inout: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-in:    cubic-bezier(0.4, 0, 1, 1);
  --ease-decel: cubic-bezier(0, 0, 0.2, 1);
  --blur-nav:   blur(12px);
}

Typography — three faces, three roles

Aa

Archivo

--font-display

Headings and the wordmark. 800 for headings, 700 for “RG Digital”, tight tracking.

Aa

Geist

--font

Body, leads, buttons. 400 to 600; it stays quiet under the headings.

Aa

Martian Mono

--font-mono

Eyebrows, tags, prices and dates only. 500. Wide, so it carries little tracking.

Ik bouw de software die jouw bedrijf mist.

.h-hero · --fs-hero · Home h1 only

Ontdek waar je bedrijf tijd verliest

.h-title · --fs-title · Every other page’s h1

Wat ik voor je bouw

.h-section · --fs-section · Section headings

Zo gaat het, stap voor stap

.h-feature · --fs-step · The one big card or row in a section

Wat kost een koppeling of tool?

.h-card-lg · --fs-card-lg · A card in a 2- or 3-column grid

Ik heb al software. Moet die weg?

.h-card · --fs-card · A compact card in a list or sidebar

Maatwerk voor mkb-bedrijven: koppelingen, tools en automatisering die het handwerk overnemen. Je weet vooraf wat het kost, en de code is van jou.

.lead · --fs-lead · Geist 400 · --text-secondary · under a page or section heading

Quickscan voor het mkb

.eyebrow · --fs-label · Martian Mono 500 · uppercase · above a heading

PrijsKennismaking

.tag / .tag--accent · --fs-meta · Martian Mono 500 · uppercase · a label inside a card

€250 excl. btw

Prices and dates · --font-mono

UI components

Buttons — Button.astro

primary (ink fill) is the main action; secondary (outline) sits beside it; lime is the main action inside a .theme-inverse band. No other variants.


Chips, pills, icon tile, check

Koppelingen Tools op maat Automatisering
Goed Beperkt Onzeker n.v.t.

Card — .panel, --radius-card, --pad-card

Prijs

Wat kost een koppeling of tool?

Kleinere koppelingen beginnen rond €1.500 excl. btw. Tools op maat beginnen rond €3.000 excl. btw, afhankelijk van wat ze moeten kunnen. Na de Quickscan krijg je een vaste prijs, dus geen verrassingen achteraf.

€250 excl. btw Plan je Quickscan

Radius & padding — by role

Cards, controls and padding take role tokens, never raw values.

--radius-card 18px A card or panel in a section
--radius-lg 12px Anything inside that card
--radius-control 10px Inputs, square chips, icon tiles
--radius-md 8px Buttons
--pad-card clamp(20px, 2.2vw, 28px) A card in a grid or list
--pad-panel clamp(24px, 3vw, 40px) The one big panel a section is built around

Brand voice

Ik bouw de software die jouw bedrijf mist.

Direct, not hyped. Understated confidence. No empty superlatives. Faith present but never front and centre.

Direct, not hyped Understated confidence No empty superlatives Faith, subtle
  • First person singular. “Ik”, never “wij”: it is one person’s business.
  • Dutch first. The Dutch text is written first; English lives under /en.
  • Sentence case everywhere, buttons and headings included.
  • No full stop after section and card headings (“Wat ik voor je bouw”). The hero sentence keeps its own (“Ik bouw de software die jouw bedrijf mist.”).
  • Concrete numbers over adjectives: “€250 excl. btw”, not “betaalbaar”.
  • No hype words, no emoji.

Wel

  • “Ik bouw de software die jouw bedrijf mist.”
  • “Een koppeling is vaak binnen een paar weken klaar, een tool op maat binnen 4 tot 8 weken. In het voorstel staat een concrete planning.”
  • “De code is van jou, met documentatie erbij, zodat je niet van mij afhankelijk bent. Wil je dat ik het bijhoud? Onderhoud en hosting kost €39 per maand voor een koppeling, €49 als die een eigen server nodig heeft en €99 voor een tool op maat, excl. btw. Daar zit elke maand wat werk bij in; wat daarboven komt reken ik als meerwerk, €75 per uur excl. btw. Het is optioneel: de code kan ook naar je eigen account.”
  • “Dat kan anders. Ik laat je zien hoe.”

Niet

  • “Wij leveren innovatieve, toekomstbestendige digitale oplossingen.”
  • “Ons revolutionaire platform tilt jouw bedrijf naar een hoger niveau.”
  • “Wij zijn gepassioneerd over het vertellen van jouw verhaal.”
  • “Best-in-class. Marktleider. Next-level.”

Imagery, motion & colour

Photography

  • Dark environments, technical context
  • Real work: terminals, code, hardware
  • Grain and contrast over polish
  • Monochrome or desaturated colour
  • Stock photo smiles and handshakes
  • Bright, saturated lifestyle imagery
  • Abstract blue-glow “tech” visuals

Motion

  • Fast and purposeful — under 300ms for UI
  • Ease-out cubic for entrances
  • Slide + fade for page transitions (~400ms)
  • Respect prefers-reduced-motion
  • Decorative loops or ambient animations
  • Bounce or spring easing
  • Motion that delays content access

Colour

  • --lime as a fill only, with --on-lime text
  • --accent for accent text and icons: olive on light, lime on dark
  • Tokens that read in both themes; .theme-inverse for a band that stays dark
  • Light wordmark SVG on light grounds and in print
  • #ccff00 text on a light ground — fails contrast
  • A colour that only works in one theme
  • Lime on grey mid-tones — neither reads well

Instagram

Profile picture

RG Digital app icon at 96px
96px — profile
RG Digital app icon at 56px
56px — feed
RG Digital app icon at 32px
32px — story

Use the ghost icon — lime tile with black ghost. It stands out in a feed of white/grey profile pictures. Instagram crops to a circle; the lime background fills cleanly. At 32px the ghost simplifies to a readable silhouette.

The ghost is centred on a 100×100 canvas — sits correctly at all profile sizes without manual cropping.

Templates — 1080×1080

The layout of the site’s sharing images (scripts/generate-og.mjs): wordmark and ghost top left, a lime mono eyebrow, an Archivo heading, one Geist line, and the signature under a rule. Always on the dark field.

Prijs

RG Digital PRIJS €1.500 Daar beginnen kleinere koppelingen. Dimitri de Jong · Almere · rg-digital.dev

Herkenning

RG Digital KLINKT DIT BEKEND? “Wat ik hier invoer,moet ik daar nogeen keer invoeren.” Dat kan anders. Ik laat je zien hoe. Dimitri de Jong · Almere · rg-digital.dev

Carousel, eerste slide

RG Digital 01 / 05 Vier signalendat je tijdverliest Swipe voor de eerste → Dimitri de Jong · Almere · rg-digital.dev

Content ideas

Carousels

  • “Vier signalen dat je tijd verliest”
  • “Voor en na: de koppeling die het overtypen stopte”
  • “Waarom de code van jou is, en wat je eraan hebt”
  • “Wat er in een Quickscan-rapport staat”

Losse posts

  • Prijs — waar een dienst begint, en wat erin zit
  • Herkenning — één zin die een ondernemer zelf zegt
  • Project — screenshot en één regel
  • Stack — “Gebouwd met X, omdat …”

Reels

  • 15 seconden schermopname van een feature die werkt
  • Voor en na: het handwerk naast de koppeling
  • Terminal en een deploy die live gaat
  • Timelapse van een bouwsessie
Copied!