Antonius Felix
[ Brand ] / One System / v1.0

The brand,
built like a product.

One System is the identity this site runs on: foundation, logo, type, color, layout, motion, and access, in one place. It is a working reference and a case study of the thinking behind it. Core token values render from the live CSS, so the numbers below are the real ones; the usage guidance and examples are maintained alongside them.

[ 01 ]

Foundation / the spine

Creative built like a system and accountable to what it does after it ships. The breadth is the proof of the idea, not a separate selling point.

tagline
One system, end to end.
reserve line
Built, not briefed.
accent signal
Sage green / #B7C4B2 / calm accent for action and focus
[ 03 ]

Type / three faces, one system

Each face has one job. Clash Display is the voice: display, h1, h2. Clash Grotesk is reading type: sub-headings and body. JetBrains Mono is the system layer: labels, data, and code. All three ship as one variable file per family, so every weight below is real rather than the nearest available one.

Tracking is optical, not decorative. It tightens as type gets bigger, sits at zero for reading, and opens up for uppercase mono. Mono labels and emphasis are always uppercase, because heavy tracking is an uppercase device and breaks apart on lowercase; sentence-case mono is the data tier at +5% instead.

tierfacewttrackwheresample
displayClash Display700-2%every page head, closing CTA, stat figuresOne system.
h1Clash Display600-1%the wordmark lockupAntonius Felix
h2Clash Display500-1%section heads, journal lead post, mobile navEngineer turned creative.
h3-h6Clash Grotesk5000%card titles, index rows, sub-headsSPORTIME Clubs
bodyClash Grotesk4000%copy / lh 1.65 / strong = 600The work stays coherent and the loop closes.
labelJetBrains Mono400+10%kickers, badges, section labels / always uppercaseBrand / Social / Performance
data / navJetBrains Mono400+5%rail nav, scoreboard values, the clock / sentence caseHome  /  2023-2024  /  12:53 PM
emphasisJetBrains Mono600+10%buttons / always uppercaseView work
Size / eleven steps

A tier says which face. A step says how big. Every size on the site is one of these, so a rule never writes a pixel value. The steps sit where the design already clustered rather than on a ratio, which is why they crowd at the small end: most of the system is labels and captions.

3xs / 10px
One system, end to end.
badges, rail keys
2xs / 11px
One system, end to end.
kickers, captions, chips
xs / 12px
One system, end to end.
rail nav, buttons
sm / 13.5px
One system, end to end.
card copy, secondary
md / 15px
One system, end to end.
UI body, list copy
base ★ / 16px
One system, end to end.
document base
lg / 17px
One system, end to end.
prose body
xl / 19px
One system, end to end.
h3, card titles, lead
2xl / 24px
One system, end to end.
sub-heads
3xl / 30px
One system, end to end.
large figures
4xl / 42px
One system, end to end.
the largest fixed figure
plus --fs-fluid-* for type that scales with the viewport. Container-query sizing stays per-component.
Measure / nine steps

A prose column's max-width, capped for reading comfort rather than let run to the edge of its box. Same sample at every step, so the wrap itself is the demonstration. lg and 2xl are the two anchors, .lead and .prose; everything else was picked around them.

3xs / 16ch
Creative built like a system and accountable to what it does after it ships. The breadth is the proof of the idea, not a separate selling point.
forced headline wrap: CTA
2xs / 22ch
Creative built like a system and accountable to what it does after it ships. The breadth is the proof of the idea, not a separate selling point.
forced headline wrap: page h1
xs / 26ch
Creative built like a system and accountable to what it does after it ships. The breadth is the proof of the idea, not a separate selling point.
short label / caption
sm / 30ch
Creative built like a system and accountable to what it does after it ships. The breadth is the proof of the idea, not a separate selling point.
small aside copy
md / 46ch
Creative built like a system and accountable to what it does after it ships. The breadth is the proof of the idea, not a separate selling point.
compact card / meta copy
lg / 56ch
Creative built like a system and accountable to what it does after it ships. The breadth is the proof of the idea, not a separate selling point.
lead paragraphs (.lead)
xl / 64ch
Creative built like a system and accountable to what it does after it ships. The breadth is the proof of the idea, not a separate selling point.
disclosures, decisions, excerpts
2xl / 68ch
Creative built like a system and accountable to what it does after it ships. The breadth is the proof of the idea, not a separate selling point.
long-form prose (.prose)
3xl / 74ch
Creative built like a system and accountable to what it does after it ships. The breadth is the proof of the idea, not a separate selling point.
full-width article column
[ 04 ]

Color / warm monochrome, one accent

A L’ESSAINE-inspired ramp from ivory and sand to midnight navy, with sage as the calm action accent and champagne gold as the premium highlight. Both light and dark are first-class.

Neutral / ivory, sand, navy
0
F9F8F6
50
F6F2EA
100
E7DFD2
200
DAD0BF
300
D7C6A7
400
B9AD99
500
918674
550
746A5C
600
5D564B
700
3E4549
800
2B3744
900
1F2A36
950
111111
Accent / sage green ★ 300
50
F4F7F2
100
E8EEE5
200
D8E1D4
300★
B7C4B2
400
9FAE99
500
83947B
600
66775F
700
4F5E48
800
384432
900
263022
Surfaces / light & dark
light / paper
One system.
Body in graphite on paper. Sage handles action; gold stays restrained.
brand / social / perf
dark / ink
One system.
Same system inverted on midnight navy, with sage and gold kept restrained.
brand / social / perf
[ 05 ]

Layout / a 4px base

Everything measures from a 4px unit. Layout is a 12-column grid, max-width 1200, 24 gutters, 64 margins. Radius base is 8px; the mono system layer uses sharp 0 corners.

xs / 8px
sm / 12px
md / 16px
lg / 24px
xl / 32px
2xl / 48px
3xl / 64px
4xl / 96px
12 columns / max 1200 / gutter 24 / margin 64
Radius
none / 0
sm / 4
md ★ / 8
lg / 12
xl / 16
full / pill
[ 06 ]

Motion / functional, not decorative

Quick and confident. Short travel, no bounce. The names say what a motion means, not how fast it is, so a rule picks by intent: a colour swap is quick wherever it sits, a slide is move whatever the distance. Reels inherit this: cuts over fades, snap transitions.

Duration / six steps

Every transition and animation on the site composes one of these. quick is the anchor and carries most of it. Hover a row to play it at its real duration.

instant / 120ms
the echo under a press
quick ★ / 200ms
colour, border, background, opacity
enter / 280ms
above-the-fold arrival (.rev-load)
move / 320ms
drawer, button lift, theme flip
settle / 500ms
below-the-fold arrival (.rev), media scale
ambient / 2400ms
the status dot, looping forever
Easing / three curves

Same distance, same duration, different curve. Each one has a job: an entrance and a dismissal should not feel alike, and a move that leaves and arrives wants a curve that eases at both ends.

standard ★
entrances and most moves
exit
dismissals: drawer close, consent
in-out
leaves AND arrives: theme, page transitions
standard cubic-bezier(0.2, 0, 0, 1) / exit cubic-bezier(0.4, 0, 1, 1) / in-out cubic-bezier(0.4, 0, 0.2, 1)
Distance and scale

A transform's magnitude is a token too, or three hover scales drift apart the way they had. These values are small on purpose, so each one runs on the size of element it actually moves: the dashed outline is where the shape rests, and hovering separates it by exactly one token. The two scales are a pair rather than a ladder, which is why the card and the control are shown at their own sizes.

travel-xs / 4px
the button lift
travel-sm / 12px
reveal slide, row hover nudge
scale-hover / 1.03
media hover: cards, tiles, stills
scale-control / 1.06
small controls: the play button
plus --stagger-step (60ms), the per-item delay in a staggered list reveal.
Reduced motion

Here "reduce" means remove. Killing the tween alone still lets a hover end-state apply, so a card would jump 3% larger in a single frame, and a snap is still movement. Under prefers-reduced-motion every transition and animation is off, nothing translates or scales, page transitions are cancelled, and smooth scrolling reverts to instant. Hover stays legible on colour and border alone. Video is gated in JavaScript, since CSS cannot stop playback. The swatches in this section follow the same rule: they hold still, and the printed values carry it.

[ 07 ]

Colour contrast / checked against WCAG AA

The sage action color and champagne highlight stay restrained. Three rules carry most of it.

Sage text
On light, sage text is accent-700 (#4F5E48), never the pale fill. On dark, champagne gold carries premium emphasis.
On sage fills
Text and the logo on sage fill are charcoal, never white. The mark goes monochrome so the node stays clear.
State colors
State fills for indicators; the darker -text variants when used as text.
PairRatioVerdict
Charcoal on ivory16.9:1AAA
Secondary #5D564B on ivory6.5:1AA
Sage-700 text on ivory6.2:1AA
Charcoal on sage fill10.4:1AA
Ivory on midnight navy13.7:1AAA
[ 08 ]

Formats / the brand, in format

How the system shows up as social posts, reel frames, and a lower-third. Placeholder content at true export dimensions, rendered live so the mockups re-theme with the page.

Social / 1080 × 1080
// placeholder label
One system,
end to end.
antoniusfelix.com
feed / statement
// placeholder label
Placeholder
headline goes
right here.
@felixjurnal
feed / inverted
metric / placeholder
00.0
metric label goes here
antoniusfelix.com
feed / data
Reel / story / 1080 × 1920
reel / intro frame
Built,
not
briefed.
placeholder
caption line
reel / intro
end card
Let's
build.
antoniusfelix.com
@felixjurnal
reel / end card / accent surface → mono mark
Lower-third / 1920 × 1080
▢ video placeholder
Antonius Felix
Digital Business Researcher
caption / over video
[ 09 ]

Voice / source: System Master

Direct, specific, natural, not over-polished, not obviously AI-written. Lead with the answer. No inflated claims, no buzzwords, no unsupported proof. No em or en dashes.

Do
  • Lead with the answer
  • Name real numbers, verified
  • Plain, confident sentences
  • Label concept work clearly
Don't
  • Inflate or overclaim
  • Reach for buzzwords
  • Over-polish into AI-speak
  • Imply concepts are client work
Based in Jakarta
Digital Business research and collaboration

Let's build it as one system.