DESIGN.md · Analysis

BtcLoans

btcloans.com · 20 May 2026 · 47 colors · Inter

BtcLoans

A fintech comparison platform for Bitcoin-backed loans, designed with high-contrast dark mode and vibrant accent colors to convey trust, speed, and financial clarity in the crypto lending space.

Colors

surface#000000
surface-dim#0a0a0a
surface-bright#1a1a1a
surface-container-lowest#050505
surface-container-low#0f0f0f
surface-container#1b1b1b
surface-container-high#2a2a2a
surface-container-highest#3a3a3a
on-surface#ffffff
on-surface-variant#cccccc
inverse-surface#ffffff
inverse-on-surface#000000
outline#666666
outline-variant#444444
surface-tint#4ade80
primary#4ade80
on-primary#000000
primary-container#22c55e
on-primary-container#000000
inverse-primary#16a34a
secondary#f97316
on-secondary#000000
secondary-container#fb923c
on-secondary-container#000000
tertiary#3b82f6
on-tertiary#ffffff
tertiary-container#1e40af
on-tertiary-container#ffffff
error#ef4444
on-error#ffffff
error-container#dc2626
on-error-container#ffffff
primary-fixed#4ade80
primary-fixed-dim#22c55e
on-primary-fixed#000000
on-primary-fixed-variant#1b1b1b
secondary-fixed#f97316
secondary-fixed-dim#ea580c
on-secondary-fixed#000000
on-secondary-fixed-variant#1b1b1b
tertiary-fixed#3b82f6
tertiary-fixed-dim#1d4ed8
on-tertiary-fixed#ffffff
on-tertiary-fixed-variant#ffffff
background#000000
on-background#ffffff
surface-variant#1a1f2c

Typography

display
fontFamily: Inter · fontSize: 72px · fontWeight: 300 · lineHeight: 80px · letterSpacing: -0.04em
headline-lg
fontFamily: Inter · fontSize: 40px · fontWeight: 600 · lineHeight: 48px · letterSpacing: -0.02em
headline-md
fontFamily: Inter · fontSize: 28px · fontWeight: 600 · lineHeight: 36px · letterSpacing: -0.01em
title-lg
fontFamily: Inter · fontSize: 20px · fontWeight: 600 · lineHeight: 28px · letterSpacing: 0em
body-lg
fontFamily: Inter · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: 0em
body-md
fontFamily: Inter · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: 0em
label-md
fontFamily: Inter · fontSize: 14px · fontWeight: 500 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: Inter · fontSize: 12px · fontWeight: 500 · lineHeight: 16px · letterSpacing: 0.02em

Design guidance

Overview

BtcLoans is a fintech comparison platform that transforms complex Bitcoin lending data into an accessible, high-contrast interface. The design aesthetic is "Crypto-Minimalist Clarity"—a fusion of austere dark-mode sophistication with vibrant accent colors that signal trust, speed, and financial precision. The brand serves crypto-native users and institutional borrowers seeking transparent, real-time APR rankings and loan term comparisons. The UI evokes confidence through stark black backgrounds (rgb(0, 0, 0)), crisp white typography (rgb(255, 255, 255)), and a signature lime-green accent (rgb(74, 222, 128)) that dominates CTAs and key data points. The emotional response is clarity without coldness: the interface feels authoritative yet approachable, technical yet human.

Voice and brand personality are direct, data-driven, and conversational. The tone avoids jargon bloat; instead, it prioritizes actionable insights. Example sentence in brand voice: "Nexo's 2.9%–18.9% APR with 20% LTV gives you flexibility—compare that against Bybit's fixed 5.74% at 80% LTV and pick your trade-off." The vocabulary leans on financial clarity (APR, LTV, collateral) paired with accessible framing ("Get the funding you need", "Find Best Deal"). The brand personality is confident, transparent, and slightly irreverent—it respects the user's intelligence and assumes they're making informed decisions, not being sold to.

Colors

The color system is built on a high-contrast dark foundation with strategic accent deployment. Primary (#4ade80, rgb(74, 222, 128)) is the brand's signature lime-green, used exclusively on CTAs ("Find Best Deal", "Get Started"), active states, and key data highlights (APR percentages in green). This accent appears sparingly but dominates visual hierarchy—it's the color users click. Secondary (#f97316, rgb(249, 115, 22)) is a warm orange used for secondary actions, badges, and status indicators; it provides warmth against the cold black canvas without competing for attention. Tertiary (#3b82f6, rgb(59, 130, 246)) is a corporate blue reserved for informational badges and tertiary UI elements.

The surface stack anchors the dark mode: surface (#000000) is pure black, surface-container (#1b1b1

Typography

The type system uses Inter as the primary typeface, chosen for its geometric clarity and excellent readability at small sizes on high-contrast backgrounds. Display (72px, weight 300, line-height 80px, letter-spacing -0.04em) is reserved for hero headlines like "Find the best Bitcoin loan rates"; the light weight conveys sophistication while the negative letter-spacing tightens the visual mass. Headline-lg (40px, weight 600) and headline-md (28px, weight 600) are used for section titles and card headers. Body-lg (18px, weight 400, line-height 28px) and body-md (16px, weight 400, line-height 24px) handle descriptive copy and list content; the 1.5x line-height (24px on 16px base) ensures legibility over dark backgrounds. Label-md (14px, weight 500, letter-spacing 0.01em) and label-sm (12px, w

Layout

The layout uses a 12-column fluid grid with a max-width of 1400px, centered on larger screens. The hero section spans full-width with a two-column split: the left column (40% width) contains the headline, subheading, and primary CTA; the right column (60% width) displays the "Top Providers" card stack. Spacing follows a semantic scale: gutter (24px) separates major sections, lg spacing (40px) creates breathing room between hero and provider rankings, md spacing (24px) is used for card padding and internal component spacing, and sm spacing (12px) is used for list item padding and tight groupings. The container maintains 24px horizontal padding on mobile (viewport < 768px), collapsing to a single-column layout. Provider rows use md padding (24px) with 1px borders at surface-container-high; t

Elevation & Depth

Depth is conveyed through layered surfaces and subtle shadows rather than dramatic drop shadows. Level 1 (Base): the pure black background (rgb(0, 0, 0)) with no shadow. Level 2 (Standard Card): surface-container (#1b1b1b) with a 1px border at surface-container-high (#2a2a2a) and a soft shadow of 0 4px 12px rgba(0, 0, 0, 0.26). Level 3 (Elevated/Header): surface-container (#1b1b1b) with rounded corners (9999px for header pill, 4px for cards) and the same shadow. The header navigation uses border-radius: 9999px to create a pill-shaped container, signaling it as a distinct, floating element. Pro

Shapes

The shape philosophy is "Functional Precision with Approachability"—combining sharp, technical edges with subtle rounding to convey both authority and accessibility. Buttons use border-radius: 9999px (full pill shape) to signal they are interactive and friendly; this applies to both primary CTAs ("Find Best Deal") and secondary buttons. Cards and input fields use border-radius: 4px (0.25rem) for a more technical, data-focused appearance; this reinforces the fintech aesthetic. The header navigation uses border-radius: 9999px to create a distinct, floating pill that stands apart from the page co

Components

Action Elements Buttons are the primary interaction mechanism. Primary buttons use background: {colors.primary} (#4ade80), text-color: {colors.on-primary} (#000000), border-radius: 9999px, padding: 12px 32px, height: 44px, font-weight: 500, and font-size: 14px. On hover, the background shifts to {colors.primary-fixed-dim} (#22c55e) with a 200ms ease-in-out transition. Secondary buttons use a transparent background with a 1px border at {colors.primary} and the same text color; on hover, they gain a 10% opacity background (rgba(74, 222, 128, 0.1)). Both button types use label-md typography (14px, weight 500).

Containers & Surfaces Cards are the primary container for data. They use background: {colors.surface-container} (#1b1b1b), border: 1px solid {colors.surface-container-high} (#2

Do's and Don'ts

**Do**

  • Do use {colors.primary} (#4ade80) exclusively on CTAs and active states—it's the brand's signature accent and should never be diluted or overused.
  • Do maintain pure black (#000000) as the page background and pure white (#ffffff) for body text to maximize contrast and readability on dark mode.
  • Do apply 1px borders at {colors.surface-container-high} (#2a2a2a) to define card and input edges instead of relying on shadows alone.
  • Do use border-radius: 9999px on buttons and the header to signal interactivity and friendliness; use border-radius: 4px on cards and inputs for technical precision.
  • Do apply 200ms ease-in-out transitions on hover states to feel responsive without being jarring.
  • Do use label-md (14px, weight 500) for all button text and UI labels to maintain visual consistency across interactive elements.

**Don't**

  • Don't use secondary colors (orange #f97316, blue #3b82f6) on primary CTAs—they dilute the brand's signature green accent and confuse interaction hierarchy.
  • Don't add drop shadows larger than 0 4px 12px rgba(0, 0, 0, 0.26)—the dark background already provides depth; heavy shadows feel dated and reduce contrast.
  • Don't use light gray or near-white backgrounds; stick to the surface stack ({colors.surface-container} #1b1b1b and {colors.surface-container-high} #2a2a2a) to maintain the dark-mode aesthetic.
  • Don't apply text-shadow to body-md or larger text; reserve it only for label-sm on complex backgrounds where legibility is at risk.
  • Don't mix border-radius values inconsistently—use 9999px for buttons/header, 4px for cards/rows, and 6px for inputs; deviation breaks the visual system.
  • Don't use the primary green (#4ade80) for non-interactive elements like badges or status indicators—reserve it for CTAs and active states only.