An ogl-edocf challenge
Pyth, 21 20 bytes

VQ=k+.&gt;k-}NG}Nr1GN)k


Try it here

Explanation

VQ=k+.&gt;k-}NG}Nr1GN)k
VQ                )      For each N in the input...
     .&gt;k                 ... rotate k (initially '')...
        -}NG}Nr1G        ... by (N is lowercase) - (N is uppercase)...
    +            N       ... then append N...
  =k                     ... and update k.
                   k     Output the result.