OVERSCANUI KIT
no button at all a worn bezel with weight channels do not converge zero depth instrumented, full of smoke a field of real characters a camera looking out additive, so no shadow hairlines, no new shader no raster, so no scanlines

A blip is not where the contact is. It is where the contact was when the sweep last passed that bearing, up to a full rotation ago. Most software PPIs throw that away by redrawing every contact on every frame, which turns a known-stale picture into a confident live one. Here a contact is plotted only when the beam crosses it, blips decay with age so staleness is readable off the screen, rings are labelled with the range they are, and a contact with no fix is counted rather than quietly dropped. The three panels beside it carry a shader interior, a CSS scan overlay and a drifting hatch.

Four options, and each one says what it is not showing. trail is phosphor persistence: the wedge behind the arm is how recently each bearing was swept, on the same fade the blips use, so it is the age of the data under it. glow is the theme's own bloom, on the beam and the contacts and never the rings, so antiseptic, whose bloom is 0, does not glow. motion-only is a motion tracker: only movers are drawn, and still or not-yet-known returns are counted rather than painted. stalks hang each contact's elevation off it; level is a tick, and an unknown elevation gets no stalk at all.

demo/radar.html, from this page
import 'overscan'
import 'overscan/overscan.css'

<ov-radar
  source="tracks"
  range="800"
  rings="4"
  period="4"
  symbols=""
  trail=""
  glow=""
></ov-radar>
trail glow symbols: persistence and bloom, contacts as track symbols
motion-only: movers only; still and unknown are counted under the scope
stalks: height above or below the plane; level is a tick, unknown has none
variation: motion-only=""
import 'overscan'
import 'overscan/overscan.css'

<ov-radar
  source="tracks"
  range="800"
  rings="4"
  period="4"
  symbols=""
  motion-only=""
></ov-radar>
terminal
interior
field shader
the same element, inside a panel
scan
flux 0.912
css overlay, no shader
hatch
bus live
drifting surface, cancels first
variation: stalks=""
import 'overscan'
import 'overscan/overscan.css'

<ov-radar
  source="tracks"
  range="800"
  rings="4"
  period="4"
  symbols=""
  stalks=""
></ov-radar>
industrial
interior
field shader
the same element, inside a panel
scan
flux 0.912
css overlay, no shader
hatch
bus live
drifting surface, cancels first
variation: source="contacts" rings="3"
import 'overscan'
import 'overscan/overscan.css'

<ov-radar
  source="contacts"
  range="800"
  rings="3"
  period="4"
  trail=""
  glow=""
></ov-radar>
cyber
interior
field shader
the same element, inside a panel
scan
flux 0.912
css overlay, no shader
hatch
bus live
drifting surface, cancels first
antiseptic
interior
field shader
the same element, inside a panel
scan
flux 0.912
css overlay, no shader
hatch
bus live
drifting surface, cancels first
esper
interior
field shader
the same element, inside a panel
scan
flux 0.912
css overlay, no shader
hatch
bus live
drifting surface, cancels first
neo
interior
field shader
the same element, inside a panel
scan
flux 0.912
css overlay, no shader
hatch
bus live
drifting surface, cancels first
machina
interior
field shader
the same element, inside a panel
scan
flux 0.912
css overlay, no shader
hatch
bus live
drifting surface, cancels first
holo
interior
field shader
the same element, inside a panel
scan
flux 0.912
css overlay, no shader
hatch
bus live
drifting surface, cancels first
aegis
interior
field shader
the same element, inside a panel
scan
flux 0.912
css overlay, no shader
hatch
bus live
drifting surface, cancels first
vector
interior
field shader
the same element, inside a panel
scan
flux 0.912
css overlay, no shader
hatch
bus live
drifting surface, cancels first