Skip to content

Now in the official shadcn registry directory.

Start free
Back to gallery
fintech · saas

Slash

Premium business-banking marketing site that earns prestige through dark monochrome restraint and a single bronze accent. Slash treats spend management UI as editorial — Inter alone across a 300/400/500/600 weight ladder, atmospheric multi-stop gradients drifting at single-digit opacities in place of hero illustration, and narrow 320-704 px container rails that read like editorial columns. The bronze accent family appears only inside ornamental flourishes and never as a CTA fill, signalling a private-banker register where most fintech competitors settle for chromatic dashboard sprawl.

slash.comAdded 2026-04-30
Slash - Desktop

Editorial disclaimer

Editorial note

This entry documents observable design-language patterns for educational transfer and AI-agent briefing. Screenshots and trademarks are property of their respective owners. AI2 Design is not affiliated with or endorsed by the featured brand. Inspiration here is about language and rhythm - do not reproduce brand identity, logo, product copy, or proprietary features.

Fair Use & Gallery Policy
FreePrompt kit

Copy the full design language into your agent

A typed, paste-ready design system brief - philosophy, tokens, rules, techniques, and fitness checks. Drop it into Claude, Cursor, v0 or any coding agent and it builds in Slash’s language, not just a screenshot.

Paste into your agent. No signup, no cost.
Dark-first monochrome editorial precision at 2px spatial resolution. The canvas is near-black (#000000 ground + #1c1d22 panel + #5e616e divider); Inter alone carries voice across a 300 / 400 / 500 / 600 weight ladder; text descends through a cool gray spectrum (#ffffff → #e2e3e9 → #9194a1 → #777a88) with no chromatic emphasis. A single bronze accent family (#cc9166 / #aa9b8f) appears only inside atmospheric gradients and ornamental flourishes — never as a CTA fill. Elevation is delivered through border-first surfaces at --radius 0.5rem (8px); shadows sit at rgba(0,0,0,0.3) 0 4px 30px 0 and lower. Discipline over decoration; a private-banker register over a SaaS pitch.
Main prompt
Use this capture as a design language transfer brief for my project. Adopt the palette (dark-first #000000 ground + #1c1d22 panel + grayscale text descender + single bronze #cc9166 accent reserved for ornamental layers), typographic rhythm (Inter alone, 300/400/500/600 weight ladder, 13/14/15/16/18/20/24px size scale, no italic, no display partner), 2/6/8 px-base spacing scale with narrow 320-704 px container rails, border-first elevation at 0.5rem (8px) radius, atmospheric multi-stop gradients drifting at 2-20% opacity rather than hero illustration, Tailwind cubic-bezier(0.4, 0, 0.2, 1) easing with 75/150/200/300ms durations powered by Framer Motion runtime, and a shadcn/ui HSL CSS-variable foundation across every page and component I ship. Treat this as my project's constitution — any new component I author should pass as if crafted in the same studio. Apply the language, not the source brand's specific copy or identity. When I ask you to build a page or component, enforce these rules by default, and call out any decision that deviates.
Layout
Stack
Content width
Narrow
Framing
Flat
Grid strength
Medium

Pure-dark monochrome canvas — #000000 primary background paired with #1c1d22 panel and #ffffff (#e2e3e9 secondary) foreground doing 95%+ of the surface work. Mid-tone descender #9194a1 → #777a88 → #5e616e handles captions, dividers, de-emphasized labels. Accent palette is a single bronze family — #cc9166 (warm copper) and #aa9b8f (muted khaki) — appearing almost exclusively inside multi-stop gradients and ornamental flourishes, never as solid fills. The CSS variable vocabulary is shadcn/ui (--background HSL 240 10% 3.9%, --page-background HSL 240 20% 2%, --foreground HSL 0 0% 98%, --primary HSL 217 91% 60%, --secondary --muted --border --ring) but the visual register is luxury-financial rather than dev-tool.

Mode strategydark-first
  • Near-white #ffffff text handling ~2079 measured surface occurrences — dominant reading layer
  • Background pair #000000 (page) + #1c1d22 (panel), maintaining 16:1+ contrast with #ffffff
  • Mid-tone descender #9194a1 / #777a88 / #5e616e for captions, metadata, dividers, de-emphasized labels
  • Bronze accent #cc9166 + muted khaki #aa9b8f used only inside gradients and ornamental layers — surface area < 1%
  • Border + divider stripe #1c1d22 doubles as panel surface and hairline separator on the same value

Gradients (paste-ready)

linear-gradient(201deg, rgb(18, 19, 23) 13.96%, rgb(11, 12, 14)) — dominant ambient page tilt
linear-gradient(103deg, rgb(174, 147, 87), rgb(255, 240, 204) 40%, rgb(174, 147, 87)) — bronze→cream→bronze ornamental sweep
linear-gradient(rgba(205, 137, 57, 0) 23.5%, rgb(205, 137, 57)) — copper fade-up edge highlight
linear-gradient(135deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.02)) — frosted glass card overlay
linear-gradient(to right, rgba(0, 0, 0, 0), rgba(255, 255, 255, 0.2), rgba(0, 0, 0, 0)) — light beam glance highlight
  • Primary family: Inter (Next.js next/font/google self-hosted, 3 woff2 variants preloaded). No display partner, no serif, no italic — Inter does the entire job.
  • Weight ladder: 300 (display + airy headings) / 400 (reading body) / 500 (UI labels + emphasis) / 600 (bold + small metadata caps). Do not substitute 700 — the 600 stops the ladder.
  • Size scale: 13 / 14 / 15 / 16 / 18 / 20 / 24 px on body and UI; display headings extend up the same scale. No magic numbers between steps.
  • Line-height pattern: tight on small caps (lh 13-14 = font-size, no leading), 1.375x on body 14-16px (lh 19.25-22), 1.375x on display 18-24px (lh 24.75-33). Constant ratio, not unitless.
  • No italic for emphasis — weight shift carries it. Italic reserved for quoted editorial content if required.
  • Numerics inherit Inter default — no `tabular-nums` override in the captured surface; tables stay slim, columns stay short.
  • Dual-base rhythm — both 2px and 6px appear with high frequency (267 and 269 measured occurrences respectively). 2px is the hairline border + divider unit; 6px is the dominant tight gap.
  • Standard scale beyond hairline: 6 / 8 / 10 / 12 / 14 / 16 / 18 / 20 / 22 / 24 px. Never invent values between steps.
  • Container max-width set: 320 / 412 / 512 / 544 / 576 / 704 px — narrower than typical SaaS landings. Treat each module as an editorial column.
  • Section vertical rhythm: pick from the same 16-24 px scale × multipliers, never freehand. The narrow container demands the rhythm.
  • Card padding: 16-24 px on desktop, 12-16 px on mobile. Hairline border at 1-2 px before reaching for shadow.
Surface styleFlat
  • Primary elevation is the panel value-shift — #000000 → #1c1d22 already separates surface from ground without shadow.
  • When shadow is needed, default to `box-shadow: rgba(0, 0, 0, 0.3) 0 4px 30px 0` — soft atmospheric bloom, never a hard halo.
  • Layering depth: panel #1c1d22 → divider hairline #1c1d22 (same value, different role) → mid-tone #5e616e for floating overlays.
  • Frosted glass overlay technique: `linear-gradient(135deg, rgba(255,255,255,0.08), rgba(255,255,255,0.02))` over panel for hover/active card states.

Techniques

Atmospheric gradient stack as ambient lighting

Slash treats gradients as light leaks rather than backgrounds — 11 distinct linear/radial passes layer at 2-20% opacity to deliver mood without illustration. Stack at the page level, never at the component level. The bronze gradient (`103deg, rgb(174,147,87) → rgb(255,240,204) 40% → rgb(174,147,87)`) is the signature.

Light beam glance highlight

Across hairline dividers and section edges, a `linear-gradient(to right, rgba(0,0,0,0), rgba(255,255,255,0.2), rgba(0,0,0,0))` provides a single-pass illumination band. Use sparingly — once per section, never repeated within a viewport.

Radii4 / 6 / 8Icon treatmentStrokeIcon setsLucide-style monoline (shadcn default)
  • --radius CSS variable defaults to 0.5rem (8px) — primary radius for cards, buttons, inputs.
  • Smaller controls (badges, hairline chips) step down to 4-6 px to keep tightness.
  • Pill radii avoided — Slash never uses fully rounded buttons; corners stay editorial.
  • Icons are monoline Lucide-style (shadcn default), never filled glyphs. Stroke 1.5-2 px.
  • Primary CTA button
    background
    #ffffff
    text
    #000000
    border
    1px solid transparent
    radius
    8px (var(--radius))
    padding
    12px 20px
    font
    Inter 500 14px / 19.25px
    transition
    0.15s cubic-bezier(0.4, 0, 0.2, 1) on color, background-color, border-color

    Tailwind

    inline-flex items-center justify-center rounded-lg bg-white px-5 py-3 text-sm font-medium leading-tight text-black transition-colors duration-150 ease-[cubic-bezier(0.4,0,0.2,1)] hover:bg-white/90
  • Secondary ghost button
    background
    transparent
    text
    #ffffff
    border
    1px solid #1c1d22
    radius
    8px
    padding
    12px 20px
    font
    Inter 500 14px / 19.25px
    hoverBackground
    #1c1d22

    Tailwind

    inline-flex items-center justify-center rounded-lg border border-[#1c1d22] bg-transparent px-5 py-3 text-sm font-medium leading-tight text-white transition-colors duration-150 ease-[cubic-bezier(0.4,0,0.2,1)] hover:bg-[#1c1d22]
  • Surface card
    background
    #1c1d22
    text
    #ffffff
    border
    1px solid rgba(255,255,255,0.06)
    radius
    8px
    padding
    20px 24px
    shadow
    rgba(0, 0, 0, 0.3) 0 4px 30px 0

    Tailwind

    rounded-lg border border-white/[0.06] bg-[#1c1d22] p-6 text-white shadow-[0_4px_30px_0_rgba(0,0,0,0.3)]
  • Hairline divider with light beam
    height
    1px
    background
    linear-gradient(to right, rgba(0,0,0,0), rgba(255,255,255,0.2), rgba(0,0,0,0))
    margin
    section vertical rhythm 64-96px

    Tailwind

    h-px w-full bg-[linear-gradient(to_right,rgba(0,0,0,0),rgba(255,255,255,0.2),rgba(0,0,0,0))]
  • Bronze ornamental flourish (gradient stripe)
    height
    2px
    background
    linear-gradient(103deg, rgb(174,147,87), rgb(255,240,204) 40%, rgb(174,147,87))
    usage
    Section corner accent or wordmark underscore — never CTA fill

    Tailwind

    h-0.5 bg-[linear-gradient(103deg,rgb(174,147,87),rgb(255,240,204)_40%,rgb(174,147,87))]
  • Nav link
    text
    #9194a1
    font
    Inter 500 14px / 14px
    padding
    8px 12px
    radius
    6px
    hoverText
    #ffffff
    hoverBackground
    rgba(255,255,255,0.04)
    transition
    0.2s cubic-bezier(0.4, 0, 0.2, 1) on color, background-color

    Tailwind

    rounded-md px-3 py-2 text-sm font-medium leading-none text-[#9194a1] transition-colors duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] hover:bg-white/[0.04] hover:text-white
LevelexpressiveDurations75ms / 150ms / 200ms / 300ms

Easings

cubic-bezier(0.4, 0, 0.2, 1)
HoverColor + background-color + border-color transitions at 150ms — the dominant micro-interaction, Box-shadow + transform + opacity on cards at 200ms, Quick tap feedback at 75ms for button press states

Scroll patterns

  • Framer Motion (runtime detected via window.MotionIsMounted) handles scroll-revealed reveals — fade + 8-16 px translate up, 300ms
  • Light-beam dividers scale or shift on viewport entry (subtle, never bouncy)
  • useReducedMotion mandatory — all scroll choreography collapses to static when prefers-reduced-motion is set
  • Single easing curve `cubic-bezier(0.4, 0, 0.2, 1)` (Tailwind ease-in-out default) anchors every transition. Do not introduce a second curve.
  • Duration ladder is exclusive: 75 / 150 / 200 / 300 ms — never freehand timings.
  • Framer Motion is opinionated about reduced motion; honor `useReducedMotion()` everywhere a motion.* element ships.
  • Hover transitions never animate transform on text — only on cards, buttons, and ornamental layers.
  • Color shift before motion shift — Slash leans on the 150ms color transition as the primary feedback channel; transform/opacity shifts are secondary.
  • Hover states reveal the bronze gradient on ornaments only, not on functional controls — controls stay monochrome.
  • Focus rings inherit --ring (HSL 240 4.9% 83.9%) at 1-2 px — never an outer glow.
  • Light-beam dividers act as silent scroll cues — they signal section boundaries without text labels.
Approachmobile-first

5-step Tailwind defaults: sm 400px / md 768px / lg 1024px / xl 1280px / 2xl 1536px. Narrow container set (320-704 px) means content rails stay tight even on 2xl — Slash never expands to a full 1280+ container.

  • Mobile-first authoring; lg/xl introduce columned layouts but never widen the inner content rail.
  • Container max-width set: 320 / 412 / 512 / 544 / 576 / 704 px — pick the narrowest that fits the module's information density.
  • Section vertical rhythm shrinks 40-50% on mobile — narrower copy demands less air.
  • Atmospheric gradients render identically across breakpoints; never gate them behind md+.
  • Foreground/background contrast: #ffffff on #000000 = 21:1 (AAA Large + Normal). #ffffff on #1c1d22 = 16:1+ (AAA). #9194a1 on #000000 = 6.4:1 (AA Normal). Audit all bronze accents — #cc9166 on #000000 = 5.2:1 (AA Normal only, fails AAA).
  • Honor `prefers-reduced-motion` everywhere — Framer Motion `useReducedMotion()` collapses scroll choreography to static.
  • Focus ring uses --ring HSL 240 4.9% 83.9% at 1-2 px inset — visible against #000000 without an outer glow.
  • Bronze accent never carries semantic meaning — never use it for state (success/error/warning). Reserve semantic states for shadcn defaults (destructive HSL 0 91% 71%).
  • All interactive controls keyboard-reachable; Tab + Enter parity with click on every button + link.
Next.js (next/font/google Inter preload, next/image hero)shadcn/ui HSL CSS variable foundation (27 vars across --background --foreground --card --popover --primary --secondary --muted --accent --destructive --border --input --ring + 5 chart vars)Tailwind CSS (cubic-bezier(0.4, 0, 0.2, 1) default ease-in-out + 75/150/200/300ms transition durations)Framer Motion (runtime detected via window.MotionIsMounted — used for scroll-reveal + reduced-motion honor)

Slash builds on a shadcn/ui semantic token foundation but re-tailors values to a luxury-financial register. The HSL --primary defaults to blue (217 91% 60%) but is rarely surfaced — bronze gradients carry the brand instead. Hero image is single, lazy-loaded at 64% rate across 30 captured images.

  • Inter preloaded as 3 next/font/google woff2 variants — no manual @font-face needed.
  • shadcn HSL vars converted to Tailwind via `@theme inline --color-background: hsl(var(--background))` pattern.
  • Framer Motion components ship with `useReducedMotion()` guard; reduced-motion users see static layout.
  • Atmospheric gradients live as page-level background layers, not component-level — keep them out of card recipes.
  • Default to the dark monochrome canvas (#000000 + #1c1d22) for every surface unless light mode is required.
  • Use Inter alone — no display partner, no serif, no italic.
  • Reserve bronze (#cc9166 family) for ornamental gradients and flourishes only.
  • Honor the narrow container rails (320-704 px) — treat each module as an editorial column.
  • Use the 75/150/200/300ms duration ladder + single cubic-bezier(0.4, 0, 0.2, 1) easing for every transition.
  • Don't paint a CTA with the bronze accent — bronze stays ornamental.
  • Don't add a second font family thinking it warms the page — Inter alone is the discipline.
  • Don't widen the container past 704 px — Slash refuses billboard-width modules on purpose.
  • Don't introduce a second easing curve — the single `cubic-bezier(0.4, 0, 0.2, 1)` is the motion fingerprint.
  • Don't replace atmospheric gradients with hero illustration — subtraction is the visual strategy.
  • Single typeface (Inter) only — no exceptions.
  • Single accent family (bronze #cc9166 / #aa9b8f) — no expansion to a chromatic accent system.
  • Container max-width capped at 704 px on the inner content rail.
  • Motion duration ladder fixed: 75 / 150 / 200 / 300 ms — no freehand timings.
  • shadcn HSL CSS variable foundation must remain the token source — do not bypass with hex literals in component code.
  • Hex grep — #000000 and #1c1d22 dominate; #cc9166 appears only inside gradient strings, never as `background` or `color` solid.
  • Font stack inspection — only Inter (or its next/font hashed alias `__Inter_*`) appears across the surface; no second family.
  • Container max-width audit — every inner rail measures ≤ 704 px on desktop screenshots.
  • Easing audit — `transition-timing-function` reads `cubic-bezier(0.4, 0, 0.2, 1)` across all transitions; no second curve.
  • Motion library check — `window.MotionIsMounted` resolves at runtime (Framer Motion present); `useReducedMotion()` guard wraps every `motion.*` element.
  • shadcn token check — `--background`, `--foreground`, `--card`, `--primary`, `--secondary`, `--muted`, `--ring` defined in `:root` with HSL values; --radius reads 0.5rem.

Design tokens

Observed token system

Color, type, spacing, gradients, and stacking order captured from the live page and rendered here as living, paste-ready previews.

Inspector

Observable layers

Structure, breakpoints, motion, fonts, and images captured from the live page and kept paste-ready alongside the tokens.

Depth-first walk of the meaningful sections. 16 nodes across 7 levels, shallow to deep by color.

  • body5
    • div
    • Header1
      • Nav
    • Main2
      • Section (×10)1
        • div1
          • div1
            • div1
              • Form
      • [+5 more]
    • Footer1
      • div1
        • div1
          • Nav
    • button

Accessibility

Contrast matrix

58 combinations - 26 pass AA - 12 pass AAA. Each pair is previewed with its real foreground on background; APCA Lc sits alongside the WCAG 2.1 ratio for draft WCAG 3 awareness.

Normal text passes AAALarge text passes AAA
fg
#FFFFFF
bg
#000000
APCA Lc
-108
Use
background on foreground
Normal text passes AAALarge text passes AAA
fg
#000000
bg
#FFFFFF
APCA Lc
+106
Use
foreground on background
Normal text passes AAALarge text passes AAA
fg
#FFFFFF
bg
#1C1D22
APCA Lc
-106
Use
background on foreground
Normal text passes AAALarge text passes AAA
fg
#1C1D22
bg
#FFFFFF
APCA Lc
+104
Use
foreground on background
Normal text passes AAALarge text passes AAA
fg
#E2E3E9
bg
#000000
APCA Lc
-90
Use
foreground on foreground
Normal text passes AAALarge text passes AAA
fg
#000000
bg
#E2E3E9
APCA Lc
+90
Use
foreground on foreground
Normal text passes AAALarge text passes AAA
fg
#E2E3E9
bg
#1C1D22
APCA Lc
-88
Use
foreground on foreground
Normal text passes AAALarge text passes AAA
fg
#1C1D22
bg
#E2E3E9
APCA Lc
+87
Use
foreground on foreground
Normal text passes AAALarge text passes AAA
fg
#000000
bg
#CC9166
APCA Lc
+52
Use
foreground on accent

Images

Image strategy

Observable image posture - total count, lazy-loading ratio, and format mix. The hero image is measured above the fold.

Total images
30
Lazy loaded
64%
Format mix
  • unknown40 · 54%
  • svg34 · 46%

Hero image

https://www.slash.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fhero-v2.eb0c8f15.jpg&w=3840&q=75&dpl=dpl_HcBcGJ9LzD1gMXqAZ68HUL1keJVi
Format
UNKNOWN
Dimensions
2620x1786
Loading
auto
srcset
yes
srcset descriptor
/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fhero-v2.eb0c8f15.jpg&w=3840&q=75&dpl=dpl_HcBcGJ9LzD1gMXqAZ68HUL1keJVi 1x
Industry
fintech
Industry
saas
Theme
Light + Dark
Added
2026-04-30

FAQ

Questions people ask about Slash

3questions

Answers are pulled from the curator verdict and design brief - the same text your AI agent sees when it paste-reads this page.

Compare this with