The system, documented.
Everything that defines the look, tone and behavior of the site — palette, typography, spacing, anchor components and motion. When in doubt, this is the source of truth.
styles.cssPalette — core tokens.
// 01 — COLORSDark canvas with a single living color. The lime #c5fc4d is surgical — pills, active dots, italics, LATEST tags. Pure white #ffffff is forbidden — always #e8e8e3.
// surfaces
// text
// borders
// accents
// usage ratio · 70 / 20 / 10
Typography — Geist.
// 02 — TYPEEngineering interfaces
// guilherme.json
// scale
line: 0.95
track: -0.04em
line: 1.0
track: -0.04em
line: 1.05
track: -0.03em
line: 1.4
track: -0.01em
line: 1.6
color: text-dim
line: 1.5
color: text-dim
line: 1.5
track: 0.02em
letter-spacing: 0.1em
uppercase
Spacing — 8pt grid.
// 03 — SCALE// border radius
Components — anchors.
// 04 — UIButtons
primary · secondaryChips, Tags & Pills
mono · 11–12pxStat
data displayChangelog · Diff lines
anchor componentStatus indicator
live · pulsingMotion — intentional, never decorative.
// 05 — MOTIONDefault easing
Out-quart-ish. Soft on entry, decisive on exit. Use it almost everywhere.
cubic-bezier(0.16, 1, 0.3, 1)Reveal on scroll
IntersectionObserver triggers fade + translateY 30px → 0.
0.7s · ease-out · stagger 100msHeadline word reveal
Each word with overflow:hidden, inner translateY 110% → 0. Incremental 100ms delay.
1.1s · word-by-word cascadeStat counter
Counts from 0 to the real value with cubic-out easing.
1.6s · trigger on intersect 0.4Status pulse
Box-shadow 0 → 8px → 0, transparent. Infinite loop.
2s · ease-in-out · infiniteMagnetic buttons
Translation proportional to cursor distance. 18% horizontal, 25% vertical.
transform: translate(x*0.18, y*0.25)Custom cursor
Rigid dot (direct mousemove), ring with 0.18 lerp — natural lag. Mix-blend-difference.
lerp 0.18 · ring 32→56px on hoverGrid background
Full-viewport canvas. Dots grow and glow within a 220px radius of the cursor.
requestAnimationFrame · 56px cellTimeline progress
Lime bar fills as you scroll through the releases section.
scroll-linked · CSS var --scroll-progressVoice — direct, never arrogant.
// 06 — COPY- Show before you tell. "35M+ users", "27K+ active customers" — not "passionate".
- Short imperatives in CTAs. "See selected work" · "Let's talk" · "Schedule a call".
- Code-comment section markers.
// 03 — EXPERIENCE - Descriptive eyebrows. "Career, as a changelog" · "The engineer".
- Italics for emphasis. On key words, always lime.
- "I'm passionate about clean code" — empty buzzword.
- "Innovative solutions for digital transformation" — buzzword soup.
- Emojis in headlines or formal sections. Fine in meta microcopy.
- Stock photos of "developer typing" — placeholders just to fill emptiness.
- "Welcome to my portfolio" — don't ask permission to exist.
Don'ts — hard rules.
// 07 — RULES#ffffff. Always use --text (#e8e8e3) — pure white feels clinical in a dark theme.