Internal
Brand & Design System
A live snapshot of the tokens, type and components powering the site. Values render from src/styles/tokens.ts — edit there to update this page.
Identity
Logo.
- Primary mark
- The Mural Guys wordmark
- Files
-
/images/themuralguys-logo-white.svg
/images/themuralguys-logo-colour.svg - Clear space
- Min. 1× cap-height on every side
Palette
Colours.
-
Ink
colors.ink
#050505
Darkest. Footer + invert text.
-
Base
colors.base
#0a0a0a
Body background.
-
Surface
colors.surface
#161616
Cards, raised areas.
-
Line
colors.line
#2a2a2a
Borders, hairlines, dividers.
-
Ink Soft
colors.inkSoft
#c9c4bc
Body copy on dark.
-
Bone
colors.bone
#f4f1ec
Primary text + invert bg.
-
Gold
colors.gold
#c9a961
Accent. CTAs, lines, marks.
-
Gold Bright
colors.goldBright
#e0c075
Hover/highlight gold.
Typography
Typesystem.
-
Display
Aa
Bebas Neue Pro Semi-Expanded (Adobe)
"bebas-neue-pro-semiexpanded", "Barlow Condensed", system-ui, sans-serif
-
Body
Aa
Inter Variable 400–700
"Inter Variable", "Inter", system-ui, sans-serif
-
Mono
Aa
Helvetica Neue
"Helvetica Neue", Helvetica, Arial, sans-serif
Scale
-
Display XL
5xl · 6rem
Lettering
-
Display Lg
4xl · 3.5rem
Reception Branding
-
Display Md
3xl · 2.5rem
Built for London
-
Heading Lg
2xl · 2rem
Our Services
-
Heading Md
xl · 1.5rem
Materials & Construction
-
Heading Sm
lg · 1.25rem
Polished Stainless Steel
-
Body Lg
md · 1.125rem
The UK’s trusted partner for commercial wall graphics.
-
Body
base · 1rem
Letters can be mounted flush, or fixed using stainless steel standoffs to create a dramatic floating effect.
-
Body Sm
sm · 0.875rem
Carried out by our experienced team, always with minimal disruption.
-
Caption
xs · 0.75rem
EST. 2016 · LONDON
Layout
Spacingscale.
4-based scale, 0 → 160 px. Pulled directly from spacing in tokens.ts.
-
0
0
-
1
4px
-
2
8px
-
3
12px
-
4
16px
-
5
20px
-
6
24px
-
8
32px
-
10
40px
-
12
48px
-
16
64px
-
20
80px
-
24
96px
-
32
128px
-
40
160px
Shape
Corners.
Default
2px
Sharp + bold. Applied everywhere except round badges (full).
Movement
Motion.
- Standard
- 200ms
- Hover micro-interactions, underline reveal, arrow slide, link colour
- Card lift
- 320ms
- Card background, border & shadow on .fx-lift / .fx-invert
- Hero / scroll
- 400ms
- Section reveals, headline drops, cursor-glow fade-in
- Image zoom
- 700ms
- .fx-zoom — generous easing so it reads as deliberate
- Ease — soft out
- cubic-bezier(0.16, 1, 0.3, 1)
- Default — underline, arrow, zoom
- Ease — card
- cubic-bezier(0.22, 1, 0.36, 1)
- Heavier curve for cards, magnetic pull, sector icons
- Marquee
- 40s linear infinite
- Continuous horizontal scroll; pauses on hover
- Reduced motion
- Honoured
- All transitions & animations zeroed. Particles, scroll-progress, cursor glow and brand cursor are hidden entirely. Scroll-wipe headings paint solid bone.
Behaviour
Motion&hoverlibrary.
Every interactive effect used across the site, grouped by trigger. Hover any tile to see the effect live. All effects mirror on :focus-visible for keyboard nav and collapse to zero-duration transitions when prefers-reduced-motion: reduce is set.
Hover & focus
Standard 200 ms with the soft-out easing. Cards use a heavier 320 ms curve for a more deliberate lift.
-
.fx-underline
200 ms · scaleX 0→1 from left
Gold hairline reveals beneath an inline link.
Nav, footer, contact details, in-page links.
-
.fx-arrow .arrow
200 ms · translateX 0→4px
Section headers, more-links, CTA buttons.
-
CTAButton
colour fill + arrow slide
Primary fills gold-bright; ghost shifts border + text to gold.
-
.fx-lift
320 ms · bg → surface, drop shadow
Project tile
Background lifts toward surface, border softens, subtle shadow drops.
Projects mosaic, gallery tiles.
-
.fx-invert
320 ms · same idea, overrides bg-surface
Sector card
Lifts above siblings via z-index. Text & accent colours stay put.
5 reasons, reviews, FAQ, services, testimonials.
-
.fx-zoom
700 ms · child image scale 1 → 1.08
Service tiles, projects mosaic, gallery.
-
.fx-line-grow
480 ms · gold gradient grows L→R
Locations + sector lists, footer columns.
-
.sector-card-icon
450 ms · lift, tilt, scale (per nth-child)
OfficeHospitalityRetailTilt alternates by position — adds personality without rhythm-killing repetition.
-
::selection
global — text selection
Select this paragraph to see the gold highlight with ink-coloured text — applied site-wide.
Selection background: gold, foreground: ink.
Cursor-driven
Pointer position feeds CSS custom properties via rAF-throttled JS. Desktop / fine-pointer only — touch devices skip these entirely.
-
[data-magnetic]
240 ms · translate3d(--tx, --ty)
Strength configurable via data-magnet (default 18). Hero ghost CTA uses 12 for restraint.
-
[data-cursor-glow]
400 ms fade · 520px radial gold halo follows cursor
Move your cursor across this panel — a soft gold light tracks it. Used on the homepage hero and every page hero.
-
.brand-cursor
280 ms · gold ring trails the system cursor
Active site-wide on desktops with a fine pointer. The ring expands over interactive elements (a, button, [data-magnetic]), shrinks on press and hides over form fields so it doesn't fight the caret.
Lerps with 0.1 easing (0.14 while pressed). Honours prefers-reduced-motion.
-
.brand-cursor.is-field
opacity → 0 over form fields
Cursor ring fades so caret stays visible.
Scroll-driven
Powered by Motion One's scroll() driver, with a Lenis smooth-scroll layer when available. All scroll effects pause off-screen and skip entirely under reduced motion.
-
[data-scroll-heading] / .scroll-char (per word)
Per-character RGB lerp from #2a2a2a → bone across a 44 vh band
Scrollpastthis headlinetoseeit.
Smoothstep eased with ~8-char overlap so several letters fade at once. Used on every SectionHeader and bespoke headings via the <ScrollHeading> component.
-
.fx-scroll-progress
4 px vertical gold bar, glowing, fixed left edge
Pinned to the left edge of every page, height fills 0 → 100 vh as you read down. Look at the left edge of this page now.
Slims to 3 px under 640 px. Rail behind is gold @ 8% alpha for context.
-
[data-parallax-bg]
translateY 0 → 180 px across hero exit
Hero background image translates as the section scrolls through the viewport. The hero is over-extended ±15% to hide edges.
See it on any page hero. Skipped under reduced motion (image stays put with no transform applied).
Ambient & continuous
Always-on motion. Each effect pauses off-screen or when the tab is hidden, and is fully suppressed under reduced motion.
-
<Particles /> — .fx-particles
Canvas: drifting motes + constellation lines + cursor repel
Move your cursor across this panel. Motes spring back to a base velocity, twinkle on a per-mote phase, and pause when the canvas leaves the viewport.
Props: count, color, maxAlpha, linkDistance, repelRadius. devicePixelRatio-aware, O(n²/2) link pass — keep count modest.
-
.fx-marquee / .fx-marquee-track
40 s linear infinite · pause on hover · mask-edges
- Shoreditch
- ·
- Canary Wharf
- ·
- Soho
- ·
- Mayfair
- ·
- Hackney
- ·
- Camden
- ·
Wrap two identical groups inside the track — CSS translates -50% so the loop is seamless. Hover anywhere on the strip to pause.
-
.fx-line
Static 1 px gold hairline accent
Section dividers, accent rules under eyebrows.
-
canvas-confetti
One-shot burst — /thank-you only
Fires a timed multi-burst on /thank-you using brand gold, bone and WhatsApp green. Skipped entirely under reduced motion.
Bundled lazily — only loads on the thank-you page.
Class reference
- .fx-underline Inline link — gold underline reveal
- .fx-arrow .arrow Arrow slides 4 px on hover
- .fx-lift Card lifts toward surface + shadow
- .fx-invert Card lift with !important + z-index pop
- .fx-zoom Inner image scales 1.08 over 700 ms
- .fx-line-grow List row — gold gradient grows left → right
- .sector-card-icon Icon lifts, tilts and scales
- .fx-marquee / -track Continuous loop, pauses on hover
- .fx-line Static gold hairline divider
- .fx-particles Particle field canvas (via <Particles />)
- .fx-scroll-progress Left-edge scroll progress bar
- [data-scroll-heading] Per-word scroll-wipe headline
- [data-parallax-bg] Hero bg translates with scroll
- [data-magnetic] Button follows pointer (data-magnet=18)
- [data-cursor-glow] Radial gold halo follows pointer
- .brand-cursor Site-wide gold ring cursor (global)
Container
Pagepadding&grid.
- Outer container
- max-w-7xl mx-auto
- Used by every section root
- Inline gutter
- px-6 (24 px)
- Mobile + tablet + desktop
- Section padding
- py-20 / md:py-24
- 80 / 96 px vertical
- Hero
- h-svh, capped 900 px
- Stays inside the viewport on any screen
- Section header gap
- mt-12 below header
- 48 px to the content grid
- Hairlines
- gap-px on bg-line
- 1 px dividers between grid children
Responsive
Breakpoints.
-
Mobile
< 640px
1 columns
-
sm
≥ 640px
2 columns
-
md
≥ 768px
2–3 columns
-
lg
≥ 1024px
3–5 columns
-
xl
≥ 1280px
5 columns
Brand & build by Dotwall for The Mural Guys
This page is noindex, nofollow and excluded from sitemap-index.xml.