Brand · Perceptual · Tokens

The mark, the palette,
and the perceptual decay constants.

Scrutinizer's brand assets and the constants used in its perceptual model. Copy-pasteable for designers building peripheral-aware UI, and citation-ready for papers that use the same numbers.

1. The mark

The orange eye with three arrows above has been Scrutinizer's identity since the original 2007 implementation. In the Electron app it is the URL-bar toggle that turns the perceptual simulation on/off. The arrows are extramission: the eye actively projecting attention outward. Three of them echo the engine's three concentric attention zones (fovea / parafovea / periphery).

Now ships as a deterministic SVG generated by gen_scrutinizer_logo.py: flat-vector, scales crisply 16px → 512px, dimensional iris orb gradient preserved, animatable iris group (clipped to almond, so future animation can move the eyeball without escaping the eye bounds).

Scrutinizer eye — evolved, light-bg variant
Scrutinizer Eye (canonical) SVG · for any background
↓ download .svg
Scrutinizer eye — dark-bg variant with orange-ink catchlight
Scrutinizer Eye (dark-tuned) SVG · softened catchlight
↓ download .svg
Scrutinizer eye — historical 2007 version reproduction
Heritage variant (2007) SVG · faithful PNG reproduction
↓ download .svg

Raster sizes (rendered from canonical SVG; matches scrutinizer2025/renderer/assets/scrutinizer_*_icon.png): 512 · 128 · 48 · 32 · 16 · toggle (64)

Dark-mode strategy

One canonical mark, one optional dark-tuned variant. The orange (#ff9933) is the brand identity. It has 9.27:1 contrast on the brand dark background and reads cleanly on light backgrounds too, so the eye keeps its color in dark mode. The only difference between canonical and dark-tuned is the catchlight: white in canonical (universally legible), orange-ink (#ffb366) in the dark-tuned version (softer on dark backgrounds where pure white can feel hot). For app-icon contexts (Dock, Windows tray, favicon) always use canonical. For SVG-in-HTML contexts you can swap via prefers-color-scheme if you want.

1b. Perceptual instruments

Visualizations of what Scrutinizer does. The foveal overlay reproduces the in-app UI bullseye (fovea, parafovea, periphery), ported from scrutinizer2025/renderer/svg-overlay.js. The engine sector cobweb shows the sectors the engine samples (Blauch et al. 2026 isotropic cortical sectors). Use these as figures, diagrams, or technical hero images. The eye mark in §1 remains the brand identity.

Foveal overlay UI mark on dark background
Foveal Overlay (UI mark) L1 · 256px · dark
↓ download .svg
Foveal overlay UI mark on light background
Foveal Overlay (UI mark) L1 · 256px · light
↓ download .svg
Foveal overlay wordmark
Foveal Overlay (wordmark) L2 · 512px · dark
↓ download .svg
Engine sectors cobweb mark
Engine Sectors (cobweb) L1 · 256px · dark
↓ download .svg
Engine sectors cobweb wordmark
Engine Sectors (wordmark) L2 · 512px · dark
↓ download .svg
Engine sectors cobweb diagram with axis labels
Engine Sectors (diagram) L3 · 720px · ±30° · 50 rings
↓ download .svg

Generated by muriel.tools.diagrams.foveal_overlay and muriel.tools.diagrams.engine_sectors_overlay. Pin sizes, themes, and parameters via the muriel CLI to regenerate.

2. Brand colors

Long-wavelength visibility orange, chosen because it survives peripheral processing (see §3). Cool ink on OLED near-black. All text-tier tokens clear muriel's 8:1 contrast minimum on the canonical background.

Scrutinizer Orange
Primary accent. 9.27:1 on #0a0a0f. Use for emphasis, links, brand surfaces.
#ff9933
Orange Ink
Higher-contrast accent for text on dark. 11.18:1 on #0a0a0f. Use when #ff9933 is too saturated for body type.
#ffb366
OLED Background
Canonical background. Near-black. Pure black is avoided so PWM-dimmed OLED panels don't flicker.
#0a0a0f
Cool Ink
Body type. Cool-tinted off-white, 15.09:1 on #0a0a0f.
#e0e0ec
Gaze Teal
In-app gaze + cursor overlay color. 11.67:1 on #0a0a0f. Reserve for live-state indicators.
#7dd4e4

Full brand schema (semantic states, viz palettes, typography scale, a11y rules): scrutinizer-brand.toml via the muriel style-guide schema.

3. Perceptual decay constants

Why orange? Because red-green opponency dies faster in the periphery than blue-yellow does. The L-M (red-green) channel is foveally weighted: its sensitivity falls steeply with eccentricity. The S-(L+M) (blue-yellow) channel has dedicated wiring across the entire retina and survives ~5× further into the periphery. These constants come from the Scrutinizer model and match Mullen & Kingdom (2002) + Bowers et al. (2025) detection-threshold data.

SIGMA_LM: red-green decay constant
Exponential half-life ≈ 8°. Controls how fast the L-M chromatic channel desaturates with eccentricity in the Scrutinizer model.
SIGMA_LM = 120 (CSS px at 1080-tall viewport ≈ 15 px/deg)
SIGMA_BY: blue-yellow decay constant
Exponential half-life ≈ 40°. The S-(L+M) chromatic channel persists ~5× further than L-M. Blue notification badges read peripherally; red ones don't.
SIGMA_BY = 500 (CSS px at 1080-tall viewport ≈ 33° span)
RG_DECAY_K: engine-side L-M attenuation rate
Per-degree attenuation rate for the red-green channel in the shader (u_rg_decay). Default in all chromatic modes, calibrated to Bowers et al. 2025 detection thresholds.
RG_DECAY_K = 0.085 (per degree eccentricity)

Live demo (interactive): see Peripheral color: what designers don't know about red.

4. Foveation constants: Blauch et al. 2026 model

The cortical magnification function (CMF) parameters used in Scrutinizer's isotropic-sectors layout. Drop these into your own pipelines for sector assignment compatible with Scrutinizer's outputs.

a
CMF_A: cortical magnification constant
Anchors the log-spacing: w = log(r + a). Controls how tightly rings cluster near the fovea.
CMF_A = 2.78 (degrees)
ϕ
FOVEA_RADIUS_DEG: foveal radius
Inside half this radius the engine passes the source through unfiltered, blending to full filtering at this radius (the foveal singularity = ring 0 of the sector layout).
FOVEA_RADIUS_DEG = 1.0 (degrees of visual angle)
k
ECC_SCALING: Bouma scaling factor
Pooling-region growth rate per degree eccentricity. Brown et al. 2023.
ECC_SCALING = 0.75
N
N_RINGS: default cortical ring count
Number of log-spaced rings in the isotropic-sectors decomposition. 50 produces ~4000 sectors over a ±30° field.
N_RINGS = 50

Drop-in JavaScript:

const SCRUTINIZER_CONSTANTS = {
  // Brand
  accent:           '#ff9933',
  accent_ink:       '#ffb366',
  background:       '#0a0a0f',
  ink:              '#e0e0ec',
  gaze_teal:        '#7dd4e4',
  // Chromatic decay (red-green dies first)
  sigma_lm:         120,           // px @ 1080 viewport (~8° half-life)
  sigma_by:         500,           // px @ 1080 viewport (~40° half-life)
  rg_decay_k:       0.085,         // per-degree, Bowers 2025
  // Foveation (Blauch et al. 2026 isotropic sectors)
  cmf_a:            2.78,
  fovea_radius_deg: 1.0,
  ecc_scaling:      0.75,
  num_rings:        50,
};

5. Colorblind-safe palettes

Four named palettes that survive deutan / protan / tritan deficiencies, shipped via muriel.palettes. Use Wong unless you need matched-lightness families for multi-panel figures (Tol).

Wong (8 colors)

Wong, B. (2011). Nature Methods 8, 441.

Tol Bright (7 colors)

Tol, P. SRON tech note. Bright qualitative scheme.

Tol Vibrant (7 colors)

Tol, P. SRON tech note. Vibrant qualitative scheme.

IBM Carbon (5 colors)

IBM Carbon Design System: data-vis colorblind palette.

Import in Python: from muriel.palettes import WONG, TOL_BRIGHT, palette. CLI: python -m muriel.palettes --swatches out.svg.

6. Typography

Inter for everything except code, JetBrains Mono for code. System fallback stack so the site is legible even before fonts load.

--font-body: 'Inter', -apple-system, system-ui, sans-serif;
--font-mono: 'JetBrains Mono', 'Fira Code', ui-monospace, monospace;

References

copied