A brand built for automotive incentive work.
Typography-first, premium, restrained. The brand gradient is the signal — used sparingly to mark the moments that matter. Surfaces stay quiet so data can speak.
Brand stance
DealerCentives is the offer manager built for the way modern dealers actually work. The brand reflects that: confident type does the talking, surfaces stay quiet so data can speak, and the gradient earns its keep by marking exactly one decisive moment per screen.
We sound like the smart shop manager down the road, not the marketing department. (See §11 for voice.)
Logo
Path: docs/brand/assets/dc-logo-color.png
Path: docs/brand/assets/dc-logo-white-full.png · Hosted: portal.dealercentives.com/assets/dc-logo-white-full-CmNvZv_Z.png
| Rule | Value |
|---|---|
| Brand name spelling | DealerCentives — one word, two caps. Never Dealer Centives, never Dealercentives. |
| Clearspace | Minimum padding around the lockup = the height of the "D" in DealerCentives. |
| Minimum size · full lockup | 24px tall |
| Minimum size · standalone "DC" mark | 20px tall |
Color system
All color is defined in OKLCH for perceptual uniformity, then echoed as CSS custom properties. Components never hardcode color — they reference tokens. The brand gradient is the only place we get loud.
3.1 The brand gradient
.text-gradient-brand on one or two words. The rest of the headline stays in --foreground.3.2 Brand anchors
3.3 Surface system (light)
3.4 Light nav vs atmospheric sidebar
3.5 Functional status
Typography
Inter is the entire system — UI, body, headlines, numerics. We use a custom 650 weight (between SemiBold and Bold) for display so headlines feel confident without shouting. All headings track at -0.02em; numbers ship with tabular figures wherever they matter.
4.1 Type scale
4.2 Marketing headline composition
The gradient text-clip earns one to two words per headline — never more.
A brand built for automotive incentive work.
Every dealer offer.
One feed.
Spacing & radii
Pick the radius rung that matches the surface size. Use Tailwind's default 4px spacing scale — the dashboard does not customize it.
| Token | Value | Use |
|---|---|---|
--radius-sm | 8px | Chips, kbd, inline pills |
--radius-md | 12px | Buttons, inputs, switches |
--radius-lg (default) | 16px | Cards, dropdowns |
--radius-xl | 20px | Feature cards, KPI cards |
--radius-2xl | 24px | Section cards, pricing cards |
--radius-3xl | 32px | Hero containers |
--radius-4xl | 40px | Brand moments — rare |
Shadows & elevation
Shadows are layered (one tight, one diffuse) to feel material without weight. Don't invent new shadows. Don't stack --shadow-card and --shadow-primary on the same element.
Motion
One easing curve for the whole system. A premium decel — fast in, slow settle. It feels expensive without being slow. Avoid spring physics, bounce, or anything that draws attention to the motion itself.
| Duration | Use |
|---|---|
| 150ms | Hover, focus, micro-interactions |
| 250ms | Default — modals, dropdowns, tab swaps |
| 400ms | Page-level transitions |
Iconography
Library: Lucide (lucide-react). Already a dependency. Default size: 16px inline · 20px nav · 24px empty-state. Color inherits from text — never tint icons with the brand gradient.
Component library
Every component lives in src/components/ui/. They consume tokens from styles.css and never hardcode color, radius, or shadow. The seven custom additions extend the base — they don't replace it.
Marketing patterns
Built from the same tokens as the dashboard so the marketing site and the product feel like one continuous experience. One brand-loud moment per page — either Hero B or a gradient CTA, never both.
Light hero with product preview
Every dealer offer.
Matched in seconds.
DealerCentives reconciles your manufacturer incentives against live inventory the moment a vehicle hits your lot — and pulls them off the moment it sells.
Gradient takeover — launch / campaign
Built for the dealers who don't have time to babysit feeds.
An offer manager that updates itself. While you're at the auction, in the F&I office, or finally taking lunch.
Numbers band
3-up feature cards
Live inventory matching
Pulls fresh inventory via MarketCheck on every sync — your offers always reflect what's on the lot today.
Automatic reconciliation
Compares matched offers against live data and updates idempotently. No stale specials when a unit sells.
Push to anywhere
Export to Google Sheets out of the box. Webhooks and a typed API for everything else.
Dark quote block
We stopped reconciling our incentives spreadsheet by hand the day we turned this on. The first sync caught 41 mismatches we didn't know we had.
3-tier cards
- 1 dealer rooftop
- Hourly sync cadence
- Google Sheets export
- Email support
- Unlimited rooftops
- 15-minute sync cadence
- Webhooks + API access
- Custom disclaimer templates
- Shared image library
- Real-time sync
- SSO + SCIM
- Custom integrations
- SLA + 24/7 support
Closing call-to-action
Stop babysitting your incentives feed.
Set up your first dealer in fifteen minutes. Cancel any time.
Site footer
Voice & tone
DealerCentives talks to dealers in the language they actually use. Direct, specific, no theater. The voice we ship in the product is the voice we use on the marketing site.
Direct
Specific
Operator-savvy
Quietly warm
11.1 This, not that
Revolutionize your dealership with our cutting-edge incentive optimization platform!
Every dealer offer. Matched in seconds.
Looks like there's nothing here yet! Get started by adding your first dealer 🚀
No dealers yet. Add a dealership to see its health here.
11.2 Word swaps
| Avoid | Use | Why |
|---|---|---|
| leverage / utilize | use | Same meaning, half the syllables. |
| solutions / platform | tool / app / the thing it does | Concrete nouns name what we sell. |
| cutting-edge / next-gen | — (delete) | If true, you wouldn't need to say it. |
| customers (B2B) | dealers / rooftops | Use the industry's word. |
| unleash / supercharge | verbs the user actually does | "Sync your dealer." "Match an offer." |
| ! | . | Reserved for product errors. Even then, sparingly. |
11.3 Casing & punctuation
| Element | Casing | Punctuation |
|---|---|---|
| Headlines (h1, h2, h3) | Sentence case | Period only if multiple sentences |
| Buttons & CTAs | Sentence case | None. Optional trailing arrow "→" |
| Eyebrow labels | UPPERCASE · 0.12em tracking | None |
| Form labels | Sentence case | None (no trailing colon) |
| Confirm titles | Sentence case + question mark | Period in description |
| Brand name | DealerCentives (one word, two caps) | — |
Using these tokens in a new project
12.1 The fastest path: drop in tokens.css
The portable token sheet at docs/brand/tokens.css is a flat CSS file with every brand token. No build dependencies.
// app/layout.tsx (Next.js App Router) import "@/styles/tokens.css" // copy from docs/brand/tokens.css import "./globals.css"
After import, every CSS variable is available globally. Use them directly:
<button className="text-white px-5 py-3 rounded-xl font-semibold" style={{ background: "var(--gradient-brand)", boxShadow: "var(--shadow-primary)" }} > Book a demo → </button>
12.2 With Tailwind v4
Mirror the portal's @theme inline block from dc-dashboard-2026/src/styles.css so utilities like bg-primary, text-foreground, and rounded-2xl resolve to brand tokens. That file is the canonical example to copy.
12.3 With shadcn/ui
Initialize with these components.json settings to keep visual congruence:
{
"style": "new-york",
"tailwind": { "baseColor": "slate", "cssVariables": true, "prefix": "" },
"iconLibrary": "lucide"
}
12.4 Lifting components from the dashboard
The 53 components in src/components/ui/ are MIT-licensed shadcn primitives + 7 custom additions. Safe to copy whole files into the new project. Check imports — only the seven custom files (metric-card, status-dot, page-header, empty-state, kbd, segmented-control, choice-modal-row) reference brand-specific patterns; everything else is stock shadcn restyled.