Color lockup — symbol + wordmark together
Primary brand mark for light surfaces. Use this as the default logo anywhere the Needle brand needs to appear.
lockupDownload
Needle brand guide.
Use the approved logo assets. The viewer and inspector screenshots below show the target density and pane rhythm.
Needle uses a tight green-led palette with clear background, text, accent, and border colors.
Primary brand gradient for marketing flourishes, onboarding accents, and rare high-attention highlights. Avoid using this inside workbench stages, inspector panels, queue cards, export presets, or segmented controls.
Typography roles for titles, labels, body copy, and code.
engine.load() to import a glTF scene at runtime
const scene = await engine.load('/city.glb');
Needle pages should stay calm, compact, and clear. Tools should feel like tools, not marketing pages.
Marketing pages are brighter and more playful, with floating pills, gradients, and larger type.
Docs pages are quieter and more structured, on the same soft green stage with white content blocks.
Management pages are operational overviews and browsing surfaces. Use them for uploads, libraries, project lists, and cloud-style organization pages.
Workbench pages are hands-on product pages. Use them for focused tasks where the user is creating, editing, inspecting, or processing something.
Settings pages use white panels on green, clear labels, and compact spacing.
Data-heavy and inspector views use mono details, white panels, and muted separators on a pale green stage.
Use Material Symbols Rounded with the outline treatment in product UI. Use Lucide in marketing and docs.
Material Symbols Rounded is the primary icon set for product interfaces — editors, viewers, and toolbars. The local product demos in this repo keep them in the outline treatment, so the examples here do the same. Icons are functional, never decorative — they clarify meaning beside labels, indicate state, and support hierarchy in trees and toolbars.
Buttons and nav items pair a Rounded icon with a text label.
Compact icons in muted tones communicate state without text.
Foldout chevrons, visibility toggles, and type indicators structure inspector trees.
Context menus and form controls use icons to reinforce affordance.
Use Lucide for marketing pages and docs.
Marketing buttons use Lucide icons with labels.
Inline status uses Lucide icons at matching text scale.
Docs surfaces use Lucide for callout, navigation, and content icons.
Small utility icons for copy, share, and contextual actions.
Main Needle UI patterns.
Tags stay tidy and compact; they support structure instead of stealing focus.
void MyCallerMethod() {
var position = new Vector3(0, 0, 0);
MyExampleVectorMethod(position);
Debug.Log("Position.x is " + position.x); // copy was modified
}
Rules for focus, motion, contrast, and translation.
Every interactive element must show a visible :focus-visible ring. The standard ring is 2px solid var(--border-focus) with outline-offset: 2px. Never remove outlines without providing an equivalent indicator.
When prefers-reduced-motion: reduce is active, all transitions and animations collapse to near-zero duration. Smooth scrolling reverts to instant jumps. Essential state changes (like checkbox ticks) remain visible — only decorative motion is removed.
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms;
transition-duration: 0.01ms;
scroll-behavior: auto;
}
}
prefers-contrast: more strengthens borders, removes decorative shadows, and ensures minimum text contrast. forced-colors: active (Windows High Contrast Mode) lets the OS palette govern all foreground and background colors.
@media (prefers-contrast: more) {
:root {
--border-subtle: #666;
--shadow-subtle: none;
}
}
@media (forced-colors: active) {
button { border: 1px solid ButtonText; }
}
Machine-translation services (Google Translate, DeepL) will mangle Material Symbols ligature text — e.g. close becomes cerrar. Protect icon elements with class="notranslate" and translate="no". Use this on icon spans and brand-specific terms.
<span class="material-icon-preview"
translate="no"
class="notranslate">
settings
</span>