body {
    margin: 0;
    position: relative;
}

#body {
    position: relative;
    width: 100%;
    z-index: 1;
}

#heart-animation {
    position: absolute;
    pointer-events: none;
    top: 0;
    left: 0;
    margin: 0;
    width: 100%;
    height: 100%;
    z-index: 2;
    overflow: hidden;
}

.heart-icon {
    position: absolute;
    top: 100%;
    -moz-transform: translateY(100%);
    -o-transform: translateY(100%);
    -webkit-transform: translateY(100%);
    transform: translateY(100%);
    -moz-animation-name: heart-animation;
    -o-animation-name: heart-animation;
    -webkit-animation-name: heart-animation;
    animation-name: heart-animation;
    -moz-animation-timing-function: linear;
    -o-animation-timing-function: linear;
    -webkit-animation-timing-function: linear;
    animation-timing-function: linear;
    -moz-animation-delay: 0s;
    -o-animation-delay: 0s;
    -webkit-animation-delay: 0s;
    animation-delay: 0s;
}

.heart-icon img {
    width: 100%;
}

.balloon-icon img {
    -moz-transform: translateY(100%);
    -o-transform: translateY(100%);
    -webkit-transform: translateY(100%);
    transform: translateY(100%);
    -moz-animation-name: balloon-animation;
    -o-animation-name: balloon-animation;
    -webkit-animation-name: balloon-animation;
    animation-name: balloon-animation;
    -moz-animation-timing-function: linear;
    -o-animation-timing-function: linear;
    -webkit-animation-timing-function: linear;
    animation-timing-function: linear;
    -moz-animation-iteration-count: infinite;
    -o-animation-iteration-count: infinite;
    -webkit-animation-iteration-count: infinite;
    animation-iteration-count: infinite;
    -moz-animation-delay: 0s;
    -o-animation-delay: 0s;
    -webkit-animation-delay: 0s;
    animation-delay: 0s;
    -moz-animation-duration: 100s;
    -o-animation-duration: 100s;
    -webkit-animation-duration: 100s;
    animation-duration: 100s;
}

@keyframes heart-animation {
    0% {
        top: 100%;
        -moz-transform: translateY(100%);
        -o-transform: translateY(100%);
        -webkit-transform: translateY(100%);
        transform: translateY(100%);
    }

    100% {
        top: 0;
        -moz-transform: translateY(-100%);
        -o-transform: translateY(-100%);
        -webkit-transform: translateY(-100%);
        transform: translateY(-100%);
    }
}

@keyframes balloon-animation {
    0% {
        -moz-transform: translateX(0%);
        -o-transform: translateX(0%);
        -webkit-transform: translateX(0%);
        transform: translateX(0%);
    }

    25% {
        -moz-transform: translateX(100vw);
        -o-transform: translateX(100vw);
        -webkit-transform: translateX(100vw);
        transform: translateX(100vw);
    }

    50% {
        -moz-transform: translateX(0%);
        -o-transform: translateX(0%);
        -webkit-transform: translateX(0%);
        transform: translateX(0%);
    }

    75% {
        -moz-transform: translateX(-100vw);
        -o-transform: translateX(-100vw);
        -webkit-transform: translateX(-100vw);
        transform: translateX(-100vw);
    }

    100% {
        -moz-transform: translateX(0%);
        -o-transform: translateX(0%);
        -webkit-transform: translateX(0%);
        transform: translateX(0%);
    }
}