Skip to content
Mission Control

That ticket didn’t send. Give it another try below, or mail us directly at help@synrgy.co.za.

Category / optional, we’ll route it

Echo is standing by. Log your request and Mission Control will route it to the right team. Fast, focused, and built to keep things moving.

If logging a ticket isn’t your thing, reach us directly below.

Call the studio

010 271 1722

What you log here lands in the studio help desk, and we only use it to sort your request out.

On this page

How the site is built

The Synrgy brand guidelines.

Every colour, type size, shape and motion rule this site is built from, rendered live from the real values rather than described in a document. What you see on this page is what the rest of the site is using, because it reads from the same stylesheet.

Foundations

The colour, type, shape and motion rules the rest of the site is built from, rendered live from the real values rather than described in a document.

The load-bearing rule

Green is Digital. Purple is Creative.

Everywhere, without exception: icons, tags, list rails, chevrons, footer columns, hover states, chart series. When both tracks are meant together, run green into purple as a gradient rather than picking one.

Digital SolutionsCreative Services

Colour

Surfaces

Progressively lighter as elements stack toward the viewer.

ink

.

Page background

ink-deep

.

Badge plates, type on a green fill

panel

.

Panels and cards on the page

raised

.

Controls and badges on a panel

line

.

Default hairline and border

line-lit

.

Border on hover, dim rules

Brand accents

green

.

Digital Solutions

green-lift

.

Green gradient top end

purple

.

Creative Services

purple-deep

.

Purple gradient bottom end

purple-lift

.

Purple text on dark

Text

Ag

fg

.

Primary text

Ag

muted

.

Body and secondary text

Ag

dim

.

Labels, numerals, tertiary

Ag

on-purple

.

Text on a solid purple fill

Colour

Brand gradient

The one earned green-to-purple, held solid at each end so the blend is a narrow band in the middle. Green-lift at 0 and 35%, base purple at 65 and 100%, left to right. The token is --gradient-brand, applied to text through .text-gradient-brand. Display headings only: the purple end sits at the AA large-text floor, so it never carries body-size text.

Everything working in Synrgy.

Typography

Type scale

One family, Poppins. Named by role, not size.

Synrgy--text-micro9pxHero console readout labels
Synrgy--text-label11pxTelemetry labels, eyebrows
Synrgy--text-caption12pxList numerals, legal line
Synrgy--text-sm14pxFooter links, secondary meta
Synrgy--text-body15pxDefault body copy
Synrgy--text-lead17pxIntro and lead paragraphs
Synrgy--text-title-sm18pxStep and card headings
Synrgy--text-title20pxPanel headings
Synrgy--text-title-lg24pxReadout figures, client names
Synrgy--text-display-smclamp 22-32pxStatement lines in a panel
Synrgy--text-displayclamp 30-51pxSection headings (h2)
Synrgy--text-display-lgclamp 42-80pxPage headline (h1), CTA

The one named exception

--font-mono is the one place a second family is allowed: a drawing that is literally a terminal takes the reader's own system monospace stack rather than Poppins, which is the most honest face for one. Nothing is downloaded for it.

--font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;

Typography

Measures

Line length is tokenised in ch so it tracks the type it holds, generating the max-w-measure-* utilities. The rule on the right marks where each measure caps the line.

max-w-measure-heading16ch · Card and panel headings

Smart systems, strong brands.

max-w-measure-tight38ch · Card intros, footer tagline

Bringing clarity to complexity by blending technical expertise with creative thinking.

max-w-measure46ch · Default body copy

The engineering and the brand are usually two suppliers, two timelines and two opinions. Here they run as one track, which is the whole point of the name.

max-w-measure-lead52ch · Lead paragraphs

The engineering and the brand are usually two suppliers, two timelines and two opinions. Here they run as one track, which is the whole point of the name.

max-w-nonefull · Section descriptions, runs to the content edge

No measure at all: the line runs the full width of the content column and stops only at its edge, which is how the section descriptions on this page sit so their right edge lines up with the divider rules.

Typography

Weights

Regular 400Body copy
Medium 500Emphasised body
Semibold 600Card and step headings, numerals
Bold 700Panel headings, labels, client names
Extrabold 800Display headings

Tracking

--tracking-display

-0.04em · display-lg

--tracking-heading

-0.035em · display and display-sm

tracking-tight

-0.025em · Titles and figures

--tracking-numeral

0.1em · Tabular numerals in lists

--tracking-label

0.16em · Uppercase labels

Typography

Headings

h1 to h6 carry the scale as base element styles in global.css, so Markdown and un-classed prose render right without a utility class.

Page headline

h1--text-display-lg · 800

Section heading

h2--text-display · 700

Subsection heading

h3--text-display-sm · 700

Card heading

h4--text-title · 600
Small heading
h5--text-title-sm · 600
Label / eyebrow
h6--text-label · 700 · uppercase

Punctuation in coloured prose

Punctuation takes the colour of the word before it: a mark after an accented word sits inside the span and carries the accent; after an uncoloured word it stays the main text colour.

We run both, then merge them.

Spacing and layout

Spacing scale

Named tokens carry meaning across the site; the gap ladder is Tailwind's numeric scale, one step per role. Ties round padding up, margins and gaps down.

Named tokens

--spacing-gutterPage edge gutter
--spacing-cardCard and panel padding (responsive 24-36px)
--spacing-sectionSection rhythm (responsive 96-128px)
--spacing-closerClosing CTA rhythm (responsive 112-144px)
--container-statementClosing CTA column (60rem; bar clamps to this page’s column)
--shell-maxContent column cap (84rem; bar clamps to this page’s column)

Gap ladder

gap-312pxInline icon and label
gap-416pxControl rows
gap-520pxCard grids
gap-832pxPanel splits
gap-1456pxSection-level splits
gap-2080pxSection-level splits, wide

Shape

Corner cuts

Everything is angular. The cut is one 45° angle at a tokenised set of lengths by role. Reference a token, never a raw pixel.

26px

accent

Solid accent cards

22px

console

Consoles, large feature panels

20px

panel

.cut-corners default (own-fill panels)

18px

card

.panel-cut default (bordered cards)

16px

inner

Nested panels, step cards, insets

14px

button

Buttons

10px

button-sm

Small buttons, badge chips

Two tools, one angle

.chamfer is square-only, since its percentage cut holds 45° only when width equals height. For anything non-square, the length-based .cut-corners holds the same angle at any aspect ratio. Between them, every shape on the site is covered.

square

.chamfer on a square, holds 45°

rectangle

.cut-corners on a rectangle, holds 45°

Rounded radii

The one place the site rounds rather than cuts, held to Tailwind's own scale on purpose, since redefining a radius token silently changes every rounded-* on the site. Only the first two are in real use; rounding survives only at nav-control scale.

8px

rounded-lg

Small controls, menu items, skip link

12px

rounded-xl

Mobile nav dropdown

16px

rounded-2xl

Available, not in use

9999px

rounded-full

The .glow blob only

Shadows

Two neutral shadow pairs, tokenised. Accent glows are drop-shadow filters carrying a track colour at the call site, so the light follows the chamfered silhouette.

drop-shadow-console

Console panels' floor shadow

shadow-menu

Mobile nav dropdown's pop

--drop-shadow-sheet

A sheet resting on a surface

--drop-shadow-sheet-lift

The same sheet, picked up off it

Motion

Durations

House easing is --ease-out-expo, cubic-bezier(.16, 1, .3, 1). Hover a card to feel the speed.

fast

200ms · Colour and border feedback

base

300ms · Most movement and hovers

slow

700ms · Reveals and lifts

Motion

Motion patterns

The house moves beyond simple hovers. All rest in their final state under reduced motion.

Reveal stagger

01
02
03
04

Sibling cards land 70ms apart via a transition-delay step (the values grid, the flight-path steps).

Count-up readout

Demo figure

0+

Figures count up over 1.8s with an exponential ease-out on first view, replay after a bfcache return, and jump straight to target under reduced motion (the hero console).

Stroke draw

pathLength normalises the path so one dash covers it, and the offset draws the line along its length on reveal (the two-track merge curves).

Clip-path wipe

An already-dashed stroke reveals with a clip-path sweep instead, so two dash systems never fight (the flight-path trajectory).

Beacon float

The console mark bobs 7px on a gentle 5s loop, resting via an explicit animation: none under reduced motion (the hero and identity consoles).

Glow pulse

Station

An accent drop-shadow breathing on a 4.5s loop, recoloured with --glow-accent. A filter, so the light follows the cut silhouette. Rests at its low value under reduced motion. Carries no information and moves no content, so it files with the beacon float and owes no pause control (the service pages' station).

Components

The shared building blocks: controls, surfaces, patterns and behaviours used across both tracks. Nothing here belongs to one service or one hub; those live in Digital Solutions and Creative Services instead.

Components

Buttons

The console key

.key: not a .btn variant, a control of its own for a destination that belongs to both tracks at once rather than to either one. No lift, no glow, no sheen, just the cut-corners fill and the gradient chevron, with the Brand Identity glint recoloured to the brand gradient and swept on hover or focus.

Form fields

.field-input: the console's input, a bare hairline rectangle on the ink surface. Square corners are the site's own angular language at this scale; the border does the feedback (line at rest, line-lit on hover and focus) and the global focus ring sits on top. Labels are .telemetry, with optional fields marked in the label rather than required ones starred.

Chevron

The brand indicator, replacing the round dot. Every tone.

green purple dim gradient ink on-purple

Panels and cards

.panel-cut

Bordered angular panel: a 1px ring with an inset tinted fill. The default card and panel.

.cut-corners

Solid accent card.

Paints its own fill, so it uses the bare corner cut rather than a ring.

Surface signatures

.chamfer

.grid-field

.glow

Mission 001

.telemetry

.blueprint

.layout-guides

Spec rail

A rail of what is actually inside the thing you just opened. Quieter than the two-track list rail, which is a list of subjects with icon plates, and it drops the numerals RailNav keeps, because these are contents rather than an order. The line and the ticks are pseudo-elements, so any list sits on the rail without extra markup, and every direct child gets a tick whether the list is a ul or a dl. Recolour with --rail-accent.

  • Workflow and process automation
  • Cross-system integration and data flow
  • Automated approvals and notifications
  • Triggered and scheduled automation
Term
The same rail carrying pairs rather than plain items, on the Creative accent.
Second term
Ticks land on the first line of each entry, not its middle.

Checks panel

A short list of assurances read as a console readout rather than as bullets: a labelled header strip, then one row per line separated by the panel's own hairlines. It sits beside the spec rail on a service page, so the two read as contents on one side and standards on the other, and it is deliberately the quieter of the pair. The marker is the chevron in its list-marker role, not a tick: nothing on this site draws a tick, and a check does not earn a glyph of its own.

How it gets built

  • Built with best-practice standards
  • Built on trusted platforms
  • Reliable post-launch support

Payload card

The home page's accent cards, each the whole face of a link to its track hub. One anchor and one target, so nothing needs the two-target split below. The affordance is the route-out row at the foot: a short rule, the destination named in full, and the chevron in its navigates role, deliberately not the drawer pull, which means opens-in-place. Hover is the button's language at card scale: a lift, a bloom of the card's own accent, the rule stretching and the chevron nudging onward. The glow sits on the unclipped .payload-lift wrapper between the anchor and the cut card, since a filter on the card itself would be trimmed by its own silhouette.

Two-target card

A card that both navigates and opens. The whole face is a link to the thing itself, which is what most people want, and the pull underneath opens it in place for a look first. That split is why the face is an anchor sitting outside the details, with the summary reduced to the pull strip. Sits in a grid on items-start, so opening one card grows that card rather than stretching every card beside it.

Decide

The face navigates

Hover it and the heading lights. Clicking goes to the page.
What is in it
  • The pull opens this
  • The card beside it does not move
Build

The face navigates

Hover it and the heading lights. Clicking goes to the page.
What is in it
  • The pull opens this
  • The card beside it does not move

Sticky context strip

The real ServiceSpine.astro, rendered here rather than copied, so it cannot drift from what ships. On its own page it sticks after the hero and lights whichever track you are reading; here there is nothing to observe, so it shows its resting state with neither lit, which is also what a failed script leaves behind. Both entries are plain anchors either way, pointed at the services page so they reach the sections they name rather than scrolling nowhere.

Components

Chips and the reset

The button's quieter cousin: same chamfer at --cut-button-sm, no glow, no lift, no sheen. A filter or a choice, never an action, so it must not look like the control that starts a project. These are live, and they are the real class.

Each chip is a <label> with its radio inside it. A radio parked elsewhere on the page gets focused when its label is clicked and the browser scrolls it into view, throwing the viewport, and there is nowhere to draw a focus ring the reader can see. Tab into these and the ring lands on the chip, not on something invisible.

The reset is deliberately not a chip. The chips are the choices; this is the way back from having made one, so the same housing would file it in the set it exists to leave. It goes fully inert while it is the one selected, since there is nothing to reset to, and it has to exist at all because a radio group has no empty state.

Disclosure card

A <details> whose summary is the whole card face. No JavaScript, keyboard reachable for free. The affordance is the drawer pull along the bottom edge, sitting on the hairline the panel opens along, so the card carries its own edge whether open or shut. A chevron alone in the top corner is not enough and is actively misleading: that position means navigates everywhere else on the site. Open it and the label changes with it. Sits in a grid on items-start, like every other card that opens, so opening one grows that card rather than stretching every card beside it.

Automation

Automation that simplifies how work flows across your business.
What this is

Less manual. More meaningful.

Brand Identity

More than visuals. Brand identity shapes how your business is recognised.
What this is

Identity that brings it all together.

Inline link

For prose the site sets rather than builds: the legal pages, and anywhere a sentence has to carry a route out. At rest it is an underlined phrase in the hairline colour. On hover the word and its rule both take the accent, so the phrase lights rather than only the line under it. Never a substitute for a button, which is what starts something.

--link-accent defaults to green, which is already what a link hover looks like here: the nav underlines in green on every page, whatever that page is about. It is the interaction colour rather than a track claim, and it recolours per surface the way --rail-accent does.

Default, green: if you know what you were after,tell us and we will point you at it.

Recoloured on a Creative surface:see the work.

Shape

Ring treatments

A .panel-cut paints its ring as the element's own background rather than a border. That is why the ring follows the cut corners, and it is also what makes the ring paintable: give the element a background-image and the gradient becomes the border. These three are the only treatments in use.

Track-lit, and lit on the outer edge

Digital, lit left

A horizontal gradient over the flat ring: transparent at one edge, solid in the track colour across the rest. The colour runs round three sides and fades out on the fourth.

Creative, lit right

The flat ring still shows through wherever the gradient is transparent, so the fade lands on the ordinary line colour rather than on nothing.

The pair lights on the outer edge of the row, so the two open towards the middle rather than both pointing the same way. The rule is the position, not the colour.

Corners only

.ring-corners clears the flat ring with --panel-border: transparent, then paints a corner-to-corner gradient that fades to transparent through its middle, so only the two coloured corners draw. It has to be declared after .panel-cut, whose background shorthand would otherwise clear the image.

The fade has to reach transparent, never the line colour. Fading to --color-line repaints the middle of the ring and gives an ordinary bordered panel with tinted corners, which is a different thing.

Corners only, recoloured to one track

The two ends are --ring-start and --ring-end. They default to green-lift into purple, which is what a panel takes when it speaks for the company rather than for one side of it. A panel sitting inside a track recolours the far end to that track's own accent, so a Digital page gets its corners without importing Creative's colour onto a page where nothing names Creative.

Same idea as --rail-accent and --link-accent: the stops live in one place and the call site says which accent it wants. This one is [--ring-end:var(--color-green)], the treatment the service pages' spec panel takes.

A full-bleed child covers the ring on the diagonal unless it is cut too. A panel whose content runs edge to edge (a gap-px divider grid held off the ring by p-px, say) is a plain rectangle: on the straight edges that 1px leaves the ring showing, but at each 45 degree corner the child's square edge runs right up to the cut and the panel's own clip-path trims both flush, so the straight edges draw the ring and the angled ones draw the child. Give the child the same cut. It bites hardest here, where the diagonal is the treatment.

Seams

A seam is a 1px rule that says two things meet here. It takes --gradient-brand itself rather than restating the stops, and fades out at both ends through a single mask rather than two composited layers.

Join, between two stacked panels

How it works

How it feels

A negative margin of half the container gap pulls the seam back into the space the column already had, so drawing the line costs no height.

Horizon, with a punch-out

The same construction with an extra pair of stops that punch a hole where our own building stands, so the ground line stops at the tower rather than running through it. Build the end-fade and the punch-out as one gradient:mask-composite is never needed for this and is far harder to reason about later.

Mirrored pairs

When two panels are a facing pair, the second is the first mirrored: rail, ticks, plates, headings and copy all run to the opposite edge, and the chevron rotates to point back at its own heading rather than off the panel. A mirror only holds where the pair does. Below the breakpoint that puts the two side by side they stack into one column, and a lone right-aligned panel has nothing to read against, so gate every mirrored class on that breakpoint and let the track colour carry the distinction below it.

The corner cut does not mirror. Every panel, plate and button on the site cuts top-left and bottom-right, so flipping the cut in one column of a pair makes it the odd one out rather than the matching half.

Icons

Service icon set

Animated Lottie icons, recoloured onto the palette. One icon, one meaning: green for Digital, purple for Creative, and an icon never stands for two things.

Digital

Software

Development

Managed Services

Specialised Services

Automation

Analytics

Creative

Graphic Design

Brand Identity

Website Development

Content & Social Media

Copywriting

Creative Strategy

Capability cards, one per track

Digital Solutions, the track

Creative Services, the track

Static and brand marks

The Synrgy mark

The Synrgy logo

Full icon register

Every icon and mark in use, read off docs/design/icon-register.md row for row. Most rows below live inside a single other component rather than standing on their own, so they are listed here rather than drawn a second time.

IconFormatMeansUsed at
tech/toolboxAnimatedSoftwareTwo-track list, Digital; console readout; Services card; Digital Solutions cycle; its own station; runner obstacle
tech/codingAnimatedDevelopmentTwo-track list, Digital; console readout; Services card; Digital Solutions cycle; its own station
tech/gear-wrenchAnimatedManaged ServicesTwo-track list, Digital; console readout; Services card; Digital Solutions cycle; its own station; runner obstacle
tech/blueprintAnimatedSpecialised ServicesTwo-track list, Digital; console readout; Services card; Digital Solutions cycle; its own station
tech/automationAnimatedAutomationTwo-track list, Digital; console readout; Services card; Digital Solutions cycle; its own station
tech/analyticsAnimatedAnalyticsTwo-track list, Digital; console readout; Services card; Digital Solutions cycle; its own station; runner obstacle
creative/graphic-design-brand-visualsAnimatedGraphic DesignTwo-track list, Creative; console readout; Services card; Creative Services set
creative/branding-identity-developmentAnimatedBrand IdentityTwo-track list, Creative; console readout; Services card; Creative Services set; runner obstacle
creative/website-design-developmentAnimatedWebsite DevelopmentTwo-track list, Creative; console readout; Services card; Creative Services set
creative/digital-content-social-campaignsAnimatedSocial MediaTwo-track list, Creative; console readout; Services card; Creative Services set
creative/copywriting-content-writingAnimatedCopywritingTwo-track list, Creative; console readout; Services card; Creative Services set; runner obstacle
creative/creative-strategy-planningAnimatedCreative StrategyTwo-track list, Creative; console readout; Services card; Creative Services set
tech/circuit-boardAnimatedThe Digital Solutions track itself, not a service in itDigital Solutions capability card
creative/creative-mindAnimatedThe Creative Services track itself, not a service in itCreative Services capability card
Chevron.astroStaticSynrgy indicator, any track via its toneTelemetry rows, list markers, step cards, buttons, nav underline, payload cards’ route-out rows, footer column headings
echo-profile.png, echo-full.pngRasterEcho, the Synrgy robotThe 404’s invitation to the game, and the game page’s greeting
synrgy-mark.svgStaticThe Synrgy markHero console, trusted-by ribbon separator, linked favicon, 404 severed route’s break, the runner, Social Media post profile plate, Brand Identity photo well and watermark
synrgy-logo.svgStaticThe Synrgy logoNav, footer, the two-track merge point
favicon.ico, apple-touch-icon.png, icon-192.png, icon-512.pngRaster, generatedThe Synrgy mark, for surfaces that cannot take the linked SVGLegacy favicon requests, apple-touch-icon, manifest icons
og.pngRaster, generatedShare card: the wordmark on the ink fieldog:image and the Twitter card
LinkedIn glyphInline SVGLinkedInFooter social tiles, Team card connect links
Facebook glyphInline SVGFacebookFooter social tiles
Instagram glyphInline SVGInstagramFooter social tiles
Menu open/close glyphInline SVGOpen and close the mobile menuSiteNav disclosure control
Heart glyphInline SVGLike, as feed post furnitureSocial Media Core Focus posts
Comment glyphInline SVGComment, as feed post furnitureSocial Media Core Focus posts
Send glyphInline SVGShare, as feed post furnitureSocial Media Core Focus posts
Greeked barcodeInline SVGMachine-readable marking, encodes nothingBrand Identity Core Focus cards
Chart-type glyphsInline SVGThe name of a kind of chart, at icon scale, never a chartAnalytics Core Focus worksheets
Window control glyphsInline SVGWindow chrome, drawn rather than operableDevelopment Core Focus terminals; Website Development Core Focus browser windows
Pause/play glyphsInline SVGPause and resume continuous motionMotionPause, on every page carrying data-motion
Bookmark glyphCanvasSaving a postSocial Media hero field
Profile glyphCanvasAn account or a followerSocial Media hero field
Media glyphCanvasPosted imagerySocial Media hero field
Grid glyphCanvasA profile of postsSocial Media hero field
Tag glyphCanvasTagging and labellingSocial Media hero field
Megaphone glyphCanvasBroadcast, as a social actSocial Media hero field

Pattern

Two-track list rail

Items hang off a vertical gradient rail on short connector ticks, each on a chamfer icon plate. Hover recolours the connector and label to the track. The two are one template with a mirror flag, so Creative runs back towards the middle from md up and stacks left-aligned below it, where there is no facing pair for the flip to read against.

  • Software
  • Development
  • Managed Services
  • Graphic Design
  • Brand Identity
  • Website Development

Pattern

Trusted-by marquee

An infinite scroller with a checkbox-driven pause: keyboard reachable and working with no JavaScript, which prefers-reduced-motion alone does not satisfy (WCAG 2.2.2).

Trusted by

DestressoDCIRevolutePTMQui RacingSystem 5DestressoDCIRevolutePTMQui RacingSystem 5

Behaviour

Site behaviours

Live on this page rather than mocked: the nav above, the contents rail alongside and the skip link are the real components, so their behaviour can be tried right here.

Site nav

Sticky, with a hairline border that fades in once the page scrolls past 16px. Links underline in green on hover, and the current page holds its underline via aria-current. The mobile menu is a details disclosure: works with no JS, keyboard accessible for free.

Skip link

The page's first tab stop. Press Tab from the top and "Skip to content" lands on a solid purple plate with on-purple text, jumping focus past the nav. The one purposeful pairing of rounded-lg and a purple fill.

Rail nav

The contents rail on this page is RailNav.astro: plain anchor links with no JS, upgraded to smooth scroll, a scrollspy that lights the current item, and a rail line that fills to where you are. Reusable via a sections or groups prop; desktop only here; honours reduced motion.

Accessibility

Focus and selection

Focus is a 2px purple-lift outline at 3px offset on everything interactive, and text selection carries a purple wash. Both are set once in global.css, so the whole site agrees.

Focus ring

Tab to the button to see the real ring; the plate beside it holds the same outline statically so the spec is visible without a keyboard.

Ring, shown always

Text selection

Select this sentence to see the purple highlight the whole site uses for selected text.

::selection · color-mix(in srgb, purple 40%, transparent)

Backgrounds and states

Field, reveal, hovers

Four canvas fields belong to the site rather than to a page, each the others' opposite number rather than a replacement. All keep the same contract to the letter: nothing under reduced motion, gated before init; parked off screen and in hidden tabs; gone below 40rem; two registers, full and sparse. What differs is the subject. The dot field is the company's and drifts purple into green; the rain is green only, because it belongs to pages that are entirely Digital, and it runs across the Digital Solutions hub and its service pages; the connection field is the contact page's, green on the left half and purple on the right, the sides its two routes arrive from, with cross-track links in dim so no line passes through the muddy midpoint; and the compose field is Creative's, purple only for the rain's reason, drawing the site's own cut plates scattered out of true rather than particles or glyphs.

Every field answers the pointer, and each answers in its own subject's terms: the connection field's nodes shy away and ease back, the dot field takes a pressed dent with a soft rim, the rain shelters a domed canopy over the cursor, dry beneath, splattering droplets off the dome, and the compose field's scattered plates square up and land on a baseline. One contract covers all four: the pointer is read off the window with the canvas staying pointer-events-none, the response chases a smoothed pointer with an eased strength so arriving and leaving are movements rather than snaps, and none of it exists under reduced motion. Move your mouse over the tiles below to feel each one; the caption under each names what it is without needing the motion to make the point.

DotWave field: the company's own, purple drifting into green. Hover dents the field with a soft rim under the pointer.

BinaryRain field: green only, the Digital Solutions hub and its service pages. Hover shelters a dry canopy that splatters droplets off its dome.

NodeField field: the contact page's, green left and purple right. Hover makes the nearest nodes shy away and ease back once the pointer leaves.

ComposeField field: purple only, behind the Creative pages. Hover squares the nearby scattered plates up and lands them on a baseline.

.rise reveal

Reveals on scroll
Green border on hover
Purple border on hover

Page specific drawings

Drawings that belong to neither track, because the page they belong to names neither one. Filed here together rather than inventing a fifth division for them.

Severed route. A route runs in, jogs at 45 degrees, and stops at a squared cut. Past the gap the rest of it is still drawn, in the line colour, no longer connected to anything. The mark stands in the gap where the two ends no longer meet, referenced by the same bare path every other use on the site takes rather than inlined, so its geometry and gradients stay in one file and its gradient ids cannot collide if the diagram is ever drawn twice on one page. It reuses .circuit-path for a one-shot draw that stops dead at the cut, so it needs no pause control, and the reduced-motion rule that class already carries rests it drawn. No accent, because it belongs to the 404 rather than to either track.

Digital Solutions

The track's own shape, its six hero fields side by side, and the real Core Focus staging behind each of its six service pages.

Page shape

Hero and closer

The real ServiceHero.astro and ServiceCloser.astro, rendered here with Development's own content rather than redrawn, so they cannot drift from what ships. Every Digital page takes this same shape with its own headline, hero field and neighbours on the cycle; Development stands in for all six rather than repeating the shape five more times.

BuildDevelopment

Systems built to flow.
Designed to work.

Smart digital systems designed to make work easier, not harder. We build scalable solutions that automate the repetitive work, take out the steps nobody needs, and support your team as your business grows.

Where this goes next

Explore our digital solutions.

Development works best when the rest of the stack is pulling with it. Our digital solutions work together to support, extend, and strengthen your systems as your business grows.

Hero fields

The six Digital fields

One canvas field per Digital page, green only, each a different answer to the same pointer contract: nothing under reduced motion, gone below 40rem, gated before init. What differs is the subject, which is each page's own claim about itself drawn rather than described. Move the pointer over a tile to feel it; the caption underneath names the field and its response without needing the motion to make the point.

CodeField: lines of code at stepped indents, changing on their own as development runs. Hovering commits the line under the cursor, clearing its changed mark for good.

ControlField: a toggle, a checkbox and a slider drawn in the site's own angular language, resting away from a clean on or off. Hovering configures whichever control the cursor nears, then it eases back once the cursor leaves.

TriggerField: chains of one to three tasks lit by a pulse that crosses from trigger to task, only starting the next once the last finishes. Hovering an event trigger fires it on arrival; a clock on its own schedule ignores the cursor entirely.

SectionField: closed forms that read as architectural insight once cut open, hatched and dimensioned with no figure printed on them. The cursor acts as a section plane, opening the full height of the column it stands in rather than falling off from a point.

ScaleField: a row of evenly graduated scales carrying no invented data of their own. Hovering lights a scale's real run from its origin up to the cursor's own position, read continuously like an instrument rather than snapped to a tick.

WatchField: a watcher polling the things around it in an endless out-and-back rotation. Coming near pulls the cursor into that same rotation, polling it over and over for as long as it stays.

Core Focus

The six Digital pages

Every Digital service page stages its Core Focus in the form of the service itself, documented in full in each component's own file. Open a drawer for the real component, untouched, rather than a description of it.

PageHero fieldCore Focus form
Developmentcode

Terminal windows

Four sessions, each a command and what came back.

See it ↓
Softwarecontrols

The screen

Four platforms, one screen you end up sitting in front of all day.

See it ↓
Managed Serviceswatch

The rack

One environment, four units stacked in a cabinet rather than gridded.

See it ↓
Specialised Servicessection

The dossier

Four tabbed folders, one assessment filed in each.

See it ↓
Automationtrigger

The flow

Five nodes in one order, joined by arrowed connectors.

See it ↓
Analyticsscale

The worksheet

Four cells on a formula bar, with no data invented.

See it ↓
Development

Core focus

Systems that make sense.

Smarter Automation

Repetitive work is reduced through intelligent automation.

Built for Growth

Solutions scale smoothly as business needs evolve.

Connected Systems

Systems share data across tools and teams without anyone exporting it.

Designed for People

Interfaces and flows are easy to use and understand.

Software

Core focus

Software set up right.

Platform Selection

Software chosen to fit how the business operates and scale without drama.

Clear Configuration

Platforms configured with clean structure teams can work from confidently.

Platform Alignment

Systems aligned so data flows smoothly across tools, teams and workflows.

Ongoing Support

Support that keeps software stable, relevant and working as the business changes.

Managed Services

Core focus

Keeping systems operational.

System Upgrades

Updates are handled with minimal disruption.

Ongoing Monitoring

Issues are identified before they impact users.

Environment Stability

Systems remain reliable day to day.

Structured Support

Support follows clear, predictable processes.

Specialised Services

Core focus

Solutions with purpose.

Strategic Architecture

Systems are designed with scalability and intent.

Technical Consulting

Complex challenges are assessed with practical insight.

Specialist Design

Solutions are built for specific, high-impact needs.

Clear Direction

Guidance supports confident next steps.

Automation

Core focus

Processes that run smoothly.

Automation That Flows

Processes move faster with fewer manual steps.

Connected Workflows

Information flows cleanly between systems.

AI Where It Helps

AI reads, sorts and drafts inside the workflow.

Built for Change

Automation adapts as processes evolve.

Designed for Reliability

Workflows remain stable, clear, and manageable.

Analytics

Core focus

Insight that informs action.

Clear Performance Visibility

Key metrics provide a clear view of performance.

Meaningful Measurement

Data is measured consistently and reliably.

Actionable Insight

Insight highlights trends, risks, and opportunities.

Goal-Aligned Reporting

Reporting stays focused on business outcomes.

Creative Services

The track's own shape, its six hero fields side by side, and the real Core Focus staging behind each of its six service pages.

Page shape

Hero and closer

The real CreativeServiceHero.astro and CreativeServiceCloser.astro, rendered here with Graphic Design's own content rather than redrawn, so they cannot drift from what ships. Every Creative page takes this same shape with its own headline, hero field and place in the set; Graphic Design stands in for all six rather than repeating the shape five more times.

How it looksGraphic Design

Visuals that speak clearly.
And know what to say.

Graphic design is about saying the right thing visually. We create design that supports your brand, builds recognition, and makes sure every element earns its place.

What else shapes it

Explore our creative services.

Graphic design is the last step of decisions made elsewhere. What a brand stands for, who it is, how it sounds, where it lives and where it shows up all get decided alongside it, and design is what makes those decisions visible.

Hero fields

The six Creative fields

One canvas field per Creative page, purple only, each a different answer to the same pointer contract: nothing under reduced motion, gone below 40rem, gated before init. What differs is the subject, which is each page's own claim about itself drawn rather than described. Move the pointer over a tile to feel it; the caption underneath names the field and its response without needing the motion to make the point.

CombineField: pairs of overlapping shapes waiting on the boolean operation that will resolve them. Hovering resolves a pair into the single filled shape its union, subtraction or intersection makes.

HoldField: one invented mark repeated identically at different sizes, held perfectly still. Hovering sweeps the loose material around it into an orbiting wake while the marks themselves refuse to move.

UpdateField: finished pages that quietly take a content change every so often and reflow around it. Hovering ships a page's next update immediately, sweeping its frame once to mark the change as caused rather than scheduled.

ReactField: outline social icons rising slowly past the reader. Hovering engages a glyph, filling it solid and swelling it before it settles back to an outline.

CutField: short runs of word bars standing in for copy. Hovering strikes through a run's padding then drops it, closing the line up shorter and tighter.

InheritField: small fragments quoted from the other five pages. Hovering sets off a decision at the cursor that keeps travelling outward as a front, lighting fragments long after the pointer has moved on.

Core Focus

The six Creative pages

Every Creative service page stages its Core Focus in the form of the service itself, documented in full in each component's own file. Open a drawer for the real component, untouched, rather than a description of it.

PageHero fieldCore Focus form
Graphic Designcombine

The artboard

A selected canvas with handles at its corners and edges.

See it ↓
Brand Identityhold

The ID card

Issuer, mark and holder's details, nothing invented.

See it ↓
Website Developmentupdate

The browser window

A toolbar, an address slot, and the page loaded.

See it ↓
Social Mediareact

The feed post

Cards taking the service's own form rather than the marks around the row.

See it ↓
Copywritingcut

The sheet

A ruled page with a folded corner, the point written on it.

See it ↓
Creative Strategyinherit

The framework

The row reshaped into a two by two matrix, the four points standing as its quadrants.

See it ↓
Graphic Design

Core focus

Design that delivers.

Clear Visuals

Ideas land quickly, without needing a caption.

Brand Consistency

Every piece looks like it came from the same place.

Purposeful Design

Each choice answers to what the work has to say.

Adaptable Assets

Built to hold up across platforms, formats and sizes.

Brand Identity

Core focus

Identity that aligns.

Clear Foundations

A base solid enough that everything after it has somewhere to stand.

Visual Consistency

The same brand on every platform, not a family resemblance.

Recognisable Identity

Known on sight, before the name has been read.

Built to Evolve

Room to grow into, without starting the identity over.

Website Development

Core focus

Websites that perform.

Clear Structure

Laid out so people find what they came for.

Consistent Experience

The same site on every device and browser, not a near match.

Practical Development

Quick to load, simple to manage, built to be lived with.

Built to Grow

Added to later without starting the build over.

Social Media

Core focus

Messaging that carries through.

Clear Messaging

Says one thing, and says it in the brand’s own voice.

Consistent Presence

The same brand on every platform it turns up on.

Purposeful Campaigns

Planned toward something, not posted to fill a slot.

Measured Performance

Reviewed on the numbers, then adjusted.

Copywriting

Core focus

Words with purpose.

Clear Messaging

Easy to follow, and clear about what happens next.

Consistent Voice

Sounds like the same brand on every channel.

Structured Writing

Ordered so the point arrives before the reader leaves.

Adaptable Copy

Cuts down or stretches out without losing the point.

Creative Strategy

Core focus

Direction that guides.

Strategic Insight

Direction built on what is known, not what is assumed.

Integrated Planning

Ideas, channels and people moving the same way.

Strategic Alignment

Every recommendation ties back to the point of it.

Defined Frameworks

Written down clearly enough to act on.

Everything above is read from the same stylesheet the rest of the site runs on, so this page cannot fall out of step with what it documents.