Skip to contentGet startedTokensComponents@hackclub/theme@hackclub/tokens@hackclub/css-base@hackclub/components@hackclub/meta GitHub
.card {
  background: var(--hc-surface);
  border-radius: var(--hc-radius-card);
  box-shadow: var(--hc-shadow-card);
  font-family: var(--hc-font-display);
  transition: transform var(--hc-duration-medium) var(--hc-ease-playful);
}

Palette

Hack Club's brand colours, from our brand guide. These stay the same in light and dark mode.

Red--hc-red#ec3750
Orange--hc-orange#ff8c37
Yellow--hc-yellow#f1c40f
Green--hc-green#33d6a6
Cyan--hc-cyan#5bc0de
Blue--hc-blue#338eda
Purple--hc-purple#a633d6
Gray--hc-gray#8492a6

Neutrals & accessible reds

Brand red is only 4.0:1 on white. For text smaller than 24px, use --hc-red-text, which switches between red-dark and red-light with the colour scheme.

Ink--hc-ink#17171d
Ink 2--hc-ink2#2e1719
Black--hc-black#000000
Paper--hc-paper#ffffff
Cream--hc-cream#fff6eb
Red Dark--hc-red-dark#be1e3a
Red Light--hc-red-light#ff5c72

Light & dark

Semantic colours change with the colour scheme. Use these for backgrounds, text and borders rather than raw palette values.

light
background#ffffff
foreground#17171d
surface#f9fafc
surface-hover#f1f2f5
borderrgba(0, 0, 0, 0.08)
mutedrgba(23, 23, 29, 0.7)
nav-bgrgba(255, 255, 255, 0.82)
red-text#be1e3a
dark
background#17171d
foreground#fff6eb
surface#1f1f27
surface-hover#2a2a33
borderrgba(255, 255, 255, 0.08)
mutedrgba(255, 246, 235, 0.7)
nav-bgrgba(23, 23, 29, 0.82)
red-text#ff5c72

Typography

Headings use Zarathustra, a serif display face with a single weight (--hc-font-display). Everything else uses Phantom Sans (--hc-font-sans), in weights from 100 to 700 with italics. Body text is 20px.

--hc-text-display
clamp(3.25rem, 12vw, 5.625rem)
Hack Club
--hc-text-title
clamp(2.2rem, 4vw, 3.4rem)
Hack Club
--hc-text-heading
2.5rem
Hack Club
--hc-text-xl
2rem
Hack Club
--hc-text-lg
1.5rem
For teens, by teens.
--hc-text-body
1.25rem
For teens, by teens.
--hc-text-md
1.125rem
For teens, by teens.
--hc-text-sm
1rem
For teens, by teens.
--hc-text-xs
0.8rem
For teens, by teens.

Phantom Sans weights

--hc-weight-thin
100
Where teens make cool stuff.
--hc-weight-light
300
Where teens make cool stuff.
--hc-weight-book
350
Where teens make cool stuff.
--hc-weight-regular
400
Where teens make cool stuff.
--hc-weight-medium
500
Where teens make cool stuff.
--hc-weight-semibold
600
Where teens make cool stuff.
--hc-weight-bold
700
Where teens make cool stuff.

Line heights

--hc-leading-display0.92
--hc-leading-heading1
--hc-leading-snug1.2
--hc-leading-normal1.5
--hc-leading-prose1.7

Spacing

Keyed by multiples of 4px, like Tailwind: --hc-space-4 is 16px.

--hc-space-0
0
--hc-space-1
4px
--hc-space-2
8px
--hc-space-3
12px
--hc-space-4
16px
--hc-space-5
20px
--hc-space-6
24px
--hc-space-8
32px
--hc-space-10
40px
--hc-space-12
48px
--hc-space-16
64px
--hc-space-20
80px
--hc-space-32
128px

Rounding

hackclub.com rounds generously: buttons and inputs are pills, and cards use 16px.

--hc-radius-sm
6px
--hc-radius-md
8px
--hc-radius-photo
10px
--hc-radius-lg
12px
--hc-radius-card
16px
--hc-radius-xl
24px
--hc-radius-2xl
28px
--hc-radius-pill
9999px

Shadows

--hc-shadow-card
--hc-shadow-raised
--hc-shadow-photo
--hc-shadow-pill
--hc-shadow-glow
--hc-shadow-offset
--hc-shadow-sticker
--hc-shadow-sticker-hover
--hc-shadow-focus
--hc-shadow-popover

Use sticker and sticker-hover with filter: drop-shadow() on cut-out images.

Gradients

--hc-gradient-brand
--hc-gradient-brand-deep
--hc-gradient-rainbow
--hc-gradient-ink
--hc-gradient-red-wash

Motion

Navigation uses a snappy ease-out; photos and stickers use a gentler, playful curve. Every component turns off its animations when the visitor prefers reduced motion.

--hc-ease-outcubic-bezier(0.23, 1, 0.32, 1)
--hc-ease-playfulcubic-bezier(0.25, 0.46, 0.45, 0.94)
--hc-ease-standardease
--hc-duration-fast150ms
--hc-duration-base200ms
--hc-duration-medium300ms
--hc-duration-slow400ms

Layout & breakpoints

--hc-max-width1200px
--hc-prose-width800px
--hc-nav-height80px
--hc-gutterclamp(16px, 6vw, 80px)
--hc-section-yclamp(80px, 12vw, 160px)

CSS can't use custom properties in media queries, so breakpoints are available in JavaScript and in the Tailwind theme only:

breakpoints.sm640px
breakpoints.md768px
breakpoints.lg1024px
breakpoints.xl1200px

The design system behind hackclub.com.
Made with <3 by Lamparter.

Get startedTokensComponents@hackclub/theme@hackclub/tokens@hackclub/css-base@hackclub/components@hackclub/metaWebsiteBrand guideIconshackclub/site