doppio — After Effects export: rendere_volta_01_ae
=====================================================

How to open
-----------
1. Open After Effects (2022 or newer; text animation uses expression selectors).
2. File > Scripts > Run Script File... and pick rendere_volta_01_ae.jsx from this folder.
3. The reel opens as the comp "rendere_volta_01_ae". The template plays inside it as
   "rendere_volta_01_ae · template".

Keep footage/ next to the .jsx — the script imports from it by relative path.

What to expect — Volta
-----------------------------------------------------
- This comp has a REAL camera ("camera") and the cards are genuine 3D
  layers in its space — that camera IS the app's perspective (its zoom and its
  distance both equal the app's perspective in px). Leave it where it is, do not
  flatten the layers, and do not add a second camera above it: AE renders through
  the topmost enabled camera.
- Two nulls are the drum: "rig" holds the cylinder tilt and the 1.2×scale
  knob, and its child "spin" turns about X (a linear reel is two keys). Every
  card is a constant transform under the spin — retime the spin on "spin",
  never on a card.
- TWO layers per card: the front, and a back rotated 180° that reads upright
  from behind (an AE layer seen from the back is mirrored; the app's card is
  not). They sit a slab apart — 1 px when thickness is 0 — so the one facing you
  is always nearer and draws on top. Keep them together.
- Each card's shot precomp is its OWN size (frameRatio "none" sizes every card
  by its media's aspect) and the media is bottom-aligned inside it, like the app.
- Approximations vs the app: the glass slab's depth, frosted edge and finish
  are not exported (the cards are flat); corner radius is not exported (doppio
  ships sharp corners); per-shot frame options are not exported.
- How the project reads: every name is lowercase, role first, then its
  number, then what it shows: "card 03 · cover", its back "card 03 · cover ·
  back", the null it hangs off "card 03 · pivot"; one-off nulls are just
  "rig", "pan", "spin". Inside the reel's folder: "shots" holds one precomp per
  picture ("shot 03 · cover" — swap footage THERE and every card using it
  follows), "solids" holds the nulls' and solids' sources, "folds" and "media"
  appear when the reel has them. A layer's Comment column says which doppio
  slot it came from.
- Shot precomps are rounded to whole pixels, so a card can sit up to half a
  pixel from where the app puts it at hero scale.
- Videos: a clip plays WITH the comp timeline (it starts at frame 0 of the
  comp, not when its card appears). A clip shorter than the reel is looped
  via Interpret Footage to cover the comp — the app loops video by default,
  and this mirrors it. Per-shot video options (clip start, speed, fixed
  duration, loop off) are not exported; retime the footage layer inside the
  shot precomp.
- Text layers are live, editable AE text. Their in/out animations are Text
  Animators whose expression selectors carry doppio's timing; edit the
  numbers at the top of an expression to retime it. A slide's mask (each word
  clipped to its own box) is not exported.
- Media layers sit in their own "media · <file>" precomps, fitted like doppio.
