← All sessionsHomeSearch
LWP Design Module 1·Chapter 5: Designing 1 website together with Figma·2:38:56

Chapter 5b: The System Build — Styles, Variables, Components, and the Stylekit Pipeline

Reno Instructor — Living With Pixels. Builds the bakery design's entire token system live: type scale and hue-derived palette generated on his own Website Stylekit site, imported through his own Figma plugin, then spacing and corner variables, components and variants — 'once you start duplicating things and you don't have the global style setup, you're going to lose a lot of time.'

Session map

THE PIPELINETHE MECHANISMSTHE CRAFTThe Stylekit pipelinescale and palette generated outside, im…Styles, Variables, ComponentsFigma's three global mechanisms, kept s…The button systemfive variants, and Soft exists to not l…The craft passesbento grids, off-canvas bleed, hidden a…
The pipelineThe mechanismsThe craft
click a node — its card pops up (drag it anywhere, × to close)
Concept

The map reads left to right — the pipeline flow into the mechanisms, then into the craft. Click any node to open that idea here; every timestamp jumps into the recording.

The short version

  1. The phase's order IS the method: inspiration → rough layout → global typography → font choice → palette → THEN detail — with the rough, Lorem-Ipsum layout sent to the client early 'because clients are hard to redirect once detail exists.' His old gray-wireframe stage is gone; 'naked templates' (his copysection.com library) supply unstyled structure so nobody inherits someone else's styling.
  2. The grid: 1440px desktop frame, 12 columns, 75px wide, centered — the math worked live: 75×12 + 20×11 gutters = the 1120px box container 'many page builders have.' Shift+G toggles it.
  3. THE STYLEKIT PIPELINE (Paul's toolkit tool, taught by its author): typography scale generated on stylekit.com (base 16, Major Third chosen — 'the more cool and young the company is, the bigger you can go'), Copy-to-JSON, imported via his own 'Website Style Kits' Figma plugin → H1-H6 + three body styles appear connected. Palette the same way: eyedrop the client's SVG logo, read the HSL HUE (19, orange), feed the Hue to the generator — 'adjust lightness and saturation, never the Hue' — import, and headings→dark1, body→dark2, background→light2, buttons→primary.
  4. The three global mechanisms, named and separated (with his own apology for slippage): STYLES (text/color), VARIABLES (numbers - spacing tokens 'space xs/s/m/l/xl/xxl' in multiples of 4: 8/16/24/32/96/128; later corner tokens S/M/L with the usage rule small-things/images/backgrounds), COMPONENTS (anything repeated — icon cards, bread cards, FAQ items) with VARIANTS for states: the button set ships Solid/Outline/Underline plus Soft and Soft Selected — soft existing precisely to NOT look clickable ('so people do not confuse it with an actual button').
  5. Live mistakes kept in: typing a number instead of linking the variable (the puck icon), heading layers silently disconnecting from styles, and the frame-resize scramble that forces the CONSTRAINTS lesson — 'this is not auto layout. This is the way that this item behaves on the frame it's in.'
  6. Craft principles ride every build: bento over plain grids ('grids are considered kind of boring'), off-canvas gallery bleed, benefits list with Lucide icons at 8px spacing, image leads the composition, 'we don't always have to introduce a section' — and FAQ answers hidden in accordions because 'hiding stuff gives the viewer more control.'

The concepts

01

The Stylekit pipeline: scale and palette generated outside, imported connected

'It is better to work with an automatic scale instead of trying to figure out all of the values yourself' — and he built the generator that does it.

TYPOGRAPHY first, before any duplication: stylekit.com's scale generator (base 16; Minor Third tested and rejected as timid, MAJOR THIRD chosen; Perfect Fourth 'the more cool and young the company is, the bigger you can go') → Copy to JSON → the Website Style Kits Figma plugin imports it as connected text styles: H1-H6, Body Big/Normal/Small, 160% default line-height. Generated uglies hand-tidied (61→64, 49→50). The law that motivates the timing: connect layers to styles BEFORE duplicating so every copy inherits the link — 'once you start duplicating without the global style setup, you're going to lose a lot of time.' Batch Styler (third-party) handles bulk weight/family/line-height swaps across selected layers.

COLOR second, derived not invented: drag the client's SVG logo into Figma, eyedrop it (key I), read the HSL HUE — 19, orange — and feed exactly that Hue into stylekit.com's palette generator: primary/accent/accent-dark + light1-3 + dark1-2 from one slider, per-swatch lightness rescue if contrast fails, hover-to-see-usage, dark/light preview, a Buttons tab with corner radius. The rule that protects the brand: 'adjust lightness and saturation afterward, never the Hue itself.' Same JSON import path; then the connections: headings dark1, body dark2 ('a little bit lighter... less harsh to read'), background light2, buttons primary. The rejected alternatives are named: palettemaker.com (poor web contrast), realtimecolors.com (best third-party, but no soft tints, limited export).

Worked example · from the session

The plugin's install fallback, shown honestly: pending Figma approval at recording, it installs from manifest.json — download the zip from the resources page, Import from manifest.

Why it matters

This is the Website Stylekit tool from Paul's toolkit taught BY ITS AUTHOR inside his own method — the palette/type inputs of every future starter site, generated in minutes and imported already-systematized.

People get this wrong

Palette generators produce usable web palettes.

'Most color generators online are not really made for the web' — they optimize swatches, not text contrast and surface tiers. The web palette needs role structure (text tiers, surface tiers, action colors), which is what the Stylekit layout encodes.

The Stylekit pipeline: generated outside, imported connected Brand logo (SVG) eyedrop the HSL Hue stylekit.com scale + palette from one Hue JSON export copy to clipboard Figma plugin Website Style Kits import Connected styles H1-H6 + palette, linked 'adjust lightness and saturation, never the Hue' - the brand color survives the whole pipeline then: spacing variables (x4), components + variants, connect BEFORE duplicating Paul-toolkit note: this JSON is the machine-readable design-system seed for the starter-site generator (OI-089)
Logo Hue in, connected Figma styles out - the Website Stylekit loop
Once you start duplicating things and you don't have the global style setup, then you're going to lose a lot of time.
The more cool and young the company is, the bigger you can go.
Most color generators online are not really made for the web.
For your projects

["Registry updated: Website Stylekit's as-heard domain in the course is stylekit.com; the JSON export is the bridge artifact for OI-089."]

Go deeper

In one line: The Stylekit pipeline = external generation (type scale by ratio from base 16; palette from the brand's exact Hue) exported as JSON and imported via the companion Figma plugin as CONNECTED styles — with the never-change-the-Hue rule, style connection before duplication, and Batch Styler for bulk edits.

Major Third as the default ratio; bolder brands go bigger (l2466872 0:02:00)

'Connect before duplicating' — the timing law of the whole phase (l2466872 0:10:06)

Hue extraction from the logo SVG; Hue=19 preserved exactly (l2576133 0:08:08)

Palette structure: primary/accent/accent-dark + light1-3 + dark1-2 (l2576133)

Competitors judged: palettemaker poor contrast; realtimecolors best-but-gapped (l2576133 0:00:00)

Try it now

Run the full loop once on a real logo: eyedrop → Hue → generator → JSON → plugin → connect five layers. Under ten minutes, and the file has a design system.

▶ Watch this taught:

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

Why does the Hue stay untouched while lightness and saturation may move?

Hue IS the brand color's identity — orange stays THAT orange. Lightness/saturation are legibility engineering within the identity; changing Hue would ship a different brand.

02

Styles, Variables, Components: Figma's three global mechanisms, kept straight

'I'm sorry if I sometimes use the wrong word, but it all means the same thing. It's a global styling' — the instructor's own slippage, flagged live.

Three systems, three jobs. STYLES: text and color definitions (the Stylekit imports) — connected per layer via the four-dots menu. VARIABLES: NUMBERS — the spacing tokens ('space' + xs/s/m/l/xl/xxl, divisible by 4, gaps widening upward: 8, 16, 24, 32, 96=16×6, 128=16×8) and later the corner tokens; the trap demonstrated by committing it: typing 32 does NOT link the variable — the puck icon and explicit selection do. COMPONENTS: anything repeated — the icon card, the bread card (360px, a 4-column slice; image Fill-container), the FAQ item — where the proof is run live: a radius change on the main component propagates to instances and NOT to plain duplicates. Variants live inside components for states; Assets is the library; right-click → Go to main component finds the source.

The organizational sidecar from lesson 26: SECTIONS (a primitive distinct from frames) corral scratch material; CONSTRAINTS — discovered when resizing the frame scrambles the layout — govern per-layer behavior on parent resize ('this is not auto layout'): center/top for background bleeds, bottom for footer elements. Collections for variables exist and are REJECTED for a flat well-named list: 'if you do the naming right... you don't have to scroll.'

Worked example · from the session

The propagation proof: 16px radius on the main icon-card component — instances update, the earlier plain duplicates sit unchanged, the whole argument for components in one frame.

Why it matters

The course's Figma fluency rests on knowing WHICH mechanism owns which change — the same ownership-triage skill the Elementor course teaches for themes.

People get this wrong

Matching values keep a file consistent.

Only LINKS keep consistency — matched-but-unlinked values are drift waiting for the first edit. The system is the connections, not the numbers.

I'm sorry if I sometimes use the wrong word, but it all means the same thing. It's a global styling.
This is not auto layout. This is the way that this item behaves on the frame it's in.
For your projects

["Direct parallel to your registry doctrine: entries (components), tokens (variables), and prose (styles) — link, don't copy."]

Go deeper

In one line: Figma's global layer = Styles (text/color definitions), Variables (numeric tokens - spacing and radius scales, explicitly linked via the puck), and Components with Variants (repeated elements and their states) - plus Sections for organization and Constraints for parent-resize behavior. Fluency = knowing which mechanism owns each change.

The three named, with the instructor's own apology as evidence they blur (l2576134 0:06:03)

The spacing scale: multiples of 4, widening steps - 8/16/24/32/96/128 (l2576134 0:04:02)

Typing the number ≠ linking the variable - the live mistake (l2576134 0:04:02)

Propagation: components yes, plain duplicates no - proven on camera (l2576134 0:08:05)

Constraints discovered by breakage: 'this is not auto layout' (l2600555 0:04:03)

Try it now

Audit any Figma file: count raw numbers that should be variables and repeated groups that should be components. The counts are the debt.

▶ Watch this taught:

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

A heading looks right but doesn't update when you edit the H2 style. What happened?

It silently disconnected (his live bug, twice) — matching values without a style link. Reconnect via four-dots; the visual match was a coincidence, not a connection.

03

The button system: five variants, and Soft exists to not look clickable

'I personally believe that every website needs at least 3 types of buttons' — and the two extras exist for the opposite job: NOT being pressed.

One component set, five variants. SOLID (primary action), OUTLINE (secondary: stroke primary, no fill, dark1 text), UNDERLINE (tertiary link: bottom-only stroke, zero-then-4px padding, no radius) — swapped per instance from the Assets dropdown. Then the inversions: SOFT (light3 fill, primary-dark text) built for filter tags and eyebrow labels precisely because 'it doesn't really look that clickable... so people do not confuse it with an actual button'; SOFT SELECTED for the active filter state. Supporting decisions with reasons: a new Body Bold text style for labels (Semi Bold; padding re-tuned because bold at 180% line-height fattened the buttons); Hug-contents to kill phantom height; the in-card button demoted Solid→Underline because 'this button takes up a little bit too much attention.'

The system pays immediately: the bread grid (Auto Layout + WRAP at 1120 width, 20px gaps = 3-across), the specials section's improvised email signup (Solid submit + an Outline button repurposed as the fake input), pagination DETACHED from the set (one-off, non-reusable — detachment as a deliberate act, not a failure), numbered on Heading 6 with a new light4 surface.

Worked example · from the session

The eyebrow move: the same Soft variant that filters breads becomes the 'Monthly Special' label — one component, two non-clickable jobs.

Why it matters

Buttons are where visual weight IS interaction semantics — the five-variant set encodes look-at-me through don't-click-me in one governed component.

People get this wrong

One good-looking button style, reused everywhere, is a system.

A system encodes DIFFERENCES: primary vs secondary vs link vs label are different meanings needing different weights — one style flattens the page's intent.

I personally believe that every website needs at least 3 types of buttons.
It's better to use a soft color for stuff like that so that people do not confuse it with an actual button.
For your projects

["Your site's own CSS could adopt Soft: the tool-page status pills are exactly this pattern."]

Go deeper

In one line: Button system = one component, five variants encoding interaction weight (Solid/Outline/Underline) and non-interaction (Soft/Soft Selected), with a dedicated Body Bold label style, Hug sizing, per-instance variant swaps — and deliberate detachment for true one-offs like pagination.

Three interaction tiers minimum; attention budget decides which appears where (l2576297 0:00:00)

Soft's whole purpose is anti-affordance (l2600391 0:00:00)

Body Bold added for labels; padding re-tuned for the weight (l2576297)

Wrap-grid math: 1120 container, 20px gaps, 3 cards across (l2576297)

Detach as a legitimate tool for one-offs (l2600391)

Try it now

Find every button-shaped element on one of your pages and label it Solid/Outline/Underline/Soft — anything unlabelable is a semantics bug.

▶ Watch this taught:

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

Why demote a card's button to Underline when Solid 'works'?

Attention economics: in a grid of cards each Solid button competes with the section's real CTA. Underline preserves the affordance at lower weight — the hierarchy survives repetition.

04

The craft passes: bento grids, off-canvas bleed, hidden answers, and spacing hierarchy

'Bento comes from a Japanese concept of a food box... it's basically a grid, but then not all of the boxes are square' — chosen because 'grids are considered kind of boring.'

The section builds are Chapter 4's principles executing under system constraints. The INGREDIENTS bento (hand-built, no template — 'quite a custom layout, but it didn't take a long time'): auto-layout-as-background (Figma auto-adopts an existing rect as fill — shown two ways to prove it), space-L padding everywhere, Fill-container text, decorative rotated shapes BLEEDING outside card boundaries against boxiness. The GALLERY: the off-canvas variant chosen over both boxed options, title-only ('we don't always have to introduce a section' — intro text deleted). The FAQ: single-column accordion beats two-column and all-open layouts because 'hiding stuff... gives the viewer more control and [does] not make it overwhelming'; item componentized, stress-tested with an artificially long question (icon gap 10→24), acronym spelled out for the bakery's older audience — 'Frequently asked questions.'

SPACING HIERARCHY rules every pass: heading-to-icon 40→24 because 'the heading is more related to this icon than to the edge of the box'; filter-row-to-title 64→32 (filters belong to the grid); eyebrow-to-heading settled at 24 after testing 32 and 16. Corner tokens close the arc: Corner S (buttons, inputs, FAQ items), M (images), L (large backgrounds) — applied retroactively through the components, master button included. And the finishing sensibility: 'make sure that your image leads... that feels a lot more balanced.'

Worked example · from the session

The FAQ subheading rescue: leftover placeholder 'Gallery' caught and rewritten to 'We are more than just bread' — the audit habit that catches what systems can't.

Why it matters

This is where tokens meet taste: every judgment (bleed, hide, demote, tighten) lands as a variable or component edit, which is the whole point of having built the system first.

People get this wrong

Templates and tokens make the craft decisions.

They make the craft decisions CHEAP — bleed, hide, demote, and tighten remain judgment, executed in seconds because the system carries them everywhere.

Grids are considered kind of boring because they're boxy, they're predictable.
Hiding stuff is a very powerful way to make a website look more interesting, give the viewer more control and to not make it overwhelming.
We don't always have to introduce a section.
For your projects

['The stress-test habit (type the too-long question) is your component-QA pattern for any design system.']

Go deeper

In one line: Craft passes = principle-driven section builds on the token system: bento asymmetry against boxiness, off-canvas bleed for interest, accordion hiding for control, proximity-tuned spacing (closer to kin than to edges), and the S/M/L corner rule applied through components.

Bento chosen against 'the most obvious thing'; sourced from awwwards (l2466867 0:08:06)

Auto-layout background adoption, proven both ways (l2600392 0:02:00)

'Hiding stuff is a very powerful way... give the viewer more control' (l2600555 0:00:00)

The stress test: long question exposes the tight icon gap (l2600555)

Corner usage rule: S small things, M images, L backgrounds (l2600555 0:20:14)

Try it now

Apply the corner rule to an existing design: S/M/L by element class. The mismatches you find are the inconsistencies users felt but couldn't name.

▶ Watch this taught:

Check yourself

Answer from memory first — the recall attempt is what makes it stick. Then reveal.

Why spell out 'Frequently asked questions' for THIS client?

Audience calibration: the bakery's broader/older base may not parse 'FAQ' — the same reasoning that killed the contact form. Every convention re-earns its place per audience.

Every concept, three clicks deep

The same concepts as a quick reference: the closed row is the glance, open is the study card, and every timestamp jumps into the recording.

01The Stylekit pipeline: scale and palette generated outside, imported connectedThe Stylekit pipeline = external generation (type scale by ratio from base 16;

The Stylekit pipeline = external generation (type scale by ratio from base 16; palette from the brand's exact Hue) exported as JSON and imported via the companion Figma plugin as CONNECTED styles — with the never-change-the-Hue rule, style connection before duplication, and Batch Styler for bulk edits.

Major Third as the default ratio; bolder brands go bigger (l2466872 0:02:00)

'Connect before duplicating' — the timing law of the whole phase (l2466872 0:10:06)

Hue extraction from the logo SVG; Hue=19 preserved exactly (l2576133 0:08:08)

Palette structure: primary/accent/accent-dark + light1-3 + dark1-2 (l2576133)

Competitors judged: palettemaker poor contrast; realtimecolors best-but-gapped (l2576133 0:00:00)

02Styles, Variables, Components: Figma's three global mechanisms, kept straightFigma's global layer = Styles (text/color definitions), Variables (numeric tokens - spacing and radius scal…

Figma's global layer = Styles (text/color definitions), Variables (numeric tokens - spacing and radius scales, explicitly linked via the puck), and Components with Variants (repeated elements and their states) - plus Sections for organization and Constraints for parent-resize behavior. Fluency = knowing which mechanism owns each change.

The three named, with the instructor's own apology as evidence they blur (l2576134 0:06:03)

The spacing scale: multiples of 4, widening steps - 8/16/24/32/96/128 (l2576134 0:04:02)

Typing the number ≠ linking the variable - the live mistake (l2576134 0:04:02)

Propagation: components yes, plain duplicates no - proven on camera (l2576134 0:08:05)

Constraints discovered by breakage: 'this is not auto layout' (l2600555 0:04:03)

03The button system: five variants, and Soft exists to not look clickableButton system = one component, five variants encoding interaction weight (Solid/Outline/Underline) and non-…

Button system = one component, five variants encoding interaction weight (Solid/Outline/Underline) and non-interaction (Soft/Soft Selected), with a dedicated Body Bold label style, Hug sizing, per-instance variant swaps — and deliberate detachment for true one-offs like pagination.

Three interaction tiers minimum; attention budget decides which appears where (l2576297 0:00:00)

Soft's whole purpose is anti-affordance (l2600391 0:00:00)

Body Bold added for labels; padding re-tuned for the weight (l2576297)

Wrap-grid math: 1120 container, 20px gaps, 3 cards across (l2576297)

Detach as a legitimate tool for one-offs (l2600391)

04The craft passes: bento grids, off-canvas bleed, hidden answers, and spacing hierarchyCraft passes = principle-driven section builds on the token system: bento asymmetry against boxiness, off-c…

Craft passes = principle-driven section builds on the token system: bento asymmetry against boxiness, off-canvas bleed for interest, accordion hiding for control, proximity-tuned spacing (closer to kin than to edges), and the S/M/L corner rule applied through components.

Bento chosen against 'the most obvious thing'; sourced from awwwards (l2466867 0:08:06)

Auto-layout background adoption, proven both ways (l2600392 0:02:00)

'Hiding stuff is a very powerful way... give the viewer more control' (l2600555 0:00:00)

The stress test: long question exposes the tight icon gap (l2600555)

Corner usage rule: S small things, M images, L backgrounds (l2600555 0:20:14)

Tools referenced

ToolCoverageMomentContext
FigmademonstratedThe deep-feature tour: Styles, Number Variables, Components, Variants, Sections, Constraints, Wrap, Fill/Hug
Website StylekitdemonstratedTaught by its author: scale + hue-palette generation, JSON export, companion plugin import - as-heard 'stelkit.com'
copysection.comdemonstratedHis 'naked template' library with copy-to-Figma - hero, gallery, FAQ sourced here
Batch StylerdemonstratedBulk weight/family/line-height across selected layers - the style-migration workhorse
FontsharedemonstratedLarge-preview font hunting: Satoshi, Clash Grotesque, Pally sourced here; local install via Font Book
Google FontsdemonstratedMood filters tested and found 'a little bit weird'; Outfit and Lexend candidates
LucidedemonstratedCheckmark benefit icons, SVG-pasted into the auto layout
realtimecolors.comexplainedBest third-party palette tool per his survey - missing soft tints and export depth
LandBookmentionedE-commerce filter/pagination inspiration
awwwardsmentionedThe bento-grid inspiration source
RelumementionedSurveyed for FAQ layouts alongside SproutUI and Section.express
palettemaker.commentionedCritiqued: not made for web contrast

Action items

Resources mentioned

Resources
  • docWebsite Style Kits plugin (manifest install)
  • docClient Brand Assets folder
  • docThe spacing/corner token sheets

Extraction notes

This page was built from an auto-generated transcript, which garbles product and people's names. Those were corrected silently in everything above and logged here for transparency. The warnings flag claims that were true on the recording day but change fast.

Transcript corrections applied

The transcript saysThe trainer actually means
stelkit dot comstylekit.com - Website Stylekit (Reno's generator; see registry entry)
the U valuethe Hue value (HSL)
You Mintsunresolved palette-site name (possibly Huemint) - verify
Pally / BallyPally (Fontshare typeface, likely)
Legends / LexentLexend (Google Font)
crump and callthe bakery brand - likely 'Crumb & Co'
breath feelingbread feeling (bakery pun)
Lend BookLandBook (landbook.com)

True on recording day — verify before relying