Brand atom workshop · placement round 3 (diagnostic)
You were right that the vertical movement wasn't actually happening. Below the lede, a diagnostic explanation. Then six variants showing 1px / 2px closer horizontally combined with 3 / 4 / 5 px down. All three sizes (SM 22 / LG 48 / HERO 96). A faint clay baseline ruler runs through each specimen stage so the dot's descent is unambiguously visible against where "ecreal" sits.
Why round 2 looked stuck
The dot is an inline-block with overflow: hidden, sitting
inside a flex container with align-items: baseline.
For that combination, the flex container computes its line baseline
from each item's "baseline" — and for an inline-block with overflow
hidden, the item's baseline is the bottom margin edge.
So when we used margin-bottom: -3px intending to push
the dot 3px below baseline, the flex container recomputed the line
baseline to follow the dot's new margin edge, effectively cancelling
the shift. The dot moved a fraction of what the value said.
Fix: use
transform: translateY(Npx) instead. Transforms render
after layout — they don't affect flex baseline calculation — so the
visual shift is exactly N pixels, every time. All variants below use
this method.
| VARIANT | HORIZONTAL | VERTICAL | METHOD |
|---|---|---|---|
| Current · rev-3 | calc(0.04em + 2px) | — | (baseline) |
| C1 · 1+3 | calc(0.04em + 1px) | translateY(3px) | transform |
| C2 · 1+4 | calc(0.04em + 1px) | translateY(4px) | transform |
| C3 · 1+5 | calc(0.04em + 1px) | translateY(5px) | transform |
| C4 · 2+3 | 0.04em | translateY(3px) | transform |
| C5 · 2+4 | 0.04em | translateY(4px) | transform |
| C6 · 2+5 | 0.04em | translateY(5px) | transform |