The Mural Guys

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.

The Mural Guys — white on dark
The Mural Guys — colour on bone
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.

Typography

Type system.

Scale

Layout

Spacing scale.

4-based scale, 0 → 160 px. Pulled directly from spacing in tokens.ts.

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 & hover library.

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.

Cursor-driven

Pointer position feeds CSS custom properties via rAF-throttled JS. Desktop / fine-pointer only — touch devices skip these entirely.

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.

Ambient & continuous

Always-on motion. Each effect pauses off-screen or when the tab is hidden, and is fully suppressed under reduced motion.

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-char 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

Page padding & 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.

Brand & build by Dotwall for The Mural Guys

This page is noindex, nofollow and excluded from sitemap-index.xml.