Pueo brand guidelines & build kit.
Everything needed to build the Pueo website in Elementor Pro and stay on-brand: design tokens, a documented component library with live demos, the effects vocabulary, and a copy-ready Elementor setup. Dark-first. Tactical. Mission-grade. We are not rebranding — we lean deeper into the brand Pueo already has.
The cyber guardian of the nation's most classified missions.
Pueo Business Solutions is a National Security cyber company that inspects and protects the nation's most classified missions. Not a multi-service government contractor — a proven, focused National Security cyber company. The site should behave like a piece of command-and-control software — not a brochure. We synthesize the strongest plays from defense-industry leaders (BlueHalo, Kratos, Aechelon) and beat them on a bolder red/black palette, a true C2 feel, and performance-first fidelity.
Personality
Watchful · ready · operator-grade · precise · confident · restrained. Not loud, not playful, not "SaaS-y." Think Call of Duty UI energy with executive restraint. The single most important quality: Pueo reads as a mature company — "fun but serious, still business." Maturity is the ceiling and the floor.
Heritage — handled at 2/10
"Pueo" is the Hawaiian owl — a guardian (aumakua). Native Hawaiian-founded, but not presented as a native company. Use heritage only as abstracted geometry; never literal Hawaiian, tribal, canoe, or navigation imagery. The owl going large and expansive is the visual hero — always the real logo owl or its geometric form, never clip-art.
Direct. Operator-minded. No hedging.
Lead with the operational reality after Pueo has integrated — concrete outcomes, not capability lists ("Stand up Tuesday. Operate Wednesday.").
| Rule | How it shows up |
|---|---|
| Sentence case everywhere | Except proper nouns and nav labels. Never title-case H1s. |
| Emphasis = red, weight 540, upright | A single word in the <em> pattern. Never italics. |
| Mono labels are UPPERCASE | It's a system register, not shouting — eyebrows, buttons, HUD readouts. |
| Concrete verbs | Scope, harden, watch, contain, defend, run, own — not "elevate / unlock / seamless." |
| Lead with what they do | Solutions and Innovations first. Bury IT services / BI / Indian Incentive references. Pueo is a focused National Security cyber company, not a multi-service contractor. |
| Mission first, technology second | Lead with the mission and the people in it; technology is how we serve it. "You put the mission first, technology second." |
| Guardians, not trigger-pullers | Pueo guards and advises — "we help the people with the authority make the best call." Never posture as the operator pulling the trigger. |
| No emojis | Mono glyphs (▸) and status dots carry the signal instead. |
Dark base. Red is signal, not decoration.
A near-black surface stack, white and grey text, and a tight red family that carries all the energy. Red appears only as live state, action, or critical signal. If it isn't live, clickable, or critical — it isn't red.
Core palette
The signal palette — reserved
Four reserved accents for category-coding and state only. Never primary buttons or body text.
Translucent surface tokens
| Token | Value | Role |
|---|---|---|
| Card fill | rgba(255,255,255,0.03) | Card / panel fills on dark |
| Card fill red | rgba(204,0,0,0.08) | Lead / emphasized cards |
| Hairline | rgba(255,255,255,0.08) | Borders, rules, dividers |
| Hairline strong | rgba(255,255,255,0.14) | Panel borders, inputs |
Two families. No serifs. No italics.
Space Grotesk carries everything human-readable; IBM Plex Mono is the system voice. Hierarchy is built from weight contrast — display headlines are weight 400 (never bold); body is light (320–400); 540 is reserved for card titles and emphasized words.
Body copy is light and reads quietly on the dark surface. Short sentences. No hedging.
| Role | Family | Weight | Size (D / T / M) | LH | Tracking |
|---|---|---|---|---|---|
| H1 · hero display | Space Grotesk | 400 | 68 / 48 / 36 | 1.0 | -0.025em |
| H2 · section title | Space Grotesk | 400 | 46 / 34 / 28 | 1.1 | -0.018em |
| H3 · feature/card | Space Grotesk | 540 | 24 / 22 / 20 | 1.2 | -0.011em |
| H4 | Space Grotesk | 540 | 20 / 19 / 18 | 1.25 | -0.005em |
| H5 · card title | Space Grotesk | 540 | 18 / 18 / 16 | 1.3 | -0.005em |
| H6 · eyebrow | IBM Plex Mono | 500 | 12 / 12 / 11 | 1.0 | +0.08em · UPPER · #CC0000 |
| Body | Space Grotesk | 330–400 | 16 / 16 / 15 | 1.5 | -0.0085em |
| Mono label | IBM Plex Mono | 400–500 | 10–13 | 1.0–1.3 | +0.05–0.08em · UPPER |
A 1340px rail and a 4px rhythm.
| Token | Value |
|---|---|
| Content rail (max-width) | 1340px, centered |
| Section padding · vertical | clamp(56px, 7vw, 96px) (hero up to 140px) |
| Section padding · horizontal | clamp(24px, 4vw, 56px) |
| Card padding | 24px |
| Card-grid gap | 16px |
| 2-column split gap | 56px |
| Base spacing unit | 4px — all spacing is a multiple of 4 |
Patterns: full-bleed dark sections with internal padding; two-column splits (text + HUD/visual) collapsing to one column at ~880px; card grids 4-up → 2-up (~980px) → 1-up (~560px); stat strips split by 1px hairlines. Natural breakpoints: 980 / 880 / 820 / 760 / 720 / 560.
The chamfer is a signature.
Cards use an 8px radius; HUD/glass panels 10–14px; status dots and pills are fully round. Buttons are neither pills nor plain rectangles — they have two opposite corners cut.
| Token | Value | Use |
|---|---|---|
| Small | 2px | Tiny tags, ticks |
| Medium | 6px | Inputs, chips, icon tiles |
| Large | 8px | Default card / panel radius |
| HUD panel | 10–14px | Liquid Glass / HUD cards |
| Pill | 9999px | Status dots, eyebrow pills |
| Chamfer | cut corners | Buttons — via clip-path (see §14) |
The building blocks, live.
Buttons — three variants
IBM Plex Mono · 500 · 12px · +0.10em · UPPERCASE · padding 13px 26px · 1px border · chamfered · 6px leading status dot · hover lifts −1px. Primary: red fill, white pulsing dot, red glow on hover. Invert: white fill for red/dark imagery. Ghost: translucent glass, 1px white border.
Eyebrow / kicker
Cards — standard & lead
24/7 watch
Round-the-clock monitoring tuned to your operating signature.
Cyber Inspections
Mission-risk inspection of the most classified networks.
Standard: rgba(255,255,255,0.03) fill, 1px hairline, 8px radius, 24px padding, red status dot top-right, hover lifts −3px and borders red. The lead variant uses a red-tinted fill, red border, a yellow dot, and a "MISSION CRITICAL" tag.
HUD / Liquid Glass panel
Translucent blurred panel, 10–14px radius, a mono header row with a live status pill, and a body of readouts. The hero card adds the spectral sheen + animated brand strip. HUD panels reinforce the language with red L-shaped corner brackets.
Nav (glass), divider & stat strip
Sticky glass nav: rgba(10,10,10,0.6) + blur, 1px bottom hairline, geometric owl mark + "PUEO" wordmark, a mono "SYSTEM ACTIVE" status with pulsing dot, and a small primary button. Tactical divider: a full-bleed strip with red gradient ticks flanking a centered mono label. Stat strip: equal cells split by hairlines, big Space Grotesk numbers with red accent sub-glyphs. (All shown in the homepage mockups.)
The interface is instrumentation.
All CSS-driven — heavy look, light payload, fast on restricted networks. Motion is executive: subtle ambient loops or fire-once-on-scroll. Always honor prefers-reduced-motion.
| Animation | Behaviour | Timing |
|---|---|---|
| live-pulse | Expanding ring on red status dots | 1.6s · infinite |
| pueo-drift | Position drift on brand gradient strips | 22s · infinite |
| Tactical drift | Background drift on red/black backdrop | 26s · infinite |
| Scan sweep | Red line top → bottom | 6.5s · infinite |
| Radar sweep | Rotating SVG arm + pulsing rings | 2–4s · infinite |
| Reveal-on-scroll | Fade + translateY (≤14px), fires once | 0.35–0.55s · stagger |
| Hover | Lift translateY(−1 to −3px); never rotate/bounce | 0.18–0.25s |
One owl. The real one.
The canonical mark is the flying owl + the chamfered “PUEO” wordmark, struck in metallic silver and red foil on the business cards. On live surfaces the only owl is this real mark or its low-poly / etched-glass form, scaled up — never a front-facing cartoon owl or a redrawn stand-in.

Metallic foil finish. Chrome silver + cyber red on black, reflective. The brand's premium, tactile register.
Low-poly owl. The official triangulated owl — the approved expansive, digital expression for hero backgrounds.
Rules
| Element | Guidance |
|---|---|
| Owl mark | Official flying-owl logo only. No front-facing / cartoon owls, no redrawn substitutes. |
| Wordmark | “PUEO” is a bespoke chamfered chrome typeface — part of the logo artwork. Don't reset it in Space Grotesk; place the supplied logo. |
| Foil / finish | Silver + red foil is the premium tactile cue. Echo it digitally with sheen, glass, and metallic gradients — sparingly; red still leads. |
| Expansive owl | For hero backgrounds use the etched-glass low-poly owl, ghosted and large — never stretch the logo. |
| Line icons | 1.6 stroke (2–2.4 inline), currentColor, lucide-style, 18–24px+. Radar reticle / node-grid count as iconography — geometric, thin, red+white on dark. |
| Production | Use Pueo's official vector logo files (PUEO_LOGO.eps, the .ai source, the transparent owl PNGs); the foil photos are reference only. |
Expansive owl background — the traced vector
A vector trace of the office glass wall — the official expansive-owl background asset. Kept in its natural frosted-glass light tone as a deliberate contrast against the dark UI, or ghosted on dark as a hero watermark.
| Use | How |
|---|---|
| Frosted-glass moment | Light, full-bleed section in its grayscale register — a contrast “breath” between dark blocks. Dark text, red corner brackets. |
| Hero watermark | Owl-only crop, ghosted and edge-masked behind the hero — reads as etched glass. |
| Scale | Full scene for big moments; owl-only crop for accents. Don't stretch or arbitrarily recolor the owl. |
| Production | The trace is detailed (~1.9MB / ~5,000 paths) — export a simplified / flattened SVG or an optimized WebP for the live build. |
Hero animation — the owl coalesces into the logo
The signature moment the client asked for: the low-poly owl assembles from scattered facets, then resolves into the official Pueo logo — "make it land." Play it once on hero load (and optionally replay on logo hover). The loop below is a reference for intent, not the final asset.
Reference loop · owl → logo
| Phase | What happens | Timing · easing |
|---|---|---|
| 1 · Scatter → assemble | Facets / particles converge into the low-poly flying owl | 0–1.2s · ease-out |
| 2 · Hold | Polygon owl holds with a faint red glow pulse | 1.2–1.8s |
| 3 · Resolve | Polygon owl morphs / cross-dissolves into the flat logo lockup | 1.8–2.6s · ease-in-out |
| 4 · Settle | Logo holds; one subtle metallic sheen sweep | 2.6–3.0s |
| Build option | How | Notes |
|---|---|---|
| Lottie (recommended) | After Effects → Bodymovin JSON, embedded in an HTML / Custom-Code widget | Crisp, scalable, light payload; easy static-logo fallback |
| Transparent video | WebM / HEVC-alpha clip with a poster frame (the final logo) | Simplest to produce; larger file; poster = fallback |
| SVG morph | anime.js / GSAP MorphSVG tweening the owl paths into the logo paths | The most "true" morph; most dev effort |
| CSS fallback | Assemble (scale / blur / opacity) + cross-fade owl → logo | The reference loop above — works with no JS |
| Spec | Value |
|---|---|
| Start asset | polygon-owl-mono.png / polygon-owl-red.png (or vector owl paths) |
| End asset | Official logo lockup — pueo-lockup-reversed.png (or the .eps/.ai vector) |
| Trigger | Once on hero load; optional replay on logo hover; never loops on the live hero |
| Reduced motion | Skip the animation — render the final logo immediately |
| Total duration | ~3s, then static |
#C7C7C7 → #8A8A8A) — never a full surface.Real environment, treated darkly.
Environment photography (the Pueo HQ) is treated darkly — a red→black gradient overlay, a mono corner tag, full-bleed, radius 0. Heritage motifs become abstracted geometry and texture (line patterns, concentric forms, node grids), never literal decorative imagery on live surfaces. Backgrounds on the live site are tactical-generated only: radar sweep, dot grid, topographic rings, coordinate stamps. Material textures (volcanic, basalt) come later, once curated photography is in hand.
WCAG AA, baked in.
| Area | Standard |
|---|---|
| Focus | Every interactive element has a visible :focus-visible — 2px dashed currentColor, 3px offset |
| Contrast | #C7C7C7 body on #0A0A0A passes; white on #CC0000 passes for buttons |
| Hit targets | ≥ 40px |
| Headings | One <h1> per page; section titles <h2>; card titles <h3> |
| Decorative layers | HUD/effect layers are aria-hidden; meaningful images get real alt |
| Motion | All ambient motion collapses under prefers-reduced-motion |
Do / Don't.
▸ Do
- Treat the dark surface as the default canvas.
- Use red as live state, action, and critical signal — earned, never ambient.
- Make panels report — headers, status pills, readouts, brackets.
- Build hierarchy with Space Grotesk weight contrast.
- Keep effects CSS-driven and lightweight.
- Lead with what they do — Solutions, Innovations.
× Don't
- Introduce serifs, or italicize for emphasis (use red weight-540).
- Use pill or plain-rectangle buttons — buttons are chamfered.
- Use red as a passive fill or mood color.
- Put literal/stock owl imagery on live surfaces.
- Add new accent colors beyond red + neutrals + the four reserved.
- Flatten translucent surfaces, bold display headlines, or stop the brand-strip drift.
Set it once in Site Settings.
The entire site is rebuildable in one Elementor Pro license, no external plugins. Most of the page is native; a few signatures (chamfer, glass, animated gradients, HUD overlays) are Custom CSS one-liners in §14.
Global Colors → rename the 4 system slots
| Slot | Value | Use |
|---|---|---|
| Primary | #CC0000 | Tactical red — actions, dots, HUD strips |
| Secondary | #0A0A0A | Midnight — site background |
| Text | #C7C7C7 | Body copy on dark |
| Accent | #CC0000 | Accent text, eyebrows, emphasis |
Then + Add Color for: White #FFFFFF, Surface Deep #050505, Red Hover #E51010, Blood #7A0606, Lead Yellow #FFEA4F, and the four reserved signal accents. Elementor's picker supports alpha, so the rgba() surface tokens can be stored as globals too.
Global Fonts & Typography
| Slot | Family / weight | Use |
|---|---|---|
| Primary | Space Grotesk · 400 | Display & headings (H1–H5) |
| Secondary | IBM Plex Mono · 500 · UPPER | Eyebrows, labels, buttons, HUD (H6) |
| Text | Space Grotesk · 400 | Body |
| Accent | Space Grotesk · 600 | Inline emphasis / bold words |
Map H1 = hero headline, H2 = section titles, H3–H5 = card/feature titles, and H6 = the mono eyebrow (set Text Transform: UPPERCASE, color #CC0000). Space Grotesk is variable — if the weight dropdown won't take 330/540, round to the nearest 100.
Buttons, Layout & Background
| Setting | Value |
|---|---|
| Buttons → Family / Size / Transform | IBM Plex Mono · 12px · UPPERCASE · +1.2px |
| Buttons → BG / Hover | #CC0000 / #E51010; radius 0px; padding 13/26 |
| Form fields → Focus border | #CC0000; field radius 6px; bg rgba(255,255,255,.04) |
| Layout → Content Width | 1340px; Widgets Space 0 |
| Background | Classic · #0A0A0A |
| Breakpoints | Tablet 1024 · Mobile 767 · (optional Mobile Extra 880) |
The chamfer, the leading status dot, and the hover lift aren't global-button properties — add them site-wide with the CSS in §14.
Paste into Site Settings → Custom CSS.
These are the signatures Elementor's panels can't express. Paste this block once site-wide; add the helper classes (.btn-invert, .btn-ghost, .live-dot) in a widget's Advanced → CSS Classes field.
/* Tactical button: chamfered corners + status dot + hover lift */ .elementor-button{ clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 10px 100%, 0 calc(100% - 10px)); transition: background-color .18s ease, transform .18s ease, box-shadow .18s ease; } .elementor-button .elementor-button-text::before{ content:""; display:inline-block; width:6px; height:6px; border-radius:9999px; background:currentColor; margin-right:8px; opacity:.9; } .elementor-button:hover{ transform: translateY(-1px); box-shadow: 0 6px 18px rgba(204,0,0,.45); } /* Secondary variants — add class in widget Advanced tab */ .btn-invert > .elementor-button{ background:#fff; color:#CC0000; border-color:#fff; } .btn-ghost > .elementor-button{ background:rgba(255,255,255,.04); color:#fff; border:1px solid rgba(255,255,255,.28); } /* Pulsing live dot — add class .live-dot to any element */ @keyframes live-pulse{ 0%{ box-shadow:0 0 0 0 rgba(204,0,0,.6); } 70%{ box-shadow:0 0 0 8px rgba(204,0,0,0); } 100%{ box-shadow:0 0 0 0 rgba(204,0,0,0); } } .live-dot::before{ content:""; display:inline-block; width:7px; height:7px; border-radius:9999px; background:#CC0000; margin-right:8px; animation: live-pulse 1.6s ease-in-out infinite; }
/* Apply to a Container/section: the premium material layer */ selector{ background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.22); border-radius: 14px; backdrop-filter: blur(22px) saturate(180%); -webkit-backdrop-filter: blur(22px) saturate(180%); box-shadow: inset 0 1px 0 rgba(255,255,255,.30), 0 24px 60px rgba(0,0,0,.45); } /* spectral edge sheen */ selector::after{ content:""; position:absolute; inset:0; border-radius:inherit; background: linear-gradient(135deg, rgba(255,255,255,.22), transparent 50%, rgba(255,255,255,.14)); mix-blend-mode: overlay; pointer-events:none; }
/* 2px drifting brand strip on a panel's top edge */ selector::before{ content:""; position:absolute; top:0; left:0; right:0; height:2px; background: linear-gradient(135deg,#000,#3a0808 20%,#7a0606 40%, #cc0000 55%,#7a0606 75%,#000); background-size: 200% 200%; animation: pueo-drift 22s ease-in-out infinite; } /* full red/black tactical background (CTA blocks) */ selector{ background: linear-gradient(135deg,#000,#3a0808 25%,#7a0606 50%, #cc0000 62%,#7a0606 78%,#000); background-size: 220% 220%; animation: tac-drift 26s ease-in-out infinite; } @keyframes pueo-drift{ 0%,100%{background-position:0% 50%;} 50%{background-position:100% 50%;} } @keyframes tac-drift{ 0%,100%{background-position:0% 0%;} 50%{background-position:100% 100%;} }
/* red L-shaped corner brackets on a HUD panel */ selector::before{ content:""; position:absolute; inset:-1px; pointer-events:none; background: linear-gradient(to right,#cc0000 16px,transparent 16px) top left/22px 2px no-repeat, linear-gradient(to bottom,#cc0000 16px,transparent 16px) top left/2px 22px no-repeat, linear-gradient(to left,#cc0000 16px,transparent 16px) top right/22px 2px no-repeat, linear-gradient(to bottom,#cc0000 16px,transparent 16px) top right/2px 22px no-repeat, linear-gradient(to right,#cc0000 16px,transparent 16px) bottom left/22px 2px no-repeat, linear-gradient(to top,#cc0000 16px,transparent 16px) bottom left/2px 22px no-repeat, linear-gradient(to left,#cc0000 16px,transparent 16px) bottom right/22px 2px no-repeat, linear-gradient(to top,#cc0000 16px,transparent 16px) bottom right/2px 22px no-repeat; } /* topographic concentric red rings (behind hero HUD) */ selector{ background-image: radial-gradient(circle at center, transparent 0 14%, rgba(204,0,0,.5) 14% 14.6%, transparent 14.6% 28%, rgba(255,255,255,.18) 28% 28.4%, transparent 28.4% 42%, rgba(204,0,0,.3) 42% 42.4%, transparent 42.4%); } /* ALWAYS honor reduced motion */ @media (prefers-reduced-motion: reduce){ *,*::before,*::after{ animation-duration:.001s!important; animation-iteration-count:1!important; } }

