design.vecreal.com / workshop / V translateY decoupled · round 14
Brand reference · workshop · round 14 · 2026-05-12 · FINAL
V translateY decoupled — V at 0.020em, dot stays at 0.015em
Operator caught: "V is a touch more floaty than the dot, especially after we increased the size. V needs translatey at 0.020em. The dot is fine at 0.015." Decoupling V translateY from dot — V gets more downward pull to compensate for its larger-mass-and-pointed-shape "floaty" perception. Testing five V translateY values (0.015 to 0.025em) at three display sizes with dot fixed at 0.015em.
Why decouple V from dot
Rev-8's "matched translateY = symmetric optical system" doctrine produces mathematically equal V-lift and dot-descent. But the V is a much larger mass (V height 0.66em ~ ~56u² area) than the dot (0.23em ~ ~4.2u² area). Equal LIFT on the bigger V reads as more pronounced than equal DESCENT on the small dot. Plus the V apex is pointed (extends visually toward floating); dot bottom is curved (grounds visually).
Giving V more translateY pulls the V more toward baseline while dot stays calibrated. The asymmetry is intentional: each shape gets the optical compensation it needs.
| V translateY | V apex pos (em) | At 80px | At 140px | At 200px | Dot bottom @ 200px (locked 0.015) |
|---|---|---|---|---|---|
| 0.015em (prev coupled) | +0.0102 above | +0.82px above | +1.43px | +2.04px above | -2.00px below |
| 0.018em | +0.0072 above | +0.58px | +1.01px | +1.44px | -2.00px below |
| 0.020em ★ proposed | +0.0052 above | +0.42px | +0.73px | +1.04px above | -2.00px below |
| 0.022em | +0.0032 above | +0.26px | +0.45px | +0.64px | -2.00px below |
| 0.025em (historic) | +0.0002 (~AT) | +0.02px | +0.03px | +0.04px (~AT) | -2.00px below |
Visual asymmetry with operator's pick (V=0.020em, dot=0.015em): at 200px hero, V apex sits 1.04px above baseline, dot bottom 2px below baseline. V lift is HALF the dot descent. That asymmetry compensates for V being roughly 12× the area — equal absolute lift would feel disproportionately floaty on the bigger shape.
Section A · V translateY at 200 px hero (most sensitive size)
Five V translateY values, dot constant at 0.015em. Red baseline indicator. At 200 px the translateY differences are clearly visible — this is where the "V too floaty" perception was strongest.
Section B · V translateY at 140 px (display)
Same five values at 140 px display size.
Section C · V translateY at 80 px (marketing)
Same five values at marketing size. Differences become sub-pixel-ish — the 0.020em pick should still feel clean.
Section D · Small size sanity — 24 / 32 / 48 px
At small sizes the 0.005em differences become sub-pixel and disappear in rendering. All three render essentially identically.
Final lock — full rev-11 spec ready for SVG regen
The decoupling, justified
The rev-8 "symmetric translateY" doctrine was always approximate. Equal translateY for V and dot produced equal vertical SHIFT but not equal visual descent or perception, because:
- The V is ~12× the area of the dot (rough estimate). Equal lift on bigger mass reads more pronounced — the V "floats" more visually even at matched shift.
- The V apex is pointed (psychologically wants to extend toward floating). The dot bottom is curved (psychologically wants to ground at baseline).
- With R4-Bw's wider+taller V silhouette, the V's mass increased relative to R4-A's, making the optical-lift perception even more pronounced.
Decoupling lets each shape be calibrated for its own optical needs. V gets 0.020em (more pull); dot stays at 0.015em (calibrated descent). Asymmetric translateY, balanced perception. The "matching" was the wrong invariant — what should match is the PERCEIVED visual relationship to baseline, not the translateY value.
My read: V 0.020em is correct. It puts V apex ~1px above baseline at 200px hero (lifted enough to compensate for the pointed-shape grounding illusion, not so lifted that V floats away from "ecreal"). Dot at 0.015em keeps the calibrated 2px descent. The system reads balanced.
Spec summary — final lock candidate
| Property | Value | Notes |
|---|---|---|
| V geometry | R4-Bw @ y=33 | r11 locked · all 5 vertices rounded, parallel legs, stroke 12 const |
| Font weight | Bold 700 | rev-10 locked |
| Letter-spacing | -0.04em | rev-10 locked |
| V height | 0.66em | r3 locked, validated through r6 |
| V-to-e margin | -0.13em | r13 locked · compensates for R4-Bw's wider inner V |
| V translateY ★ | 0.020em | r14 NEW · decoupled from dot for V's larger mass |
| Dot size | 0.23em | rev-7 locked |
| Dot margin-left | calc(0.01em + 2px) | r13 locked · proportional with V-to-e |
| Dot margin-bottom | 0.005em | rev-4 legacy |
| Dot translateY | 0.015em | r12 locked · stays calibrated for round-shape descent |
To close workshop and trigger rev-11 SVG regeneration:
Confirm V translateY 0.020em + dot translateY 0.015em (decoupled) and the
wordmark spec is fully locked. Next steps:
1. Move all 14 V-valley/overshoot/V-to-e workshops from workshop/ to
workshop/archive/
2. Regenerate assets/wordmark.svg with Inter Bold text-as-paths + R4-Bw V
geometry + final spacing + asymmetric translateY
3. Propagate locked spec across all consumers (landing, LinkedIn assets, brand-atoms
canonical refs, monogram if affected, CHANGELOG entry as rev-11)
4. Update wordmark.md with rev-11 lock and the "decoupled V/dot translateY"
composition principle for future reference
Call V 0.020em (or another value) and I run the full propagation in one
atomic commit.
Vecreal · brand workshop · 2026-05-12 · v-translateY decoupled (round 14) · FINAL