The Risk-Radar
+ Sonar visual language.

Every surface in RiskSonnar is built from the tokens, primitives, and animations on this page. Use it to brief a designer, audit a new screen, or compose a marketing asset that feels native. Everything is theme-aware: this page itself follows your toolbar theme toggle.

§1 · Identity

Brand mark

One fused mark — range rings (radar depth) + sweep arc (live scan) + ping wave (sonar emit) + center contact (the source). Theme-aware via --rs-accent; scales crisp at 16 px through 256 px.

MarkSquare favicon / OG / nav-rail
WordmarkHeader / landing / email signature
Risk·Sonnar
Risk·Sonnar
Risk·Sonnar
StackedNarrow columns / business card / app icon
Risk·Sonnar
§2 · Surfaces

Four themes

Every theme exposes the same --rs-* tokens, so component code is theme-agnostic. The toolbar toggle (top-right of the cockpit) cycles system → light → dark → radar → sonar.

Lightdata-theme="light"
Default. Off-white surfaces + ink text. WCAG AA throughout.
infookwarndanger
Sample CTA
Darkdata-theme="dark"
Mirror of light with darker canvas; same accent colour.
infookwarndanger
Sample CTA
Radardata-theme="radar"
Signature. Deep navy + phosphor-cyan. The control-room console.
infookwarndanger
Sample CTA
Sonardata-theme="sonar"
Companion. Abyssal navy + electric teal. The submarine console.
infookwarndanger
Sample CTA
§3 · Motion

Radar + Sonar primitives

Two pure-SVG components, <RadarSweep /> and <SonarPing />. Each respects prefers-reduced-motion; the range rings stay drawn when animation is paused, so the depth context is preserved.

RadarSweep4s linear rotate
SonarPing3.2s ease-out, 3-ring stagger
§4 · Vocabulary

Custom icon kit

Five signature glyphs that lucide-react doesn't carry. Same call signature + stroke weight as lucide, so mixing the two on the same surface reads as one consistent line. Decorative by default; pass aria-label to surface a name to assistive tech.

IconRadarSweep
Live alerts · Scan-section landings
IconSonarPing
Watch overview · Sonar-emphasis affordances
IconContact
Tracked entities · Targets · followed parties
IconThreat
Confirmed threats · burnout / fatigue alerts
IconSignalBand
Inbox · waveform feeds · audit signals
import {
  IconRadarSweep, IconSonarPing, IconContact, IconThreat, IconSignalBand,
} from "@risksonnar/design-system";
§5 · Foundation

Color tokens

HSL channels exposed as --rs-* CSS custom properties. The four themes override these values; component code reads through the variables and gets the right colour for the active theme automatically.

Accent

soft
--rs-accent-soft
Tinted backgrounds (badge, hover, hint)
base
--rs-accent
Default accent stroke / chip
strong
--rs-accent-strong
Headlines, CTAs, glow
on
--rs-on-accent
Foreground that sits on accent (CTA text)

Status

Info
--rs-status-info-{soft|base|strong}
Neutral signals, system messages
Success
--rs-status-success-{soft|base|strong}
Cleared dispositions, healthy state
Warning
--rs-status-warning-{soft|base|strong}
Soft-stop hints, quota near cap
Danger
--rs-status-danger-{soft|base|strong}
Confirmed threat, hard-stop refusals
§6 · Type

Typography

Three families bound to --rs-font-sans, --rs-font-data, --rs-font-mono. Use .rs-numeric for tabular figures and .rs-mono for ids, tokens, and metadata.

Sans · Inter
Risk Radar
Watch every signal.
The default for body copy and headlines.
Data · IBM Plex Sans
14,217 · 0.83
€2,159,000 · +3.2pt
Tabular numerals for dashboards and tables.
Mono · IBM Plex Mono
cs_1001 · evt_1000042
sha256:9c11…b0c2
Identifiers, hashes, and control codes.