This site runs on its own small design system.

Tokens, a type ramp, and a handful of patterns, documented here as living examples rendered by the same stylesheet that renders every page.

Brand

Christina Dobi monogram
Monogramon light
Christina Dobi monogram, white
Monogramon brand

Christina Dobi

wordmark · bold 26px in $color-brand · anchors the header on every page

The biggest brand moment is the homepage hero: full-screen video under a 70% $color-brand overlay, with the white monogram and wordmark reversed out.

Color

$color-brand#2EB7FC
$color-text#323E59
$color-body#888888
$color-band-light#F5F3F8
$color-border#e8e8e8

Each featured project carries one accent, threaded through its tiles, cards, and featured sections.

$accent-design-system#2EB7FC
$accent-zebbly#39b8f9
$accent-platform#7f5aa0
$accent-product#ee4e4a
$accent-essay#e26222

Type

Heading one

h1 · Source Sans Pro · normal · 2.441em / 3.052em

Heading two carries the statements

h2 · bold · 1.953em / 2.441em · used with .subhead for page openers

Heading three for article sections

h3 · normal · 1.563em / 1.953em

Heading four titles cards and list items

h4 · normal · 1.25em / 1.333em

Section headline

h4.headline · uppercase with eyebrow tracking · labels a homepage or style-guide section

The subhead is the standfirst under a statement.

.subhead · weight 100 · 24px

Eyebrow label

eyebrow pattern · 13px bold caps · 0.12em tracking · accent color

Body copy is Source Sans Pro light at 18px ($type-body-size) with 1.6 line height, in $color-body gray. Links pick up the brand blue, and emphasis uses the navy text color.

p · weight 200 · 18px / 1.6 · $type-body-size

Spacing

$space-xs · 10px
$space-sm · 15px
$space-md · 30px
$space-lg · 45px
$space-xl · 65px

Landing sections breathe at $space-lg, opening to $space-xl on wider screens (section-rhythm mixin).

Layout

Pages sit on a 12-column grid. Long-form content lives in a centered 9-column reading measure; back links and headers align to the container edge. Sections alternate between three full-bleed bands:

$color-surface · primary content
$color-band-light · alternating sections, screenshot bands
$color-brand · contact band, Instagram, hero overlay
work pages alternate content sections with full-bleed $color-band-light screenshot bands

Patterns

Accent card

accent-card mixin · white surface, 4px accent top border, $shadow-card

Engineering

Building robust, maintainable products from the ground up.

Product Innovation

Turning ideas and opportunities into products.

Featured work section

title + chip, intro, sub-items over rounded media panels tinted with the project accent (10% mix)

Zebbly Live Product

Wishlists with context

Lists carry sizes, interests, and notes.

Zebbly wishlist panel example

Portfolio tile

4:3 image, accent bar with title revealed on hover

Back link

eyebrow style in $color-brand · nudges left on hover · tops every detail page, aligned to the container edge

← Back to work

Call to action

.ed-cta · solid $color-brand pill, bold white label

Let’s Talk

Highlight band

.container-highlight · full-bleed $color-brand band with inverted text

Say Hello

Full-width brand moments: the contact band, the Instagram section.

Links

A default link is quiet $color-body gray, lightening on hover.

a · $color-body · hover #b5b5b5 · no underlines anywhere

A brand link opts into $color-brand with class .brand.

a.brand · $color-brand

A more link leads somewhere →

.ed-more-link · bold, with a trailing arrow · section footers

Motion

Content enters with a fade.

.fadeInUp / .fadeIn · 1s ease, 0.2s delay · statements and page openers only

Everything interactive answers in 0.15s ease: cards lift their shadow, tiles reveal their accent bar, the back link nudges left, the CTA deepens. Motion confirms, it never decorates.

Imagery

Portfolio tiles are 4:3 (1600×1200) screenshots or product art. Work pages show full-width screenshots on $color-band-light bands, up to 1000px wide. Featured panels crop tall screenshots at a 16px-radius edge, top-aligned, over a 10% accent tint. Photos get an 8px radius.

Voice

Sentence case everywhere, including headlines; only section labels are uppercase. Statements are short, first-person claims: "I build thoughtful products that make complex things feel simple." Never an em dash; reach for a comma, a colon, or a middot. Middots separate inline lists: Product · Frontend · UX. Plain words over jargon.

The system lives in _sass/tokens.scss and _sass/patterns.scss.

Say Hello

You can reach me by email, I'd love to hear from you.