Axis-aware fluid spacing
Every spacing token exists twice: a vertical scale that eases gently (mobile is about 70–88% of desktop) and a horizontal scale that shrinks hard (about 25–50%). Utilities route each property to the right axis on their own.
WordPress theme framework
The GSAP-powered Elementor child theme and design-token framework behind Business Nebula client projects.
A Client-First utility framework, an axis-aware fluid spacing system, design tokens and a declarative GSAP animation layer, packaged as a child theme of Hello Elementor so every project starts consistent and stays maintainable.
Business Nebula’s own theme framework for client WordPress builds. Enquire to have your site built on it.
Project Mairan is Business Nebula’s WordPress theme: a child of Hello Elementor that carries the agency’s design system as code. Tokens for colour, type, spacing, radius and motion live in one stylesheet, a Client-First utility framework sits on top of them, and a declarative animation layer turns a single HTML attribute into a GSAP scroll animation.
It is built as a shared upstream. The framework files are never edited per project; each site overrides tokens in one stylesheet, so a fix made once in the theme can reach every site built on it.
Key capabilities
Every spacing token exists twice: a vertical scale that eases gently (mobile is about 70–88% of desktop) and a horizontal scale that shrinks hard (about 25–50%). Utilities route each property to the right axis on their own.
Body text and every heading size is a clamp() floored at a 375px viewport and capped at 1440px, so type scales without breakpoints.
Four brand colours, each with 75, 50 and 25% opacity variants derived with color-mix, so changing a base colour updates its variants. Dark mode follows prefers-color-scheme automatically.
Section, page-gutter, container and section-padding anatomy, decoupled heading styles, text, colour, button, form, layout and visibility utilities.
Add data-bn-animate="fade-up" to any element and GSAP animates it on scroll: fades, slides, scale, stagger, parallax, word reveals, typewriter, scramble, SVG drawing, marquees and counters.
GSAP 3.13 with ScrollTrigger, ScrollSmoother, SplitText, DrawSVG, MorphSVG and more, loaded from the jsDelivr CDN and registered only if each plugin actually loads.
Theme Builder locations, editor styles that match the front end, a re-scan hook for popups and AJAX content, and a curated block-editor palette and font sizes.
A skip-link style, visible focus outlines, and reduced motion honoured in CSS and JavaScript. Opt-in ScrollSmoother never runs in the editor or for reduced motion.
How it works
A single spacing scale either leaves too much horizontal padding on a phone or collapses vertical rhythm on desktop. Mairan keeps two scales with the same names: vertical room stays close to the design, horizontal room gives way where the screen demands it. Drag the viewport to see both.
| Token | V vertical | H horizontal |
|---|---|---|
| xxsmall | 4 | 4 |
| xsmall | 8 | 7 |
| small | 15 | 11 |
| medium | 21 | 16 |
| large | 28 | 22 |
| xlarge | 40 | 30 |
| xxlarge | 54 | 39 |
| huge | 76 | 56 |
| xhuge | 103 | 72 |
| xxhuge | 152 | 101 |
.padding-mediumBlock: padding-block (V) · Inline: padding-inline (H).padding-top-mediumBlock: V · Inline: —.padding-inline-mediumBlock: — · Inline: H.gap-mediumBlock: row-gap (V) · Inline: column-gap (H).padding-section-largeBlock: V (88 → 128px) · Inline: —Values interpolate linearly between a 375px and a 1440px viewport. Because the tokens are fluid, no media queries are needed to scale spacing.
Declarative motion
In Mairan, motion is data: an attribute on an element names the preset, optional attributes tune it, and the animation layer wires GSAP and ScrollTrigger for you. These tiles re-create six presets in this site’s own GSAP, from the same attributes.
Your device asks for reduced motion, so — as in the theme — the tiles show their finished state.
data-bn-animate="fade-up"
data-bn-distance="32"Slide and fade from below. Distance, delay, duration, easing and the ScrollTrigger start are all attributes.
data-bn-animate="scale-in"A subtle scale and fade, from 0.92 unless data-bn-scale-from says otherwise.
data-bn-animate="stagger"
data-bn-stagger="0.1"Animates an element’s children one after another. Point it at specific children with data-bn-stagger-target.
Projects start consistent and stay maintainable.
data-bn-animate="reveal-text"
data-bn-stagger="0.04"Word by word from behind a mask. In the theme this is SplitText; here the words are split in the markup.
data-bn-animate="draw-svg"
data-bn-stagger="0.15"Draws an SVG’s strokes, on the element itself or on every shape inside it. DrawSVGPlugin in the theme; stroke offsets here.
data-bn-animate="counter"Counts to a number on scroll, with data-bn-from, data-bn-to and a format suffix.
Edit any widget or section, open Advanced → Attributes, and paste:
data-bn-animate|fade-up
data-bn-delay|0.2On a project
Mairan installs like any child theme. Everything a project changes lives in a single override stylesheet, so the framework underneath can keep moving.
Mairan is a child theme, so its parent comes first.
Drop the folder into the themes directory.
/wp-content/themes/business-nebula/Under Appearance → Themes.
Set the project’s palette, fonts and any axis token in theme.css. Variants re-derive from the base colours.
--space-v-huge: clamp(4rem, 2rem + 5vw, 8rem);Tech stack
Build on Mairan
Mairan is the theme framework Business Nebula builds client WordPress sites on. Tell us about your project, or see how our web design and development work runs.
Developed by BN
WordPress site build & deployment
The standardised, git-managed WordPress build every new Business Nebula client site is spun up from.
Animated SVG icon library
Over 24,000 animated marks in families of fifteen, each family with everyday tranches beside it.