DesignMD Maker
← Home Report · Code analysis
F
Design System

FriedhatsOS

Design system extracted from https://friedhats.com on 2026-10-30 (code-based analysis).

Source · https://friedhats.com Engine · Code analysis Created · Oct 30, 2026 12:15 Cost · $0.0000
Detected Language

Design Style

technical / mono accents
monospace font in use
Palette

Colors

primary
#0F172A
17.85 on white · 1.18 on black · 222° 47% 11%
accent
#F1F5F9
1.1 on white · 19.17 on black · 210° 40% 96%
Token Roles 11 tokens
background
#FFFFFF · 21:1 vs black
surface
#FFFFFF · 21:1 vs black
text-primary
#020817 · 20.01:1 vs white
text-secondary
#64748B · 4.76:1 vs white
border
#E2E8F0 · 17.03:1 vs black
on-primary
#FFFFFF · 21:1 vs black
on-secondary
#FFFFFF · 21:1 vs black
on-accent
#020817 · 20.01:1 vs white
surface-container-lowest
#FFFFFF · 21:1 vs black
surface-container-low
#E5E7EB · 16.96:1 vs black
surface-container
#DDDDDD · 15.46:1 vs black
Detected Palette 7 colors by frequency in source CSS
#000000
used 27× · 0° 0% 0%
#FFFFFF
used 5× · 0° 0% 100%
#9CA3AF
used 3× · 218° 11% 65%
#DDDDDD
used 1× · 0° 0% 87%
#3B82F6
used 1× · 217° 91% 60%
#E5E7EB
used 1× · 220° 13% 91%
#007AFF
used 1× · 211° 100% 50%
Type System

Typography

display
inherit
60px · 100 · LH 1.25
FriedhatsOS
headline-lg
inherit
36px · 100 · LH 1.25
FriedhatsOS
headline-md
inherit
30px · 100 · LH 1.25
FriedhatsOS
title-lg
inherit
20px · 100 · 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
18px · 100 · LH 1.4
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
body-md
inherit
16px · 100 · LH 1.4
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-md
inherit
14px · 100 · LH 1.4 · LS .04em
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-sm
inherit
12px · 100 · LH 1.4 · LS .04em
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
Detected Font Stacks
Handjet VariableUbuntu MonoArchivo Blackmonospaceui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emojiui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospaceinheritUbuntu Mono,system-ui,monospace
Structure

Layout

Container
Section padding: — · card padding: —
Grid
12-column reference grid · gap —
Spacing Scale
unit
8px
xs
4px
sm
8px
md
16px
lg
32px
detected
.25rem
detected
.5rem
detected
9px
detected
15px
detected
1rem
detected
1.5rem
detected
2rem
detected
2.5rem
Depth

Elevation & Depth

level 1
0 0 50px #0000004d
level 2
0 0 1px #ffffff80
Geometry

Shapes

sm
4px
md
8px
pill
9999px
r4
50%
Tokens in Context

Components

button-secondary
fontSize20px
fontWeight700
border1px solid #000000
button-primary
fontWeight700
textTransformuppercase
letterSpacing0.05em
padding0 16px
border1px solid #000000
card
background{colors.surface}
border1px solid {colors.border}
radius8px
boxShadow{elevation.md}
Animation

Motion

Keyframes 5 found
@keyframes sticker-wiggle
0%{transform:rotate(0)}4%{transform:rotate(-5deg)}8%{transform:rotate(5deg)}12%{transform:rotate(-3deg)}16%,to{transform:rotate(0)}
@keyframes enter
0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}
@keyframes exit
to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}
@keyframes fall
0%{transform:translateY(0)}to{transform:translateY(calc(120vh + 50px))}
@keyframes swiper-preloader-spin
0%{transform:rotate(0)}to{transform:rotate(360deg)}
Easing Curves
cubic-bezier(.4,0,.2,1)var(--swiper-wrapper-transition-timing-function,initial)
Transitions
transform .2s ease-in-outopacity .4sbackground-color .3stransform .3s
Proof

Live Preview

Complete Reference

Full design.md Specification

Design Specification — FriedhatsOS

FieldValue
Site / Projecthttps://friedhats.com
Analyzed on2026-10-30
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 (#020817), a vivid accent (#F1F5F9). All type is set in Handjet Variable. Detected font weights: 100, 400, 600, 700. Detected style signatures: technical / mono accents.

Logo asset(s): https://cdn.shopify.com/oxygen-v2/30330/23834/49449/4217598/assets/logo-Dw6-IS-9.jpg · https://cdn.shopify.com/oxygen-v2/30330/23834/49449/4217598/assets/character-border-2-C3YyQsRn.png

Color System

Detected palette (by frequency)

HexRGBHSLCount
#0000000, 0, 00° 0% 0%27
#FFFFFF255, 255, 2550° 0% 100%5
#9CA3AF156, 163, 175218° 11% 65%3
#DDDDDD221, 221, 2210° 0% 87%1
#3B82F659, 130, 246217° 91% 60%1
#E5E7EB229, 231, 235220° 13% 91%1
#007AFF0, 122, 255211° 100% 50%1

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-surface#FFFFFF255, 255, 2550° 0% 100%
--color-text-primary#0208172, 8, 23223° 84% 5%
--color-text-secondary#64748B100, 116, 139215° 16% 47%
--color-border#E2E8F0226, 232, 240214° 32% 91%
--color-primary#0F172A15, 23, 42222° 47% 11%
--color-secondary#0F172A15, 23, 42222° 47% 11%
--color-accent#F1F5F9241, 245, 249210° 40% 96%
--color-on-primary#FFFFFF255, 255, 2550° 0% 100%
--color-on-secondary#FFFFFF255, 255, 2550° 0% 100%
--color-on-accent#0208172, 8, 23223° 84% 5%

Surface ramp (derived from detected light neutrals)

TokenHex
--color-surface-container-lowest#FFFFFF
--color-surface-container-low#E5E7EB
--color-surface-container#DDDDDD

Typography

Primary typeface: Handjet Variable — stack: Handjet Variable

Font stacks (most used first)

  • Handjet Variable
  • Ubuntu Mono
  • Archivo Black
  • monospace
  • ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji
  • ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace
  • inherit
  • Ubuntu Mono,system-ui,monospace
  • Ubuntu Mono,monospace
  • Archivo Black,sans-serif

Derived type scale

TokenSize
display60px
headline-lg36px
headline-md30px
title-lg20px
body-lg18px
body-md16px
label-md14px
label-sm12px

Font sizes (by frequency)

SizeCount
1rem2
1.875rem2
1.25rem2
1.6rem1
1.2rem1
1em1
2.25rem1
1.125rem1
.875rem1
.75rem1
1.5rem1
3.75rem1

Weights in use: 100, 400, 600, 700

Line heights (by frequency)

ValueCount
1.43
1.75rem3
1.52
2.25rem2
01
2.5rem1
1.25rem1
1rem1
1.251
2rem1

Letter spacing (by frequency)

ValueCount
.04em1
.05em1

Spacing

Derived spacing scale

TokenValue
unit8px
xs4px
sm8px
md16px
lg32px

Raw values (by frequency)

ValueCount
1rem3
2rem2
.5rem2
.25rem1
15px1
2.5rem1
1.5rem1
9px1

Borders & Radius

Derived radius tokens

TokenValue
sm4px
md8px
pill9999px

Raw values (resolved, by frequency)

RadiusCount
.5rem3
4px2
9999px1
50%1

Shadows

Derived elevation

TokenValue
sm0 0 50px #0000004d
md0 0 1px #ffffff80

All detected shadows

  • 0 0 50px #0000004d
  • 0 0 1px #ffffff80

Animation & Motion

Transitions

  • transform .2s ease-in-out
  • opacity .4s
  • background-color .3s
  • transform .3s

Easing curves

  • cubic-bezier(.4,0,.2,1)
  • cubic-bezier(.4,0,.2,1)
  • var(--swiper-wrapper-transition-timing-function,initial)

Keyframes

@keyframes sticker-wiggle { 0%{transform:rotate(0)}4%{transform:rotate(-5deg)}8%{transform:rotate(5deg)}12%{transform:rotate(-3deg)}16%,to{transform:rotate(0)} }
@keyframes enter { 0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))} }
@keyframes exit { to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))} }
@keyframes fall { 0%{transform:translateY(0)}to{transform:translateY(calc(120vh + 50px))} }
@keyframes swiper-preloader-spin { 0%{transform:rotate(0)}to{transform:rotate(360deg)} }

Components

Extracted from the page's own interactive elements (classes → resolved CSS values).

button-secondary — sample text: “close”

PropertyValue
fontSize20px
fontWeight700
border1px solid #000000

button-primary — sample text: “Ethiopia Testi Keramo Peaberry Washed”

PropertyValue
fontWeight700
textTransformuppercase
letterSpacing0.05em
padding0 16px
border1px solid #000000

Source Design Tokens (CSS custom properties)

:root {
  --cart-aside-width: 640px;
  --menu-aside-width: 640px;
  --background: 0 0% 100%;
  --foreground: 222.2 84% 4.9%;
  --card: 0 0% 100%;
  --card-foreground: 222.2 84% 4.9%;
  --popover: 0 0% 100%;
  --popover-foreground: 222.2 84% 4.9%;
  --primary: 222.2 47.4% 11.2%;
  --primary-foreground: 210 40% 98%;
  --secondary: 210 40% 96.1%;
  --secondary-foreground: 222.2 47.4% 11.2%;
  --muted: 210 40% 96.1%;
  --muted-foreground: 215.4 16.3% 46.9%;
  --accent: 210 40% 96.1%;
  --accent-foreground: 222.2 47.4% 11.2%;
  --destructive: 0 84.2% 60.2%;
  --destructive-foreground: 210 40% 98%;
  --border: 214.3 31.8% 91.4%;
  --input: 214.3 31.8% 91.4%;
  --ring: 222.2 84% 4.9%;
  --radius: .5rem;
  --swiper-theme-color: #007aff;
  --swiper-navigation-size: 44px;
  --mobile-image: url(https://friedhats-cms.adamkramer.dev/media/HP-Hero-M-750x550-1.jpg);
  --desktop-image: url(https://friedhats-cms.adamkramer.dev/media/HP-Hero-D-1920x550.jpg);
}

Do's and Don'ts

Do

  • Do reserve the accent #F1F5F9 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): 100, 400, 600, 700.
  • Do align spacing to the 8px base unit derived from the page.

Don't

  • Don't introduce colors outside the detected palette — every hue above was found in the source.
  • Don't add gradients — the source page uses flat fills exclusively.

Design Tokens (copy-paste)

:root {
  --color-background: #FFFFFF;
  --color-surface: #FFFFFF;
  --color-text-primary: #020817;
  --color-text-secondary: #64748B;
  --color-border: #E2E8F0;
  --color-primary: #0F172A;
  --color-secondary: #0F172A;
  --color-accent: #F1F5F9;
  --color-on-primary: #FFFFFF;
  --color-on-secondary: #FFFFFF;
  --color-on-accent: #020817;
  --color-surface-container-lowest: #FFFFFF;
  --color-surface-container-low: #E5E7EB;
  --color-surface-container: #DDDDDD;
  --font-sans: Handjet Variable;
  --font-size-display: 60px;
  --font-size-headline-lg: 36px;
  --font-size-headline-md: 30px;
  --font-size-title-lg: 20px;
  --font-size-body-lg: 18px;
  --font-size-body-md: 16px;
  --font-size-label-md: 14px;
  --font-size-label-sm: 12px;
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-pill: 9999px;
  --shadow-sm: 0 0 50px #0000004d;
  --shadow-md: 0 0 1px #ffffff80;
  --space-xs: 4px;
  --space-sm: 8px;
  --space-md: 16px;
  --space-lg: 32px;
  --tracking-label: .04em;
}

Generated by DesignMD Maker · analyze responsibly — only scan pages you're permitted to study.