Brand · Perceptual · Tokens

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

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

1. The mark

The orange eye with three arrows above — has been Scrutinizer's identity since the original 2008 implementation, lives in the Electron app as the URL-bar toggle that turns the perceptual simulation on/off. The arrows are extramission: the eye actively projecting attention outward, not passively receiving light. 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 2008 version reproduction
Heritage variant (2008) 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.28:1 contrast on the brand dark background and reads cleanly on light backgrounds too. We don't recolor the eye for dark mode the way you'd recolor a wordmark. 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, not what it is. The foveal overlay mirrors the in-app UI bullseye (fovea, parafovea, periphery — port of scrutinizer2025/renderer/svg-overlay.js). The engine sector cobweb mirrors what the engine actually samples on (Blauch et al. 2026 isotropic cortical sectors). Use these as figures, diagrams, or technical hero images — not as 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.28:1 on #0a0a0f. Use for emphasis, links, brand surfaces.
#ff9933
Orange Ink
Higher-contrast accent for text on dark. 11.19:1 on #0a0a0f. Use when #ff9933 is too saturated for body type.
#ffb366
OLED Background
Canonical background. Near-black, not pure black, so PWM-dimmed OLED panels don't flicker.
#0a0a0f
Cool Ink
Body type. Cool-tinted off-white, 14.42: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 foveal: its midget-cell circuit only works in the dense central retina. 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) suprathreshold 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). Bowers et al. 2025 suprathreshold default.
RG_DECAY_K = 0.072 (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 this radius the engine bypasses peripheral filtering (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.072,         // 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

Five 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