Shows two vectors whose angle oscillates through 90°, with a live dot-product bar that hits zero exactly at perpendicularity. In the same orthonormal (axis-aligned) basis, a moving vector v is decomposed into components c1 and c2 using dot products (c_i = e_i·v), and a tiny 2×2 Kronecker-delta grid reinforces e_i·e_j = δ_ij.
Single-loop time-based animation (3.8–4.2s cycles) with eased highlight when |u·v|≈0. Uses snap-to-grid (4–6px) for a blocky aesthetic, green-on-black palette, and pure Canvas2D drawing (no dependencies).