/* the scroll-movie drone: props spin (motion-blurred discs over the photo's rotors) and two nav lights blink red/green (drone-fx.js) */
.dfx{position:absolute;pointer-events:none}
.dfx.prop{width:24%;aspect-ratio:1/1;transform:translate(-50%,-50%) scaleY(.38);border-radius:50%;opacity:.55;
  background:conic-gradient(from 0deg,rgba(40,44,50,0) 0deg,rgba(40,44,50,.85) 18deg,rgba(40,44,50,0) 40deg,rgba(40,44,50,0) 180deg,rgba(40,44,50,.85) 198deg,rgba(40,44,50,0) 220deg);
  animation:dfxSpin .09s linear infinite;filter:blur(.6px)}
.dfx.prop::after{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,rgba(60,64,70,.35) 0 45%,rgba(60,64,70,.12) 46% 100%)}
@keyframes dfxSpin{to{transform:translate(-50%,-50%) scaleY(.38) rotate(360deg)}}
.dfx.led{width:2.6%;aspect-ratio:1/1;border-radius:50%;transform:translate(-50%,-50%);animation:dfxBlink 1.2s steps(1,end) infinite}
.dfx.led.r{background:#ff3b3b;box-shadow:0 0 6px 2px rgba(255,59,59,.9),0 0 16px 6px rgba(255,59,59,.45)}
.dfx.led.g{background:#3bff6a;box-shadow:0 0 6px 2px rgba(59,255,106,.9),0 0 16px 6px rgba(59,255,106,.45);animation-delay:.6s}
@keyframes dfxBlink{0%{opacity:1}50%{opacity:.12}100%{opacity:1}}
.stage:not(.s8) .dfx.prop{animation-duration:.14s}
/* the landed receiver (PC movie, last beat): strapped to the big trunk in the forest shot, tappable for its data */
.stage.s9 .tnode{left:62vw!important;top:45vh!important;transform:translate(-50%,-50%)!important;transition:opacity .6s ease .8s,top 1.4s ease .6s,left 1.4s ease .6s;pointer-events:auto;cursor:pointer}
.tnode .strap{position:absolute;left:-42%;right:-42%;height:6%;background:#151714;border-radius:3px;opacity:0;transition:opacity .5s ease 1.6s;box-shadow:0 2px 3px rgba(0,0,0,.6)}
.tnode .strap.a{top:44%;transform:rotate(-2deg)}.tnode .strap.b{top:74%;transform:rotate(-1.5deg)}
.stage.s9 .tnode .strap{opacity:1}
.tnode .rx-led{position:absolute;left:39%;top:60%;width:6%;padding-top:6%;border-radius:50%;background:#7fdc8f;opacity:0;transition:opacity .4s ease 1.8s;animation:rxBlink 2.8s ease-in-out infinite}
.stage.s9 .tnode .rx-led{opacity:.9}
.tnode .tap{position:absolute;left:50%;top:104%;transform:translateX(-50%);white-space:nowrap;padding:5px 9px;border-radius:999px;background:rgba(0,0,0,.62);color:#ffd66b;font:800 10px/1 'Archivo',system-ui,sans-serif;letter-spacing:.06em;text-transform:uppercase;opacity:0;transition:opacity .5s ease 2.2s;backdrop-filter:blur(6px)}
.stage.s9 .tnode .tap{opacity:1}
.tnode img{display:block;width:100%;height:auto}
