First render framed the payoff out of the picture: the 2.05x push-in was centred on the arc's midpoint, so Tokyo's label clipped at the stage's top edge and Sydney landed below the stage entirely — the arrival happened off-screen. Recomputed the zoom from both endpoints plus the destination country (1.42x about the route's centroid); both airports, the full arc and Australia now fit with the stat chips clear.
The destination country's name label grazed the continent's edge in the second render — orange text on the orange highlight fill. Nudged its screen-space box so it ends over the sea.
The jet's heading comes from two getPointAtLength samples 2 units apart; at the arc's final frames the second sample runs past the path end, so it is clamped to the total length or the glyph snaps on landing.
Banned list —Beat grid —Build method —Self-review —
<direction>
Build a 1280x720, 11-second flight tracking map in HyperFrames + GSAP: a real world map (Natural Earth 110m borders, equirectangular projection, faint 30-degree graticule) pushes in on one flight's ocean crossing, a jet glyph takes off from the origin airport and flies the great-circle arc — rotating to the arc's tangent the whole way — while the flown path draws in behind it in the accent colour, and three flight-stat callouts land under the map. House style: background #0a0a0a, white type, ONE orange accent #ff5c1a, Arial/Helvetica bold, NO webfonts, no gradients, no glows, no 3D. The flight is fictional sample content: the kicker carries "SAMPLE FLIGHT" and the footer reads "ILLUSTRATIVE SAMPLE — SWAP IN YOUR OWN FLIGHT, AIRPORTS + STATS" for the whole film.
Route title: Tokyo → Sydney
Destination country: Australia
Stat callouts (value — label, three of them): 8,863 KM — distance, 38,000 FT — cruise altitude, 852 KM/H — ground speed
Banned: stock map imagery, extra colours, lorem ipsum, any real flight number or live data presented as fact — the sample stats are illustrative.
</direction>
<structure>
0.0-0.7s: orange kicker "FLIGHT TRACKING MAP — SAMPLE FLIGHT" and the route title settle at top-left; footer fades in.
0.7-1.7s: the full world map fades in with a faint ghost copy of the flight arc already visible.
1.7-3.3s: push-in on the crossing — compute the zoom from BOTH endpoints and the destination country, so origin, destination and the highlight all stay inside the stage with the stat chips clear.
3.4-3.9s: the origin airport marker pops with two radar pulse rings; its city label appears and the jet glyph fades in on the marker.
3.9-7.5s: the flight — the accent arc draws itself behind the jet (stroke-dashoffset, getTotalLength timing) while the jet rides the drawing head, rotated to the tangent; the distance chip lands mid-flight.
7.5-8.8s: the jet hands off to the destination marker (pop + pulse ring + label); the destination country's fill blinks twice in the accent colour and settles at 85% opacity with its name beside it; the remaining stat chips land.
8.8-11.0s: the closing caption "ONE FLIGHT · TRACKED END TO END · NO STOCK MAPS" sits under the chips; hold the finished map, everything readable.
</structure>
<build>
Map data: generate the SVG paths from world-atlas countries-110m (Natural Earth) with topojson-client — one combined land path, the destination country as its own overlay path, and a graticule path. Break any polygon subpath whose longitude jumps more than 180 degrees (the ±180 seam) or borders streak across the oceans. Markers, labels, arc and jet live INSIDE the zooming SVG group so they track the push-in; the country name is an HTML overlay placed in screen space, clear of the landmass. One paused GSAP timeline registered as window.__timelines["main"]. The jet is a <g> repositioned every frame from a progress proxy: getPointAtLength for position, a second sample 2 units further along for the tangent angle (clamp the sample at the path end). Marker dots animate the radius attribute (r 0 to 5), never scale. Every fromTo tween that must stay invisible before its beat carries immediateRender: false. Keep reading text at or above the 19px floor; SVG city labels only appear after the push-in, at roughly 19px effective or better.
</build>
The tracking feel comes from one decision: the jet is glued to the arc's drawing head and steered by the path's own tangent, so it banks exactly where the great-circle curve bends. Frame the push-in from the endpoints and the destination country together — a zoom centred on the arc's midpoint alone pushes the arrival airport out of the picture.