← All sessionsHomeSearch
LWP Elementor Pro Mastery·4 - Setting up WordPress & your Design System·2:41:31

Section 4: The Design System — Figma Export, Clean WordPress, and the Class System

Reno Instructor — walks the one linear, follow-along chapter of the course: export the design (vector-vs-pixel economics), set up a surgically clean WordPress, install the five-plugin stack, configure Elementor's two settings layers, then build the global design system: hijacked system colors, rem+clamp typography, and CSS utility classes for padding and buttons

Session map

PREPARETHE SYSTEMTHE INSTRUMENTVector or pixelthe export decision rules that decide y…The clean installsubtraction as security and speedThe 8-color palette and the s…rem + clamptype that respects users and scales its…The class systemthe missing Elementor feature, patched…The style guide as instrumentinstall ugly, connect, then judge
PrepareThe systemThe instrument
click a node — its card pops up (drag it anywhere, × to close)
Concept

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

The short version

  1. This is the reusable chapter: a linear setup you run once per project (and mostly copy-paste after the first) — 'you can follow along step by step,' unlike the theory chapters before it.
  2. Export economics: anything digital is SVG (kilobytes), anything photographed is pixels; PNG only when transparency demands it, JPEG otherwise; strip shadows before export and re-add them in Elementor — the shadow alone was 8–9× the file size.
  3. The install doctrine is subtraction: Hello theme always, default themes DELETED (a kept stale theme got a site hacked), caching deactivated during dev, and one enhancement plugin (duplicate, media replace, hidden login URL, login-attempt limits) replacing a fistful of single-purpose plugins.
  4. Elementor ships without a real global design system — so the method builds one: system color slots hijacked so palette edits propagate, fonts self-hosted (Google Fonts costs 300–400ms), all sizes in rem + clamp so type scales fluidly and respects user accessibility settings.
  5. HTML tags are for SEO, custom global fonts are for size — 'separate the HTML tags from your size' — because Google reads H1–H6 as importance, not styling.
  6. The class system is the missing Elementor feature, patched with ~2 snippets of Customizer CSS: pad-s/m/l responsive padding classes and a family of button classes wired to Elementor's own --e-global-color variables, with one global hover rule replacing per-button hover setup.

The concepts

01

Vector or pixel: the export decision rules that decide your page weight

An apple icon: 1 kilobyte as SVG. A small photo: 100 kilobytes minimum. The export choice is a 100× decision made before WordPress even exists.

Two image species exist: pixel (PNG/JPEG — anything shot on a camera) and vector (SVG — anything born digital: icons, illustrations, logos, background blobs, blurs). Vectors stay sharp at any zoom and weigh kilobytes; pixels degrade and weigh hundreds. So the rule: 'when you can use vector... then do it.' Within pixels, PNG only when the image has transparency (cut-outs, rounded corners); otherwise JPEG — more colors, better compression.

The second lever is shadows: exporting a box WITH its drop shadow bakes the shadow into the bitmap and ballooned the demo file 8–9× (23KB vs 180KB). Strip shadows in Figma (or disable 'include bounding box'), export clean, re-add the shadow in Elementor where it's generated code. Third lever: compression and resize — 'destroying the image quality to reduce file size,' targeted at under 300KB for heroes and under 100KB for small images, with a 2× export for retina and a resize pass (a 3000px blog image survives at 25%).

Worked example · from the session

The two-boxes demo: identical boxes exported with and without shadow — 180KB vs 23KB; then the blog image run through the compressor at 60% quality + 25% size: 2.9MB → 122KB, still sharp at blog width.

Why it matters

Every later speed decision (WordPress media settings, Elementor image sizing) assumes images arrive pre-optimized — this is the source discipline.

People get this wrong

Export images at the size Figma shows and let WordPress/Elementor optimize them.

Optimization happens BEFORE upload — exact sizes, compression, shadow stripping; the method later disables WordPress's auto-generated sizes entirely.

Compression is basically destroying the image quality to reduce file size.
For your projects

["Directly applicable to your course site's SVG-only figure discipline — same economics, same reasoning."]

Go deeper

In one line: Export rules: digital art → SVG; photos → pixels; PNG only for transparency, else JPEG; shadows stripped and re-added in the builder; export 2×; compress+resize to <300KB (large) / <100KB (small); rename layers so the media library stays searchable.

'Anything that is shot on a camera is always a pixel image... anything that is digital can be an SVG' (l1425194 02:02)

Shadow-in-export cost demonstrated: 'the difference is massive... almost 10 times the size' (l1425194 08:05)

Compression defined honestly: 'destroying the image quality to reduce file size' (l1425194 10:06)

Naming discipline: six months later the media library search only works 'if you do your naming right' (l1425194 16:09)

Also prepared at export time: the padding values audit (limit to 3 sizes for the later class system) and the CPT/fields shopping list for ACF (l1425194 18:10)

Try it now

Take your heaviest page, list its images, and reclassify: which are secretly vectors? Which PNGs have no transparency and should be JPEGs?

▶ Watch this taught:

Check yourself

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

When is PNG the right pixel format?

Only when the image needs transparency — cut-out subjects, rounded corners. Square photos go JPEG: more colors, easier compression.

02

The clean install: subtraction as security and speed

His hacked-website story isn't about a bad plugin he added — it's about a default theme he never deleted.

A fresh WordPress arrives pre-cluttered by the host; step one is deletion. Every stock plugin goes (caching gets DEACTIVATED, not deleted — off during development because dev needs every save visible, back on at launch). Default themes get deleted, not just ignored: an unused, un-updated theme is an attack surface, and one hacked a site of his. The theme decision is permanent: Hello Elementor for every site — 'I never needed another theme,' and if a project demands something beyond it, 'I will just reject the project. It's a form of self protection.'

The plugin stack is five items: Elementor (+ Pro via zip from the account page), Classic Editor (the 5-million-install verdict on Gutenberg), ACF ('only when you know that your website will not need anything dynamic... you can skip' — he never skips), ManageWP Worker (one dashboard for every client site, passwordless login via connection key, free monthly backups), and Admin & Site Enhancements — the one plugin that replaces many: page duplication, media replacement, admin-menu reordering, dashboard-widget cleanup, admin-bar cleanup, a renamed login URL, and login-attempt limits.

Worked example · from the session

The live cleanup: Hostinger's pre-installed plugins deleted 'Boom. Boom. Boom.', caching deactivated, default themes removed, then ASE configured feature by feature against the checklist.

Why it matters

'The less plugins you have, the faster your website will stay and the more safe it is. Because every extra plugin is a security risk' — the stack is the smallest set that covers real needs.

People get this wrong

More plugins = more capability, and unused themes are harmless.

Every plugin is a security surface and a speed tax; unused themes still get hacked. Capability comes from the smallest sufficient stack.

The less plugins you have, the faster your website will stay and the more safe it is. Because every extra plugin is a security risk.
If my client wants something that's too complex and I don't know how to build, I will just reject the project. It's a form of self protection.
For your projects

['The reject-the-project self-protection stance is a business rule wearing a technical costume — worth noting for the practitioner topic pages.']

Go deeper

In one line: Per-site baseline: host clutter deleted, caching deactivated for dev, Home+Contact pages created, Hello Elementor installed and default themes deleted; plugin stack = Elementor/Pro + Classic Editor + ACF + ManageWP Worker + Admin & Site Enhancements (duplication, media replace, admin cleanup, hidden login, attempt limits).

The hack story: 'one of these older themes was hacked because I didn't update them' — deletion, not deactivation (l1425197 06:04)

Classic Editor's 5M installs read as a verdict: 'imagine... how not popular the new Gutenberg editor is' (l1425198 02:01)

ManageWP: connection-key login (no saved credentials) + free monthly backups — 'tackles 2 points' (l1425198 06:02)

Login URL rename + 3-attempt limit: robots 'know that every WordPress website in the world... has just WP admin' (l1425198 14:06)

WordPress config pass: static homepage, timezone, permalinks → post name, media auto-sizes ZEROED — 'an amateur feature' when exports are already sized (l1425197 10:06)

Try it now

Open any WordPress site you manage: count plugins that duplicate a feature ASE covers, and check whether unused themes are still installed.

▶ Watch this taught:

Check yourself

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

Why deactivate caching rather than delete it?

Development needs every save visible immediately — but the plugin returns to service at launch. Deactivation is a dev-mode toggle, not a rejection.

03

The 8-color palette and the system-slot hijack

Elementor gives you four system color slots wired into everything. He doesn't fight them — he renames them and moves in.

Unmanaged palettes sprawl ('you don't even remember where you used those colors'), so the method caps most sites at ~8 colors: headings dark, body dark (deliberately LIGHTER than headings — 'otherwise it's too harsh'), accent, accent hover, then light/light-darker backgrounds and their dark counterparts — about 5 background colors max. Many one-color sites need only the top 6.

The trick is the hijack: Elementor's four SYSTEM colors are pre-wired to defaults across the site, so instead of adding parallel custom colors, he repurposes the slots — primary becomes 'dark darker headings,' secondary becomes 'accent hover,' text becomes 'dark body,' accent stays accent. Renamed and recolored, every pre-wired connection propagates automatically. Custom colors (light, light darker, dark backgrounds) get added below and connected manually in the style guide. Buttons get their background from accent in site settings; links get accent hover ('accent is a little bit too light for links'); and if the site's base background isn't white, that's set globally too.

Worked example · from the session

The live palette build: hex codes pasted from Figma into the hijacked slots — the style guide recolors itself as each system slot fills, then the customs are connected layer by layer.

Why it matters

Palette edits become one-place operations: change a system slot, watch the whole site follow — the design-system property Elementor never shipped as a feature.

People get this wrong

System colors are Elementor's colors; your brand palette belongs in custom colors.

System slots are free wiring — renaming and recoloring them puts YOUR palette on the rails Elementor already laid.

The design system in two moves 8 color slots 4 system slots hijacked + 4 of your own Type: rem + clamp() respects user settings scales itself between screens Style guide install ugly, connect, then judge with real content Session 4: palette and type are set once, system-wide — the style guide is the instrument that proves them
Eight color slots + rem/clamp type, proved by the style guide
For your projects

["Same pattern as your site's palette constants: few tokens, semantic names, one source."]

Go deeper

In one line: Cap the palette (~8 colors, ~5 backgrounds); hijack Elementor's four system slots (primary=headings, secondary=accent-hover, text=body, accent=accent) so pre-wired defaults propagate; add customs manually; wire buttons to accent, links to accent-hover, and the global body background if non-white.

'Why not use up this space from the system colors' — the secondary slot is idle, so it becomes accent hover (l1425204 04:00)

Body lighter than headings as a readability rule: 'it's a little bit nicer if your body text is just a little bit lighter' (l1425204 02:00)

The palette cap is honest, not absolute: the scooter site needed a third light + a logo color — 'sometimes you need 1 more or 2' (l1425204 02:00)

Hex-code hygiene: 'sometimes it doesn't work because you need to add a hashtag' (l1425204 06:01)

Non-white base backgrounds get set in site settings background — 'by default... it will just stay white' (l1425204 10:02)

Try it now

Count distinct colors on your last build. If it's over ~10, run his consolidation: which are duplicate near-misses that a shared slot would have prevented?

▶ Watch this taught:

Check yourself

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

Why do the first four palette colors propagate automatically while the rest need manual connection?

The first four ride Elementor's pre-wired system slots (primary/secondary/text/accent); custom colors have no pre-existing wiring, so the style guide layers must be linked by hand once.

04

rem + clamp: type that respects users and scales itself

Two CSS values replace every per-breakpoint font size you've ever set — and make the site obey the user's browser settings for free.

rem first: 1rem = the browser's base font size (16px by default), so 4rem = 64px. The point isn't the arithmetic — it's WHO controls the base. A user who sets their browser fonts to Large moves the base to ~20px, and every rem-sized element scales with them; pixel-sized elements ignore them. 'For accessibility, it's better to use rem' — and the same logic extends to padding (5rem top/bottom scales with the user too, keeping the design balanced).

clamp second: instead of setting sizes at every breakpoint (which SNAP at each switch), one clamp expression scales a font fluidly from its desktop size to its mobile size — 64px flowing down to 48px as the window narrows. He doesn't hand-write the math ('I don't understand how this calculation works yet, but I don't need to') — the Font Clamp generator website does it, configured 360→1120. Headings scale; body text doesn't ('16 pixels... on mobile it also looks good'). Line heights are percentages so they scale with whatever the font does: 180% body, 120% titles.

The third principle is separation of concerns: H1–H6 are SEO signals ('Google sees this as the most important title'), so sizes live in custom global fonts (Title 1–7, Body, Body Bold...) and the HTML tag gets chosen for meaning — 'you can still make this an h4 and it doesn't influence the size.'

Worked example · from the session

The two-headings demo: 64px vs 4rem, identical until the browser font setting flips to Large — then the rem heading grows to 80px (verified with WhatFont) and the pixel one sits frozen.

Why it matters

This is the mechanism that makes the whole typography system global, responsive, and accessible at once — the payoff for the setup tedium.

People get this wrong

The H1 is whatever the biggest text on the page is.

The H1 is what Google should read as most important; its SIZE comes from the global font it's linked to — tag and size are independent decisions.

I wanna make this point right now that you should separate the HTML tags from your size.
Typography is quite a mess in Elementor... the old system of working fonts now has to mix with the new system. It's a mess, but I think that this is the best way to do it.
For your projects

['Your SEO-o-matic project inherits the tag/size separation rule directly — heading hierarchy for crawlers is exactly what AEO audits check.']

Go deeper

In one line: All sizes in rem (1rem = browser base, default 16px) for accessibility scaling; fluid heading sizes via clamp expressions generated at fontclamp-style tools (360→1120 range); line heights in % (180 body / 120 titles); sizes defined in custom global fonts (Title 1–7, Body variants) with H1–H6 reserved for SEO meaning.

'1 rem is just a normal base 16 pixels' — and the user, not the designer, owns the base (l1425205 02:04)

Breakpoint sizes SNAP; clamp SCALES — the boom-boom demo vs the smooth shrink (l1425205 04:06)

Only two clamp inputs matter: desktop size and mobile size; the generator writes the rest (l1425205 08:06)

Body text doesn't scale down — 16px 'still looks good' on mobile; big headings scale 64→48 (l1425205 06:06)

The h-tag trap has TWO costs: only 6 size options, and Google misreading marketing titles as document structure (l1425205 10:10)

Site settings → typography connects the global Body font once — no per-layer linking; paragraph spacing zeroed there too (l1425206 12:05)

Try it now

Set your browser fonts to Large and load your own site. What moves? What's frozen? The frozen parts are your pixel debt.

▶ Watch this taught:

Check yourself

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

Why does the method put sizes in custom global fonts rather than the H1–H6 typography settings?

Two reasons: 7+ title sizes don't fit in 6 tags, and tags must stay free to express SEO importance — the biggest visual title is often NOT the page's most important heading.

05

The class system: the missing Elementor feature, patched with two CSS snippets

Elementor has no utility classes and exactly one global button style. Two snippets in the Customizer fix both — 'we're using Elementor... I only use code when I really need it. And in this chapter, you will really need it.'

Padding classes: a snippet defines pad-s / pad-m / pad-l (plus pad-top/pad-bottom variants), each a clamp expression so the padding scales desktop→mobile automatically. Usage is typing the class into a container's Advanced tab — no per-breakpoint values, globally editable by changing the snippet. The discipline from the export audit pays off here: three sizes only, 'you don't wanna have too many sizes.'

Button classes: the second snippet defines button-dark, button-light, button-outline-light, button-accent-2 — and wires their colors to Elementor's own CSS variables. The trick: inspect any global color in DevTools, copy its --e-global-color-xxxx variable, paste it into the snippet — now the buttons follow palette changes dynamically ('you can use the hex code... but then it's not dynamic'). One global rule adds the hover for ALL buttons — a 0.4s transition, 7px x-shift, and a brightness filter — replacing per-button hover setup entirely. It even works on widgets' embedded buttons (forms, popups).

The snippets live in Appearance → Customize ('the best place to place your CSS'), and he flags the whole system honestly as a stopgap: 'I heard they are working on a classes feature. Right now, they don't have it, so we still have to use code.'

Worked example · from the session

The live class run: a default button duplicated four times, each retyped — button light, button outline light, button dark, button accent 2 — morphing on the spot; then the broken-bracket debugging moment when a deleted line eats the closing brace.

Why it matters

This is where the design system becomes a WORKFLOW: pad-top-bottom-m typed in two seconds replaces a per-breakpoint padding ritual on every section of every page.

People get this wrong

No-code tools mean never touching CSS.

The method's rule is code-when-needed: two small, understood snippets buy global features the tool lacks — and get retired when Elementor ships the real feature.

Elementor is a no code tool... I have tried to avoid it as much as possible... I only use it when I really need it. And in this chapter, you will really need it.
If you know how to play with the classes, you can work really fast.
For your projects

['The --e-global-color inspection trick is a general skill: most builders expose their token system as CSS variables findable in DevTools.']

Go deeper

In one line: Customizer CSS provides what Elementor lacks: clamp-based padding utility classes (pad-s/m/l + top/bottom variants) and a button-class family (dark/light/outline/accent-2) bound to --e-global-color variables, plus one global hover rule (0.4s transition, translateX 7px, brightness filter) covering every button including widget-embedded ones.

Class usage = Advanced tab, type the name — 'you just type pad dash s or m or large. And that's it' (l1425207 04:02)

Variables over hex: palette changes flow into buttons only if the snippet references --e-global-color, not a frozen hex (l1425208 04:05)

One hover rule to rule them all: 'you don't have to set up the hover for all of your buttons' (l1425208 10:06)

The bracket lesson, live: 'you always need to start and end with the bracket. Otherwise... you will break it' (l1425208 10:06)

Site-settings button padding beneath the classes: 1rem top/bottom, 2rem sides — 'I like my buttons to have a little bit more space' (l1425208 00:01)

Alternative for the code-averse acknowledged: a padding plugin exists, 'but that will add another plug in' (l1425207 06:03)

Try it now

Inspect any Elementor site's global color and find its --e-global-color variable — the same handle his button snippet uses.

▶ Watch this taught:

Check yourself

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

Why must the button snippet use Elementor's CSS variables instead of hex codes?

Hex freezes the color at snippet-writing time; the --e-global-color variable re-resolves against the live palette, so site-settings color changes propagate into the buttons.

06

The style guide as instrument: install ugly, connect, then judge

'And it looks like shit. And that is not your fault.' — the style guide is SUPPOSED to look broken on import; broken is the baseline the system gets measured against.

His style guide is a saved template (imported as JSON into Elementor's saved templates) holding every element the system defines: colors on light and dark backgrounds, all title sizes with two-row text (so line height is visible), buttons in every class, boxes-on-backgrounds contrast pairs, and sections wearing each padding class. Freshly imported, nothing is connected — the horror show is intentional, because 'the whole goal of a style guide is to check if your design is consistent.' As colors, fonts, and classes get wired up across the chapter, the guide becomes the single page where the system proves itself — resizable in a real tab, so clamp scaling and responsive padding can be watched live (Elementor's built-in style guide preview can't resize, doesn't show sizes, buttons, or padding).

Version 2 (the Reno-from-the-future lesson) trims what Elementor caught up on: the color palette section is gone because the improved native panel now click-scrolls with live editing, while typography stays (two-row line-height checks, window-resize scaling) and the class checks deepen — every section wears a DIFFERENT pad class, and boxes now sit on every background 'because what I realized when I was designing websites is that often you have boxes on top of backgrounds.'

Worked example · from the session

The v2 walkthrough: clicking a global color scroll-jumps the guide to that swatch with the edit popup open; dragging the light color 'a little bit more towards the blue' to fix a too-white box-on-background contrast, live.

Why it matters

The guide converts 'is my design consistent?' from a feeling into a page you look at — and keeps working after launch, when clients demand color changes.

People get this wrong

A style guide is documentation you produce at the end.

It's an instrument you install FIRST, watch break, and use to verify every system decision as you make it.

And it looks like shit. And that is not your fault... This is what you should see. Okay? A horrible design.
For your projects

['Your certificates/tools pages already follow this: one page exercising every style. The v2 lesson adds the box-on-background contrast matrix as a worthwhile audit.']

Go deeper

In one line: A saved-template style guide (imported JSON) exercises the full system — colors on all backgrounds, titles with two-row line-height checks, all button classes, all padding classes, box-on-background pairs — intentionally broken until connected; v2 defers the color section to Elementor's improved native panel and doubles down on classes and contrast checks.

Import path: saved templates → import template → JSON (requires the unfiltered-uploads setting — he forgets it live and backtracks) (l1425201 04:03)

Native style guide preview's limits: no sizes, no buttons, no backgrounds, no padding, not resizable (l1425201 02:02)

The resize test IS the point: watching Title 1 clamp from 64 to 51 in a real tab with WhatFont (l1498093 04:02)

v2's motto: 'best of both worlds' — native panel for colors, template for everything the panel can't show (l1498093 08:03)

Style-guide-first workflow defended: 'when you are building, you just wanna focus on building. You don't wanna constantly check' (l1425201 00:00)

Try it now

Whatever your platform: build one page containing every token in use, on every background in use. If it doesn't exist, inconsistencies are invisible by construction.

▶ Watch this taught:

Check yourself

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

Why did v2 DELETE the color palette section?

Elementor's improved global-colors panel now click-scrolls to swatches with live editing — the template section became redundant maintenance, so the guide keeps only what the native tool still can't do.

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.

01Vector or pixel: the export decision rules that decide your page weightExport rules: digital art → SVG;

Export rules: digital art → SVG; photos → pixels; PNG only for transparency, else JPEG; shadows stripped and re-added in the builder; export 2×; compress+resize to <300KB (large) / <100KB (small); rename layers so the media library stays searchable.

'Anything that is shot on a camera is always a pixel image... anything that is digital can be an SVG' (l1425194 02:02)

Shadow-in-export cost demonstrated: 'the difference is massive... almost 10 times the size' (l1425194 08:05)

Compression defined honestly: 'destroying the image quality to reduce file size' (l1425194 10:06)

Naming discipline: six months later the media library search only works 'if you do your naming right' (l1425194 16:09)

Also prepared at export time: the padding values audit (limit to 3 sizes for the later class system) and the CPT/fields shopping list for ACF (l1425194 18:10)

02The clean install: subtraction as security and speedPer-site baseline: host clutter deleted, caching deactivated for dev, Home+Contact pages created, Hello Ele…

Per-site baseline: host clutter deleted, caching deactivated for dev, Home+Contact pages created, Hello Elementor installed and default themes deleted; plugin stack = Elementor/Pro + Classic Editor + ACF + ManageWP Worker + Admin & Site Enhancements (duplication, media replace, admin cleanup, hidden login, attempt limits).

The hack story: 'one of these older themes was hacked because I didn't update them' — deletion, not deactivation (l1425197 06:04)

Classic Editor's 5M installs read as a verdict: 'imagine... how not popular the new Gutenberg editor is' (l1425198 02:01)

ManageWP: connection-key login (no saved credentials) + free monthly backups — 'tackles 2 points' (l1425198 06:02)

Login URL rename + 3-attempt limit: robots 'know that every WordPress website in the world... has just WP admin' (l1425198 14:06)

WordPress config pass: static homepage, timezone, permalinks → post name, media auto-sizes ZEROED — 'an amateur feature' when exports are already sized (l1425197 10:06)

03The 8-color palette and the system-slot hijackCap the palette (~8 colors, ~5 backgrounds);

Cap the palette (~8 colors, ~5 backgrounds); hijack Elementor's four system slots (primary=headings, secondary=accent-hover, text=body, accent=accent) so pre-wired defaults propagate; add customs manually; wire buttons to accent, links to accent-hover, and the global body background if non-white.

'Why not use up this space from the system colors' — the secondary slot is idle, so it becomes accent hover (l1425204 04:00)

Body lighter than headings as a readability rule: 'it's a little bit nicer if your body text is just a little bit lighter' (l1425204 02:00)

The palette cap is honest, not absolute: the scooter site needed a third light + a logo color — 'sometimes you need 1 more or 2' (l1425204 02:00)

Hex-code hygiene: 'sometimes it doesn't work because you need to add a hashtag' (l1425204 06:01)

Non-white base backgrounds get set in site settings background — 'by default... it will just stay white' (l1425204 10:02)

04rem + clamp: type that respects users and scales itselfAll sizes in rem (1rem = browser base, default 16px) for accessibility scaling;

All sizes in rem (1rem = browser base, default 16px) for accessibility scaling; fluid heading sizes via clamp expressions generated at fontclamp-style tools (360→1120 range); line heights in % (180 body / 120 titles); sizes defined in custom global fonts (Title 1–7, Body variants) with H1–H6 reserved for SEO meaning.

'1 rem is just a normal base 16 pixels' — and the user, not the designer, owns the base (l1425205 02:04)

Breakpoint sizes SNAP; clamp SCALES — the boom-boom demo vs the smooth shrink (l1425205 04:06)

Only two clamp inputs matter: desktop size and mobile size; the generator writes the rest (l1425205 08:06)

Body text doesn't scale down — 16px 'still looks good' on mobile; big headings scale 64→48 (l1425205 06:06)

The h-tag trap has TWO costs: only 6 size options, and Google misreading marketing titles as document structure (l1425205 10:10)

Site settings → typography connects the global Body font once — no per-layer linking; paragraph spacing zeroed there too (l1425206 12:05)

05The class system: the missing Elementor feature, patched with two CSS snippetsCustomizer CSS provides what Elementor lacks: clamp-based padding utility classes (pad-s/m/l + top/bottom v…

Customizer CSS provides what Elementor lacks: clamp-based padding utility classes (pad-s/m/l + top/bottom variants) and a button-class family (dark/light/outline/accent-2) bound to --e-global-color variables, plus one global hover rule (0.4s transition, translateX 7px, brightness filter) covering every button including widget-embedded ones.

Class usage = Advanced tab, type the name — 'you just type pad dash s or m or large. And that's it' (l1425207 04:02)

Variables over hex: palette changes flow into buttons only if the snippet references --e-global-color, not a frozen hex (l1425208 04:05)

One hover rule to rule them all: 'you don't have to set up the hover for all of your buttons' (l1425208 10:06)

The bracket lesson, live: 'you always need to start and end with the bracket. Otherwise... you will break it' (l1425208 10:06)

Site-settings button padding beneath the classes: 1rem top/bottom, 2rem sides — 'I like my buttons to have a little bit more space' (l1425208 00:01)

Alternative for the code-averse acknowledged: a padding plugin exists, 'but that will add another plug in' (l1425207 06:03)

06The style guide as instrument: install ugly, connect, then judgeA saved-template style guide (imported JSON) exercises the full system — colors on all backgrounds, titles…

A saved-template style guide (imported JSON) exercises the full system — colors on all backgrounds, titles with two-row line-height checks, all button classes, all padding classes, box-on-background pairs — intentionally broken until connected; v2 defers the color section to Elementor's improved native panel and doubles down on classes and contrast checks.

Import path: saved templates → import template → JSON (requires the unfiltered-uploads setting — he forgets it live and backtracks) (l1425201 04:03)

Native style guide preview's limits: no sizes, no buttons, no backgrounds, no padding, not resizable (l1425201 02:02)

The resize test IS the point: watching Title 1 clamp from 64 to 51 in a real tab with WhatFont (l1498093 04:02)

v2's motto: 'best of both worlds' — native panel for colors, template for everything the panel can't show (l1498093 08:03)

Style-guide-first workflow defended: 'when you are building, you just wanna focus on building. You don't wanna constantly check' (l1425201 00:00)

Tools referenced

ToolCoverageMomentContext
ElementordemonstratedPro zip install, backend settings, experiments, site settings, custom fonts, global fonts/colors, saved-template import, site identity, user preferences
WordPressdemonstratedThe full settings pass: plugins, themes, general/reading/media/permalinks, Customizer CSS
FigmademonstratedExport workflows: hex harvesting, vector/pixel classification, bounding-box shadow control, 2x exports
ACF (Advanced Custom Fields)demonstratedInstalled as standing default — the s02 data layer's prerequisite
Hostinger / SiteGroundmentionedHostinger Cloud's pre-installed plugins are the clutter the cleanup stage deletes

Session materials

Archived locally on V: — click to open. Companion pages link to the LMS.

Action items

Resources mentioned

Resources
  • docDropbox resources folder (style guide v1 + v2 JSON, custom CSS files — 'I will add more files here')
  • docWebsite Building Checklist (Google Sheet) — every step of the method in order, design prep through launch
  • docGlobal settings for the box container (resource page with per-breakpoint width values)
  • docFont sizes resource page (pre-computed clamps: Title 1–7, body, body bold/big/small)
  • docPadding classes CSS (pad-s/m/l + top/bottom variants)
  • docButton classes CSS (button-dark/light/outline/accent-2 + global hover)
  • docFont Clamp generator website
  • docImage tooling: TinyPNG + his preferred compress-and-resize site; WhatFont Chrome extension
  • docHis prior YouTube videos: fonts/typography setup; the global-padding-via-plugin alternative

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
VerpezeWordPress
Matt MuhlenwechMatt Mullenweg (WordPress co-founder)
plus jekarta stands / Plus Jakarta sendsPlus Jakarta Sans (font family)
ManrobeManrope (font family)
Roboto SlapRoboto Slab (font family)
RAM / Ram (in font contexts)rem (CSS unit)
security listsecurity risk
HelloDollyHello Dolly (default WordPress plugin)
Eclipse toolellipse tool (Figma)
stell guide / cell guide / Stell guide previewstyle guide (preview)
font clamping websiteFont Clamp generator website
90 201920 (px, full-HD width)
1 80 / 1 20 / 1 30 (line heights)180% / 120% / 130%
2 50 by 2 50 / 3 50 times 100250×250 / 350×100 (px)
dot commasemicolon
807 hundred is normal bold800 (extra bold); 700 is normal bold
the whole goal of a style guide(correct as heard — anchor phrase)
admin and site enhancementAdmin and Site Enhancements (ASE plugin)
common shift nCmd+Shift+N (macOS incognito)

True on recording day — verify before relying