Template
Hedgewise
A landing site for a sales and customer-relationship platform, pitched to growing teams that want pipeline, analytics and payments in one place. The black canvas and electric lime accent make it feel fast and modern, while a dense multi-panel finance dashboard mockup and team photos add proof and warmth.
Dark sales and CRM platform landing site · Website · SaaS landing page · static site
A mock-up of the homepage, drawn from this design’s layout, palette and typefaces. A build follows the full prompt below.
Add app screens
Pick up to 6 screens, such as a dashboard, settings or an empty state. Each is built in this design’s own palette and typefaces, with its states and guardrails.
Start from this templateRead the build prompt
Typefaces
M PLUS Rounded 1c is a rounded geometric sans with a strong 700, which keeps the tight, confident trading-floor headlines friendly against black and lime.
- M PLUS Rounded 1cHeadings: hero 68px 700, H2 40px 600, -1px tracking; buttons 16px 700
- M PLUS Rounded 1cBody: lead 18px/1.6 500, body 16px/1.6
Patterns
- mega-menu nav with dropdown groups
- icon eyebrow above centered hero
- dual CTA: solid lime and lime-outlined
- wide skewed dashboard mockup with dotted halftone decoration
- logo marquee with trust headline
- split section with checklist and video play button over photo
- offset outline frames behind photos
- icon-tile feature list with 'Learn more' links
- percentage stat rings
- testimonial slider
- pricing cards
States it is designed for
- Video modal: loading poster, playing, error fallback with transcript link
- Dropdown open/closed; mobile sheet open
- Reduced motion: no skew animation, rings at final value, marquee static
- Demo request form: validation errors, submitting, booked confirmation, failure
- Pricing toggle monthly/yearly
Who it is for
- Sales managers at small and mid-size companies
- Founders running their own pipeline
- Revenue operations analysts
- Customer success teams
Layout
- Top bar: leaf-cluster logo + wordmark left; centered menu with three dropdown groups and a Contact link; lime-outlined 'Get started' button right; hamburger in lime square on mobile
- Hero centered: eyebrow with linked-rings icon in lime, 68px two-line bold headline, muted two-line paragraph, lime solid 'Get started' and lime-outlined 'Book a demo' buttons with arrow icons; small sparkle doodle left
- Wide perspective-skewed dark dashboard mockup (sidebar, balance cards, line chart, card carousel, transfers, notifications) with a lime triangle tab and dotted halftone arcs peeking out behind
- Trust headline and greyscale logo marquee
- Split: eyebrow, heading, paragraph, three lime check bullets, lime CTA left; rounded photo with a big lime play button right (opens video modal)
- Split reversed: photo with two offset indigo outline frames left; eyebrow, heading, paragraph, two icon-tile features with lime 'Learn more' links right
- Split: analytics heading and paragraph with stat rings (percent) left; photo with offset frames right
- Testimonials slider, pricing tiers, blog teaser, CTA band, footer
- Breakpoints: menu collapses to a sheet; hero headline 40px; mockup scales to full width without skew; splits stack photo first
Palette
electric, confident, modern, sales-driven. High contrast black and lime that feels like a trading floor after hours.
- page background
#000000 - card surface
#111111 - heading / body text
#eff1f2 - muted text
#a3a3a3 - lime accent / primary button
#b3fc6a - label on lime
#050505 - icon tile background
#1b2a12 - indigo outline frames / chart line
#5869fc - hairline border
#606060 - download-style secondary accent orange (sparingly)
#fc6213
Every checked pair, measured again
| Sample | Where | Ratio | Needs |
|---|---|---|---|
| Aa | body text on page | 18.53:1 | 4.5:1 |
| Aa | muted text on page | 8.33:1 | 4.5:1 |
| Aa | body text on card | 16.67:1 | 4.5:1 |
| Aa | label on lime button | 16.55:1 | 4.5:1 |
| Aa | lime link text on page | 17.05:1 | 4.5:1 |
| lime icon on dark-green tile | 12.30:1 | 3:1 | |
| indigo chart line and frames on page | 4.84:1 | 3:1 | |
| hairline border on card | 3.00:1 | 3:1 |
As vibld’s tokens
The palette on the fifteen colour tokens vibld styles a project with, each text colour on the fill it is read on. Marked tokens are solved from the palette, because no swatch held that role at 4.5:1.
- background
- card
- muted
- primary
- secondary
- accent
- destructive *
Type scale
- Display
- M PLUS Rounded 1c 700, hero 68px/1.15 with -1px tracking; h2 40px 600 with -1px tracking
- Body
- M PLUS Rounded 1c 500, 18px/1.6 for lead paragraphs, 16px/1.6 for body; buttons 16px 700
Rounded geometric sans with tight tracking on headings. Eyebrows are sentence case in lime with an outline icon, not uppercase.
Spacing and imagery
1200px container with 24px gutters; 120px vertical rhythm; photos 12px radius; buttons 7px radius, 48px tall; icon tiles 44px squares with 8px radius; offset outline frames 8px and 16px behind photos.
Bright office lifestyle photos in rounded frames with offset indigo outlines; a dense dark fintech-style dashboard mockup; dotted halftone arcs; small line icons in dark-green tiles.
Components
- Dropdown mega-menu
- Eyebrow with icon
- Solid and outlined lime buttons
- Skewed dashboard mockup
- Logo marquee
- Checklist bullets
- Video thumbnail with play button and modal
- Offset outline photo frame
- Icon tile feature with link
- Stat ring
- Testimonial slider
- Pricing card
Interactions
- Dropdowns open on hover-intent and click, arrow keys move through items
- Hero mockup un-skews slightly as it scrolls into view
- Marquee loops, pauses on hover/focus
- Play button scales on hover; opens a dialog with captioned video; Escape closes and returns focus
- Outline frames shift 4px on hover of the photo
- Stat rings draw their arc once in view
- Button arrow icons nudge diagonally on hover
Data
NavGroup{label, items[{label, href, description}]}Feature{icon, title, body, href}Stat{value_percent, label}Testimonial{quote, name, role, company, avatar}Plan{name, price_monthly, price_yearly, features[], highlighted}DemoRequest{name, work_email, company, team_size (1-10|11-50|51-200|200+), message, created_at}
Guardrails
Experience
- Lime is the only saturated accent for actions; the orange appears at most once as a tiny highlight
- Hero shows exactly two CTAs; every later section has at most one
- Each split section limits bullets to three and keeps paragraphs under 40 words
- The video must have a text summary next to it so it is not required to understand the pitch
- Mega-menu items include a one-line description to aid scanning
Accessibility
- Lime buttons use near-black labels; lime text only on black or near-black
- Video dialog has captions, focus trap and returns focus to the play button
- Skewed mockup is decorative with a single alt summary; no text baked in that matters
- Stat rings show the number as text in the centre
- Focus ring 2px lime with 2px offset
- Menus implement Radix NavigationMenu keyboard behaviour
Security
- Demo form: zod validation on client and server, business-email check optional, max lengths
- RLS on demo_requests: anon insert only; sales role select
- Rate limiting and honeypot on the demo endpoint
- Video embeds served from own storage or a privacy-enhanced player without tracking cookies
Build prompt
The baseline every prompt in the catalog assumes, then this design’s own ten sections, from goal to guardrails.
The baseline
### How to use these prompts Paste an entry's build prompt into your coding agent as the first message. Each prompt names its own stack, tokens and acceptance criteria; the rules below apply to all of them and can be prepended once per project. ### Engineering baseline - TypeScript strict mode, no `any`, small typed components, feature folders, and one source of truth for design tokens (CSS variables consumed by Tailwind). - Validate every input with a shared zod schema on the client and again on the server or edge function. Never trust client-side checks alone. - Show loading, empty and error states for every async view. Surface errors in plain language with a retry, and log details to the console in development only. - Keep secrets out of the bundle. Only publishable keys (for example a Supabase anon key) belong in client code; service-role keys, API keys and webhooks live in server or edge-function environment variables. ### Data and auth baseline (full-stack entries) - Enable Row Level Security on every table before inserting data. Default-deny, then add owner-scoped policies (`auth.uid() = user_id`) and explicit role checks for admin views. - Store roles in a separate table checked by a security-definer function, never in a user-editable profile field. - Upload files to private storage buckets with size and MIME limits, and serve them through signed URLs. - Rate-limit public endpoints (forms, auth, AI calls) and add a honeypot field or captcha to anonymous forms. - Take payments through a hosted checkout and verify webhooks by signature. Never handle raw card data. ### Accessibility and UX baseline - Target WCAG 2.2 AA: 4.5:1 contrast for normal text and 3:1 for large text, input borders, focus rings and meaningful icons or chart lines. Every palette in this catalog lists its verified pairs; re-check with a contrast tool after any colour change. - Keep body text at 16px or larger with 1.5 line height, nothing below 12px, no light weights under 24px, and uppercase only for short labels. - Give every interactive element a visible focus ring, full keyboard support, semantic landmarks, labelled form fields, and alt text on meaningful images. - Respect `prefers-reduced-motion` for every animation. Give drag-and-drop and carousels keyboard and button alternatives. - Build mobile-first and test at 375px, 768px and 1280px. ### Content guardrails - Use original copy, fictional sample data and placeholder or licensed imagery. Do not reuse another product's name, logo, screenshots or marketing text. - Label demo testimonials and metrics as samples. Collect the minimum personal data the feature needs. ### SaaS screen baseline - Design every screen for its full set of states: first-run empty, loading skeleton, partial data, error with retry, permission-denied, and success feedback. Each entry lists the states its screen needs. - Keep destructive actions (delete, revoke, downgrade, remove member) behind a confirmation that names the object, and prefer undo over a second dialog where the action is reversible. - Enforce authorisation on the server for every action a screen exposes. Hiding a button is not access control; check the role again in the API or RLS policy. - Never show secrets (API keys, tokens) in full after creation. Show them once, then mask them, and offer rotate and revoke. - Keep the app shell (navigation, workspace switcher, account menu) consistent across screens, and preserve filters, sort and scroll position when the user navigates back.
### Goal Build the landing site for **Hedgewise**, a sales and customer-relationship platform that gives growing teams pipeline tracking, analytics and payment insight in one place. The page is black with an electric lime accent, a dense dashboard mockup in the hero and warm team photos in outlined frames. It should feel fast and credible and drive two actions: start free and book a demo. ### Stack Next.js with React and TypeScript, Tailwind CSS, shadcn/ui on Radix (NavigationMenu, Dialog, Sheet, Tabs), lucide-react, Motion for the mockup skew, marquee and stat rings, react-hook-form + zod for the demo form, Supabase for demo requests. ### Pages & layout 1. **Home**: top bar with logo, three dropdown groups (Demos, Resources, Pages) and Contact, lime-outlined "Get started". Hero centered: lime eyebrow with rings icon, 68px bold headline (fresh copy about closing deals faster), muted paragraph, solid lime "Start free" and outlined "Book a demo" buttons. Below, a wide dark dashboard mockup in slight perspective: sidebar, earnings and spending cards, line chart with period tabs, stacked card carousel, balance panel, quick-transfer avatars and notification list, all with invented figures. Dotted halftone arcs behind the lower-left corner. Trust headline + greyscale marquee of invented logos. Split 1: eyebrow, heading, paragraph, three lime-check bullets, lime CTA; photo with lime play button (video dialog). Split 2 (reversed): photo with two offset indigo outline frames; eyebrow, heading, paragraph and two icon-tile features with "Learn more" links. Split 3: analytics copy with two stat rings; framed photo. Testimonials slider, pricing (three tiers, monthly/yearly), blog teaser, CTA band, footer. 2. **Pricing**, **Book a demo** (form page), **Blog**, **About**, **Contact**. Mobile: Sheet menu, hero headline 40px, mockup flat and full width, splits stack. ### Design system ``` --bg: #000000; --surface: #111111; --text: #eff1f2; --muted: #a3a3a3; --lime: #b3fc6a; --on-lime: #050505; --tile: #1b2a12; --indigo: #5869fc; --line: #606060; --spark: #fc6213; ``` Font: M PLUS Rounded 1c. Hero 68px/1.15 700 (-1px), h2 40px/1.2 600 (-1px), lead 18px/1.6 500, body 16px/1.6, buttons 16px 700. Spacing 8px base, 120px sections, 1200px container. Radius: buttons 7px, photos 12px, cards 16px, icon tiles 8px. No shadows; outline frames 1px indigo offset 8px/16px. Motion: 400ms ease-out; mockup rotateX 12deg to 4deg on scroll; marquee 35s. ### Components & interactions MegaMenu (hover-intent + click, arrow keys, descriptions), Eyebrow, Button (solid | outline, arrow nudge), HeroMockup (skew on scroll, aria-hidden inner, alt summary), LogoMarquee, CheckList, VideoThumb + VideoDialog (captions, transcript link), FramedPhoto, IconFeature, StatRing (SVG arc, centred number), TestimonialSlider (buttons + swipe), PricingCards with toggle, DemoForm. ### Data & state Content JSON: `navGroups`, `features`, `stats`, `testimonials`, `plans`, `posts`, `logos`. Demo form writes `demo_requests(id, name, work_email, company, team_size, message, created_at)`. Client state: menu, video open, billing period, slider index. ### Accessibility Near-black labels on lime; lime text only on black. Dialog traps focus, Escape closes, captions on. Stat rings expose text values. Mockup decorative. Marquee duplicates aria-hidden, paused under reduced motion. Visible lime focus rings. Form fields have labels, inline errors via aria-describedby, and a success message in a live region. Verified contrast: body text on page: #eff1f2 on #000000 = 18.53:1; muted text on page: #a3a3a3 on #000000 = 8.33:1; body text on card: #eff1f2 on #111111 = 16.67:1; label on lime button: #050505 on #b3fc6a = 16.55:1; lime link text on page: #b3fc6a on #000000 = 17.05:1; lime icon on dark-green tile: #b3fc6a on #1b2a12 = 12.3:1; indigo chart line and frames on page: #5869fc on #000000 = 4.84:1; hairline border on card: #606060 on #111111 = 3.0:1. ### Security Zod validation both sides; RLS on `demo_requests`: enable, anon insert-only, select limited to users with a `sales` role claim. Rate limit and honeypot. Notify the team via a transactional email service from a server function; keys server-only. Video served without third-party tracking. ### Performance & SEO Static generation; hero mockup AVIF with priority and fixed size; photos lazy with blur placeholders. Self-host M PLUS Rounded 1c. Metadata, OG image, Organization + Product JSON-LD. Lighthouse 90+ mobile. ### Guardrails - Invent every logo, person, merchant, balance and quote; no real payment-network or marketplace names on cards. - Keep lime for actions and highlights only; orange at most once. - Typed components, no `any`, content in JSON. - Acceptance criteria: (1) mega-menu fully keyboard-operable; (2) video dialog accessible and closable; (3) demo form handles invalid, submitting, booked and failed; (4) no horizontal scroll at 390px; (5) every recorded contrast pair passes.