Page-load stagger
Hero elements enter with a tight timeline — eyebrow → headline words → body → CTAs — using power3.out at 0.5–0.8s each, 0.06–0.1s stagger.
gsap.timeline({ defaults: { ease: 'power3.out' } })Live tokens that match the production site — logo, color, typography, iconography, motion and spacing. Designed to keep every surface (web, deck, PR, proposal, product) coherent.
Eight petals radiating from a single center — grown, not drawn. Used as a standalone mark, a wordmark companion, and the quiet watermark bleeding through every bento tile.
Brand teal and ink are the full-strength families. Paper and tint are the quiet grounds. Everything else is restraint.
bg-brand-50bg-brand-100bg-brand-200bg-brand-300bg-brand-400bg-brandbg-brand-600bg-brand-700bg-brand-800bg-brand-900bg-ink-50bg-ink-100bg-ink-200bg-ink-300bg-ink-400bg-ink-500bg-ink-600bg-ink-700bg-inkbg-ink-900bg-paperbg-tintbg-whiteNo display serif. No novelty fonts. A distinctive semi-condensed geometric sans, across five weights, with a careful size scale and tight letter-spacing at large sizes.
Variable weight 200–800. We ship 400 / 500 / 600 / 700 / 800 to keep page weight lean. Loaded via next/font for optimal performance and CLS-safe layout.
font-weight: 400font-weight: 500font-weight: 600font-weight: 700.h1.h2.h3.lede.eyebrowMeta trackedBuilt in-house. Single stroke 1.6px, rounded caps and joins, 24×24 viewbox. Sized via Tailwind h-×/w-× utilities. Colored via currentColor — they pick up whatever text color they're in.
IconDigitalIconBrandIconPRIconConsultIconProposalIconGrantIconProductIconDiscoverIconStrategizeIconExecuteIconDeliverIconTechIconHealthIconEducationIconNonprofitIconRealEstateIconFinanceIconTargetIconBulbIconPaletteIconHandshakeIconCheckIconArrowIconArrowUpRightIconStatIconMailIconPhoneIconPinIconLinkedInIconTwitterIconInstagramFour repeatable patterns that run the whole site. All via GSAP + ScrollTrigger, cleaned up via gsap.context on unmount.
Hero elements enter with a tight timeline — eyebrow → headline words → body → CTAs — using power3.out at 0.5–0.8s each, 0.06–0.1s stagger.
gsap.timeline({ defaults: { ease: 'power3.out' } })Section tiles fade + rise + subtly rotate as they enter the viewport. Always via fromTo + immediateRender:false + clearProps to guarantee rendered state if the trigger never fires.
scrollTrigger: { trigger, start: 'top 85%', once: true }Poster tiles breathe via slow yPercent + rotation yoyo loops (4–7s). The flower mark rotates 360° every 50–60s. Motion suggests life, never distraction.
yoyo: true, repeat: -1, ease: 'sine.inOut'Slot-roll pattern for cycling text (e.g. About hero locations). Absolute positioning inside overflow-hidden, vertical slide, 2.4s hold per phrase.
yPercent: 110 → 0 → -110Four tile skins that rhythm across every section — ink, brand, paper, white. Each carries a flower watermark bleeding from a corner at 8–15% opacity. Rounded-[22px] corners, consistent padding.
max-w 1240 · px 1.25→2.5rempy-20 md:py-24rounded-[22px]h-11 w-11 · rounded-xlgap-2.5-right-8 -bottom-8 · h-32 w-32Confident without being cute. Specific without being jargon. Short sentences. We say what we do and who we do it for.
Single source of truth for press, partners and internal decks. Right-click and save, or click to download.
Scales to any size · edit stroke color in the file if needed
For places that reject SVG — Slack, email sigs, legacy slides
Reference artwork · same file
Vector, favicon, EPS, brand colors in Pantone / CMYK, or a full press kit — we'll send the right files inside a working day.