# Editor Visual Language

Blacksite's editor UI is a dense production tool. Its visual system prioritizes scan speed,
stable controls, viewport legibility, and unambiguous editing state over decorative surfaces.

## Palette Roles

- Near-black neutral surfaces separate canvas, panels, controls, and elevated popovers without a
  light-gray cast or single-hue tint.
- Amber is the Blacksite action accent: active tools, the primary selection, warnings, and
  rendering paths that need attention.
- Cyan identifies secondary selections, links, and neutral viewport information.
- Red, green, and blue are reserved for the X, Y, and Z axes across transform gizmos, the world
  grid, and the viewport orientation widget.
- Green and red communicate success/running and error/blocked states. They are not decorative.

## Editor Chrome

- A compact Blacksite mark and amber signal line identify the tool without turning the workspace
  into a branded landing surface; squared controls and tight radii reinforce the industrial tone.
- Menus, the grouped creation/file toolbar, centered transport controls, dock tabs, and the status
  strip keep stable dimensions so mode changes do not shift the workspace.
- Controls use familiar symbols with hover labels. Persistent text is reserved for state, values,
  selection identity, and task-specific feedback.
- Dock tabs use an amber active edge, while splitters and panel borders stay neutral until hovered
  or dragged.
- Popovers and viewport chips share one elevated surface, border, corner radius, and shadow.

## Viewport Language

- The top-left toolbar groups transform, coordinate space, shading, grid/snap, visualizer, focus,
  and display controls.
- The top-right selection chip identifies the active object, selection count, and overlapping-pick
  position. It moves below the toolbar when the viewport is narrow.
- The bottom-right orientation widget and combined shading/render-path chip provide camera and
  render context without covering scene content.
- Dragging an asset over the viewport produces an amber placement boundary and compact placement
  card, pointer reticle, and corner brackets before the drop is committed.
- Grid lines use minor/major weights. The world X and Z axes retain their gizmo colors.

## Selection And Gizmos

- The first selected object is primary: amber x-ray rim and corner brackets, hierarchy edge, and
  selection HUD identity.
- Additional selected objects are secondary: cyan rim, brackets, and hierarchy edge.
- All unlocked authored objects in a multi-selection receive grouped transform-gizmo targets; a
  single interaction is captured as one undoable group transform.
- Transform gizmos use restrained X/Y/Z colors, an amber interaction highlight, larger stable
  screen size, and translation snapping synchronized with the viewport snap toggle and increment.
- Brush vertex, edge, and face modes reuse the same palette and enlarge active element handles.
  Face mode outlines the selected face instead of showing only a center point.

## Drag And Drop

- Drag previews follow the pointer and name both the payload and pending action; they never rely on
  cursor shape alone.
- Hierarchy rows expose their full remaining width as attach targets. Amber means attach, cyan
  means root/reorder, and red means the requested hierarchy would be invalid.
- Reparenting preserves world placement, keeps selected subtrees intact, expands the new parent,
  and records parent, sibling order, and local transform in one undoable command.
- Manual hierarchy sort exposes between-row insertion targets; semantic Name and Type sorts expose
  parenting without pretending a manual reorder will remain visible.

## Visualizers

- Visualizers preserve semantic category colors while selected objects receive stronger emphasis.
- Camera visualizers include near and far frustum planes plus a forward vector.
- Spot lights show inner and outer cones; point lights, directional lights, colliders, spawns,
  gameplay markers, volumes, prefab/model anchors, and runtime helpers remain independently
  toggleable.
- Editor-only visualizers and selection helpers never enter saved scene data.

## Maintenance Rules

- Add shared colors and surface frames in `ui/theme.rs`; do not introduce local panel palettes
  unless the color has domain meaning.
- Keep selection semantics consistent across the viewport, hierarchy, inspector, and status bar.
- New viewport overlays must adapt before they overlap existing controls at narrow widths.
- Visual polish must preserve picking, undo/redo, clean game view, and scene serialization behavior.
