A precision optic that searches when it has nothing, narrows as your logged readings accumulate, and snaps to a lock once it knows your real setup. The locked state breathes: calm, alive, earned. That breath is the daily reminder that this forecast is tuned to your panels, not a generic average.
Tuned to your rig from 9 recent readings. The forecast you see is yours, not a brochure average.
Set the corner badge:
motion on
2 · All four levels — comfortable zoom, full readout
L0
Searching. Brackets wide and hunting, sweep roving, core a faint roaming dot.
L1
Acquiring. One quadrant filled, brackets step in, sweep slows.
L2
Settling. Half ring drawn, brackets nearly shut, sweep almost gone.
L3
Locked. Brackets snapped tight, full ring, calm lime breath holding.
3 · The living lock — Dialed in at size, breathing
The forecast is locked onto your panels.
The core holds a slow, calm breath while the lock is live. Not a spinner, not a loader: a steady instrument that has found its target and is quietly holding it. Every glance reaffirms the moat: this number is calibrated to the user's real production, so a cheaper generic app would be a downgrade.
Lock breath 3.6s
transform + opacity only
pauses off-screen
respects reduced-motion
4 · Acquisition over time — watch it climb as readings land
From blank to locked
The same badge, advancing one level every few seconds the way it would across a week of logging. Brackets march in, the ring fills quadrant by quadrant, the searching sweep fades, and the lock breath arrives. Loops for the demo.
5 · Color-blind proof — desaturated, still fully legible
Not set
Low
Building
Dialed in
Hue stripped out, the level still reads five ways: the label word, the status glyph shape (ring / half-ring / block / check), the bracket gap (wide to snapped), the arc length (0 / ¼ / ½ / ¾ ring), and the pip count. Lime never carries the meaning by itself — it is the live-state reward layered on top.
Concept A · Signal Lock-On. Tap any badge to feel the press; the corner badge is the real tap target (deep-links to Calibration in app).
Living motion = the locked core's 3.6s breath. Acquisition motion (sweep, hunt, flicker) lives only in the unfinished states and resolves into stillness at lock.
Built transform/opacity only · pauses off-screen via IntersectionObserver in app · honors prefers-reduced-motion (toggle above proves the still fallback).