Measured at 390 · 768 · 1440 px rodrigocazuza.com ↗

Rodrigo Cazuza / Website design system

One soft surface, two signals, and a clear hierarchy.

The complete visual language of rodrigocazuza.com: tokens, type, layout, depth, motion, and every component, documented from the production site in light and dark themes.

2themes, one surface each
6type families with fixed roles
12spacing steps on a 4px base
6radius tokens
Measured on site Sampled from file Recommendation Open decision

01 / Foundation

Tactile, calm, and built to make the work the loudest thing on screen.

The site moved from a black, high-contrast canvas to soft neumorphism: every element is pressed out of, or into, a single surface. Color is reserved for meaning.

01

One surface

Background, cards, buttons, and inputs share one tone per theme. Hierarchy comes from depth, not from new colors.

02

Light from the top left

Every shadow pair is a dark shadow down-right and a light highlight up-left. Never mix directions.

03

Raised acts, pressed is chosen

Raised means interactive. Pressed (inset) means selected, active, or an input waiting for text.

04

Two signals

Electric Violet asks for action. Signal Green confirms hover, progress, and success. Neither becomes a page background.

05

Editorial type

Heavy Poppins headings with tight tracking, one italic Playfair word for warmth, and Inter for reading.

06

Motion with intent

Short, eased lifts and reveals that explain state. Everything settles; nothing loops for decoration except the tool marquee.

Personality

StrategicClearTactileEditorialPractical

Positioning: multimedia design and front-end development shaped around strategy, story, and real-world production. Based in New York City.

Do

  • Cut every component from the theme surface.
  • Use raised for interactive, inset for selected or input.
  • Keep accents small: buttons, dots, rims, one italic word.
  • Let the portfolio media carry the color.
  • Check both themes and three breakpoints.

Don't

  • Add borders around cards or new background tints.
  • Use Signal Green #66D487 as text on the light surface.
  • Stack more than one italic accent word per heading.
  • Use pill radius on cards or panels.
  • Start section labels with a dash or rule.

03 / Color

A single surface per theme, with violet and green as signals.

Light is the default. The saved choice is applied before first paint and switched with a 0.45 s cross-fade.

Light theme · defaultMist surface

Surface #E6E7EB, wells #DCDEE3, ink #2B2D33, violet #6026EC, green #66D487.

Dark theme · html.neu-darkGraphite surface

Surface #23252A, wells #1D1F23, text #ECEEF2, violet lifts to #A88CFF, green text #6FDC91.

Surface & text · light

Mist Surface#E6E7EB--neu-bg

Page, cards, buttons, inputs.

Mist Deep#DCDEE3--neu-bg-deep

Media wells and image placeholders.

Ink#2B2D33--neu-text

Headings and primary text.

11.14:1 on surface
Slate#5D616B--neu-text-2

Body and supporting copy.

5.02:1 on surface
Steel#7C808A--neu-text-3

Metadata and handles, 18px+ or decorative.

3.2:1 on surface

Surface & text · dark

Graphite Surface#23252A--neu-bg

Page, cards, buttons, inputs.

Graphite Deep#1D1F23--neu-bg-deep

Media wells.

Frost#ECEEF2--neu-text

Headings and primary text.

13.2:1 on surface
Fog#AEB2BC--neu-text-2

Body copy.

7.22:1 on surface
Ash#8D929C--neu-text-3

Metadata.

4.91:1 on surface

Brand accents

Electric Violet#6026EC--neu-violet

Primary CTA, links, focus ring, italic accent.

5.69:1 on light · white text 7.03:1
Violet Hover#7A45FF--neu-violet-2

Hover for violet text and fills.

Violet (dark theme)#A88CFF--neu-violet · dark

Links and accents on graphite.

5.74:1 on dark
Signal Green#66D487--neu-green

Fills, status dots, hover rim, footer panel.

Fill only on light: 1.5:1 as text
Ink Green#17663A--neu-green-text

Green text and logo on light.

5.67:1 on light
Mint (dark theme)#6FDC91--neu-green-text · dark

Green text on graphite.

9.0:1 on dark
Signal Lime#C1FF72logo file only

Wordmark on dark surfaces.

Not a UI token

Footer & feedback

Night Card#0B0B0Cfooter CTA

Fixed dark CTA card in both themes, violet + green radial glows.

#F4F5F7 text 18.03:1
Forest Ink#0D2416--ft-ink

Footer headings on the green panel.

8.85:1 on #66D487
Moss#1F4A2E--ft-ink-2

Footer body and links.

5.46:1 on #66D487
Visit Ink#0E2A18Visit button text

Text on the green live-site button.

8.31:1 on #66D487
Content gap#5A3D12.content-gap

Inline notice for missing content.

Platform colors · Elsewhere section only

Behance#1769FF--platform

Icon + hover fill.

YouTube#FF0033--platform

Icon + hover fill.

GitHub#181717--platform

Light theme. Dark theme uses #F0F2F5.

LinkedIn#0A66C2--platform

Icon + hover fill.

Primary button145° #7340F5 → #5520D6
Primary hover145° #8455FF → #6026EC
Visit website145° #7BE29A → #55C477
Footer panel150° #78DE97 → #66D487 → #57C978

04 / Typography

Heavy geometric headings, a warm italic, and a quiet reading face.

Aa

Poppins

Display, headings, buttons, nav, labels

500 · 600 · 700 · 800
Aa

Inter

Body, descriptions, form fields

400 · 500 · 600 · 700
Aa

Playfair Display Italic

One accent word per heading, violet

500 · 600
Aa

JetBrains Mono

Handles, dates, career eyebrows

500 · 700
DS

Array

Hero “DESIGNER” dot display only

400 · Fontshare
Aa

Shrikhand

Hero rotating role word only

400 · Google Fonts

Design systems

A little about me.

Web experiences built with intent

Tainá Photography Brand Manual

I create brand systems, email campaigns, paid social assets, websites, and video content that help businesses communicate clearly and grow.

@rodrigoccazuza · October 2025 to Present

RoleFamily / weightMobile 390Tablet 768Desktop 1440Tracking / case
Hero dot displayArray 70062.4 / 56120 / 108250 / 210−0.018em · upper · Signal Green
Hero kickerPoppins 80027.3 / 3043 / 47.353.3 / 54.9−0.055em
Hero rotating roleShrikhand 40035.13173.4+0.035em · violet
Page H1 (Contact)Poppins 800 + Playfair——100.8−0.03em
About H2Poppins 70046 / 44.246.1 / 44.286.4 / 82.9−0.055em
Section H2Poppins 70032 / 35.832 / 35.856 / 62.7−0.015em
Showcase H3 (Email)Poppins 70036 / 37.838.4 / 40.372 / 75.6−0.015em
Footer CTA H2Poppins 70031.4 / 28.932.3 / 29.760.5 / 55.6−0.015em
Detail H3Poppins 70036 / 37.836 / 37.836 / 37.8−0.015em
Card titlePoppins 70016.8 / 17.617.7 / 18.524 / 25.2−0.015em
Platform card namePoppins 70018 / 19.822 / 24.227.4 / 30.1−0.02em
Hero statement titlePoppins 70015 / 20.116 / 20.824 / 31.2−0.02em
BodyInter 40016 / 25.616 / 25.616 / 25.60
Body smallInter 40013 / 20.813 / 20.813 / 20.80
Eyebrow / section labelPoppins 60011.21414+0.11–0.14em · upper
Nav linkPoppins 60017 / 27.2 (menu)17 / 27.2 (menu)14 / 22.40
ButtonPoppins 60013 / 20.813 / 20.813 / 20.80 · sentence case
Chip / tagInter 40012 / 19.212 / 19.212 / 19.20
Mono metaJetBrains Mono 700111111–13+0.1em · upper for eyebrows

Sizes are computed px (size / line-height) measured on the production home, Experience, and Contact pages. Fluid headings use clamp(); body copy stays at 16 px on every breakpoint.

05 / Layout & grid

Three working breakpoints, one fluid container.

Layouts are CSS Grid with minmax(0, 1fr) tracks. Gutters and section rhythm are fluid between the breakpoints instead of jumping.

Mobile≤ 560 px

Reference 390 px. Single column, compact rows, menu button.

Tablet561 – 1024 px

Reference 768 px. Two-column grids; nav collapses at 860 px.

Desktop≥ 1025 px

Reference 1440 px. Full nav, 3–4 column grids, split layouts.

TokenRule3907681440
--container-width1280px maxfluidfluid1120 content box
--gutterclamp(20px, 4vw, 48px)2030.748
--section-yclamp(56px, 6vw + 20px, 104px)5666104
--card-gapclamp(16px, 2vw, 24px)161624
--card-padclamp(20px, 2.4vw, 32px)202032

Section grids

SectionMobileTabletDesktop
About1 col0.64fr / 1fr0.64fr / 1fr
Websites (sticky stack)stacked cardsstacked cards900 px cards, scale on scroll
Design systemscard, then detailscard, then details1.1fr / 0.9fr
System elements list1 col2 col2 col
Email deckstacked cardsstacked cardsstacked cards + controls
Social & Ads folders1 col2 col2 col
Video railshorizontal scrollhorizontal scrollhorizontal scroll
YouTube16:9 player, listplayer, 2-col list1.55fr / 0.75fr
Campaigns1 col2 col3 col
Elsewhere (platforms)rows2 col4 col (≥ 1101 px)
Footer columns1 col2 col1 / 0.8 / 1.5 / 1fr

06 / Spacing

A 4 px base with four fluid rhythm tokens.

--space-14
--space-28
--space-312
--space-416
--space-520
--space-624
--space-832
--space-1040
--space-1248
--space-1664
--space-2080
--space-2496
ElementPadding (T R B L)Gap / margin
Section--section-y 0Label → content 24–40 px
Floating nav pill9 10 9 22 (desktop) · 7 7 7 18 (mobile)68 / 60 px tall
Primary / secondary button11 22 (desktop) · 9 13 (mobile)Icon gap 0.45em · button gap 10 px
Section label pill12 16margin-bottom 24–40 px
Website card copy20 --card-pad --card-pad16 px between title and button
Campaign card20 24grid gap --card-gap
Platform card32 (desktop) · 16 20 16 16 (mobile)24 px inner rhythm
Playlist row816 px thumb gap · 12 px list gap
Timeline entry24 24 (desktop) · 20 16 (mobile)32 px rail inset
Contact form cardclamp(22px, 3.2vw, 40px)14 px label rhythm · 6 px label to field
Footer panel72 (desktop) · 32 (mobile)Bottom strip 18 / 22 px

07 / Radius

Slightly sharper, still friendly.

The scale is 0.75 × the first neumorphic pass (36 / 28 / 20 / 14 → 27 / 21 / 15 / 10). Pills are only for things you press.

--radius-xs6 px

Small badges, inline code.

--radius-sm10 px

Media frames, email cards, thumbnails, rail cards.

--radius-md15 px

Tiles, playlist rows, campaign cards, inputs, preview wells.

--radius-lg21 px

Panels, stat tiles, mobile cards, icon chips, menu panel.

--radius-xl27 px

Website and platform cards, players, form card, footer.

--radius-pill999 px

Buttons, nav, chips, labels, filters only.

08 / Elevation

Depth is a pair of shadows from one light.

--neu-raised-xs

3 / 7 · chips, labels, small arrows

--neu-raised-sm

5 / 12 · buttons, tiles, icon chips

--neu-raised

9 / 22 · cards, nav, panels

--neu-raised-hover

12 / 28 · hovered cards

--neu-inset-sm

3 / 7 · active chips, preview wells

--neu-inset

5 / 11 · inputs, selected rows, pressed

hover signal

raised-hover + 2 px green rim + green glow

primary button

violet drop + light lift + 1 px top highlight

09 / Motion

Short, eased, and always settling.

CSS transitions handle state; GSAP 3 + ScrollTrigger handle entrances. With prefers-reduced-motion: reduce, transitions drop to 0.01 ms and transforms are removed.

Lift

Cards −4 px, buttons −1 to −2 px · 0.45 s --neu-ease

Press

Raised → inset on :active and selection · 0.35 s

Reveal

GSAP from y 18–34 px, opacity 0 · 0.55–0.95 s · power2/3.out · stagger 0.06–0.12 s

Marquee

Tool chips scroll continuously; pause on hover and focus

Token / patternValueUsed for
--neu-easecubic-bezier(.22, .61, .36, 1)Every lift, press, nav morph, timeline
--ease-stackcubic-bezier(.23, 1, .32, 1) · 360 msEmail card stack
Design system stackcubic-bezier(.22, 1, .36, 1) · 200 msCard swap on scroll, swipe, dots
--ease-wipecubic-bezier(.76, 0, .24, 1) · 0.9 sPreloader lift and wipe
Fast0.25 s easeFades, color
Base0.35 sShadow and color changes, chips
Slow0.45 sCard lifts, theme cross-fade
Emphasis0.5 sTimeline focus, tool tile grow
Timeline railFills 0 → 1 as the list passes 55% of the viewportExperience page
Hero portraitThree.js model follows the pointer and scrollHome hero (click-through)

10 / Iconography

One outline icon set, sized to its container.

Bootstrap Icons 1.11.3 (icon font from jsDelivr). Icons inherit text color, are aria-hidden, and never carry meaning alone.

↗bi-arrow-up-right

External / next page

↓bi-arrow-down

Scroll to section

→bi-arrow-right

Forward CTA, carousel next

←bi-arrow-left

Carousel previous

☾theme toggle

Moon / sun in a 44 px raised circle

⊕bi-zoom-in

Open media viewer

✕bi-x-lg

Close dialog

♪bi-volume-mute-fill

Video mute toggle

ContextIcon sizeContainer
Inside buttons1em of button textgap 0.45em, nudges 2 px on hover
Round controls16–18 px38–44 px circle, raised-sm
Platform cards30 px desktop / 24 px mobile64 / 52 px tile, radius-lg / radius-md
Card arrows16 px36 px circle, raised-xs
Platform iconsbi-behance, bi-youtube, bi-github, bi-linkedinOfficial platform colors
Tool logos56 × 56 source imagesMarquee chips and Experience tool grid

11 / Buttons

Every action is a pill you can press.

Primary.btn.btn-primary

Violet gradient, white Poppins 600 13 px, 11 × 22 px padding (9 × 13 mobile, full width in the hero). Hover: lift −2 px, brighter gradient. Active: inset violet shadow.

Secondary.btn.btn-secondary

Surface pill, raised-sm, Ink text. Hover: raised + green rim, Ink Green text. Active: inset-sm.

Live site.stack-copy .btn-primary

Signal Green gradient with #0E2A18 Poppins 800 12 px. Reserved for opening a live website.

Nav CTA.nav-links .btn-primary

Compact violet pill, Poppins 700 12 px, 10 × 20 px, inside the floating nav.

Round control44 px circle

Theme toggle, carousel arrows, menu, mute. Raised-sm; pressed on active.

Chips & filtersradius 999px
AllVideo JournalCreative Process

Raised-xs, 12 px. Active filter is inset-sm with violet text. Hover fills Signal Green with Forest Ink text.

StatePrimarySecondary / chip
RestGradient + violet drop shadowSurface + raised-sm / raised-xs
HovertranslateY(−1 to −2px), deeper glowraised + green rim; chip fills #66D487
Focus-visible2 px violet outline, 3 px offset
ActiveInset violet shadowinset-sm
Disabled.is-disabled + aria-disabled="true", no hover motion

12 / Components

The pieces that make the portfolio recognizable.

Section label.portfolio-category-label
Design systems

Raised-xs pill, 12 × 16 px, green status dot, uppercase Poppins 600. No leading dash.

Floating navigation.site-header .nav-bar
HomeWorkExperienceGet in contact☾

Raised pill (68 px desktop / 60 px mobile) with an inset link group, a scroll-progress line from violet to green, and a menu button below 860 px.

Website card.stack-project
● ● ●Website redesign08
Prisma ProviderImmigration-support website redesign.
Visit ↗

radius-xl card, browser strip with green dots and index, inset preview well (radius-md), sticky stack that scales to 0.94 as the next card arrives.

Platform card.social-platform-card
Bē
BehanceBrand, campaign, and visual design case studies.
@rodrigoccazuza↗

Raised card, icon tile in the platform color. Hover: lift −4 px, 2 px platform-color rim, icon tile fills and tilts −6°.

Playlist row.youtube-playlist-item
The raw reality of documenting the processCreator Journal
Vlogged for 90+ days with my Osmo Pocket 3Video Journal · selected

radius-md, 8 px padding, 112 × 72 thumbnail (radius-sm). Selected row is inset; hover lifts above neighbours.

Campaign card.compact-campaign-card
Black Friday↗Spring Sale↗

radius-md, 20 × 24 px, title and arrow on one centered row; 1 / 2 / 3 columns.

Timeline entry.comp-exp-list li
Supplemental Instruction Leader
Multimedia Designer & Marketing Manager

Rail fills violet → green on scroll. Hover/focus: raised card, green rim, translateX(8px) scale(1.02), violet title, glowing node.

Stat & skill tile.comp-stats > div
5+years60+campaigns

radius-lg, raised-sm. Hover fills Signal Green, Forest Ink text, scale 1.035.

Media stacksemail · design systems

Email: front card + up to four peeking, drag to throw, 360 ms. Design systems: one landscape card (1.63:1), pagination dots, wheel/swipe/keys. Both render their final structure on first paint.

Footer.site-footer

Fixed in both themes: Night Card CTA (radius-xl) + Signal Green panel with Forest Ink text and green social pills.

13 / Forms

Inputs are pressed wells waiting to be filled.

We're ready. Let's talk.

Send message →
PartSpec
Form cardRaised, radius-xl, padding clamp(22px, 3.2vw, 40px), single column
LabelInter 700, 12 px, uppercase, +0.08em, Ink Green, 6 px left inset, 14 px above / 6 px below
InputInset well, radius-md, 15 × 18 px padding, Inter 16 px (prevents iOS zoom), full width
TextareaSame well, min-height 150 px, vertical resize
PlaceholderSteel #7C808A
FocusInset + 2 px violet ring (rgba(96, 38, 236, .45)), no outline jump
SubmitPrimary button, 15 × 26 px; full width ≤ 640 px
HeadingPoppins 800 100.8 px desktop; “Let's talk.” Playfair Italic in Signal Green #66D487 (both themes)
ServiceFormspree endpoint with honeypot field; redirects to /contact/thanks/

14 / Accessibility

Soft surfaces, firm contrast.

PairRatioResult
Ink #2B2D33 on Mist #E6E7EB11.14:1AAA
Slate #5D616B on Mist5.02:1AA
Steel #7C808A on Mist3.2:1AA large only
Violet #6026EC on Mist5.69:1AA
Ink Green #17663A on Mist5.67:1AA
White on Violet #6026EC7.03:1AAA
Forest Ink #0D2416 on Signal Green8.85:1AAA
Frost #ECEEF2 on Graphite #23252A13.2:1AAA
Violet #A88CFF on Graphite5.74:1AA
Signal Green #66D487 on Mist1.5:1Fill only. Exception: Contact “Let's talk.”
  • Skip link to #main-content; one H1 per page.
  • Focus: 2 px violet outline, 3 px offset, on every interactive element; timeline entries are focusable.
  • Every content image and video has a descriptive label (“BodyFactory Botox Ad: Before and After, Day 0 vs. Day 14”). Logos and tool icons beside their names stay decorative.
  • External links open in a new tab with rel="noopener noreferrer" and a visually hidden “(opens in a new tab)”.
  • Reduced motion disables transitions, lifts, the marquee, and scroll-scrubbed motion.
  • Forced-colors mode adds 1 px CanvasText borders to cards, buttons, and inputs.
  • No horizontal scroll from 360 to 1440 px (verified on 5 routes).

15 / Implementation mega prompt

Apply the system on any platform.

Reusable brief

Fill the bracketed inputs and paste it into a design tool, AI workspace, or developer ticket. Unknown values stay visible as [NEEDS DECISION].

You are implementing the Rodrigo Cazuza Website Design System v1.0 for [PLATFORM / FORMAT].

PROJECT INPUTS
- Goal: [WHAT THIS MUST ACHIEVE]
- Deliverable: [PAGE, SECTION, COMPONENT, EMAIL, SOCIAL POST, DECK, FIGMA FILE, OR OTHER]
- Audience: [PRIMARY AUDIENCE]
- Breakpoints / dimensions: [390 MOBILE, 768 TABLET, 1440 DESKTOP, OR CHANNEL SIZE]
- Theme: [LIGHT (DEFAULT) / DARK / BOTH]
- Content supplied: [COPY, IMAGES, LOGOS, DATA]
- Constraints: [ACCESSIBILITY, DEADLINE, STACK]

SOURCE OF TRUTH
Use only the values below. Never invent a color, font, radius, shadow, or spacing value. If a value is missing, write [NEEDS DECISION] and ask one focused question.

DESIGN LANGUAGE: SOFT NEUMORPHISM
- Every element is cut from one surface: light #E6E7EB, dark #23252A.
- Depth comes from paired shadows with a top-left light source. Raised = extruded (cards, buttons, chips). Inset = pressed (inputs, selected and active states, media wells).
- No borders on cards. Separation comes from shadow, not lines.
- Accents are signals, not backgrounds: Electric Violet #6026EC (dark theme #A88CFF) for actions, links, focus and emphasis; Signal Green #66D487 for fills, dots, hover rims and the footer panel. Green as text on light uses Ink Green #17663A.

TYPE ROLES
- Poppins 500-800: display, headings, buttons, labels. Headings use negative tracking (-0.015em to -0.06em).
- Inter 400-700: body and interface copy (16px / 1.6).
- Playfair Display Italic 500: one or two editorial accent words per heading, colored violet.
- JetBrains Mono 500-700: handles, dates, metadata eyebrows.
- Array (dot display) and Shrikhand: hero only. Do not reuse elsewhere.
- Eyebrows: Poppins 600, 14px (11.2px mobile), uppercase, tracking 0.14em, no leading dash.

TOKENS
- Spacing 4px base: 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80, 96.
- Gutter clamp(20px, 4vw, 48px). Section padding clamp(56px, 6vw + 20px, 104px). Card gap clamp(16px, 2vw, 24px). Card padding clamp(20px, 2.4vw, 32px).
- Radius: 6 (xs), 10 (sm: media frames, thumbnails), 15 (md: tiles, rows, inputs), 21 (lg: panels, compact cards), 27 (xl: hero cards, players, footer), 999 (buttons, chips only).
- Shadows: raised-xs 3/7, raised-sm 5/12, raised 9/22, raised-hover 12/28, inset-sm 3/7, inset 5/11.
- Motion: ease cubic-bezier(.22,.61,.36,1); 0.25s fades, 0.35s color/shadow, 0.45s lift, 0.5s emphasis. Hover lift -2px (buttons) or -4px (cards). Respect prefers-reduced-motion.

COMPONENT RULES
- Primary button: violet gradient pill, white Poppins 600, raised violet shadow; hover lifts 1-2px; active is pressed.
- Secondary button: surface pill, raised-sm; hover adds the green rim and Ink Green text.
- Live-site button ("Visit website"): green gradient pill with #0E2A18 text.
- Cards: surface + raised shadow + radius-xl; hover lifts 4px and adds green rim + green glow.
- Section labels: raised pill, green dot, uppercase eyebrow.
- Inputs: pressed (inset) wells, radius-md, 16px text; focus adds a 2px violet ring.

OUTPUT CONTRACT
Return: A. requirement-to-token mapping; B. the implementation or spec; C. mobile / tablet / desktop behavior; D. contrast and accessibility checks for both themes; E. every [NEEDS DECISION] item; F. the pre-publish checklist result.

QUALITY GATE
Confirm: one surface per theme; no card borders; correct logo per surface (Lime on dark, Ink Green on light); only listed hex values; type in its role; spacing and radius on scale; no horizontal overflow at 360-1440px; visible focus; reduced-motion respected. Do not claim completion while a value was silently invented.

16 / Divergences

Where production still differs from the system.

Medium

“Let's talk.” in Signal Green on light

Approved exception at 1.5:1 on #E6E7EB. Recommended alternative: Ink Green #17663A in light, Signal Green in dark.

Medium

Nav CTA violet

The nav button renders flat #7121CA instead of the primary gradient. Align to --gradient-primary.

Low

Filter chips fall back to Arial

YouTube filter buttons do not inherit the font. Set font: inherit (Inter 12 px).

Medium

Fragmented breakpoints

Legacy layers still use 480–1100 px in 14 variants. Consolidate to 560 / 860 / 1024 / 1100.

Low

Folder illustration radius

Social & Ads folder fronts keep 14 px and their own orange #F2AB39; intentional as an illustration.

Low

Override layers

~25 cascading stylesheets with !important. Tokens live in neu-system.css + site-refinements.css; older files should be retired.

17 / CSS tokens

Ready to copy.

/* Rodrigo Cazuza Website Design System v1.0
   Source: rodrigocazuza.com (css/neu-system.css + css/site-refinements.css), audited 11 Oct 2026.
   Light is the default theme; dark is opt-in via html.neu-dark (saved as localStorage "rc-theme"). */

:root {
  color-scheme: light;

  /* Surface + text */
  --neu-bg: #e6e7eb;            /* the one surface every element is cut from */
  --neu-bg-deep: #dcdee3;       /* media wells, image placeholders */
  --neu-text: #2b2d33;          /* headings, primary text (11.14:1) */
  --neu-text-2: #5d616b;        /* body, supporting text (5.02:1) */
  --neu-text-3: #7c808a;        /* metadata, handles, large text only (3.2:1) */
  --border: rgba(43, 45, 51, .08);

  /* Brand accents */
  --neu-violet: #6026ec;        /* Electric Violet: CTAs, links, focus, emphasis */
  --neu-violet-2: #7a45ff;      /* violet hover */
  --neu-green: #66d487;         /* Signal Green: fills, dots, rims, footer panel */
  --neu-green-text: #17663a;    /* Ink Green: green as text on the light surface */
  --neu-green-ink: #1d7a42;
  --logo-lime: #c1ff72;         /* wordmark file color on dark surfaces only */

  /* Depth: light source top-left. Raised = extruded, inset = pressed. */
  --neu-dark: rgba(158, 164, 178, .62);
  --neu-light: rgba(255, 255, 255, .95);
  --neu-raised-xs: 3px 3px 7px var(--neu-dark), -3px -3px 7px var(--neu-light);
  --neu-raised-sm: 5px 5px 12px var(--neu-dark), -5px -5px 12px var(--neu-light);
  --neu-raised: 9px 9px 22px var(--neu-dark), -9px -9px 22px var(--neu-light);
  --neu-raised-hover: 12px 12px 28px var(--neu-dark), -12px -12px 28px var(--neu-light);
  --neu-inset-sm: inset 3px 3px 7px var(--neu-dark), inset -3px -3px 7px var(--neu-light);
  --neu-inset: inset 5px 5px 11px var(--neu-dark), inset -5px -5px 11px var(--neu-light);
  --green-rim: 0 0 0 2px rgba(102, 212, 135, .75);
  --green-glow: 0 18px 38px -16px rgba(102, 212, 135, .7);

  /* Gradients */
  --gradient-primary: linear-gradient(145deg, #7340f5, #5520d6);
  --gradient-primary-hover: linear-gradient(145deg, #8455ff, #6026ec);
  --gradient-visit: linear-gradient(145deg, #7be29a, #55c477);
  --gradient-footer-panel: linear-gradient(150deg, #78de97 0%, #66d487 45%, #57c978 100%);

  /* Typography */
  --font-display: "Poppins", "Helvetica Neue", Arial, sans-serif;
  --font-serif: "Playfair Display", Georgia, "Times New Roman", serif;
  --font-body: "Inter", "Helvetica Neue", Arial, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, monospace;
  --font-dot: "Array", "Arial Black", sans-serif;          /* hero "DESIGNER" only */
  --font-script: "Shrikhand", "Playfair Display", serif;   /* hero rotating role only */

  /* Spacing: 4px base */
  --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-16: 64px; --space-20: 80px; --space-24: 96px;
  --gutter: clamp(20px, 4vw, 48px);
  --section-y: clamp(56px, 6vw + 20px, 104px);
  --card-gap: clamp(16px, 2vw, 24px);
  --card-pad: clamp(20px, 2.4vw, 32px);
  --container-width: 1280px;

  /* Radius: 0.75 x the first neumorphic pass */
  --radius-xs: 6px;  --radius-sm: 10px; --radius-md: 15px;
  --radius-lg: 21px; --radius-xl: 27px; --radius-pill: 999px;

  /* Motion */
  --neu-ease: cubic-bezier(.22, .61, .36, 1);
  --ease-stack: cubic-bezier(.23, 1, .32, 1);
  --ease-wipe: cubic-bezier(.76, 0, .24, 1);
  --duration-fast: .25s;
  --duration-base: .35s;
  --duration-slow: .45s;
  --duration-emphasis: .5s;
}

:root[data-theme="dark"], html.neu-dark {
  color-scheme: dark;
  --neu-bg: #23252a;
  --neu-bg-deep: #1d1f23;
  --neu-text: #eceef2;
  --neu-text-2: #aeb2bc;
  --neu-text-3: #8d929c;
  --neu-violet: #a88cff;
  --neu-green-text: #6fdc91;
  --neu-dark: rgba(0, 0, 0, .55);
  --neu-light: rgba(255, 255, 255, .055);
  --border: rgba(255, 255, 255, .08);
}

18 / Pre-publish checklist

Before you ship.

Progress is saved only in this browser.

0 of 12 checked