Rebar Design System

Combined reference covering the marketing website and the product portal. Both surfaces share a brand blue, Roboto as the only typeface, and a squared 2px radius. The portal sits on a cool off-white shell; the website sits on pure white.

Overview

The marketing surface pairs an industrial blue primary (#1863DC) with a magenta accent (#CC3366) on a white canvas. Roboto is the single typeface; all corners are tightly squared at 2px (buttons, inputs) or lightly rounded at 4px (cards). Shadows are intentionally quiet — the system reads as workmanlike, not fintech-flashy.

Colors

Primary & Accent

Brand Blue
#1863DC
Brand Hover
#1570EF
Brand Light
#2F83F5
Brand Deep
#293C5B
Accent Magenta
#CC3366

Text

Primary Text
#111111
Body Text
#333333
Muted
#888888
Tertiary
#3F444B
On Dark
#FFFFFF

Backgrounds

White
#FFFFFF
Off White
#F6F7FA
Light Gray
#F3F4F6
Cool Gray
#EEF1F5
Dark
#111111

Semantic

Success
#008000
Error
#CC3366
Focus
#1863DC

Typography

Roboto across all weights. A single family keeps the system coherent. Display weights (700) dominate hero moments; UI surfaces lean on 500 medium for nav items and captions.

Hero 48 / 700
Roboto Bold · 48px / 56px / -0.01em
H1 36 / 700
Roboto Bold · 36px / 44px
H2 28 / 700
Roboto Bold · 28px / 36px
H3 22 / 500
Roboto Medium · 22px / 28px
H4 / Nav caption 15 / 500
Roboto Medium · 15px / 18px · used in nav cards and feature labels
Body 16 / 400 — Built for subcontractors, suppliers, and general contractors, the system reads as direct, pragmatic, and trustworthy.
Roboto Regular · 16px / 24px
Small 14 / 400 — Used in dense data regions and footnotes.
Roboto Regular · 14px / 20px

Spacing

4px base unit; the scale is multiplicative and used consistently for padding, gap, and vertical rhythm.

TokenValueTypical use
xxs4pxIcon / text baseline gaps
xs8pxTight inline gaps
sm12pxForm field internal padding
md16pxCard/body vertical rhythm
lg20pxSection sub-gaps
xl24pxCard padding
2xl32pxComponent margin
3xl48pxBetween content blocks
4xl64pxMobile section padding
5xl96pxDesktop section padding

Border Radius

Squared to lightly rounded. The 2px base (buttons, inputs) is the system's signature — it gives the brand its industrial, unembellished feel.

TokenValueApplied to
xs2pxButtons, inputs, chips
sm4pxCards, surface panels
md8pxModals, larger surfaces
pill999pxStatus pills only

Shadows

TokenValue
xs0 1px 2px rgba(17,17,17,0.06)
sm0 2px 4px rgba(17,17,17,0.08)
md0 6px 12px rgba(17,17,17,0.08)
card0 4px 10px rgba(211,203,203,0.2)
nav0 2px 8px rgba(0,0,0,0.06)

Buttons

Two-pixel borders on solid + outline variants give buttons their squared, durable feel. Padding is 10px 24px on the marketing site, 8px 27px in the portal.

VariantBackgroundColorBorderRadius
Primary#1863DC#FFFFFF2px solid #1863DC2px
Secondarytransparent#1863DC2px solid #1863DC2px
Ghosttransparent#1863DCnone-

Inputs

Cards

Material Credit Line

Cover 100% of material costs with extended payment terms — no upfront capital needed.

Tailwind Reference (Website)

The paired JSON file ships a ready-to-consume tailwind.theme.extend block plus componentRecipes. Paste the extend object into tailwind.config.js under theme.extend, or import the JSON directly in a modern build. When a recipe exists, use it verbatim instead of ad-hoc utility strings.

How to consume

// tailwind.config.js
import tokens from './design-system-website.json' assert { type: 'json' };

export default {
  content: ['./src/**/*.{html,ts,tsx,vue}'],
  theme: {
    extend: tokens.tailwind.theme.extend,
  },
};

Exported theme.extend highlights

ScaleKeys
colorsbrand.*, accent, text.*, surface.*, border.*, status.*
fontFamilysans: ['Roboto', 'system-ui', 'sans-serif']
fontSizehero, h1h3, body, small, label, caption
spacingxxs 4 / xs 8 / sm 12 / md 16 / lg 20 / xl 24 / 2xl 32 / 3xl 48 / 4xl 64 / 5xl 96
borderRadiusxs 2px / sm 4px / md 8px / pill
boxShadowxs, sm, md, card, nav, focus
screenssm 600 / md 900 / lg 1200

Component recipes

RecipeUtility pattern
buttonPrimaryinline-flex items-center justify-center rounded-xs bg-brand-primary text-text-inverse border-2 border-brand-primary px-6 py-2.5 text-small font-medium hover:bg-brand-hover hover:border-brand-hover transition-colors
buttonSecondaryinline-flex items-center justify-center rounded-xs bg-transparent text-brand-primary border-2 border-brand-primary px-6 py-2.5 text-small font-medium hover:bg-brand-primary hover:text-text-inverse transition-colors
surfaceCardrounded-sm bg-surface-base border border-border-hairline shadow-card p-xl
inputFieldrounded-xs border border-border-soft bg-surface-base px-3 py-2.5 text-small text-text-primary focus:outline-none focus:border-brand-primary focus:ring-2 focus:ring-brand-primary/15
navbarLinktext-text-primary text-small font-medium hover:text-brand-primary transition-colors

Overview

The portal keeps the brand blue but switches the shell from white to a cool off-white (#F1F5F8) so content cards can elevate on a quiet canvas. Typography shifts to 15px body and tighter slate text (#101828 / #2C3E50). Scope documented here is the authentication surface — deeper dashboards sit behind login and were not crawlable.

App Colors

Surfaces

App Shell
#F1F5F8
Surface
#FFFFFF
Surface Alt
#F6F7FA

Text

Primary / Label
#101828
Body
#2C3E50
Muted
#667085

Borders & States

Input Border
#D0D5DD
Hairline
#EAECF0
Focus
#1863DC

App Typography

Log in
Roboto Semibold · 36px / 44px / 600 · page title
Section title
Roboto Semibold · 24px / 32px
Field label
Roboto Medium · 14px / 20px
Body text. Used for descriptive copy inside authentication and settings surfaces.
Roboto Regular · 15px / 24px
Helper / hint text under form fields.
Roboto Regular · 13px / 18px

Form Fields

Log in

ElementSpec
Input background#FFFFFF
Input border1px solid #D0D5DD
Input radius2px
Input padding10px 14px
Input focusborder #1863DC, shadow 0 0 0 3px rgba(24,99,220,0.15)
Label14px / 500 / #101828

Auth Card / Surface

TokenValue
Background#FFFFFF
Radius8px
Padding32px 40px
Max width440px
Shadow0 10px 24px rgba(16,24,40,0.08)

App Buttons

Identical chrome to the marketing system — primary blue solid, 2px border, 2px radius. Portal padding is slightly tighter (8px 27px) to match dense form rhythm.

Tailwind Reference (App / Portal)

The paired JSON file ships a ready-to-consume tailwind.theme.extend block plus componentRecipes. Paste the extend object into tailwind.config.js under theme.extend, or import the JSON directly in a modern build. When a recipe exists, use it verbatim instead of ad-hoc utility strings.

How to consume

// tailwind.config.js
import tokens from './design-system-app.json' assert { type: 'json' };

export default {
  content: ['./src/**/*.{html,ts,tsx,vue}'],
  theme: {
    extend: tokens.tailwind.theme.extend,
  },
};

Exported theme.extend highlights

ScaleKeys
colorsbrand.*, accent, text.*, surface.*, border.*, status.*
fontFamilysans: ['Roboto', 'system-ui', 'sans-serif']
fontSizehero, h1h3, body, small, label, caption
spacingxxs 4 / xs 8 / sm 12 / md 16 / lg 20 / xl 24 / 2xl 32 / 3xl 48 / 4xl 64 / 5xl 96
borderRadiusxs 2px / sm 4px / md 8px / pill
boxShadowxs, sm, md, card, nav, focus
screenssm 600 / md 900 / lg 1200

Component recipes

RecipeUtility pattern
buttonPrimaryinline-flex items-center justify-center rounded-xs bg-brand text-white border-2 border-brand px-[27px] py-2 text-label font-medium hover:bg-brand-hover transition-colors
buttonSecondaryinline-flex items-center justify-center rounded-xs bg-transparent text-brand border-2 border-brand px-[27px] py-2 text-label font-medium hover:bg-brand hover:text-white transition-colors
inputFieldw-full rounded-xs border border-border-input bg-surface-base px-3.5 py-2.5 text-body text-text-primary placeholder:text-text-muted focus:outline-none focus:border-brand focus:ring-3 focus:ring-brand/15
authCardrounded-md bg-surface-base p-8 max-w-[440px] shadow-card
appShellmin-h-screen bg-surface-app p-2xl

Tailwind Reference (Combined)

The combined JSON exposes one tailwind.theme.extend that covers both surfaces. Per-surface CSS variables are prefixed in componentRecipes (website* vs app*). When a build only targets one surface, prefer that surface's dedicated design-system-website.json or design-system-app.json.

How to consume

import tokens from './design-system.json' assert { type: 'json' };
export default { theme: { extend: tokens.tailwind.theme.extend } };

Component recipes (by scope)

ScopeRecipeUtilities
WebsitewebsiteButtonPrimaryinline-flex items-center justify-center rounded-xs bg-brand text-text-inverse border-2 border-brand px-6 py-2.5 text-small font-medium hover:bg-brand-hover hover:border-brand-hover transition-colors
WebsitewebsiteCardrounded-sm bg-surface-base border border-border-hairline shadow-card p-xl
WebsitewebsiteInputrounded-xs border border-border-soft bg-surface-base px-3 py-2.5 text-small text-text-primary focus:outline-none focus:border-brand focus:ring-2 focus:ring-brand/15
App / PortalappButtonPrimaryinline-flex items-center justify-center rounded-xs bg-brand text-white border-2 border-brand px-[27px] py-2 text-label font-medium hover:bg-brand-hover transition-colors
App / PortalappAuthCardrounded-md bg-surface-base p-8 max-w-[440px] shadow-app-card
App / PortalappShellmin-h-screen bg-surface-app
App / PortalappInputw-full rounded-xs border border-border-input bg-surface-base px-3.5 py-2.5 text-body text-text-appPrimary placeholder:text-text-muted focus:outline-none focus:border-brand focus:shadow-focus
App / PortalappFieldLabelblock text-label font-medium text-text-appPrimary mb-1.5