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

Chapter 5c: The Finish — Details, Feedback, AI Images, and the Polished Preview

Reno Instructor — Living With Pixels. Takes the bakery design from structurally-complete to delivered: the boring-breaker pass, the first client send and its feedback round, real and AI-generated imagery, the scalable popup, two 'spicy details' passes, and the final email that starts development without waiting for copy.

Session map

THE FINISHTHE LOOPTHE IDENTITYThe boring-breakercolor and shape before images and effec…The send cadenceprototype links, trigger words, duplica…Images both wayscompressed stock, cutouts, and AI gener…The popupdynamic-content thinking with wrap, fil…The spicy passesearned identity — icons, strokes, rotat…
The finishThe loopThe identity
click a node — its card pops up (drag it anywhere, × to close)
Concept

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

The short version

  1. The finishing order holds images back on purpose: finish the structural sections (location sans form, opening hours, checklist-driven footer), then a 32-minute BORING-BREAKER pass in color and shape only — 'don't add fancy stuff to solve basic layout problems... mess around with the backgrounds, shapes, and rounded corners before you start to add all kinds of effects.'
  2. THE FIRST SEND is choreography: Share Prototype (never the raw file), incognito-tested, hyperlinked in an email that says 'phase 1,' calls lorem ipsum 'filler words,' scopes feedback to typography/color/overall feel, and discloses exactly what clicks. Lucy's reply — 'great start' ('trigger words for designers... don't think about it too much'), font too playful vs the logo, one section 'too pretentious' — arrives mild BECAUSE the process was gated: 'clients will have less feedback because we are guiding them every step of the way.'
  3. FEEDBACK discipline: duplicate the artboard first (Home v1 → v2) — 'your brain will always try to convince you that you can do better,' so keep the before visible; batch the notes; fix spacing back to the token scale (with an honest off-scale 62 'by eye'); and never re-send per micro-fix: 'you're not an employee. You have your own business.'
  4. IMAGES both ways: stock (Envato bakery set) compressed 32MB→400KB via Bulk Resize Photos, subjects cut out for sticker-style overlaps — and AI: 'we're in the time of AI. Let's generate it' — ChatGPT product shots with iterated prompts ('keep it sourdough' — 'sometimes ChatGPT just changes the whole bread'), now his STARTING point over stock hunts.
  5. The POPUP is design-system thinking on dynamic content: wrap + fill-container so ingredient tags flow to new rows ('many designers forget about this'), wired with Open Overlay (not Navigate To), auto-dimmed background — the one interaction the final email names as clickable.
  6. TWO SPICY PASSES make it custom: scattered bread icons (Outline Stroke + Union so SVGs scale; check icon packs for hidden trademark layers), a secondary yellow stroke propagated via Copy/Paste Properties, ±1° rotations — and the signature move: the client's own LOGO MOTIF (three steam lines) extracted and repeated across sections. 'If you have a logo with a visual element, use it throughout the website.'
  7. The FINAL EMAIL reframes the same file — 'no longer just a rough concept, but a polished preview' — keeps the not-a-real-website disclaimer, and proposes development WITHOUT final copy: 'many clients don't have the text ready... this can take weeks. If you're unlucky, months.'

The concepts

01

The boring-breaker: color and shape before images and effects

'We're still not adding images and any kind of crazy effects so that we don't get distracted' — the discipline of finishing in the right order.

Structure first: location (map, no form — 'she didn't want a form, remember?'), opening hours (duplicated from location; a new space-xxs=4 token; spacing inconsistencies reconciled to 24 heading→body, 32 intro→content), the footer built against a pasted requirements CHECKLIST (WhatsApp, official social icons, small print, NO form) with the logo's SVG strokes outlined so scaling doesn't distort — then Present-mode review that rules it 'not ready yet to send.'

Then the pass itself, images still banned: per-section background variation (Light 1/2/3, a dark mid-page breaker) to kill the one-big-block feel; the hero saturated toward primary with asymmetric 128-top padding; the full-bleed dark footer via Ignore Auto Layout and a 1440-wide rect (1120 + 2×160 — the math aligning to the grid); bracket-key layering; a stroke-only rounded shape duplicated and rotated across sections as a unifier; corner tokens applied everywhere including the map embed; interim copy drafted by ChatGPT so the send isn't bare lorem ipsum ('Real bread, real people, just around the corner'). The governing line: 'don't be scared to add a bit of space' — and 'this is not a school assignment. This is just a design.'

Worked example · from the session

The repetition alarm mid-build — 'our design is becoming a little bit repetitive now, which is something that I don't like' — triggering the background-variation pass rather than an effects hunt.

Why it matters

Effects mask layout problems; color and shape reveal whether the layout is actually done. The ban forces the diagnosis.

People get this wrong

A design that feels flat needs effects.

It usually needs background rhythm, space, and corner consistency — the cheap passes. Effects added over a flat layout decorate the problem.

Don't add fancy stuff to solve basic layout problems... mess around with the backgrounds, with the shapes, with the rounded corners before you start to add all kinds of effects.
This is not a school assignment. This is just a design.
For your projects

["Same doctrine as your site work: structure validated before decoration — build_site's 0/0 gate is your Present-mode review."]

Go deeper

In one line: Finishing order = complete structure (requirements-checklist-driven, token-connected) → a color/shape-only enrichment pass (backgrounds, corners, decorative geometry, interim AI copy) → only then images and effects — because 'fancy stuff' must never be the fix for basic layout problems.

The footer checklist pasted on canvas and checked item by item (l2600925 0:00:00)

Outline Stroke on the logo: fixed 2.07 stroke width breaks scaling (l2600925 0:08:10)

Full-bleed math: 1120 + 160×2 = 1440, grid-aligned (l2603320)

'Don't add fancy stuff to solve basic layout problems' (l2603320 0:16:11)

Present-mode self-review before any client send (l2600925 0:10:11)

Try it now

Take any 'boring' page and change ONLY section backgrounds and corner radii. If it's still boring, the problem was never missing effects.

▶ Watch this taught:

Check yourself

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

Why draft interim copy with ChatGPT before the first send?

Lorem ipsum reads as unfinished to clients even when the design is the question — plausible placeholder copy keeps feedback on styling, which is exactly what the send's email scopes for.

02

The send cadence: prototype links, trigger words, duplicate-then-edit, don't over-send

'This is a great start' — 'these are trigger words for designers... don't think about it too much.'

THE SEND: Share Prototype, never the file (the client sees a clean scroll-through, not your inspiration boards); test in incognito; hyperlink the URL (Cmd+K), don't paste Figma's monster link. The email is engineered: 'phase 1... a rough version'; 'filler words' not 'lorem ipsum'; feedback scoped to 'general styling of the typography, color scheme and overall feel'; full disclosure of what does and doesn't click. The result is the process paying out: 'clients will have less feedback because we are guiding them every step of the way. The client feels guided and safe.'

THE FEEDBACK: Lucy's two real notes (font too round versus the serious logo; the self-congratulatory section folded into the intro) get applied on a DUPLICATE — 'designers love to just try out things until it feels good. But it never feels good because your brain will always try to convince you that you can do better. Have 2 versions next to each other.' The craft of applying: Paste-and-Match-Style to avoid inherited formatting, Figma's spellcheck catching 'craftmanship,' BatchStyler swapping headings to Clash Grotesque in one pass (with the missing-Bold warning read correctly), calculation fields (+128) for precise offsets, Group (not auto layout) to move impossible clusters. And the boundary that ends the loop: no re-send per micro-fix — 'you're not an employee. You have your own business.'

Worked example · from the session

The role-play disclosure kept honest: Lucy's replies are instructor-authored example dialogue — the cadence is real, the client is not.

Why it matters

Feedback volume is a function of process design — the gated cadence produces two notes where ungated projects produce twenty.

People get this wrong

Responsiveness means sending updates as you fix things.

Each send costs client attention and invites a fresh round. Batch the fixes; send at gates. Frequency signals employee; cadence signals professional.

The delivery loop Finish + break boredom color and shape only Send prototype phase-1 framing, scoped fe edback Feedback on a duplicate batch the notes, no re-sen ds Images + popup + spice AI shots, logo motif Polished preview develop without waiting fo r copy the loop runs once or twice, on duplicated artboards, at gate cadence 'You're not an employee. You have your own business' - batch fixes, send at gates only
Finish, send, feedback on a duplicate, detail passes, polished preview - the delivery loop
These are trigger words for designers... don't think about it too much.
Your brain will always try to convince you that you can do better... have 2 versions next to each other.
You're not an employee. You have your own business.
This version is no longer just a rough concept, but a polished preview of the final design.
If you wait for final text, you're gonna slow down the process... this can take weeks. If you're unlucky, it can take months.
For your projects

["'Great start' as trigger-word management belongs in your client-comms notes — the phrase is universal."]

Go deeper

In one line: Delivery cadence = prototype-link sends (incognito-tested, disclosure-complete, feedback-scoped) → notes applied in batch on a renamed duplicate → alignment cleanup back to the token scale → no interim re-sends → the final reframe. Praise is stage-appropriate signal, not verdict.

Share Prototype vs file share — what the client never sees (l2605778 0:00:00)

'Filler words,' never 'lorem ipsum' — client-facing vocabulary (l2605778 0:02:02)

Duplicate-before-edit as taste-management, not just rollback (l2605779 0:00:00)

BatchStyler's missing-weight warning read, not ignored (l2605779 0:10:06)

'You're not an employee' — the over-communication boundary (l2605779 0:16:13)

Try it now

Write your send email's feedback-scope sentence before your next delivery. The scope you set is the feedback you get.

▶ Watch this taught:

Check yourself

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

Why is the duplicate about psychology as much as safety?

Because 'it never feels good' — without a fixed BEFORE beside the after, the designer's shifting taste re-litigates finished work forever. The duplicate externalizes the comparison.

03

Images both ways: compressed stock, cutouts, and AI generation as the new first stop

'It is not your responsibility to get great images even though some clients will put that responsibility on you' — and then he fills the gap twice over anyway.

REAL: Envato bakery photography, with hygiene taught as craft — the 8000×5000, 32MB source run through Bulk Resize Photos to ~400KB ('60, 70, 80 times smaller'; Figma tolerates big files, exports and dev do not); a paid background-removal tool for subject cutouts (the free-tier low-res paywall called out: 'see how they trick you? I don't like this kind of marketing' — paid anyway, ~€3 for 3); Figma's mask workflow (image into Fill, Option+double-click to crop — 'a little bit more clicks, unfortunately' than XD); transparent cutouts layered sticker-style over color blocks with Ignore Auto Layout, Lucy herself bleeding into the next section.

AI: 'we're in the time of AI. Let's generate it.' ChatGPT expands the bread list from three to six, then generates the sourdough product shot — first result too saturated, refined with 'make the bread sit on a wooden table... not too saturated. Keep it sourdough,' the constraint existing because 'sometimes ChatGPT just changes the whole bread if you don't tell it to stick to a specific style.' The verdict that dates itself proudly: 'I would even start here these days... I would not even try to spend hours on those image websites if you can just generate something that looks super realistic.'

Worked example · from the session

The dropped image forcing system work: the generated square didn't fit the 230px slot — component slot resized to 360, parent artboard cascaded. Content changes are system changes.

Why it matters

Imagery is where designs stall on clients; the two-lane sourcing (compressed stock + constrained generation) removes the dependency without absorbing the responsibility.

People get this wrong

AI images are the fallback when stock fails.

His inversion: generation first (perfect palette fit, no license, iterated in minutes), stock when authenticity demands real humans/places — with client photos always beating both where they exist.

We're in the time of AI. Let's generate it.
Sometimes ChatGPT just changes the whole bread if you don't tell it that it needs to stick to a specific style.
For your projects

['OI-089: image slots in the starter-site generator should carry palette-constrained generation prompts as defaults.']

Go deeper

In one line: Image sourcing = client/stock photography compressed before use (target ~hundreds of KB) with cutouts for composition, plus AI generation with palette-constrained, subject-locked, iterated prompts — AI now the first stop, stock the fallback, and neither the designer's contractual burden.

32MB → 400KB — compression as a taught step, tools listed (Bulk Resize Photos, Image2Go, his toolsforlater.com list) (l2605939 0:06:03)

The paywall called out and paid anyway — pragmatism over principle (l2605939 0:06:03)

Option+double-click: the Figma crop-within-mask move (l2605939 0:08:05)

'Keep it sourdough' — subject locking as prompt craft (l2605940 0:02:02)

'I would even start here these days' — the stock-to-AI inversion, time-stamped (l2605940 0:06:05)

Try it now

Generate one product shot with an explicit palette constraint and a keep-it-X subject lock. The lock is the skill.

▶ Watch this taught:

Check yourself

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

Why compress before placement when Figma 'doesn't really matter' about size?

The file is not the product: exports, handoff, and the built site inherit whatever you placed. Figma's tolerance is a trap that defers the cost to development.

04

The popup: dynamic-content thinking with wrap, fill, and Open Overlay

'This looks good. It's fine. But what if you have more ingredients, right? Many designers forget about this.'

The bread-details popup pays off the sitemap's oldest promise (details behind a pop-up, not new pages). Built as a standalone 8-column frame ('breadspopup') from existing components — name, image, category tag, ingredient rows, an allergy 'wheat off' icon found on first search — its teaching core is SCALABILITY: the ingredient-tag row set to wrap + fill-container, validated by adding and deleting test tags until extra ingredients flow to a new row automatically. 'Our design is fully scalable' is earned, not asserted. The close button is a rotated plus sign; the wiring is the right interaction primitive — OPEN OVERLAY, not Navigate To ('Figma doesn't know it's a popup even though you call it a popup') — centered, close-on-outside-click, and Figma auto-dimming the background ('Figma is super smart').

Worked example · from the session

The default-gap surprise: the wrap gap inherits 24 ('a little bit too high for a row') and needs overriding — defaults are suggestions, not decisions.

Why it matters

It's the design-system mindset applied where designers skip it: content that VARIES. The popup is a template, not a picture.

People get this wrong

Mocks need only look right with the sample content.

Sample content is the best case; the component's job is the worst case. Wrap and fill are how a mock survives contact with real data.

The design should be scalable, right? Many designers forget about this.
For your projects

['Identical to your KB schema philosophy: records must survive variable content, which is why validate.py exists.']

Go deeper

In one line: Dynamic-content components = standalone frames assembled from system parts, with variable-length rows on wrap + fill-container (validated by test content), correct interaction primitives (Open Overlay for modals), and legibility aids (auto-dim or stroke) — designed for the content that will exist, not the mock that does.

Wrap + fill validated with test tags, then cleaned (l2605941 0:10:14)

Open Overlay vs Navigate To — the primitive encodes the intent (l2605941 0:12:16)

Auto-dim detected by Figma; shadow tried and demoted (l2605941 0:16:19)

The allergy icon: 'wheat off,' first search — icon vocabularies are deep (l2605941)

Try it now

Stress-test one of your components with double its expected content. What breaks is what wrap/fill should have owned.

▶ Watch this taught:

Check yourself

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

Why build the popup OUTSIDE the homepage artboard?

It's not page content — it's an overlay state. A standalone frame keeps the homepage honest, lets the prototype summon it anywhere, and makes it reusable across breads.

05

The spicy passes: earned identity — icons, strokes, rotations, and the logo motif

'It looks like the logo is on fire. That is really nice' — three lines lifted from the client's own mark, suddenly everywhere.

Two passes on a fresh duplicate (Home v3). PASS ONE: bread-line icons (Iconoir, Iconify) scattered through the hero — each REJECTED or kept by relevance ('does this have to do anything with bread?'), each standardized by Outline Stroke + Pathfinder Union so SVGs scale (and each icon pack's layer panel checked for hidden trademark sub-layers — a real gotcha); sizes matched BY EYE ('use your eyes when you're resizing icons... you get a better result than sticking to the numbers'); a drop-shadow experiment honestly abandoned (can't bind shadow color to variables) for a secondary-yellow bottom/right stroke propagated via Copy Properties → Paste Properties (which fails silently on non-auto-layout rects — wrapped first); ±1° rotations for the hand-placed feel, cashing in Lucy's original moodboard ask: option 2 with elements of option 1.

PASS TWO, the signature: the LOGO MOTIF — the mark's three steam lines extracted, outlined, unioned, and repeated above bread imagery in four-plus sections (skipped where 'busy enough') — 'if you have a logo from a client that has a visual element, you can use that throughout the website. These are very small details but I think they matter.' Plus the sweeps a system can't do: un-globalized local colors caught and rebound, an off-palette background chosen by eye and FLAGGED for palette formalization, the heading font landing on Clash Display because its joined ligatures echo the logo's wordmark — swapped manually because 'the BatchStyler plugin which we used before is not available anymore.'

Worked example · from the session

The trademark-layer check: some icon packs hide a branded sub-layer in the pasted SVG — 'always open that layer panel and check what's inside.'

Why it matters

Custom is not decoration volume — it's client-specific identity, and the cheapest source of it is the asset the client already owns: their logo.

People get this wrong

Custom feel comes from adding more unique elements.

It comes from ONE identity element repeated with restraint — the logo motif in four sections beats twelve unrelated flourishes, because repetition is what reads as brand.

If you have a logo from a client that has a visual element, then you can use that throughout the website.
For your projects

['Plugin mortality (BatchStyler) is the freshness lesson in miniature — workflow-critical third-party plugins deserve fallback notes in any method doc.']

Go deeper

In one line: The spice passes = relevance-filtered icon scatter (outlined, unioned, trademark-checked, eyeball-sized), variable-compatible depth (strokes over shadows, propagated via Copy Properties), micro-rotations, and the logo-motif extraction — applied on a duplicate, with off-system choices flagged for formalization.

Outline Stroke + Union: the recurring SVG-scaling ritual, third appearance (l2605943 0:04:02)

Shadows rejected FOR A SYSTEM REASON: no variable binding (l2605943)

Copy/Paste Properties needs auto layout — the silent-failure gotcha (l2605943 0:10:05)

Eyes over numbers for icon sizing — calibrated inconsistency (l2605943 0:06:02)

BatchStyler gone by recording — plugin mortality on the record (l2605944 0:08:02)

Clash Display chosen for logo-echoing ligatures — type as identity rhyme (l2605944)

Try it now

Open any client logo and hunt for one extractable element. If it survives outline+union, you have a site-wide motif for free.

▶ Watch this taught:

Check yourself

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

Why did the shadow lose to the stroke?

Not aesthetics — governance: shadow colors couldn't bind to the palette variables, so every future palette change would orphan them. The stroke stays connected. System compatibility is a design criterion.

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 boring-breaker: color and shape before images and effectsFinishing order = complete structure (requirements-checklist-driven, token-connected) → a color/shape-only…

Finishing order = complete structure (requirements-checklist-driven, token-connected) → a color/shape-only enrichment pass (backgrounds, corners, decorative geometry, interim AI copy) → only then images and effects — because 'fancy stuff' must never be the fix for basic layout problems.

The footer checklist pasted on canvas and checked item by item (l2600925 0:00:00)

Outline Stroke on the logo: fixed 2.07 stroke width breaks scaling (l2600925 0:08:10)

Full-bleed math: 1120 + 160×2 = 1440, grid-aligned (l2603320)

'Don't add fancy stuff to solve basic layout problems' (l2603320 0:16:11)

Present-mode self-review before any client send (l2600925 0:10:11)

02The send cadence: prototype links, trigger words, duplicate-then-edit, don't over-sendDelivery cadence = prototype-link sends (incognito-tested, disclosure-complete, feedback-scoped) → notes ap…

Delivery cadence = prototype-link sends (incognito-tested, disclosure-complete, feedback-scoped) → notes applied in batch on a renamed duplicate → alignment cleanup back to the token scale → no interim re-sends → the final reframe. Praise is stage-appropriate signal, not verdict.

Share Prototype vs file share — what the client never sees (l2605778 0:00:00)

'Filler words,' never 'lorem ipsum' — client-facing vocabulary (l2605778 0:02:02)

Duplicate-before-edit as taste-management, not just rollback (l2605779 0:00:00)

BatchStyler's missing-weight warning read, not ignored (l2605779 0:10:06)

'You're not an employee' — the over-communication boundary (l2605779 0:16:13)

03Images both ways: compressed stock, cutouts, and AI generation as the new first stopImage sourcing = client/stock photography compressed before use (target ~hundreds of KB) with cutouts for c…

Image sourcing = client/stock photography compressed before use (target ~hundreds of KB) with cutouts for composition, plus AI generation with palette-constrained, subject-locked, iterated prompts — AI now the first stop, stock the fallback, and neither the designer's contractual burden.

32MB → 400KB — compression as a taught step, tools listed (Bulk Resize Photos, Image2Go, his toolsforlater.com list) (l2605939 0:06:03)

The paywall called out and paid anyway — pragmatism over principle (l2605939 0:06:03)

Option+double-click: the Figma crop-within-mask move (l2605939 0:08:05)

'Keep it sourdough' — subject locking as prompt craft (l2605940 0:02:02)

'I would even start here these days' — the stock-to-AI inversion, time-stamped (l2605940 0:06:05)

04The popup: dynamic-content thinking with wrap, fill, and Open OverlayDynamic-content components = standalone frames assembled from system parts, with variable-length rows on wr…

Dynamic-content components = standalone frames assembled from system parts, with variable-length rows on wrap + fill-container (validated by test content), correct interaction primitives (Open Overlay for modals), and legibility aids (auto-dim or stroke) — designed for the content that will exist, not the mock that does.

Wrap + fill validated with test tags, then cleaned (l2605941 0:10:14)

Open Overlay vs Navigate To — the primitive encodes the intent (l2605941 0:12:16)

Auto-dim detected by Figma; shadow tried and demoted (l2605941 0:16:19)

The allergy icon: 'wheat off,' first search — icon vocabularies are deep (l2605941)

05The spicy passes: earned identity — icons, strokes, rotations, and the logo motifThe spice passes = relevance-filtered icon scatter (outlined, unioned, trademark-checked, eyeball-sized), v…

The spice passes = relevance-filtered icon scatter (outlined, unioned, trademark-checked, eyeball-sized), variable-compatible depth (strokes over shadows, propagated via Copy Properties), micro-rotations, and the logo-motif extraction — applied on a duplicate, with off-system choices flagged for formalization.

Outline Stroke + Union: the recurring SVG-scaling ritual, third appearance (l2605943 0:04:02)

Shadows rejected FOR A SYSTEM REASON: no variable binding (l2605943)

Copy/Paste Properties needs auto layout — the silent-failure gotcha (l2605943 0:10:05)

Eyes over numbers for icon sizing — calibrated inconsistency (l2605943 0:06:02)

BatchStyler gone by recording — plugin mortality on the record (l2605944 0:08:02)

Clash Display chosen for logo-echoing ligatures — type as identity rhyme (l2605944)

Tools referenced

ToolCoverageMomentContext
FigmademonstratedThe finishing toolkit: Open Overlay, wrap+fill, Outline Stroke, Pathfinder Union, Copy/Paste Properties, calculation fields, constraints, spellcheck
ChatGPTdemonstratedCopy drafting and palette-constrained image generation - 'I would even start here these days'
EnvatodemonstratedThe bakery stock set; its own AI generation mentioned as an alternative
Bulk Resize Photosdemonstrated32MB -> 400KB; Image2Go and his toolsforlater.com list as companions
IconifydemonstratedIn-Figma icon sourcing beside Iconoir; Lucide used for the location icon
Batch StylerdemonstratedThe heading-font batch swap - then 'not available anymore' by lesson 37; no great replacement found
FontshareexplainedClash Grotesque then Clash Display - the ligature-echo font choice
RelumementionedFooter starting template (as-heard 'Reeloom')
LucidementionedLocation icon source (as-heard 'Lucida')
WhatsAppmentionedThe footer's contact channel per the client's checklist

Action items

Resources mentioned

Resources
  • docThe send-email templates (first + final)
  • docClient image assets (Dropbox)
  • doctoolsforlater.com

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
JetGPT / ChetGPT / CheckgptChatGPT
Lucida iconsLucide (icon library)
Icon NoirIconoir
ReeloomRelume
Pali / Pallythe interim heading font (Fontshare's Pally, likely) - replaced by Clash Display
Clash GrotesqueClash Grotesk (Fontshare's actual spelling) - verify
page toolpaid tool (the background remover)
toolsforlater dot comas-heard personal-site URL - unverified

True on recording day — verify before relying