-
VIGNETTE
+
+ VIGNETTE
+
Frame the eye. Hold the moment.
@@ -151,6 +155,9 @@
text-shadow: 0 4px 24px rgba(0, 0, 0, 0.55);
opacity: 0;
}
+ .demo-title .ch {
+ display: inline-block;
+ }
.demo-subtitle {
font-size: 30px;
@@ -181,11 +188,22 @@
tl.to(".haze-near", { opacity: 1, duration: 0.8, ease: "power2.out" }, 0.15);
tl.to(".demo-subject", { opacity: 1, scale: 1, duration: 1.0, ease: "power3.out" }, 0.1);
- // Title + subtitle settle in.
+ // Title + subtitle settle in. The letters settle from wider spacing to their
+ // resting spacing — the faithful smooth equivalent of a letter-spacing tween is a
+ // per-glyph x spread (transform, sub-pixel smooth), NOT a uniform scale (which
+ // would resize the glyphs instead of closing the gaps). letter-spacing holds at
+ // its CSS resting 0.18em; each glyph starts offset by the extra gap the original
+ // tween opened — (0.32em − 0.18em) × 108px ≈ 15.12px per gap — and converges to 0,
+ // centered about the word (8 chars → center at index 3.5).
tl.fromTo(
".demo-title",
- { opacity: 0, y: 18, letterSpacing: "0.32em" },
- { opacity: 1, y: 0, letterSpacing: "0.18em", duration: 1.0, ease: "power3.out" },
+ { opacity: 0, y: 18 },
+ { opacity: 1, y: 0, duration: 1.0, ease: "power3.out" },
+ 0.6,
+ );
+ tl.from(
+ ".demo-title .ch",
+ { x: (i) => (i - 3.5) * 15.12, duration: 1.0, ease: "power3.out" },
0.6,
);
tl.to(".demo-subtitle", { opacity: 1, duration: 0.8, ease: "power3.out" }, 1.0);
diff --git a/registry/examples/decision-tree/compositions/decision_tree.html b/registry/examples/decision-tree/compositions/decision_tree.html
index eafac1c3a4..296a95a06d 100644
--- a/registry/examples/decision-tree/compositions/decision_tree.html
+++ b/registry/examples/decision-tree/compositions/decision_tree.html
@@ -338,8 +338,8 @@
tl.to(
"#cursor",
{
- left: 450,
- top: 540,
+ x: -1470,
+ y: -540,
duration: 1,
ease: "power1.inOut",
},
@@ -409,7 +409,7 @@
tl.addLabel("hold6", typingEnd + 0.5);
// 16. Cursor moves slightly and clicks away to deselect
- tl.to("#cursor", { left: 500, top: 580, duration: 0.3, overwrite: "auto" }, "hold6");
+ tl.to("#cursor", { x: -1420, y: -500, duration: 0.3, overwrite: "auto" }, "hold6");
tl.to(
"#cursor",
{ scale: 0.8, duration: 0.05, yoyo: true, repeat: 1, overwrite: "auto" },
diff --git a/registry/examples/vignelli/index.html b/registry/examples/vignelli/index.html
index 0be868cbfb..67222aa482 100644
--- a/registry/examples/vignelli/index.html
+++ b/registry/examples/vignelli/index.html
@@ -85,7 +85,7 @@
.curtain {
position: absolute;
top: 0;
- left: -100%;
+ left: 0;
width: 100%;
height: 100%;
background: #1a1a1a;
@@ -145,21 +145,25 @@