Turnstyle
Interactive one-page music website celebrating Inc. Best Places to Work
Colors
Brand brushwork rooted in turnstyle culture: bold primaries against near-black
Core Brushwork
Supporting Brushwork
Text Selection
Try selecting this text to see the branded selection highlight: background #F7594A, text #1A171D, no text-shadow.
Typography
Dual typeface system using viewport-relative units throughout
Typefaces
Termina Bold — Aa Bb Cc Dd 0123
Termina Regular — Aa Bb Cc Dd 0123
Note: Termina is not available via Google Fonts. This reference uses system sans-serif as a stand-in. The actual font is loaded via Typekit ID xix5dph.
Helvetica Now Display Black — Aa Bb Cc
Helvetica Now Display Medium — Aa Bb Cc
Type Scale
All sizes use viewport-relative units (vw, %). Body font-size is 0.8vw at desktop.
Special Text Behaviors
writing-mode: vertical-rl with text-orientation: mixed. Rotated 180deg for right-to-left reading.
writing-mode: vertical-rl). Paystreamtal on desktop within the 5vw-tall blue bar.
0.8vw, headings use % of that base, letter-spacing is 0.1vw. This creates a fully fluid layout.
Progress Bar
Audio playback progress indicator
Fill Levels
Track: #E7E7E8. Fill: #0080DE. Height: 0.5vw (min-height: 8px). Border-radius: 100vw (pill shape). Uses HTML5 <progress> element with custom WebKit/Moz styling.
Vertical Variant (Desktop Nav)
In the desktop sidebar, the progress bar is vertical (width: 0.5vw, height: 9vw). Fill grows from bottom to top.
Speakers
Large and small speaker components with frame overlays and corner plus icons
Speaker Layout
Speaker Specifications
40vw x 40vw. Border-right: 0.15vw solid #1A171D. Contains frame overlay SVG, video background at 75% size, and speaker image at 74% width.
20vw x 20vw each, stacked vertically. First: #0080DE blue background. Second: #FFCD27 yellow with top border. Speaker image at 60%.
4vw x 4vw at each corner of the large speaker. Hover: rotate(45deg) with transition: all 0.2s. Active: scale(1.2) rotate(45deg).
Stickers
14 draggable decorative SVG elements scattered across the left panel
Sticker Field (Interactive Demo)
14 SVG stickers positioned absolutely within a 30vw container. Width ranges from 8vw to 23vw. Cursor: move. Active: scale(1.07) with 0.15s transition. Z-index increases on click (jQuery UI draggable). Stickers container sits at z-index: 300.
Sticker Sizes
| Variant | Width | Position (top / left) |
|---|---|---|
| Default (is--1) | 12vw | 6vw / 5vw |
| is--5 | 17vw | 14vw / 12vw |
| is--7 | 22vw | 19vw / 4vw |
| is--9 | 23vw | 28vw / -5vw |
| is--10, is--14 | 8vw | varies |
| is--11 | 14vw | 17vw / -1vw |
| is--12 | 15vw | 6vw / -2vw |
| is--16 | 22vw | 0 / -6vw |
Forms
Inline form with conversational layout using Helvetica Now Display
Form Input Pattern
Form Specifications
60vw. Background: #FFFFFF. Border-bottom: 0.15vw solid #1A171D. Padding: 0 2vw / 0 4vw.
22vw. Height: 4vw. Color: #F7594A. Border-bottom only: 0.15vw solid #1A171D. Font: Helvetica Now Display, 210%, weight 900.
#C7C7CA. Same font size and family as input value.
210%, weight 500. Color: #1A171D. White-space: nowrap.
#FFCD27. Full z-index: 20 overlay. Contains red heading text (#F7594A) and TSE sticker.
#F7594A. Background: transparent. Centered text. Padding: 1.9em 1vw.
Grid & Sizing
Viewport-relative sizing system with universal border treatment
Page Structure
10vw
Hero Section
Speaker Section
Footer Section
Universal Border
0.15vw solid #1A171D. On tablet (max-width: 991px), this changes to fixed 1.5px solid #1A171D. The .is--outlined utility class applies 0.1vw solid #1A171D.
Key Dimensions
| Element | Width | Height |
|---|---|---|
| Navigation sidebar | 10vw | 100vh |
| Logo block | 10vw | 10vw |
| NOW SPINNING bar | 100% | 5vw |
| Hero left | 30vw | auto |
| Hero right | 60vw | auto |
| Welcome section | 30vw | auto (padded 3.5vw) |
| Volume section | 20vw | 32.5vw |
| Large speaker | 40vw | 40vw |
| Small speakers | 20vw | 20vw each |
| Social squares | 20vw | 20vw |
| Follow section | 30vw | 20vw |
| Merch section | 30vw | auto |
| Form heading | 30vw | auto |
| Form block | 60vw | auto |
Breakpoints
Responsive adaptations from full desktop to mobile
| Breakpoint | Trigger | Key Changes |
|---|---|---|
| Desktop | > 992px |
Full layout. Nav: 10vw left sidebar. Body font-size: 0.8vw. All borders: 0.15vw. Vertical text in nav. |
| Tablet | ≤ 991px |
Body font-size: 10px. Nav moves to bottom (100vw wide). Borders switch to 1.5px fixed. H1: 270%. Logo: 100px fixed. Album art goes paystreamtal. |
| Small Tablet | ≤ 767px |
H1: 3.6vw. Further layout compression. Form blocks reduce padding. |
| Mobile | ≤ 479px |
H1: 8.5vw. Full-width stacked sections. Speaker and social sections stack vertically. Stickers reposition for narrow viewport. |
CSS Variables
Copy-paste ready custom properties block
:root { /* ---- Colors ---- */ --color-black: #1A171D; --color-red: #F7594A; --color-blue: #0080DE; --color-yellow: #FFCD27; --color-pink: #FFE3E2; --color-white: #FFFFFF; --color-tan: #C9C1A7; --color-gray-light: #E7E7E8; --color-gray-placeholder: #C7C7CA; /* ---- Typography ---- */ --font-body: Termina, sans-serif; --font-heading: Helvetica Now Display, sans-serif; --font-size-body: 0.8vw; --font-weight-body: 700; --line-height-body: 1.4; --letter-spacing-body: 0.1vw; /* ---- Borders ---- */ --border-width: 0.15vw; --border-color: #1A171D; --border: 0.15vw solid #1A171D; --border-outlined: 0.1vw solid #1A171D; --border-radius-pill: 100vw; --border-radius-cta: 0.7vw; /* ---- Layout ---- */ --nav-width: 10vw; --hero-left-width: 30vw; --hero-right-width: 60vw; --speaker-large: 40vw; --speaker-small: 20vw; --social-square: 20vw; --logo-size: 10vw; --spinning-height: 5vw; /* ---- Buttons ---- */ --button-standard: 5.8vw; --button-large: 8.2vw; --button-circle-std: 5vw; --button-circle-lg: 7vw; --button-border-std: 0.12vw; --button-border-lg: 0.15vw; /* ---- Transitions ---- */ --transition-fast: 0.15s ease; --transition-standard: 0.2s ease; /* ---- Progress Bar ---- */ --progress-height: 0.5vw; --progress-min-height: 8px; --progress-track-color: #E7E7E8; --progress-fill-color: #0080DE; /* ---- Tablet Overrides (max-width: 991px) ---- */ /* --border-width: 1.5px; --font-size-body: 10px; --nav-width: 100vw (bottom bar); */ }
::selection { background: #F7594A; color: #1A171D; text-shadow: none; } ::-webkit-scrollbar { width: 0px; /* Hidden scrollbar */ }
Interactions & Animations
Motion design, hover states, and interactive behaviors
Component Interactions
filter: brightness(85%)Applied to the entire button container. Subtle darkening effect on all color variants.
transform: scale(0.95)Press-in effect. Combined with brightness reset to default.
cursor: movejQuery UI draggable. Active state:
scale(1.07) with 0.15s transition. Z-index stacking on mousedown.
rotate(45deg) via transition: all 0.2sActive:
scale(1.2) rotate(45deg). Becomes an X shape.
<audio> with <progress> element. ontimeupdate fires initProgressBar(). Mouse click/up sounds on UI interactions.
6vw wide).
transform-origin: 100% 0. Rotated -26deg. Webflow IX2 animation controls arm movement on play/pause.
24vw. Origin: 100% 100% (bottom-right). Default rotation: 36deg. Webflow IX2 animates the hand scratching motion.
<input type="range">. Rotated -90deg for vertical orientation. Thumb: 10vw x 3vw with custom SVG background image. Track is invisible (transparent).
::-webkit-scrollbar { width: 0px }. Content scrolls freely within .c-contain (overflow: hidden on container).
<audio> elements for mouse-down and mouse-up click sounds. Triggered on button interactions for tactile feedback.
.c-hero_sticker, .c-record, .c-merch, .c-form_heading all use pointer-events: none. Prevents interaction with decorative elements.
Tailwind Mapping
The paired JSON export now includes a tailwind section with theme extensions and component recipes. Use these mappings instead of default Tailwind tokens when recreating this system.
// tailwind.config.js
import designSystem from './design-system.json';
export default {
theme: {
extend: designSystem.tailwind.website.theme.extend,
},
};
// Swap to designSystem.tailwind.app.theme.extend for app/portal surfaces.
| Scope | Primary | Body Font | Radius | Shadow | Breakpoint |
|---|---|---|---|---|---|
| Website | — | — | — | — | — |
| Scope | Recipe | Class Pattern | Notes |
|---|---|---|---|
| Website | buttonPrimary | inline-flex items-center justify-center gap-2 rounded-md bg-brand-primary text-text-inverse shadow-sm px-4 py-2 font-semibold transition-colors | Primary action button using exported brand, radius, and shadow tokens. |
| Website | surfaceCard | rounded-md bg-surface-base text-text-primary border border-border-subtle shadow-sm p-6 | Default surface/card treatment for high-visibility content areas. |
| Website | inputField | rounded-md border border-border-subtle bg-surface-base text-text-primary px-3 py-2 focus:outline-none focus:ring-2 focus:ring-focus-ring | Base text input treatment aligned to the exported radius, border, and focus tokens. |
Social Squares
20vw colored squares in the footer for social links
Each square is 20vw x 20vw. Yellow (#FFCD27) for X/Twitter, Blue (#0080DE) for Instagram, Light Pink (#FFE3E2) for YouTube. Border-right: 0.15vw solid #1A171D between squares (last has none).