One surface
Background, cards, buttons, and inputs share one tone per theme. Hierarchy comes from depth, not from new colors.
Rodrigo Cazuza / Website design system
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.
01 / Foundation
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.
Background, cards, buttons, and inputs share one tone per theme. Hierarchy comes from depth, not from new colors.
Every shadow pair is a dark shadow down-right and a light highlight up-left. Never mix directions.
Raised means interactive. Pressed (inset) means selected, active, or an input waiting for text.
Electric Violet asks for action. Signal Green confirms hover, progress, and success. Neither becomes a page background.
Heavy Poppins headings with tight tracking, one italic Playfair word for warmth, and Inter for reading.
Short, eased lifts and reveals that explain state. Everything settles; nothing loops for decoration except the tool marquee.
Positioning: multimedia design and front-end development shaped around strategy, story, and real-world production. Based in New York City.
Do
Don't
02 / Logo
The two-line lowercase wordmark ships as a 500 × 500 px transparent PNG in two colorways. The theme picks the file automatically in the navigation.
#17663Arodrigo-cazuza-wordmark-ink-green.png · 5.67:1 on #E6E7EB#C1FF72rodrigo-cazuza-wordmark.png · use on #23252A or darker#17663A on #66D487Footer and green panels| Placement | Rendered box | File | Notes |
|---|---|---|---|
| Navigation | 86 × 42 px (all breakpoints) | Ink Green (light) / Lime (dark) | Left-aligned in the floating nav pill, object-fit: contain. |
| Favicon | 500 × 279 px source | images/site/logo.png | Lime on transparent. Apple touch icon 180 × 180 px. |
| Footer identity | Text lockup | Poppins 800, lowercase | “Rodrigo Cazuza.” at 72 px desktop / 40 px mobile, tracking −0.06em. |
| Preloader | Name + 3D portrait | Character render | Name and progress count beneath a bottom-up portrait reveal. |
01
Ink Green on light surfaces and green panels. Signal Lime on dark surfaces only (17.8:1 on black, 1.18:1 on white).
02
Do not render the wordmark box below 86 px wide, its navigation size.
03
Open Recommended: one lowercase “o” height on every side. Not yet encoded on the site.
03 / Color
Light is the default. The saved choice is applied before first paint and switched with a 0.45 s cross-fade.
Surface #E6E7EB, wells #DCDEE3, ink #2B2D33, violet #6026EC, green #66D487.
Surface #23252A, wells #1D1F23, text #ECEEF2, violet lifts to #A88CFF, green text #6FDC91.
#E6E7EB--neu-bgPage, cards, buttons, inputs.
#DCDEE3--neu-bg-deepMedia wells and image placeholders.
#2B2D33--neu-textHeadings and primary text.
11.14:1 on surface#5D616B--neu-text-2Body and supporting copy.
5.02:1 on surface#7C808A--neu-text-3Metadata and handles, 18px+ or decorative.
3.2:1 on surface#23252A--neu-bgPage, cards, buttons, inputs.
#1D1F23--neu-bg-deepMedia wells.
#ECEEF2--neu-textHeadings and primary text.
13.2:1 on surface#AEB2BC--neu-text-2Body copy.
7.22:1 on surface#8D929C--neu-text-3Metadata.
4.91:1 on surface#6026EC--neu-violetPrimary CTA, links, focus ring, italic accent.
5.69:1 on light · white text 7.03:1#7A45FF--neu-violet-2Hover for violet text and fills.
#A88CFF--neu-violet · darkLinks and accents on graphite.
5.74:1 on dark#66D487--neu-greenFills, status dots, hover rim, footer panel.
Fill only on light: 1.5:1 as text#17663A--neu-green-textGreen text and logo on light.
5.67:1 on light#6FDC91--neu-green-text · darkGreen text on graphite.
9.0:1 on dark#C1FF72logo file onlyWordmark on dark surfaces.
Not a UI token#0B0B0Cfooter CTAFixed dark CTA card in both themes, violet + green radial glows.
#F4F5F7 text 18.03:1#0D2416--ft-inkFooter headings on the green panel.
8.85:1 on #66D487#1F4A2E--ft-ink-2Footer body and links.
5.46:1 on #66D487#0E2A18Visit button textText on the green live-site button.
8.31:1 on #66D487#5A3D12.content-gapInline notice for missing content.
#1769FF--platformIcon + hover fill.
#FF0033--platformIcon + hover fill.
#181717--platformLight theme. Dark theme uses #F0F2F5.
#0A66C2--platformIcon + hover fill.
145° #7340F5 → #5520D6145° #8455FF → #6026EC145° #7BE29A → #55C477150° #78DE97 → #66D487 → #57C97804 / Typography
Display, headings, buttons, nav, labels
500 · 600 · 700 · 800Body, descriptions, form fields
400 · 500 · 600 · 700One accent word per heading, violet
500 · 600Handles, dates, career eyebrows
500 · 700Hero “DESIGNER” dot display only
400 · FontshareHero rotating role word only
400 · Google FontsDesign 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
| Role | Family / weight | Mobile 390 | Tablet 768 | Desktop 1440 | Tracking / case |
|---|---|---|---|---|---|
| Hero dot display | Array 700 | 62.4 / 56 | 120 / 108 | 250 / 210 | −0.018em · upper · Signal Green |
| Hero kicker | Poppins 800 | 27.3 / 30 | 43 / 47.3 | 53.3 / 54.9 | −0.055em |
| Hero rotating role | Shrikhand 400 | 35.1 | 31 | 73.4 | +0.035em · violet |
| Page H1 (Contact) | Poppins 800 + Playfair | — | — | 100.8 | −0.03em |
| About H2 | Poppins 700 | 46 / 44.2 | 46.1 / 44.2 | 86.4 / 82.9 | −0.055em |
| Section H2 | Poppins 700 | 32 / 35.8 | 32 / 35.8 | 56 / 62.7 | −0.015em |
| Showcase H3 (Email) | Poppins 700 | 36 / 37.8 | 38.4 / 40.3 | 72 / 75.6 | −0.015em |
| Footer CTA H2 | Poppins 700 | 31.4 / 28.9 | 32.3 / 29.7 | 60.5 / 55.6 | −0.015em |
| Detail H3 | Poppins 700 | 36 / 37.8 | 36 / 37.8 | 36 / 37.8 | −0.015em |
| Card title | Poppins 700 | 16.8 / 17.6 | 17.7 / 18.5 | 24 / 25.2 | −0.015em |
| Platform card name | Poppins 700 | 18 / 19.8 | 22 / 24.2 | 27.4 / 30.1 | −0.02em |
| Hero statement title | Poppins 700 | 15 / 20.1 | 16 / 20.8 | 24 / 31.2 | −0.02em |
| Body | Inter 400 | 16 / 25.6 | 16 / 25.6 | 16 / 25.6 | 0 |
| Body small | Inter 400 | 13 / 20.8 | 13 / 20.8 | 13 / 20.8 | 0 |
| Eyebrow / section label | Poppins 600 | 11.2 | 14 | 14 | +0.11–0.14em · upper |
| Nav link | Poppins 600 | 17 / 27.2 (menu) | 17 / 27.2 (menu) | 14 / 22.4 | 0 |
| Button | Poppins 600 | 13 / 20.8 | 13 / 20.8 | 13 / 20.8 | 0 · sentence case |
| Chip / tag | Inter 400 | 12 / 19.2 | 12 / 19.2 | 12 / 19.2 | 0 |
| Mono meta | JetBrains Mono 700 | 11 | 11 | 11–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
Layouts are CSS Grid with minmax(0, 1fr) tracks. Gutters and section rhythm are fluid between the breakpoints instead of jumping.
Reference 390 px. Single column, compact rows, menu button.
Reference 768 px. Two-column grids; nav collapses at 860 px.
Reference 1440 px. Full nav, 3–4 column grids, split layouts.
| Token | Rule | 390 | 768 | 1440 |
|---|---|---|---|---|
--container-width | 1280px max | fluid | fluid | 1120 content box |
--gutter | clamp(20px, 4vw, 48px) | 20 | 30.7 | 48 |
--section-y | clamp(56px, 6vw + 20px, 104px) | 56 | 66 | 104 |
--card-gap | clamp(16px, 2vw, 24px) | 16 | 16 | 24 |
--card-pad | clamp(20px, 2.4vw, 32px) | 20 | 20 | 32 |
| Section | Mobile | Tablet | Desktop |
|---|---|---|---|
| About | 1 col | 0.64fr / 1fr | 0.64fr / 1fr |
| Websites (sticky stack) | stacked cards | stacked cards | 900 px cards, scale on scroll |
| Design systems | card, then details | card, then details | 1.1fr / 0.9fr |
| System elements list | 1 col | 2 col | 2 col |
| Email deck | stacked cards | stacked cards | stacked cards + controls |
| Social & Ads folders | 1 col | 2 col | 2 col |
| Video rails | horizontal scroll | horizontal scroll | horizontal scroll |
| YouTube | 16:9 player, list | player, 2-col list | 1.55fr / 0.75fr |
| Campaigns | 1 col | 2 col | 3 col |
| Elsewhere (platforms) | rows | 2 col | 4 col (≥ 1101 px) |
| Footer columns | 1 col | 2 col | 1 / 0.8 / 1.5 / 1fr |
06 / Spacing
--space-14--space-28--space-312--space-416--space-520--space-624--space-832--space-1040--space-1248--space-1664--space-2080--space-2496| Element | Padding (T R B L) | Gap / margin |
|---|---|---|
| Section | --section-y 0 | Label → content 24–40 px |
| Floating nav pill | 9 10 9 22 (desktop) · 7 7 7 18 (mobile) | 68 / 60 px tall |
| Primary / secondary button | 11 22 (desktop) · 9 13 (mobile) | Icon gap 0.45em · button gap 10 px |
| Section label pill | 12 16 | margin-bottom 24–40 px |
| Website card copy | 20 --card-pad --card-pad | 16 px between title and button |
| Campaign card | 20 24 | grid gap --card-gap |
| Platform card | 32 (desktop) · 16 20 16 16 (mobile) | 24 px inner rhythm |
| Playlist row | 8 | 16 px thumb gap · 12 px list gap |
| Timeline entry | 24 24 (desktop) · 20 16 (mobile) | 32 px rail inset |
| Contact form card | clamp(22px, 3.2vw, 40px) | 14 px label rhythm · 6 px label to field |
| Footer panel | 72 (desktop) · 32 (mobile) | Bottom strip 18 / 22 px |
07 / Radius
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 pxSmall badges, inline code.
--radius-sm10 pxMedia frames, email cards, thumbnails, rail cards.
--radius-md15 pxTiles, playlist rows, campaign cards, inputs, preview wells.
--radius-lg21 pxPanels, stat tiles, mobile cards, icon chips, menu panel.
--radius-xl27 pxWebsite and platform cards, players, form card, footer.
--radius-pill999 pxButtons, nav, chips, labels, filters only.
08 / Elevation
--neu-raised-xs3 / 7 · chips, labels, small arrows
--neu-raised-sm5 / 12 · buttons, tiles, icon chips
--neu-raised9 / 22 · cards, nav, panels
--neu-raised-hover12 / 28 · hovered cards
--neu-inset-sm3 / 7 · active chips, preview wells
--neu-inset5 / 11 · inputs, selected rows, pressed
hover signalraised-hover + 2 px green rim + green glow
primary buttonviolet drop + light lift + 1 px top highlight
09 / Motion
CSS transitions handle state; GSAP 3 + ScrollTrigger handle entrances. With prefers-reduced-motion: reduce, transitions drop to 0.01 ms and transforms are removed.
Cards −4 px, buttons −1 to −2 px · 0.45 s --neu-ease
Raised → inset on :active and selection · 0.35 s
GSAP from y 18–34 px, opacity 0 · 0.55–0.95 s · power2/3.out · stagger 0.06–0.12 s
Tool chips scroll continuously; pause on hover and focus
| Token / pattern | Value | Used for |
|---|---|---|
--neu-ease | cubic-bezier(.22, .61, .36, 1) | Every lift, press, nav morph, timeline |
--ease-stack | cubic-bezier(.23, 1, .32, 1) · 360 ms | Email card stack |
| Design system stack | cubic-bezier(.22, 1, .36, 1) · 200 ms | Card swap on scroll, swipe, dots |
--ease-wipe | cubic-bezier(.76, 0, .24, 1) · 0.9 s | Preloader lift and wipe |
| Fast | 0.25 s ease | Fades, color |
| Base | 0.35 s | Shadow and color changes, chips |
| Slow | 0.45 s | Card lifts, theme cross-fade |
| Emphasis | 0.5 s | Timeline focus, tool tile grow |
| Timeline rail | Fills 0 → 1 as the list passes 55% of the viewport | Experience page |
| Hero portrait | Three.js model follows the pointer and scroll | Home hero (click-through) |
10 / Iconography
Bootstrap Icons 1.11.3 (icon font from jsDelivr). Icons inherit text color, are aria-hidden, and never carry meaning alone.
bi-arrow-up-rightExternal / next page
bi-arrow-downScroll to section
bi-arrow-rightForward CTA, carousel next
bi-arrow-leftCarousel previous
theme toggleMoon / sun in a 44 px raised circle
bi-zoom-inOpen media viewer
bi-x-lgClose dialog
bi-volume-mute-fillVideo mute toggle
| Context | Icon size | Container |
|---|---|---|
| Inside buttons | 1em of button text | gap 0.45em, nudges 2 px on hover |
| Round controls | 16–18 px | 38–44 px circle, raised-sm |
| Platform cards | 30 px desktop / 24 px mobile | 64 / 52 px tile, radius-lg / radius-md |
| Card arrows | 16 px | 36 px circle, raised-xs |
| Platform icons | bi-behance, bi-youtube, bi-github, bi-linkedin | Official platform colors |
| Tool logos | 56 × 56 source images | Marquee chips and Experience tool grid |
11 / Buttons
| State | Primary | Secondary / chip |
|---|---|---|
| Rest | Gradient + violet drop shadow | Surface + raised-sm / raised-xs |
| Hover | translateY(−1 to −2px), deeper glow | raised + green rim; chip fills #66D487 |
| Focus-visible | 2 px violet outline, 3 px offset | |
| Active | Inset violet shadow | inset-sm |
| Disabled | .is-disabled + aria-disabled="true", no hover motion | |
12 / Components
.portfolio-category-labelRaised-xs pill, 12 × 16 px, green status dot, uppercase Poppins 600. No leading dash.
.site-header .nav-barRaised 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.
.stack-projectradius-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.
.social-platform-cardRaised card, icon tile in the platform color. Hover: lift −4 px, 2 px platform-color rim, icon tile fills and tilts −6°.
.youtube-playlist-itemradius-md, 8 px padding, 112 × 72 thumbnail (radius-sm). Selected row is inset; hover lifts above neighbours.
.compact-campaign-cardradius-md, 20 × 24 px, title and arrow on one centered row; 1 / 2 / 3 columns.
.comp-exp-list liRail fills violet → green on scroll. Hover/focus: raised card, green rim, translateX(8px) scale(1.02), violet title, glowing node.
.comp-stats > divradius-lg, raised-sm. Hover fills Signal Green, Forest Ink text, scale 1.035.
email · design systemsEmail: 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.
.site-footerFixed in both themes: Night Card CTA (radius-xl) + Signal Green panel with Forest Ink text and green social pills.
13 / Forms
We're ready. Let's talk.
Send message →| Part | Spec |
|---|---|
| Form card | Raised, radius-xl, padding clamp(22px, 3.2vw, 40px), single column |
| Label | Inter 700, 12 px, uppercase, +0.08em, Ink Green, 6 px left inset, 14 px above / 6 px below |
| Input | Inset well, radius-md, 15 × 18 px padding, Inter 16 px (prevents iOS zoom), full width |
| Textarea | Same well, min-height 150 px, vertical resize |
| Placeholder | Steel #7C808A |
| Focus | Inset + 2 px violet ring (rgba(96, 38, 236, .45)), no outline jump |
| Submit | Primary button, 15 × 26 px; full width ≤ 640 px |
| Heading | Poppins 800 100.8 px desktop; “Let's talk.” Playfair Italic in Signal Green #66D487 (both themes) |
| Service | Formspree endpoint with honeypot field; redirects to /contact/thanks/ |
14 / Accessibility
| Pair | Ratio | Result |
|---|---|---|
| Ink #2B2D33 on Mist #E6E7EB | 11.14:1 | AAA |
| Slate #5D616B on Mist | 5.02:1 | AA |
| Steel #7C808A on Mist | 3.2:1 | AA large only |
| Violet #6026EC on Mist | 5.69:1 | AA |
| Ink Green #17663A on Mist | 5.67:1 | AA |
| White on Violet #6026EC | 7.03:1 | AAA |
| Forest Ink #0D2416 on Signal Green | 8.85:1 | AAA |
| Frost #ECEEF2 on Graphite #23252A | 13.2:1 | AAA |
| Violet #A88CFF on Graphite | 5.74:1 | AA |
| Signal Green #66D487 on Mist | 1.5:1 | Fill only. Exception: Contact “Let's talk.” |
#main-content; one H1 per page.rel="noopener noreferrer" and a visually hidden “(opens in a new tab)”.15 / Implementation mega prompt
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
Approved exception at 1.5:1 on #E6E7EB. Recommended alternative: Ink Green #17663A in light, Signal Green in dark.
The nav button renders flat #7121CA instead of the primary gradient. Align to --gradient-primary.
YouTube filter buttons do not inherit the font. Set font: inherit (Inter 12 px).
Legacy layers still use 480–1100 px in 14 variants. Consolidate to 560 / 860 / 1024 / 1100.
Social & Ads folder fronts keep 14 px and their own orange #F2AB39; intentional as an illustration.
~25 cascading stylesheets with !important. Tokens live in neu-system.css + site-refinements.css; older files should be retired.
17 / CSS tokens
/* 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
Progress is saved only in this browser.
0 of 12 checked