#RainbowsContainer 
{
    position: fixed;
    width: calc(100% - 100px);
    height: 100vh;
    z-index:1; 
    pointer-events:none;
}
#RainbowsContainer > div 
{
    position: absolute;
    width: 50px;
    height: 50px;
    
    /* We use the following properties to apply the fade and drop animations to each Rainbows.
       Each of these properties takes two values. These values respectively match a setting
       for fade and drop.
    */
    -webkit-animation-iteration-count: infinite, infinite;
    -webkit-animation-direction: normal, normal;
    -webkit-animation-timing-function: linear, ease-in;
}

/* This CSS rule is applied to all img elements directly inside div elements which are
   directly inside the RainbowsContainer div. In other words, it matches the 'img' elements
   inside the RainbowsDivs which are created in the createARainbows() function.
*/
#RainbowsContainer > div > img {
     position: absolute;
     width: 50px;
     height: 50px;

    /* We use the following properties to adjust the clockwiseSpin or counterclockwiseSpinAndFlip
       animations on each Rainbows.
       The createARainbows function in the Rainbows.js file determines whether a Rainbows has the 
       clockwiseSpin or counterclockwiseSpinAndFlip animation.
    */
     -webkit-animation-iteration-count: infinite;
     -webkit-animation-direction: alternate;
     -webkit-animation-timing-function: ease-in-out;
     -webkit-transform-origin: 30% -100%;
}


/* Hides a Rainbows towards the very end of the animation */
@-webkit-keyframes fade
{
    /* Show a Rainbows while into or below 95 percent of the animation and hide it, otherwise */
    0%   { opacity: 1; }
    95%  { opacity: 1; }
    100% { opacity: 0; }
}


/* Makes a Rainbows fall from -300 to 600 pixels in the y-axis */
@-webkit-keyframes drop
{
    /* Move a Rainbows to -300 pixels in the y-axis at the start of the animation */
    0%   { -webkit-transform: translate(-50px, -50px); }
    /* Move a Rainbows to 600 pixels in the y-axis at the end of the animation */
    100% { -webkit-transform: translate(0px, 100vh); }
}

/* Rotates a Rainbows from -50 to 50 degrees in 2D space */
@-webkit-keyframes clockwiseSpin
{
    /* Rotate a Rainbows by -50 degrees in 2D space at the start of the animation */
    0%   { -webkit-transform: rotate(-50deg); }
    /*  Rotate a Rainbows by 50 degrees in 2D space at the end of the animation */
    100% { -webkit-transform: rotate(50deg); }
}


/* Flips a Rainbows and rotates it from 50 to -50 degrees in 2D space */
@-webkit-keyframes counterclockwiseSpinAndFlip 
{
    /* Flip a Rainbows and rotate it by 50 degrees in 2D space at the start of the animation */
    0%   { -webkit-transform: scale(-1, 1) rotate(50deg); }
    /* Flip a Rainbows and rotate it by -50 degrees in 2D space at the end of the animation */
    100% { -webkit-transform: scale(-1, 1) rotate(-50deg); }
}