DesignMD Maker logo ← Home Report · Code analysis
O
Design System

OLMO - Startup, SaaS, Software & Mobile App Tailwind CSS Template

Design system extracted from https://dsathemes.com/html/olmo_tlwd/index.html on 2026-07-20 (code-based analysis).

Source · https://dsathemes.com/html/olmo_tlwd/index.html Engine · Code analysis Created · Jul 20, 2026 23:16 Cost · $0.0000
Detected Language

Design Style

technical / mono accents
monospace font in use
Palette

Colors

primary
#0D6EFD
4.5 on white · 4.67 on black · 216° 98% 52%
secondary
#000000
21 on white · 1 on black · 0° 0% 0%
accent
#DC3545
4.53 on white · 4.64 on black · 354° 70% 54%
Token Roles 13 tokens
background
#FFFFFF · 21:1 vs black
text-primary
#212529 · 15.43:1 vs white
surface
#F8F9FA · 19.92:1 vs black
text-secondary
#DEE2E6 · 16.13:1 vs black
border
#343A40 · 11.51:1 vs white
on-primary
#FFFFFF · 21:1 vs black
on-secondary
#FFFFFF · 21:1 vs black
on-accent
#FFFFFF · 21:1 vs black
surface-container-lowest
#FFFFFF · 21:1 vs black
surface-container-low
#F8F9FA · 19.92:1 vs black
surface-container
#E9ECEF · 17.71:1 vs black
surface-container-high
#E2E3E5 · 16.35:1 vs black
surface-container-highest
#DEE2E6 · 16.13:1 vs black
Detected Palette 24 colors by frequency in source CSS
#FFFFFF
used 25× · 0° 0% 100%
#000000
used 13× · 0° 0% 0%
#DEE2E6
used 7× · 210° 14% 89%
#212529
used 7× · 210° 11% 15%
#0D6EFD
used 5× · 216° 98% 52%
#343A40
used 5× · 210° 10% 23%
#495057
used 5× · 210° 9% 31%
#DC3545
used 4× · 354° 70% 54%
#198754
used 4× · 152° 69% 31%
#6C757D
used 4× · 208° 7% 46%
#F8F9FA
used 4× · 210° 17% 98%
#1D293F
used 4× · 219° 37% 18%
#606060
used 4× · 0° 0% 38%
#E9ECEF
used 3× · 210° 16% 93%
#75B798
used 3× · 152° 31% 59%
#EA868F
used 3× · 355° 70% 72%
#FF523D
used 3× · 6° 100% 62%
#323232
used 3× · 0° 0% 20%
#D63384
used 2× · 330° 67% 52%
#FFC107
used 2× · 45° 100% 51%
#0DCAF0
used 2× · 190° 90% 50%
#CED4DA
used 2× · 210° 14% 83%
#ADB5BD
used 2× · 210° 11% 71%
#664D03
used 2× · 45° 94% 21%
Surface Treatments

Gradients

linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))
Type System

Typography

display
inherit
192px · 300 · LH 1 · LS -16px
OLMO - Startup, SaaS, Software & Mobile App Tailwind CSS Template
headline-lg
inherit
37.6px · 300 · LH 1 · LS -16px
OLMO - Startup, SaaS, Software & Mobile App Tailwind CSS Template
headline-md
inherit
24px · 300 · LH 1 · LS -16px
OLMO - Startup, SaaS, Software & Mobile App Tailwind CSS Template
title-lg
inherit
21.6px · 300 · LH 1.4
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
body-lg
inherit
18.4px · 300 · LH 1.5
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
body-md
inherit
16.8px · 300 · LH 1.5
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-md
inherit
14px · 300 · LH 1.4 · LS 0.5px
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
Detected Font Stacks
'Rubik'var(--bs-font-sans-serif)var(--bs-body-font-family)var(--bs-font-monospace)inheritvar(--bs-btn-font-family)'Rubik', 'Helvetica Neue', Helvetica, Arial, sans-serif
Structure

Layout

Container
Section padding: · card padding:
Grid
12-column reference grid · gap
Spacing Scale
xs
3px
sm
8px
md
16px
lg
40px
detected
.1875em
detected
.1875rem
detected
5px
detected
0.5rem
detected
.5rem
detected
10px
detected
14px
detected
1rem
detected
16px
detected
20px
Breakpoints
576px768px991px992px1162px1199.95px1200px1400px
Depth

Elevation & Depth

level 1
0 2px 3px rgba(96, 96, 96, .1)
level 2
0 0 2px rgba(50, 50, 50, 0.4)
level 3
0px 5px 10px 0 rgba(10, 10, 10, .05)
level 4
0 0.5rem 1rem rgba(0, 0, 0, 0.15)
level 5
inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075)
Geometry

Shapes

sm
4px
pill
50%
r3
0.375rem
r4
.25rem
Tokens in Context

Components

card
background{colors.surface}
border1px solid {colors.border}
radius4px
boxShadow{elevation.md}
button-primary
background{colors.primary}
radius50%
Animation

Motion

Keyframes 18 found
@keyframes progress-bar-stripes
0%{background-position-x:var(--bs-progress-height)}
@keyframes spinner-border
to{transform:rotate(360deg)}
@keyframes spinner-grow
0%{transform:scale(0)}50%{opacity:1;transform:none}
@keyframes placeholder-glow
50%{opacity:.2}
@keyframes placeholder-wave
100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}
@keyframes flash
from, 50%, to { opacity: 1; } 25%, 75% { opacity: 0; }
@keyframes rubberBand
from { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 30% { -webkit-transform: scale3d(1.25, 0.75, 1); transform: scale3d(1.25, 0.75, 1); } 40% { -webkit-transform: scale3d(0.75, 1.25, 1); transform: scale3d(0.75, 1.25, 1); } 50% { -webkit-transform: scale3d(1.15, 0.85, 1); transform: scale3d(1.15, 0.85, 1); } 65% { -webkit-transform: scale3d(0.95, 1.05, 1); transform: scale3d(0.95, 1.05, 1); } 75% { -webkit-transform: scale3d(1.05, 0.95, 1); transform: scale3d(1.05, 0.95, 1
@keyframes shakeX
from, to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); }
@keyframes shakeY
from, to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); }
Applied Animations
loading-center-absolute 1s infiniteobject_one 1s infiniteobject_two 1s infiniteobject_three 1s infiniteobject_four 1s infinite
Easing Curves
cubic-bezier(0.215, 0.61, 0.355, 1) cubic-bezier(0.755, 0.05, 0.855, 0.06) ease-out ease-in ease-in-out cubic-bezier(0.55, 0.055, 0.675, 0.19)
Transitions
color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-outnoneopacity .15s linearwidth 0.6s easetransform 0.3s ease-in-outvar(--bs-offcanvas-transition)all 450ms ease-in-outall 0.25s ease-in-out
Proof

Live Preview

Complete Reference

Full design.md Specification

Design Specification — OLMO - Startup, SaaS, Software & Mobile App Tailwind CSS Template

FieldValue
Site / Projecthttps://dsathemes.com/html/olmo_tlwd/index.html
Analyzed on2026-07-20
Analysis modeAutomated code extraction (no AI)

Overview

This design system was extracted programmatically from the source page. It is built on a light canvas (#FFFFFF), ink text (#212529), a vivid accent (#DC3545). All type is set in 'Rubik'. Detected font weights: 300, 400, 500, 700, 900. Detected style signatures: technical / mono accents.

Logo asset(s): https://dsathemes.com/html/olmo_tlwd/assests/images/logo.webp

Color System

Detected palette (by frequency)

HexRGBHSLCount
#FFFFFF255, 255, 2550° 0% 100%25
#0000000, 0, 00° 0% 0%13
#DEE2E6222, 226, 230210° 14% 89%7
#21252933, 37, 41210° 11% 15%7
#0D6EFD13, 110, 253216° 98% 52%5
#343A4052, 58, 64210° 10% 23%5
#49505773, 80, 87210° 9% 31%5
#DC3545220, 53, 69354° 70% 54%4
#19875425, 135, 84152° 69% 31%4
#6C757D108, 117, 125208° 7% 46%4
#F8F9FA248, 249, 250210° 17% 98%4
#1D293F29, 41, 63219° 37% 18%4
#60606096, 96, 960° 0% 38%4
#E9ECEF233, 236, 239210° 16% 93%3
#75B798117, 183, 152152° 31% 59%3
#EA868F234, 134, 143355° 70% 72%3
#FF523D255, 82, 616° 100% 62%3
#32323250, 50, 500° 0% 20%3
#D63384214, 51, 132330° 67% 52%2
#FFC107255, 193, 745° 100% 51%2

Assigned roles

Roles are taken from the page's own semantic CSS custom properties when present, otherwise inferred from usage frequency + luminance/saturation.

TokenHexRGBHSL
--color-background#FFFFFF255, 255, 2550° 0% 100%
--color-text-primary#21252933, 37, 41210° 11% 15%
--color-primary#0D6EFD13, 110, 253216° 98% 52%
--color-accent#DC3545220, 53, 69354° 70% 54%
--color-surface#F8F9FA248, 249, 250210° 17% 98%
--color-secondary#0000000, 0, 00° 0% 0%
--color-text-secondary#DEE2E6222, 226, 230210° 14% 89%
--color-border#343A4052, 58, 64210° 10% 23%
--color-on-primary#FFFFFF255, 255, 2550° 0% 100%
--color-on-secondary#FFFFFF255, 255, 2550° 0% 100%
--color-on-accent#FFFFFF255, 255, 2550° 0% 100%

Surface ramp (derived from detected light neutrals)

TokenHex
--color-surface-container-lowest#FFFFFF
--color-surface-container-low#F8F9FA
--color-surface-container#E9ECEF
--color-surface-container-high#E2E3E5
--color-surface-container-highest#DEE2E6

Gradients

  • linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))

Typography

Primary typeface: Rubik — stack: 'Rubik'

Font stacks (most used first)

  • 'Rubik'
  • var(--bs-font-sans-serif)
  • var(--bs-body-font-family)
  • var(--bs-font-monospace)
  • inherit
  • ``
  • var(--bs-btn-font-family)
  • 'Rubik', 'Helvetica Neue', Helvetica, Arial, sans-serif
  • 'Rubik', sans-serif
  • "Google Sans", Helvetica, Arial, sans-serif

Web font sources

  • fonts.googleapis.com/css2?family=Rubik:wght@300;400;500;700&display=swap

Derived type scale

TokenSize
display192px
headline-lg37.6px
headline-md24px
title-lg21.6px
body-lg18.4px
body-md16.8px
label-md14px

Font sizes (by frequency)

SizeCount
1.1rem16
1.5rem8
1rem7
15rem6
1.15rem5
3rem5
1.0625rem5
.875em4
1.35rem4
2rem3
1.05rem3
1.2rem3
2.75rem3
2.35rem3
1em2
0.875rem2
3.65rem2
1.1875rem2
3.75rem2
12rem2

Weights in use: 300, 400, 500, 700, 900

Line heights (by frequency)

ValueCount
1.56
15
1.62
1.21
01
70px1
1.31

Letter spacing (by frequency)

ValueCount
-16px7
-12px2
-9px2
-0.75px1
0.5px1
-20px1
01

Spacing

Derived spacing scale

TokenValue
xs3px
sm8px
md16px
lg40px

Raw values (by frequency)

ValueCount
1rem3
14px3
40px3
0.5rem2
20px2
.1875em1
.1875rem1
.5rem1
1.75rem1
16px1
10px1
5px1

Borders & Radius

Derived radius tokens

TokenValue
sm4px
pill50%

Raw values (resolved, by frequency)

RadiusCount
50% 50% 50% 50%3
02
0.375rem1
.25rem1

Shadows

Derived elevation

TokenValue
sm0 2px 3px rgba(96, 96, 96, .1)
mdinset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075)
lg0px 5px 10px 0 rgba(10, 10, 10, .05)

All detected shadows

  • 0 2px 3px rgba(96, 96, 96, .1)
  • 0 0 2px rgba(50, 50, 50, 0.4)
  • 0px 5px 10px 0 rgba(10, 10, 10, .05)
  • 0 0.5rem 1rem rgba(0, 0, 0, 0.15)
  • inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075)
  • 0 0 0 0.25rem rgba(, .5)

Layout

Container max-width: 1140px

Breakpoints

  • 576px
  • 768px
  • 991px
  • 992px
  • 1162px
  • 1199.95px
  • 1200px
  • 1400px

Animation & Motion

Transitions

  • color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out
  • none
  • opacity .15s linear
  • width 0.6s ease
  • transform 0.3s ease-in-out
  • all 450ms ease-in-out
  • all 0.25s ease-in-out
  • all 300ms ease-in-out
  • all 400ms ease-in-out

Easing curves

  • cubic-bezier(0.215, 0.61, 0.355, 1)
  • cubic-bezier(0.755, 0.05, 0.855, 0.06)
  • cubic-bezier(0.215, 0.61, 0.355, 1)
  • ease-out
  • ease-in
  • ease-in-out
  • cubic-bezier(0.55, 0.055, 0.675, 0.19)
  • cubic-bezier(0.175, 0.885, 0.32, 1)

Keyframes

@keyframes progress-bar-stripes { 0%{background-position-x:var(--bs-progress-height)} }
@keyframes spinner-border { to{transform:rotate(360deg)} }
@keyframes spinner-grow { 0%{transform:scale(0)}50%{opacity:1;transform:none} }
@keyframes placeholder-glow { 50%{opacity:.2} }
@keyframes placeholder-wave { 100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%} }
@keyframes flash { from, 50%, to { opacity: 1; } 25%, 75% { opacity: 0; } }
@keyframes rubberBand { from { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 30% { -webkit-transform: scale3d(1.25, 0.75, 1); transform: scale3d(1.25, 0.75, 1); } 40% { -webkit-transform: scale3d(0.75, 1.25, 1); transform: scale3d(0.75, 1.25, 1); } 50% { -webkit-transform: scale3d(1.15, 0.85, 1); transform: scale3d(1.15, 0.85, 1); } 65% { -webkit-transform: scale3d(0.95, 1.05, 1); transform: scale3d(0.95, 1.05, 1); } 75% { -webkit-transform: scale3d(1.05, 0.95, 1); transform: scale3d(1.05, 0.95, 1 }
@keyframes shakeX { from, to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } }
@keyframes shakeY { from, to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } }
@keyframes headShake { 0% { -webkit-transform: translateX(0); transform: translateX(0); } 6.5% { -webkit-transform: translateX(-6px) rotateY(-9deg); transform: translateX(-6px) rotateY(-9deg); } 18.5% { -webkit-transform: translateX(5px) rotateY(7deg); transform: translateX(5px) rotateY(7deg); } 31.5% { -webkit-transform: translateX(-3px) rotateY(-5deg); transform: translateX(-3px) rotateY(-5deg); } 43.5% { -webkit-transform: translateX(2px) rotateY(3deg); transform: translateX(2px) rotateY(3deg); } 50% { -webkit-tran }
@keyframes swing { 20% { -webkit-transform: rotate3d(0, 0, 1, 15deg); transform: rotate3d(0, 0, 1, 15deg); } 40% { -webkit-transform: rotate3d(0, 0, 1, -10deg); transform: rotate3d(0, 0, 1, -10deg); } 60% { -webkit-transform: rotate3d(0, 0, 1, 5deg); transform: rotate3d(0, 0, 1, 5deg); } 80% { -webkit-transform: rotate3d(0, 0, 1, -5deg); transform: rotate3d(0, 0, 1, -5deg); } to { -webkit-transform: rotate3d(0, 0, 1, 0deg); transform: rotate3d(0, 0, 1, 0deg); } }
@keyframes tada { from { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 10%, 20% { -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); } 40%, 60%, 80% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, }
@keyframes jello { from, 11.1%, to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 22.2% { -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); transform: skewX(-12.5deg) skewY(-12.5deg); } 33.3% { -webkit-transform: skewX(6.25deg) skewY(6.25deg); transform: skewX(6.25deg) skewY(6.25deg); } 44.4% { -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); transform: skewX(-3.125deg) skewY(-3.125deg); } 55.5% { -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); transform: skewX(1.5625deg }
@keyframes heartBeat { 0% { -webkit-transform: scale(1); transform: scale(1); } 14% { -webkit-transform: scale(1.3); transform: scale(1.3); } 28% { -webkit-transform: scale(1); transform: scale(1); } 42% { -webkit-transform: scale(1.3); transform: scale(1.3); } 70% { -webkit-transform: scale(1); transform: scale(1); } }
@keyframes backInLeft { 0% { -webkit-transform: translateX(-2000px) scale(0.7); transform: translateX(-2000px) scale(0.7); opacity: 0.7; } 80% { -webkit-transform: translateX(0px) scale(0.7); transform: translateX(0px) scale(0.7); opacity: 0.7; } 100% { -webkit-transform: scale(1); transform: scale(1); opacity: 1; } }
@keyframes backInRight { 0% { -webkit-transform: translateX(2000px) scale(0.7); transform: translateX(2000px) scale(0.7); opacity: 0.7; } 80% { -webkit-transform: translateX(0px) scale(0.7); transform: translateX(0px) scale(0.7); opacity: 0.7; } 100% { -webkit-transform: scale(1); transform: scale(1); opacity: 1; } }
@keyframes backInUp { 0% { -webkit-transform: translateY(1200px) scale(0.7); transform: translateY(1200px) scale(0.7); opacity: 0.7; } 80% { -webkit-transform: translateY(0px) scale(0.7); transform: translateY(0px) scale(0.7); opacity: 0.7; } 100% { -webkit-transform: scale(1); transform: scale(1); opacity: 1; } }
@keyframes backOutLeft { 0% { -webkit-transform: scale(1); transform: scale(1); opacity: 1; } 20% { -webkit-transform: translateX(0px) scale(0.7); transform: translateX(0px) scale(0.7); opacity: 0.7; } 100% { -webkit-transform: translateX(-2000px) scale(0.7); transform: translateX(-2000px) scale(0.7); opacity: 0.7; } }

Animations

  • loading-center-absolute 1s infinite
  • object_one 1s infinite
  • object_two 1s infinite
  • object_three 1s infinite
  • object_four 1s infinite

CTA labels found on page

  • Check Demos
  • See OLMO In Action
  • Purchase Now

Source Design Tokens (CSS custom properties)

:root {
  --bs-blue: #0d6efd;
  --bs-indigo: #6610f2;
  --bs-purple: #6f42c1;
  --bs-pink: #d63384;
  --bs-red: #dc3545;
  --bs-orange: #fd7e14;
  --bs-yellow: #ffc107;
  --bs-green: #198754;
  --bs-teal: #20c997;
  --bs-cyan: #0dcaf0;
  --bs-black: #000;
  --bs-white: #fff;
  --bs-gray: #6c757d;
  --bs-gray-dark: #343a40;
  --bs-gray-100: #f8f9fa;
  --bs-gray-200: #e9ecef;
  --bs-gray-300: #dee2e6;
  --bs-gray-400: #ced4da;
  --bs-gray-500: #adb5bd;
  --bs-gray-600: #6c757d;
  --bs-gray-700: #495057;
  --bs-gray-800: #343a40;
  --bs-gray-900: #212529;
  --bs-primary: #0d6efd;
  --bs-secondary: #6c757d;
  --bs-success: #198754;
  --bs-info: #0dcaf0;
  --bs-warning: #ffc107;
  --bs-danger: #dc3545;
  --bs-light: #f8f9fa;
  --bs-dark: #212529;
  --bs-primary-rgb: 13,110,253;
  --bs-secondary-rgb: 108,117,125;
  --bs-success-rgb: 25,135,84;
  --bs-info-rgb: 13,202,240;
  --bs-warning-rgb: 255,193,7;
  --bs-danger-rgb: 220,53,69;
  --bs-light-rgb: 248,249,250;
  --bs-dark-rgb: 33,37,41;
  --bs-primary-text-emphasis: #052c65;
  --bs-secondary-text-emphasis: #2b2f32;
  --bs-success-text-emphasis: #0a3622;
  --bs-info-text-emphasis: #055160;
  --bs-warning-text-emphasis: #664d03;
  --bs-danger-text-emphasis: #58151c;
  --bs-light-text-emphasis: #495057;
  --bs-dark-text-emphasis: #495057;
  --bs-primary-bg-subtle: #cfe2ff;
  --bs-secondary-bg-subtle: #e2e3e5;
  --bs-success-bg-subtle: #d1e7dd;
  --bs-info-bg-subtle: #cff4fc;
  --bs-warning-bg-subtle: #fff3cd;
  --bs-danger-bg-subtle: #f8d7da;
  --bs-light-bg-subtle: #fcfcfd;
  --bs-dark-bg-subtle: #ced4da;
  --bs-primary-border-subtle: #9ec5fe;
  --bs-secondary-border-subtle: #c4c8cb;
  --bs-success-border-subtle: #a3cfbb;
  --bs-info-border-subtle: #9eeaf9;
  --bs-warning-border-subtle: #ffe69c;
}

Do's and Don'ts

Do

  • Do reserve the accent #DC3545 for interactive highlights and key moments — it is used sparingly on the source page.
  • Do keep the canvas at #FFFFFF; surfaces should stay within the detected neutral ramp.
  • Do stick to the detected font weight(s): 300, 400, 500, 700, 900.

Don't

  • Don't introduce colors outside the detected palette — every hue above was found in the source.

Design Tokens (copy-paste)

:root {
  --color-background: #FFFFFF;
  --color-text-primary: #212529;
  --color-primary: #0D6EFD;
  --color-accent: #DC3545;
  --color-surface: #F8F9FA;
  --color-secondary: #000000;
  --color-text-secondary: #DEE2E6;
  --color-border: #343A40;
  --color-on-primary: #FFFFFF;
  --color-on-secondary: #FFFFFF;
  --color-on-accent: #FFFFFF;
  --color-surface-container-lowest: #FFFFFF;
  --color-surface-container-low: #F8F9FA;
  --color-surface-container: #E9ECEF;
  --color-surface-container-high: #E2E3E5;
  --color-surface-container-highest: #DEE2E6;
  --font-sans: 'Rubik';
  --font-size-display: 192px;
  --font-size-headline-lg: 37.6px;
  --font-size-headline-md: 24px;
  --font-size-title-lg: 21.6px;
  --font-size-body-lg: 18.4px;
  --font-size-body-md: 16.8px;
  --font-size-label-md: 14px;
  --radius-sm: 4px;
  --radius-pill: 50%;
  --shadow-sm: 0 2px 3px rgba(96, 96, 96, .1);
  --shadow-md: inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);
  --shadow-lg: 0px 5px 10px 0 rgba(10, 10, 10, .05);
  --space-xs: 3px;
  --space-sm: 8px;
  --space-md: 16px;
  --space-lg: 40px;
  --tracking-display: -16px;
  --tracking-label: 0.5px;
  --container-max: 1140px;
}