"They moved fast without ever cutting corners — the kind of partner you keep on speed dial."
Design System.
Single source of truth for the tokens, components, and patterns used across the React app at src/ — built around Inter / Inter Display, an ink-on-paper palette and a single orange accent.
Colours
Tokens live in src/index.css under @theme. Tailwind names map 1:1 to CSS variables (e.g. bg-ink, text-accent).
Hard-coded into src/components/Testimonials.tsx. Each rotating slide carries one of these warm pastel surfaces.
Body / secondary text is expressed as text-ink/n rather than discrete grey tokens.
Typography
Families: Inter (body) and Inter Display (large headlines, marquee, stats). Body has OpenType features cv02 cv03 cv04 cv11 ss01; .font-display adds letter-spacing: -0.02em with ss01 cv11. Italics are real italics — used as the emphasised half of two-word headlines (e.g. "We Strive to Innovate").
Spacing
Tailwind spacing scale. Section padding pattern: py-14 sm:py-24 (56 / 96px). Container: mx-auto max-w-[1200px] px-6.
Radii & Shadows
Eyebrow Label
Every section is introduced by a 12px uppercase eyebrow prefixed with a 6px orange dot. Tightly tracked at 0.2em, faded to ink/60 on light and paper/60 on dark.
Buttons & CTAs
All primary CTAs use the rounded-full pill shape, 12/20px padding, 14px medium label. Hover swaps the background from ink → accent and lifts the button by 2px.
Audience Toggle
Customer / Freelancer mode switch baked into the header. Active state is a black ink pill with white label; Framer Motion layoutId animates the pill between the two slots.
Form Inputs
Paper-tinted fill (bg-paper/60), 12px radius, ring-1 black/6 default, 2-ring accent on focus, rose-400 on error. Labels above each control are 12px uppercase at 0.18em tracking. Source: src/components/Blog.tsx.
Accordion Chip (+ / −)
36px orange circle with a centred + / − glyph. Used as the trailing affordance on both the Services and FAQ accordion rows.
Icons & Glyphs
The app leans on text glyphs for affordances (↗ ↘ + − ▸ ★) rather than an icon library — keeps the visual language consistently typographic. SVGs that do appear are inline, single-colour and follow currentColor.
Language Switch (FAB)
Fixed bottom-left, 44px black circle showing the active language (EN / PT). Clicking toggles to the next language and persists via i18next. Hover swaps to accent + 2px lift; label crossfades. Source: src/components/LangSwitch.tsx.
Stat Card
Cream-tinted card holding a single counted-up metric. Numbers use Inter Display at 56px with the unit appended (+, %). Source: src/components/Strive.tsx with <Counter />.
Quote / Portrait Card
Compact white card pairing a stacked avatar row with a short founder testimonial. Lives next to the Strive headline.
"Working with dallatorre.dev transformed our launch, strategy, identity and site in one cohesive sprint."
Project Card
Full-bleed photo banner with a coloured multiply tint, gradient shade and bottom-anchored title / tagline / tag row. Cards animate on scroll — they tilt forwards from rotateX 72°, settle flat in the viewport, and tilt away on exit. 28px radius. Source: src/components/Projects.tsx.
Process Step Card
Numbered step in the "How We Build" timeline. Inactive cards are white with an orange numeral; the card under the scrubber turns full-orange (white text, white numeral). 28px radius. Source: src/components/Process.tsx.
A kickoff call to map intent, audience, KPIs and risks before any pixel is pushed.
Research, positioning and an opinionated brief that the entire team can sign off on.
UI exploration in Figma — typography first, then layout, then motion.
Testimonial Card
Auto-rotating testimonial slide. 28px radius, 28px padding, three rotating warm backgrounds (pink / honey / sage). 96px rounded portrait + display-typeface quote + pagination dots. Source: src/components/Testimonials.tsx.
"A studio with the range we used to need four agencies for."
"Strategy, design and engineering bundled in one tight sprint."
Mock Browser
Three-up capability showcase. Each tile is a stylised browser chrome (traffic lights, monospaced URL, reload glyph) wrapped around a flat wireframe sketch — one per service: landing, corporate, web app. 20px outer radius. Source: src/components/MockBrowser.tsx.
Hero Headline
Massive 2-line Inter Display headline that staggers in word-by-word with a blur-up motion. Italics emphasise the second line, finished with an orange full stop. Backdrop dallatorre.dev wordmark sits behind at 4% opacity. Source: src/components/Hero.tsx.
We build thenext.
Reviews Badge
5-avatar stack + 5 amber stars + bolded score + count, anchored top-right of the hero. Avatars are 36px, ringed in paper to read against the page background.
Services Accordion
Numbered (01 / 02 / 03) services list with display-typeface titles. Hovering a row tints the title to accent; opening swaps the chip from + to − and reveals a 2-column body (description + tagged sub-skills). Source: src/components/Services.tsx.
-
High-converting single-page experiences engineered to turn visitors into customers.
- UX Research
- UI Design
- Copywriting
- Conversion
FAQ Accordion
Same chip + divider pattern as Services, with a heavier question label (18px / weight 500) instead of the display heading. Source: src/components/FAQ.tsx.
-
Between 3 and 8 weeks depending on scope. Landing pages compress into a single sprint; corporate sites and web apps run on a 6–8 week cadence.
Contact Form (28px card)
Lead-capture form on the home page. 28px white card with a 6-field grid, status footer (idle / sending / success / error) and a dark pill submit on the right. Includes a hidden honeypot website input. Source: src/components/Blog.tsx.
Mobile 3D Coverflow
Below the hero on small screens, the three mock browsers stack into a 3D coverflow — centre card at scale 1, side cards at 0.6 / 0.65 opacity, transitioning every 3.5s. Driven by framer-motion with a wrap-around z-shuffle to avoid clipping. Source: src/components/Hero.tsx.
Cookie Banner
Bottom-centred floating card, 15px radius, ink background, paper text. Two actions — ghost (white) for Decline and accent (orange) for Accept. Choice persists to localStorage under dt-dev-cookie-consent. Source: src/components/CookieBanner.tsx.
Wordmark Marquee
Giant looping dallatorre.dev wordmark in Inter Display anchored to the bottom of the footer. Track scrolls at 28s linear, half the content duplicated to keep the loop seamless. Source: src/components/Footer.tsx.